Services
(Spatial) Queries en Custom Parameters requests op OGC WFS connections
ArcGIS Pro en vele van onze andere ArcGIS oplossingen bieden de mogelijkheid om data van WFS server connecties in te laden, maar vaak zijn deze datasets te groot voor het geplande gebruik. Binnen ArcGIS Pro is het mogelijk om zogenaamde Custom Request Parameters toe te voegen. Hiermee kan op basis van thematische of zelfs ruimtelijke manieren de data ingeladen of gefilterd worden.
Binnen ArcGIS Pro gaat dit als volgt:
1. Maak een verbinding met een WMS / WFS server
2. Rechtermuis-klik op de service verbinding in het Catalog paneel en klik op Properties:

3. Klik op het pijltje bij Custom Request Parameters om de optie uit te vouwen:

4. Vanaf hier is het mogelijk om Custom request parameters toe te voegen
Hoe werken deze parameters?
Standaard is er voor WMS en WFS de mogelijkheid om URL parameters toe te voegen na een request om verder uit te breiden op de vorm van het request. Bij een WMS of WFS request op ArcGIS Pro wordt al standaard een GetFeature request uitgevoerd. Per rij in de Custom Request Parameters wordt er aan deze url request het volgende toegevoegd: &<parameter>=<Value>. Dit betekent dat alle functies die in de ?request=Getcapabilities van de WMS of WFS staanop deze manier aan te roepen zijn. Enkele standaardopties zijn aanwezig via een drop down menu, deze zijn in de volgende documentatie beschreven:
https://pro.arcgis.com/en/pro-app/latest/help/data/services/add-wfs-services.htm
Spatial query voorbeeld
Stel het is nodig om binnen een bepaalde WFS alle data van een laag in de WFS hebben binnen een specifiek polygoon toe te voegen.
Let wel op, onderstaand voorbeeld werkt alleen indien CQL_filters op de WFS ondersteund zijn. Welke type filters beschikbaar zijn is afhankelijk van wat de WFS provider heeft ingesteld en is in te zien door middel van een …/wfs?request=GetCapabilities request.
Filteren via Spatial_operand filters in de user interface van Online en Pro is helaas niet mogelijk. In browser (Server/Enterprise) zijn hier wel opties voor, deze zijn beschreven in de volgende documentatie:
https://enterprise.arcgis.com/en/server/latest/publish-services/windows/communicating-with-a-wfs-service-in-a-web-browser.htm1. Laad eerst de WFS in ArcGIS Pro als een WFS server connectie.
2. Open de laag in Pro zonder veranderingen om te kijken wat de gebruikte Projectie en de gebruikte Map units zijn. Voor de WFS in dit voorbeeld is zichtbaar dat de projectie RD New is (EPSG:28992) en de Map units meters zijn.

3. Vervolgens is er meer informatie nodig over de WFS en de Laag waarin we geïnteresseerd zijn. Plak in een internet browser achter de url van de WFS ?request=Getcapabilities dit opent een .XML,daarin staan de mogelijkheden van de WFS service beschreven.
4. Binnen dit voorbeeld is het doel om een WITHIN of INTERSECT functie toe te passen. Daarnaast moet POLYGON een erkende functie zijn om deze query uit te voeren met een zelfgekozen polygoon. Door tweemaal te zoeken in het Getcapabilities bestand is te zien dat beide opties beschikbaar zijn in de WFS (en nog veel meer):


Gezien beide opties mogelijk zijn kunnen de gewenste spatial query uitgevoerd worden. Voor de Within functie is uit de beschrijving op te maken dat twee geometrieën nodig zijn, die van de laag en die van het object waar de laag mee gefilterd gaat worden:

5. De naam van de geometrie van de laag is nog niet bekend maar die is op te vragen binnen de WFS. Door een ?request=Describefeaturetype te doen wordt een bestand gegenereerd met daarin de beschrijving van alle lagen die beschikbaar zijn in de WFS. Dit bestand is te openen met kladblok/notepad. In dit voorbeeld wordt gekeken naar de laag Gasvervanging_2:

De elementen die weergegeven zijn onder de laag zijn de columns. In een OGC column is het meestal standaard dat de laatste column de Geometrie column is. De Geometrie van deze laag heet geografischeligging.
6. Vervolgens is het van belang om de Geometrie van het gewenste Polygoon hebben:
Laad in een ArcGIS Pro een feature class met Polygoon in of maak een nieuwe aan. Zet de projectie van de kaart naar dezelfde projectie als de WFS. Pas de map units onderin de kaart aan naar dezelfde als degene die gebruikt word in de WFS:

Ga bovenin in de Tabbladen naar Edit, selecteer het polygoon en klik Edit Vertices. Dit opent een menu met Vertices, hier wordt de tabel die hierbij naar boven komt bekeken:

Indien je niet al een bestaand polygon hebt, kan je ook rechtstreeks coordinaten opslaan door te rechterklikken ergens in de kaart en hier op “Copy Coordinates” te klikken. Dit kopieert de coördinaten naar je klembord, waarna je het naar bijvoorbeeld een tijdelijk tekstbestand kan opslaan. Let wel hier ook op dat je begint en eindigt op hetzelfde coördinaat om een geldig P\polygoon te maken.

7. Voor het invullen van het polygoon in de parametersmoet deze in WKT format komen. Dit betekent dat de Eerste vertex Linksboven moet zijn, gevolgd door met de klok mee de vertexen af te gaan en de string te eindigen door weer het vertex linksboven te noemen om het polygoon te sluiten. Door op de rijen in de tabel te klikken lichten de vertexen op, in dit voorbeeld is de volgorde voor het WKT format 2>3>4>1>2 .
8. Het laatste wat gecontroleerd moet worden is in welk formaat deze query resultaten teruggegeven kunnen worden door de WFS. Het werkt alleen in ArcGIS Pro als het teruggegeven wordt in het .getfeature.application format, (ook al is het ook mogelijk bijvoorbeeld KML/CSV achteraf in te laden in ArcGIS). De in dit voorbeeld gebruikte WFS ondersteund de volgende outputformats (te vinden in de Getcapabilities):

9. Nu is alle informatie om de Custom request parameter in te vullen verzameld. De gekozen parameter in dit geval is een CQL_FILTER, CQL staat voor Common Query Language en is de standaard url parameter voor queries in WFS 2.0 en hoger. Volg de stappen beschreven voor het openen van Custom Request parameters bovenin dit artikel en vul in het CQL filter de Within functie in met de gevonden geometrische waardes:

Let erop dat het polygoon met hetzelfde vertex begint als eindigt (de vertex linksboven).
10. Klik na het invullen op OK Rechtsonder. Bij het bevragen van de WFS wordt nu standaard deze Spatial query ingevuld. Let wel op, niet voor elke naam is de geometrienaam hetzelfde, als de geometrienaam verschilt kan een tweede connectie gemaakt worden naar de WFS service en hierin kan de goede geometrienaam worden ingevuld.
Zie hieronder het uiteindelijke resultaat van de toegevoegde query.
