Hi,

Maybe this is a stupid idea, but could you not simply keep asking until you get 
a page with zero features?

Regards,
Julian

-----Oprindelig meddelelse-----
Date: Wed, 05 Jun 2019 23:43:22 +0200
From: "Seth G" <[email protected]>
To: [email protected]
Subject: [mapserver-users] WFS GeoJSON Output Missing numberMatched
Message-ID: <[email protected]>
Content-Type: text/plain

Hi all,

I'm currently working on a front-end grid that requests features via WFS 2.0 
and loads them using OpenLayers. 
OpenLayers 4 doesn't support parsing of GML3 used by WFS 2.0, but I can return 
features as GeoJSON by setting the output format as follows:

    OUTPUTFORMAT
        NAME "geojson"
        DRIVER "OGR/GEOJSON"
        MIMETYPE "application/json; subtype=geojson"
        FORMATOPTION "FORM=SIMPLE"
        FORMATOPTION "STORAGE=memory"
    END

Then setting WEB > METADATA > "wfs_getfeature_formatlist" 
"gml,geojson,application/json"

WFS requests  are then made with URL parameters such as 
&service=WFS&version=2.0.0&request=GetFeature&typeName=MyLayer&outputFormat=application%2Fjson&startIndex=0&count=20

Everything works fine including paging, but in order to calculate how many 
"pages" of data I need to get the numberMatched property. 
This can be turned on for GML3 using WEB > METADATA > 
"wfs_compute_number_matched" "true" (as noted at 
https://mapserver.org/fr/ogc/wfs_server.html#web-object-metadata). 

If I then request GML with outputFormat=gml3 the GML response includes 
numberMatched="6607" (the number of features in the layer). 

As GML3 features can't be rendered in OpenLayers I'd like to get this property 
added to the GeoJSON output. This appears to be implemented in GeoServer. 
I was wondering if this is something that can be configured somewhere in the 
Mapfile perhaps as an option for the OGR/GEOJSON driver 
(https://gdal.org/drivers/vector/geojson.html). 
The timeStamp, numberReturned are also missing from the GeoJSON output. 

Any ideas or hints appreciated,

Seth


--
web:http://geographika.co.uk
twitter: @geographika


------------------------------

Message: 3
Date: Thu, 06 Jun 2019 00:39:03 +0200
From: "Seth G" <[email protected]>
To: "Even Rouault" <[email protected]>,
        [email protected]
Subject: Re: [mapserver-users] WFS GeoJSON Output Missing
        numberMatched
Message-ID: <[email protected]>
Content-Type: text/plain

Thanks Even for both suggestions. 
Using resultType=hits and caching the result for the duration of the session 
could be an option for read-only layers (and would likely speed things up as 
setting  "wfs_compute_number_matched" is not recommended for performance 
reasons). Editable layers would require two requests on every request, which 
might be ok depending on speeds. 

The second approach is probably more robust, and works fine in a Mapfile by 
setting these layer creation options (although obviously the numberMatched in 
hard-coded):

    OUTPUTFORMAT
        NAME "application/json"
        DRIVER "OGR/GEOJSON"
        MIMETYPE "application/json"
        FORMATOPTION "FORM=SIMPLE"
        FORMATOPTION "STORAGE=memory" # filesystem and memory both work (only 
use one)
        FORMATOPTION "LCO:NATIVE_MEDIA_TYPE=application/vnd.geo+json"
        FORMATOPTION "LCO:NATIVE_DATA={'numberMatched':6607}"
    END

It looks like mapogroutput.c would need to be modified to support this 
approach. 
Thanks again for the options,

Seth

--
web:http://geographika.co.uk
twitter: @geographika


_______________________________________________
mapserver-users mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/mapserver-users

Reply via email to