<\/HEAD>
Veel organisaties publiceren OGC WFS-diensten als een optie voor gegevenslevering, hetzij aan het algemene publiek of aan een beperkte doelgroep. Vaak zijn deze diensten echter bedoeld voor grootschalige kaartprojecten, zoals binnen een enkele gemeente, en wordt bulkdownload op nationale schaal niet ondersteund - er wordt ofwel een maximale grootte van de feature-collectie per verzoek ingesteld op de server, of respons-paginering wordt niet ondersteund, dus een kant-en-klare client zal niet een volledige dataset leveren. Soms, hoewel deze beperkingen niet aanwezig zijn, is het samenstellen en leveren van een verzoek voor een grote feature-collectie buiten de capaciteit van de server of netwerkinstellingen (opzettelijk), of ondersteunt de client-app geen paginering (volledige openheid, WFS 2.0.0 respons-paginering komt in een toekomstige release naar core ArcGIS Pro; Data Interoperability extensie ondersteunt al WFS 2.0.0 paginering als de server next\/previous URLs levert).<\/P>
<\/P>
Deze blog gaat over het gebruik van ArcGIS Data Interoperability<\/STRONG> om deze beperkingen te omzeilen en herhaalbare bulkdownload van WFS-gegevens<\/STRONG> op elke schaal te bereiken. Je hebt solide Data Interoperability (of FME) vaardigheden nodig om deze workflow te implementeren, of je moet bereid zijn te leren van de inhoud van de blog-download.<\/P><\/P>Op dit punt moet ik je een kaart laten zien anders ga je iets anders doen, dus ik breng je het onderwerp van vandaag - Noorwegen!<\/P><\/P>
<\/P><\/P>Het is noodzakelijk om een voorbeeld uit de echte wereld te gebruiken, en de mensen bij GeoNorge hebben uitstekende openbare WFS-diensten die me laten zien wat de problemen zijn, dus Noorwegen is het. Tijdens het browsen op hun site koos ik voor een wegennetwerkdienst. Hier is hoe je er zelf kunt komen, terwijl je optioneel ook wat Noors leert. Hier is GeoNorge<\/A>, (gebruik niet ' \/en' als je Noors goed genoeg is) klik op Ga naar de kaartcatalogus<\/A>, kies dan in het selectievenster links Type = Service, Onderwerp = Transport, Distributievorm = WFS Service, klik vervolgens bij de beschikbare diensten op ELF Road Transport Network<\/A>. Scroll naar beneden en je ziet: Get Capabilites Url: <\/STRONG>https:\/\/wfs.geonorge.no\/skwms1\/wfs.inspire-tn-ro?request=GetCapabilities&service=WFS<\/A>.<\/P><\/DIV>
Als je OGC-standaarden niet kent, wees dan dankbaar, dat is onze taak! De bovenstaande URL is een typisch patroon, het teruggegeven XML-document geeft aan wat de WFS-dienst kan doen. Je weet dat ik je ga laten klikken op bovenstaande URL toch
en<\/STRONG> de respons inspecteren, maar voordat we enthousiast worden over XML gaan we hier offroad en proberen we het probleem iets beter te begrijpen.<\/DIV><\/DIV>Hier is een kaart van 50 voedselbedrijven binnen 500m loopafstand van het Koninklijk Paleis in Oslo. Ik zie een patroon waarbij men noord of zuid van het paleis moet lopen voor lunch, wat interessant is, misschien komt dat doordat men een grote weg moet oversteken die het gebied doorkruist, maar mijn belangrijkste punt is dat het centrum van Oslo veel wegen heeft waarlangs je kunt lopen, terwijl er boven de poolcirkel - niet zoveel (geen kaart, maar vertrouw me). We hebben een manier nodig om de WFS wegvervoersdienst in stukken te lezen zodat we niet meer aanvragen dan de limiet van de dienst in steden en geen onnodige verzoeken doen in gebieden met weinig wegen. We gaan een getegelde WFS-leesstrategie ontwerpen.<\/STRONG><\/DIV><\/DIV>
<\/DIV><\/DIV>OK nu<\/EM> klik op de GetCapabilities <\/A>URL en zoek naar deze dingen:<\/DIV> class="image-13 j-img-centered jive-image" src="https://us.v-cdn.net/6038851/uploads/legacyfs/online/472804_pastedImage_1.png" style="display: block; margin-left: auto; margin-right: auto;" /><\/DIV><\/DIV>
Onder de lezer kun je zien hoe ik de GetFeature URL heb gerepliceerd in een HTTPCaller maar met geparametriseerde BBOX waarden. Ik gebruikte een fishnet celomvang die de stad Trondheim bevat. Het downloadformaat is GML Ik gebruikte de Quick Import geoprocessing tool (beschikbaar met Data Interoperability) om de GML te vertalen naar een file geodatabase. Hier zijn 10.000 wegsegmenten rond Trondheim:<\/DIV>
<\/DIV>
<\/DIV>

<\/DIV>
<\/DIV>
Nu heb ik de bouwstenen van een tiled WFS reader. En hier is hij!
ReadWFSFeatures.fmw<\/STRONG>:<\/DIV><\/DIV>
<\/DIV><\/DIV><\/DIV>De Spatial ETL tool leest RoadLink features in fishnet cellen geselecteerd door een WHERE clausule, hier is de eerste ronde waarbij features in alle cellen worden gelezen:<\/DIV><\/DIV>
<\/DIV><\/DIV>Ik zie dat niet alle 100km cellen wegen kruisen - degene die je ziet geselecteerd in de fishnet laag - dus die kunnen verwijderd worden. Nu begint het werk van het verfijnen van het fishnet.<\/DIV><\/DIV>De iteratieve workflow is als volgt (wees heel voorzichtig!):<\/DIV>Voer ReadWFSFeatures.fmw<\/STRONG> uit met een WHERE<\/STRONG> clausule die de kleinste celgrootte selecteert (aanvankelijk Shape_Length = 400000, dan 200000 wanneer die cellen gemaakt zijn, dan 100000 wanneer die in een volgende stap hieronder gemaakt worden...<\/STRONG>)<\/LI>Voeg de output RoadLink<\/STRONG> feature class toe aan je kaart<\/LI>Voer RoadCount.py<\/STRONG> uit in het Python venster om RoadCount<\/STRONG> te vullen in NO_Fishnet<\/STRONG><\/LI>Selecteer NO_Fishnet<\/STRONG> features met RoadCount >= 9000<\/STRONG> (onder de 10.000 om rekening te houden met wegconstructie)<\/LI>Als er geen NO_Fishnet<\/STRONG> features geselecteerd zijn dan BREEK - je bent klaar met het maken van het fishnet
<\/STRONG><\/LI>Voer MinimumBoundingFishnet<\/STRONG> uit om een apart fishnet te maken met cellen half zo breed/hoog als het vorige minimum; het is belangrijk dat de selectie op NO_Fishnet<\/STRONG> nog actief is<\/LI>Voer Delete Features<\/STRONG> uit op de geselecteerde NO_Fishnet<\/STRONG> cellen<\/LI>Voer Append<\/STRONG> uit om de gegenereerde kleinere fishnet cellen toe te voegen aan NO_Fishnet<\/STRONG>, gebruikmakend van de veldmap optie.<\/LI>Voer SetExtentAttributes.py<\/STRONG> uit in het Python venster om de grenscoördinaten opnieuw te berekenen<\/LI>Verwijder de RoadLink<\/STRONG> feature class<\/LI>Ga terug naar de eerste stap<\/LI><\/UL><\/DIV>De eerste onderverdeling van fishnet cellen in 50km vierkante features met MinimumBoundingFishnet<\/STRONG> ziet er zo uit:<\/DIV><\/DIV>
<\/DIV><\/DIV>Nadat je door het verfijningsproces van het fishnet hebt gelopen totdat geen enkele cel meer dan 9.000 wegen bevat, kun je ReadWFSFeatures.fmw<\/STRONG> uitvoeren met een WHERE clausule die alle fishnet cellen selecteert en zo de complete RoadLink<\/STRONG> feature class aanmaken. Voer tenslotte RoadCount.py<\/STRONG> uit om NO_Fishnet<\/STRONG> te vullen met hoeveel wegsegmenten elke cel kruisen. Kijk of er cellen zijn met RoadCount = 0 en als je denkt dat daar nooit wegen gebouwd zullen worden, verwijder dan die cellen, maar je moet Noors zijn om dat oordeel te vellen.<\/DIV><\/DIV>Het downloaden van alle features duurde precies 1 uur 0 seconden en precies 1.976.423 kwamen binnen, precies zoals geadverteerd door de WFS service. Zo zien de data eruit, met de labels als de uiteindelijke weg telling:<\/DIV><\/DIV>
<\/DIV><\/DIV>Het fishnet kan hergebruikt worden om toegang te krijgen tot andere WFS features van het GeoNorge agentschap, en de methodologie kan toegepast worden op elke WFS service die geen complete dataset kan leveren met kernbenaderingen.<\/DIV><\/DIV>Dit bericht is gemaakt met behulp van ArcGIS Pro 2.5 beta 2<\/STRONG>-software, maar de .fmw bestanden zouden moeten werken in Pro 2.4. Als de MinimumBoundingFishnet<\/STRONG>-tool niet voor jou werkt, download dan een verse kopie van hier<\/A>.\/