[mapserver-users] WFS GeoJSON Output Missing numberMatched
Seth G
sethg at geographika.co.uk
Fri Jun 7 08:18:53 PDT 2019
The grid has a "paging" toolbar at the bottom so it is the user that pages through the data - it also includes text such as "Page 3/56" but to calculate this it needs to know how many records in the whole dataset.
It coul d be an option to have an "infinite scrolling" grid which loads records on demand when scrolling down without needed to know the total count.
Seth
--
web:http://geographika.co.uk
twitter: @geographika
On Fri, Jun 7, 2019, at 2:35 PM, Julian Hollingbery wrote:
> 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" <sethg at geographika.co.uk>
> To: mapserver-users at lists.osgeo.org
> Subject: [mapserver-users] WFS GeoJSON Output Missing numberMatched
> Message-ID: <c7639659-93ff-41bf-bb30-ae4c3848a2ac at www.fastmail.com>
> 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" <sethg at geographika.co.uk>
> To: "Even Rouault" <even.rouault at spatialys.com>,
> mapserver-users at lists.osgeo.org
> Subject: Re: [mapserver-users] WFS GeoJSON Output Missing
> numberMatched
> Message-ID: <0a5df404-ffc4-431e-a520-80b8822525dd at www.fastmail.com>
> 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
> mapserver-users at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/mapserver-users
More information about the MapServer-users
mailing list