[gdal-dev] WFS driver bug2 - MAXFEATURES not working

Even Rouault even.rouault at spatialys.com
Thu Sep 29 02:19:55 PDT 2016


Le jeudi 29 septembre 2016 10:06:12, Odd Ragnar Lydersen a écrit :
> So I have tried to dig a bit more into this, and I have noticed a few
> things.
> 
> 
> 1)      I set MAXFEATURES=60 in the url
> 
> 2)      I select the layer I want to work with, let's call it MyLayer.
> 
> 3)      I call SetSpatialFilterRect() on the MyLayer and set it to a small
> area containing 11 points.
> 
> 4)      I call GetFeatureCount() on MyLayer, and then I get 60 features
> returned, even though I know it should be spatially bound to an area
> containing only 11 features.
> 
> 5)      Then I should be iterating through all the features, using
> GetNextFeature(), but no features are read.
> 
> In 4), the result from GetFeatureCount(), should have been 11.
> In 5), I should have been able to read the expected 11 features.
> 

The WFS driver has quite a bunch of optimizations (and workarounds for buggy implementations),
which are as many doors for more or less subtle bugs, but in my below testing, that seems to work :

$ python
>>> from osgeo import ogr
>>> ds = ogr.Open('WFS:http://demo.mapserver.org/cgi-bin/wfs?VERSION=1.0.0&MAXFEATURES=1')
>>> lyr = ds.GetLayerByName('continents')
>>> lyr.SetSpatialFilterRect(0,45,15,50)
>>> print(lyr.GetFeatureCount())
1
>>> f = lyr.GetNextFeature()
>>> print(f['NA2DESC'])
'Italy'
>>> f = lyr.GetNextFeature()
>>> print(f)
None

or from the command line :
$ ogrinfo -ro "WFS:http://demo.mapserver.org/cgi-bin/wfs?VERSION=1.0.0&MAXFEATURES=1"  continents -al  -spat 0 45 15 50
INFO: Open of `WFS:http://demo.mapserver.org/cgi-bin/wfs?VERSION=1.0.0&MAXFEATURES=1'
      using driver `WFS' successful.
Metadata:
  ABSTRACT=This demonstration server showcases MapServer (www.mapserver.org) and its OGC support
  TITLE=WMS Demo Server for MapServer

Layer name: continents
Metadata:
  TITLE=World continents
Geometry: Unknown (any)
Feature Count: 1
Extent: (13.427750, 45.697224) - (13.439472, 45.711639)
Layer SRS WKT:
GEOGCS["WGS 84",
    DATUM["WGS_1984",
        SPHEROID["WGS 84",6378137,298.257223563,
            AUTHORITY["EPSG","7030"]],
        AUTHORITY["EPSG","6326"]],
    PRIMEM["Greenwich",0,
        AUTHORITY["EPSG","8901"]],
    UNIT["degree",0.0174532925199433,
        AUTHORITY["EPSG","9122"]],
    AUTHORITY["EPSG","4326"]]
Geometry Column = msGeometry
gml_id: String (0.0) NOT NULL
NA2DESC: String (0.0)
NA3DESC: String (0.0)
OGRFeature(continents):22518
  gml_id (String) = continents.22518
  NA2DESC (String) = Italy
  NA3DESC (String) = Europe
  POLYGON ((13.437944 45.708195,13.438861 45.706806,13.439472 45.705387,13.438694 45.702862,13.436277 45.700832,13.432834 45.697224,13.431194 45.697472,13.430611 
45.699085,13.432083 45.702999,13.432167 45.704613,13.430305 45.707443,13.42775 45.709583,13.4285 45.711639,13.43275 45.710167,13.437944 45.708195))





Even

-- 
Spatialys - Geospatial professional services
http://www.spatialys.com


More information about the gdal-dev mailing list