Hi,
I saved the states.shp file from the demo data directory that installs with GeoServer into PostGIS. This query finds Kansas: http://localhost:8060/cgi-bin/mapserv.exe?service=WFS&map=c:\ms4w_data\apps\states_pg.map&request=GetFeature&version=2.0.0&typeNames=ms:states_pg&FILTER=%3CFilter%3E%3CContains%3E%3CPropertyName%3EmsGeometry%3C/PropertyName%3E%3Cgml:Point%20srsName=%22urn:ogc:def:crs:EPSG::4326%22%3E%3Cgml:coordinates%3E40,-100%3C/gml:coordinates%3E%3C/gml:Point%3E%3C/Contains%3E%3C/Filter%3E The SQL does contain the && comparison but is is not harmful. My mapfile: MAP NAME "testname" SIZE 800 800 EXTENT -180 -90 180 90 UNITS DD IMAGECOLOR 20 250 250 SHAPEPATH "c:\ms4w\tmp" IMAGETYPE "png" OUTPUTFORMAT NAME "geojson" DRIVER "OGR/GEOJSON" MIMETYPE "application/json; subtype=geojson" FORMATOPTION "STORAGE=stream" FORMATOPTION "FORM=SIMPLE" END WEB METADATA "ows_enable_request" "*" "wms_bbox_extended" "true" "wfs_return_srs_as_urn" "true" "ows_srs" "CRS:84 EPSG:4326 EPSG:32634 EPSG:3857 EPSG:2923" "wms_title" "MS 6.1.1 WMS from Spatialite" "wfs_title" "MS 6.1.1 WFS from Spatialite" "wfs_abstract" "ööää" "wfs_onlineresource" "http://localhost:8060/cgi-bin/mapserv.exe?map=c:\ms4w\apps\wms-wfs.map" # "wfs_use_default_extent_for_getfeature" "no" END END DEBUG 10 CONFIG "PROJ_LIB" "C:/ms4w/proj/nad" CONFIG "CPL_DEBUG" "ON" CONFIG "SQLITE_LIST_ALL_TABLES" "TRUE" CONFIG "MS_ERRORFILE" "c:/ms4w/tmp/debug.txt" PROJECTION "init=epsg:4326" END LAYER NAME "states_pg" STATUS DEFAULT CONNECTIONTYPE POSTGIS CONNECTION "dbname=xxx user=yyy" DATA "geom from states using unique gid using srid=4326" PROCESSING "CLOSE_CONNECTION=DEFER" TYPE POLYGON STATUS ON PROJECTION "init=epsg:4326" END OPACITY 50 METADATA "ows_title" "states_pg" ##REQUIRED "wfs_srs" "EPSG:4326" ## REQUIRED "gml_include_items" "all" ## Optional (serves all attributes for layer) # "gml_exclude_items" "STATE_NAME" "gml_featureid" "gid" ## REQUIRED "gml_types" "auto" "wfs_getfeature_formatlist" "geojson" END CLASS STYLE COLOR 100 200 100 OUTLINECOLOR 0 0 0 END LABEL COLOR 150 150 150 OUTLINECOLOR 255 255 255 TYPE bitmap SIZE small POSITION UL #TEXT "[STATE_FIPS]" PARTIALS FALSE END LABEL COLOR 150 150 150 OUTLINECOLOR 255 255 255 TYPE bitmap SIZE small POSITION LL #TEXT "[STATE_NAME]" PARTIALS FALSE END END END END -Jukka Rahkonen- ________________________________ Lähettäjä: Kajod Sharma <kajo...@yahoo.com> Lähetetty: 4. toukokuuta 2017 12:20 Vastaanottaja: Rahkonen Jukka (MML); Jeff McKenna; mapserver-users@lists.osgeo.org Aihe: Re: [mapserver-users] Issue in using MapServer WFS Filter Hi, Still no much progress on it, is there anyone who faced the similar problem and got the solution? Thanks. Regards, Kajod ________________________________ From: Kajod Sharma <kajo...@yahoo.com> To: Rahkonen Jukka (MML) <jukka.rahko...@maanmittauslaitos.fi>; Jeff McKenna <jmcke...@gatewaygeomatics.com>; "mapserver-users@lists.osgeo.org" <mapserver-users@lists.osgeo.org> Sent: Thursday, 27 April 2017 11:09 AM Subject: Re: [mapserver-users] Issue in using MapServer WFS Filter Thanks for valuable response. I tried the solution suggested by you with putting NO for wfs_use_default_extent_for_getfeature. But still I can see default spatial filter in query. I even tried with passing BBOX (which I don't want) in filter, but it's taking the default one...it's wierd :( I'll try to get SQL for sample data and will share if I can. Thanks. Regards, Kajod ________________________________ From: Rahkonen Jukka (MML) <jukka.rahko...@maanmittauslaitos.fi> To: Jeff McKenna <jmcke...@gatewaygeomatics.com>; "mapserver-users@lists.osgeo.org" <mapserver-users@lists.osgeo.org> Sent: Wednesday, 26 April 2017 8:57 PM Subject: Re: [mapserver-users] Issue in using MapServer WFS Filter Hi, When it comes to extra spatial filter, there is a brand new metadata item for switching it off. See http://mapserver.org/ogc/wfs_server.html wfs_use_default_extent_for_getfeature (Optional, since MapServer 7.0.4) Whether the MAP.EXTENT should be used in request to datasources in the absence of other spatial filter. This is the default behaviour, but this might affect performance in some use cases. In those cases, setting this item to NO will avoid he default spatial filter to be appended to the request. This is only implemented for OGR datasources. However, with PostGIS the && query is fast. The weird part in your log wkb_geometry && ST_GeomFromText('POLYGON((-0.999462804873474 -1.00102606014116,-0.999462804873474 -1.00102606014116,-0.999462804873474 -1.00102606014116,-0.999462804873474 -1.00102606014116,-0.999462804873474 -1.00102606014116)) means that the layer extent is not set correctly or Mapserver can't get is correctly from PostGIS which means data error on that side. For sure using the non-existing keyword wfs_boundingbox is not right. See what can be used from http://mapserver.org/ogc/wfs_server.html. When you play with spatial filters I recommend to start by using the native SRS for the feature type in filters. Non-native SRS in filter should be transformed by the server but it is error prone. Your filter is also also a little bit fuzzy. gml:coordinates belongs to GML2 and was removed from GML2. But you are using service version 2.0 that defaults to GML3. Is the meaning that your filter is GML2 or GML3? That is a big difference because in the first case the axis order of EPSG:4326 coordinates is longitude-latitude but in the latter it is latitude-longitude. Do you search near the equator or from somewhere in Europe? <PropertyName>wkb_Geometry</PropertyName> <gml:Point srsName="urn:ogc:def:crs:EPSG::4326"> <gml:coordinates>0.112034,53.567972</gml:coordinates> </gml:Point> One more thing, "wfs_srs" metadata takes only one SRS, not a list. If you send SQL for CREATE TABLE and for inserting one polygon into the table, and WFS filter you are using in your trials I thing I could find some time for testing. -Jukka Rahkonen- ________________________________________ Jeff McKenna wrote: Re: [mapserver-users] Issue in using MapServer WFS Filter Hi Kajod, If you are using PostGIS, then I would set the 'wfs_extent' metadata at the layer level of the mapfile (it looks like you tried that, with an odd 'wfs_boundingbox' parameter): please review the syntax of the wfs_extent parameter at http://www.mapserver.org/ogc/wfs_server.html#layer-object Then, next step is always to execute a GetCapabilities request and go through that response and make sure there are no "WARNING" messages, and make the changes in the mapfile to remove those warnings if necessary... -jeff -- Jeff McKenna MapServer Consulting and Training Services http://www.gatewaygeomatics.com/ On 2017-04-26 10:42 AM, Kajod Sharma wrote: > Hi, > > Greetings! > > I hope this is a right platform to discuss my query regarding FILTER > applied on MapServer WFS. > > I'm new in this area and exploring some features of MapServer. I want to > use GetFeature request of WFS to get features applied on any location on > map. I'm using "MapServer version 7.0.4 (MS4W 3.2.1)" and trying to > apply filter "Contains" for it. > > I can see two problems when it applies Filter query on PostGIS: > > 1. It looks it adds an extra default geospatial filter in it while > making a query to PostGIS. This default spatial filter is not stopping > to return any result from PostGIS. Is there any way to exclude this > default filter? > 2. It seems Contains coordinates are not transformed properly according > to SRS of data in PostGIS. > > I've tries with different projection in map file and request message > with no success. > > Supporting data to give your input on my queries: > > WFS request > ************************* > Formatted Version: > > http://localhost/cgi-bin/mapserv.exe? > service=WFS& > map=C:/Data/MapServerWFSSample.map& > request=GetFeature& > version=2.0.0& > typeName=SampleLayer& > FILTER=<Filter xmlns="http://www.opengis.net/ogc" > xmlns:gml="http://www.opengis.net/gml" > xmlns:ms="http://mapserver.gis.umn.edu/mapserver"> > <*Contains*> > <PropertyName>wkb_Geometry</PropertyName> > <gml:Point srsName="urn:ogc:def:crs:EPSG::4326"> > <gml:coordinates>0.112034,53.567972</gml:coordinates> > </gml:Point> > </*Contains*> > </Filter> > ************************* > > PostGIS query [Could see in log file]: > ************************* > msPostGISLayerWhichShapes query: select > "Attribute1","Attribute2","Attribute3",encode(ST_AsBinary(ST_Force2D("wkb_geometry"),'NDR'),'hex') > as geom from SampleGeoDataTable where */wkb_geometry && > ST_GeomFromText('POLYGON((-0.999462804873474 > -1.00102606014116,-0.999462804873474 > -1.00102606014116,-0.999462804873474 > -1.00102606014116,-0.999462804873474 > -1.00102606014116,-0.999462804873474 > -1.00102606014116))',find_srid('','SampleGeoDataTable','wkb_geometry'))/* and > (st_contains(wkb_geometry,ST_GeomFromText('POINT > (*/7853690.3631838141000000 -5506204.5232773330000000/*)')) = TRUE) > ************************* > > Similar WFS query to GeoServer works perfectly. > > It would be very helpful if someone can help me on it. Thanks a lot in > advance. > > Map File looks like: > > ************************************************** > MAP > NAME "Sample_WMS" > CONFIG "PROJ_LIB" "C:\ms4w\proj\nad" > CONFIG "MS_ERRORFILE" "C:/Data/ms_tmp/ms_error.txt" > CONFIG "CPL_DEBUG" "ON" > CONFIG "PROJ_DEBUG" "ON" > STATUS ON > PROJECTION > "init=epsg:27700" > END > > WEB > IMAGEPATH "C:/Data/ms_tmp/" > IMAGEURL "/ms_tmp/" > METADATA > "wfs_enable_request" "*" > "wfs_title" "My Global Map WFS Server" > "wfs_srs" "EPSG:4326 EPSG:900913 EPSG:27700" > "wfs_boundingbox" "EPSG:27700 749.099975585938 -90036.5 > 660460.875 1227306.5" > END > END > > LAYER > NAME "SampleLayer" > STATUS DEFAULT > TYPE POLYGON > PROJECTION > "init=epsg:27700" > END > CONNECTIONTYPE POSTGIS > CONNECTION "host=localhost port=5432 dbname=SampleGeoDataTable > user=postgres password=hahaha" > DATA "wkb_geometry from SampleLayer" > CLASS > STYLE > COLOR 0 100 255 > OUTLINECOLOR 0 0 0 > END > END > > METADATA > "wfs_enable_request" "*" > "wfs_title" "Sample WFS" > "wfs_srs" "EPSG:27700 EPSG:4326 EPSG:900913" > "wfs_boundingbox" "EPSG:27700 749.099975585938 -90036.5 > 660460.875 1227306.5" > "gml_include_items" "all" > END > END > END > ************************************************** > > Regards, > Kajod > > _______________________________________________ mapserver-users mailing list mapserver-users@lists.osgeo.org<mailto:mapserver-users@lists.osgeo.org> https://lists.osgeo.org/mailman/listinfo/mapserver-users _______________________________________________ mapserver-users mailing list mapserver-users@lists.osgeo.org<mailto:mapserver-users@lists.osgeo.org> https://lists.osgeo.org/mailman/listinfo/mapserver-users
_______________________________________________ mapserver-users mailing list mapserver-users@lists.osgeo.org https://lists.osgeo.org/mailman/listinfo/mapserver-users