1

My query is 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>

Internal 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.

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

2
  • As per the Tour there should be only one question asked per question. – PolyGeo Apr 26 '17 at 21:22
  • There is only one main question in it, it is: "How can we exclude default spatial filter added in query to PostGIS?" – Kajod May 4 '17 at 9:28
1

Well I've found the solution now. I was missing EXTENT parameter in map file. After adding it according to source data, it started working.

Just want to mention a point here, it still has a default spatial filter in PostGIS query, but this time with correct coordinates according to EXTENT defined in map file.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.