Artiklen henvender sig til udviklere og GIS-administratorer som viser Arealinformations services i deres egne applikationer og GIS-systemer.
Denne artikel beskriver hvordan man kan lave et "kald" til i en WFS-service fra Danmarks Arealinformation (DAI), hvor man kalder flere lag samtidig.
Ved opgradering af Danmarks Arealinformation (DAI) blev der også opgraderet vores backend, bl.a. versionen af ArcGIS Server.
Det viste sig i mellemtiden at der var en bug (fejl) i de WFS-services som udstilles fra ArcGIS Server 10.5.0 og 10.5.1. Fejlen gjorde at det ikke har været muligt at lave et GetFeature kald med 2 eller flere lag. Fejlen blev løst (1.6.18) i DAI, men nedenstående workaround kan stadigvæk anvendes.
- Der findes dog også en work-around til dette problem:
i stedet for at lave en GET request så lav en POST request.
I en POST request skal der laves en query til hvert lag man ønsker data fra.
I eksemplet herunder er der lavet en query med en bounding box (BBOX) til de to lag (temaer) V1 og V2 fra servicen "DKJord".
<?xml version="1.0" ?>
<wfs:GetFeature
xmlns:wfs="http://www.opengis.net/wfs/2.0"
xmlns:fes="http://www.opengis.net/fes/2.0"
xmlns:gml="http://www.opengis.net/gml"
version="2.0.0"
service="WFS">
<wfs:Query typeNames="DKJORD_V1" srsName="urn:ogc:def:crs:EPSG:25832">
<fes:Filter>
<fes:BBOX>
<gml:Box>
<gml:coordinates>
718483 6173377 718535 6173430
</gml:coordinates>
</gml:Box>
</fes:BBOX>
</fes:Filter>
</wfs:Query>
<wfs:Query typeNames="DKJORD_V2" srsName="urn:ogc:def:crs:EPSG:25832">
<fes:Filter>
<fes:BBOX>
<gml:Box>
<gml:coordinates>
718483 6173377 718535 6173430
</gml:coordinates>
</gml:Box>
</fes:BBOX>
</fes:Filter>
</wfs:Query>
</wfs:GetFeature>
TIP til udvikler: Test eventuelt de ovenstående queries ved at gå til www.hurl.it. I dropdown menuen hvor der står GET, vælg POST. Skriv url’en https://arealinformation.demo.miljoeportal.dk/gis/services/DKJord/MapServer/WFSServer. Denne url er til vores demo miljø, dog skal man være opmærksom på at data ikke er de samme og ikke gældende. Vælg derefter ”Add Body” og copy-paste den ovenstående xml ind. Verificer at du ikke er en robot og tryk ”Launch Request”. Når resultatet kommer frem skulle du meget gerne se et resultat fra V1 og et fra V2.
Herunder findes to forskellige filtre, det første bruger en polygon og det andet bruger en bounding box som det kan ses i eksemplet ovenfor.
<?xml version="1.0" ?>
<wfs:GetFeature
xmlns:wfs="http://www.opengis.net/wfs/2.0"
xmlns:fes="http://www.opengis.net/fes/2.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
version="2.0.0"
service="WFS">
<wfs:Query typeNames="LAG_NAVN" srsName="urn:ogc:def:crs:EPSG:25832">
<fes:Filter>
<fes:Intersects>
<gml:Polygon>
<gml:exterior>
<gml:LinearRing >
<gml:posList>
x1 y1 x2 y2 x3 y3 xn yn … x1 y1
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</fes:Intersects>
</fes:Filter>
</wfs:Query>
</wfs:GetFeature>
------------------------------------------------------------------
<?xml version="1.0" ?>
<wfs:GetFeature
xmlns:wfs="http://www.opengis.net/wfs/2.0"
xmlns:fes="http://www.opengis.net/fes/2.0"
xmlns:gml="http://www.opengis.net/gml"
version="2.0.0"
service="WFS">
<wfs:Query typeNames="LAG_NAVN" srsName="urn:ogc:def:crs:EPSG:25832">
<fes:Filter>
<fes:BBOX>
<gml:Box>
<gml:coordinates>
nederst_til_venstre_x nederst_til_venstre_y øverst_til_højre_x øverst_til_højre_y
</gml:coordinates>
</gml:Box>
</fes:BBOX>
</fes:Filter>
</wfs:Query>
</wfs:GetFeature>
--------------------------------------------------------------------------------------
- En anden mulig work-around er at lave et kald til hvert lag man vil hente.
Kommentarer
0 kommentarer
Artiklen er lukket for kommentarer.