[mapserver-users] Spatial Filter with WFS

Rahkonen Jukka Jukka.Rahkonen at mmmtike.fi
Tue Nov 23 08:26:19 EST 2010


Hi,
 
This one may not be the only problem, but I would start by creating a valid WFS 1.1.0 request by giving a filter as gml3 or alternatively go on with using gml2 filter but changing version to WFS 1.0.0.  Here below is a WFS 1.1.0 request that works against deegree.  It does not necessarily work against Mapserver because it can well be that Mapserver does not support gml:Surface, even if the surface is a plain polygon as in this  case.  However, you see that gml3 does not use <gml:coordinates, it is using <gml:posList and it would be a miracle or Mapserver bug or both if your request works.
 
<?xml version="1.0" encoding="ISO-8859-1"?>
<wfs:GetFeature xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml" xmlns:wfs="http://www.opengis.net/wfs" service="WFS" version="1.1.0" maxFeatures="1000" outputFormat="text/xml; subtype=gml/3.1.1">
<wfs:Query xmlns:app="http://www.deegree.org/app" srsName="EPSG:26912" typeName="app:Counties">
<ogc:Filter>
<ogc:Intersects xmlns:gml='http://www.opengis.net/gml' >
<ogc:PropertyName xmlns:app="http://www.deegree.org/app">
app:position</ogc:PropertyName>
<gml:Surface srsName='EPSG:26912' >
<gml:patches>
<gml:PolygonPatch>
<gml:exterior>
<gml:LinearRing>
<gml:posList srsDimension='2' count='6'>
87.0 198.0 149.0 239.0 261.0 202.0 263.0 89.0 161.0 80.0 87.0 198.0</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:PolygonPatch>
</gml:patches>
</gml:Surface>
</ogc:Intersects>
</ogc:Filter>
</wfs:Query>
</wfs:GetFeature>
 
-Jukka Rahkonen-
 
 
 
 
--------------------------------------------------------------------------------
Lähettäjä: mapserver-users-bounces at lists.osgeo.org [mailto:mapserver-users-bounces at lists.osgeo.org] Puolesta Fischer, Andreas
Lähetetty: 22. marraskuuta 2010 19:36
Vastaanottaja: mapserver-users at lists.osgeo.org
Aihe: [mapserver-users] Spatial Filter with WFS
 

Dear MapServer-User,
 
I configured MapServer version 5.6.5 as WMS- and WFS-Server to offer information about land and properties. I use PostgreSQL/PostGIS (8.4.4/1.5.1) as datastore in this case. The spatial reference system is EPSG:25832 und the type of the geometry is MULTIPOLYGON. OS is Suse Linux Enterprise Server 11, Servicepack1.
 

WMS and WFS work fine until I use a spatial filter within the getFeature-Request of the WFS. In this case the response doesn't deliver any features. Nevertheless the number of features (e.g. numberOf Features='4') is correct. I tried this out with a couple of different boundingboxes and the known number of features that intersect these boundigboxes. In all cases I do not get any features back, but always the right number. So it seems that at least the intersection of the boundingbox and my data works correctly.
 
Please take a look at the following request and response that illustrate that problem:
 
Request:
 
http://myserver/cgi-bin/mapserv?map=/mapserver/mapfiles/u218768/ku_testwfs.map&REQUEST=getFeature&typename=folie001&SERVICE=WFS&VERSION=1.1.0&
 
Filter=<ogc:Filter>
 
                <Intersects>
 
                        <ogc:PropertyName>msGeometry</ogc:PropertyName>
 
                        <gml:Polygon srsName='EPSG:25832'>
 
                                <gml:outerBoundaryIs>
 
                                        <gml:LinearRing>
 
                                                <gml:coordinates>409350,5709890 409350,5709910 409370,5709910 409370,5709890 409350,5709890</gml:coordinates>
 
                                        </gml:LinearRing>
 
                                </gml:outerBoundaryIs>
 
                        </gml:Polygon>
 
                </Intersects>
 
        </ogc:Filter>
 

Response
 

<?xml version="1.0" encoding="ISO-8859-1" ?> 
 
<wfs:FeatureCollection xmlns:ms="http://mapserver.gis.umn.edu/mapserver" xmlns:gml="http://www.opengis.net/gml" xmlns:wfs=http://www.opengis.net/wfs xmlns:ogc="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mapserver.gis.umn.edu/mapserver http://myserver/cgi-bin/mapserv?map=/mapserver/mapfiles/u218768/ku_testwfs.map&SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TYPENAME=folie001&OUTPUTFORMAT=text/xml; subtype=gml/3.1.1 http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd" numberOfFeatures="4">
 
<gml:boundedBy>
 
<gml:Envelope srsName="EPSG:25832">
 
                        <gml:lowerCorner>-1.000000 -1.000000</gml:lowerCorner> 
 
                                <gml:upperCorner>-1.000000 -1.000000</gml:upperCorner> 
 
                </gml:Envelope>
 
        </gml:boundedBy>
 
</wfs:FeatureCollection>
 
 
 
Indeed of this behavior the WFS returns features when I do not use a spatial filter. Therefore in my opinion the WFS should be configured right in general. To me the spatial filter seems to be the problem. Unfortunately I do not have any ideas what is going wrong.
 

For more information you can take a look at my MapFile and a part of the capabilities document returned from the WFS below:
 

MAP
 
        NAME "ku_testwfs"
 
        STATUS ON
 
        SIZE 400 520
 
        EXTENT 389965 5693582 420177 5732815
 
        UNITS METERS
 
        PROJECTION
 
                "init=epsg:25832"
 
        END
 
        SYMBOLSET "/mapserver/symbols/symbols_alk.sym"
 
        FONTSET "/mapserver/fonts/fonts.fnt"
 
        IMAGECOLOR 255 255 255
 
        WEB
 
                IMAGEPATH "/mapbender/mb262/http/tmp/"
 
                IMAGEURL "http://myserver/mapbender/tmp/"
 
                METADATA
 
                        "ows_onlineresource" "http://myserver/cgi-bin/mapserv?map=/mapserver/mapfiles/u218768/ku_testwfs.map"
 
                        "ows_title" "Liegenschaftskarte, Kreis Unna"
 
                        "ows_accessconstraints" "Nutzung nur für den Dienstgebrauch."
 
                        "ows_abstract" "Flurstücksfolie der Liegenschaftskarte."
 
                        "ows_contactperson" "Andreas Fischer"
 
                        "ows_contactorganization" "Kreis Unna"
 
                        "ows_contactposition" "Zentrale Datenverarbeitung, Geodatenmanagement"
 
                        "wms_srs" "EPSG:25832 EPSG:31462 EPSG:31463 EPSG:31466 EPSG:31467 EPSG:4326"
 
                        "wms_feature_info_mime_type" "text/html"
 
                        "wfs_srs" "EPSG:25832"
 
                END #METADATA  
 
        END #WEB
 
        
 
        LAYER
 
                NAME "folie001"
 
                STATUS ON
 
                TYPE POLYGON
 
                DUMP TRUE
 
                CONNECTIONTYPE postgis
 
                CONNECTION "user=dbuser password=dbpassword dbname=dbname host=dbhost port=dbport"
 
                DATA "the_geom from ku_view_folie001 USING UNIQUE objnr USING SRID=25832"
 
    
 
                METADATA
 
                        "ows_title" "Flurstücke"   
 
                        "wms_srs" "EPSG:25832 EPSG:31462 EPSG:31463 EPSG:31466 EPSG:31467 EPSG:4326"    
 
                        "wms_feature_info_mime_type" "text/html"
 
                        "wfs_srs" "EPSG:25832"
 
                        "wfs_extent" "389965 5693582 420177 5732815" 
 
                        "gml_include_items" "all"
 
                        "gml_featureid" "objnr"
 
                END #METADATA
 
        
 
                CLASS
 
                        NAME "Flurstücke"
 
                        STYLE
 
                                OUTLINECOLOR 0 0 0
 
                                WIDTH 1
 
                        END # STYLE
 
                END  # CLASS
 
        END #LAYER
 
END #MAPFILE
 
[...]
 
- <     FeatureTypeList>
 
- <     Operations>
 
  <Query /> 
 
  </Operations>
 
- <FeatureType>
 
  <Name>folie001</Name> 
 
  <Title>Flurstücke</Title> 
 
  <SRS>EPSG:25832</SRS> 
 
  <LatLongBoundingBox minx="389965" miny="5.69358e+06" maxx="420177" maxy="5.73282e+06" /> 
 
 </FeatureType>
 
 </FeatureTypeList>
 
- <ogc:Filter_Capabilities>
 
- <ogc:Spatial_Capabilities>
 
- <ogc:Spatial_Operators>
 
  <ogc:Equals /> 
 
  <ogc:Disjoint /> 
 
  <ogc:Touches /> 
 
  <ogc:Within /> 
 
  <ogc:Overlaps /> 
 
  <ogc:Crosses /> 
 
  <ogc:Intersect /> 
 
  <ogc:Contains /> 
 
  <ogc:DWithin /> 
 
  <ogc:BBOX /> 
 
 </ogc:Spatial_Operators>
 
 </ogc:Spatial_Capabilities>
 
- <ogc:Scalar_Capabilities>
 
  <ogc:Logical_Operators /> 
 
- <ogc:Comparison_Operators>
 
  <ogc:Simple_Comparisons /> 
 
  <ogc:Like /> 
 
  <ogc:Between /> 
 
 </ogc:Comparison_Operators>
 
 </ogc:Scalar_Capabilities>
 
 </ogc:Filter_Capabilities>
 
 </WFS_Capabilities>
 

(The LatLongBoundingBox in this case is obviously not in units of LatLon but represent the boundingbox in the offered SRS 25832. This seems to be strange since thes doesn' t occur in the WMS-capabilities document. In this document the LatLongBoundingBox und the BoundingBox in the source SRS are both all right.)
 
I even tried different versions of MapServer and I discovered a slight difference with other versions. If I change my datasource from PostGIS to OGR/MapInfo Tab former versions of MapServer (5.4.2/5.2.3) provide features as well. But just in case of OGR/MapInfo Tab - not with PostGIS in use! As I have to use PostGIS I'm interested in any hints to solve this problem.
 
Therefore I would be glad to hear from you!
 

Thanks so far and best regards!
 
Andreas
 

Mit freundlichen Grüßen
 
Im Auftrag
 
Andreas Fischer
 
Kreis Unna - Der Landrat
 
Zentrale Datenverarbeitung
 
Friedrich-Ebert-Straße 17
 
59425 Unna
 
Fon 02 3 03 27-44 16
 
Fax 0 23 03 27-28 96
 
andreas.fischer at kreis-unna.de
 
www.kreis-unna.de
 

Diese E-Mail wurde beim Ausgang auf Viren geprueft. Wegen der potentiellen Gefahr auf den Uebertragungswegen wird zu einer Vireneingangskontrolle geraten. Eine Haftung für Virenfreiheitwird ausgeschlossen.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapserver-users/attachments/20101123/523303fc/attachment-0001.html


More information about the mapserver-users mailing list