<\/HEAD>
Mnoho organizací publikuje OGC WFS služby jako jednu z možností dodávky dat, buď pro širokou veřejnost, nebo pro omezené publikum. Často jsou však tyto služby určeny pro mapování ve velkém měřítku, například v rámci jednoho města, a hromadné stahování na národní úrovni není podporováno - buď je na serveru nastaven maximální počet prvků na požadavek, nebo není podporováno stránkování odpovědí, takže klient "out-of-the-box" nedodá celý dataset. Někdy, i když tato omezení nejsou přítomna, sestavení a doručení požadavku na velkou kolekci prvků přesahuje schopnosti serveru nebo nastavení sítě (záměrně), nebo klientská aplikace nepodporuje stránkování (plné zveřejnění, stránkování odpovědí WFS 2.0.0 přijde do jádra ArcGIS Pro v budoucí verzi; Data Interoperability rozšíření již podporuje stránkování WFS 2.0.0 pokud server poskytuje next\/previous URL).<\/P>
<\/P>
Tento blog je o použití ArcGIS Data Interoperability<\/STRONG> k obejití těchto omezení za účelem dosažení opakovatelného hromadného stahování dat WFS<\/STRONG> v jakémkoli měřítku. Budete potřebovat solidní dovednosti v Data Interoperability (nebo FME) k implementaci tohoto pracovního postupu, nebo být ochotni se učit z obsahu staženého blogu.<\/P><\/P>V tomto bodě vám musím ukázat mapu, jinak půjdete dělat něco jiného, takže vám přináším dnešní téma - Norsko!<\/P><\/P>
<\/P><\/P>Je nutné použít příklad ze skutečného světa a lidé z GeoNorge mají vynikající veřejné WFS služby, které mi umožňují ukázat problémy, takže Norsko je to pravé. Prohlížením jejich webu jsem si vybral službu silniční sítě. Zde je návod, jak se tam dostat sami a zároveň se případně naučit trochu norský jazyk. Tady je GeoNorge<\/A>, (nepoužívejte ' \/en' pokud váš norský jazyk stačí) klikněte na Jít do katalogu map<\/A>, pak v levém panelu výběru zvolte Typ = Služba, Téma = Doprava, Forma distribuce = WFS služba, poté z dostupných služeb klikněte na ELF Road Transport Network<\/A>. Posuňte dolů a uvidíte: Získat URL schopností: <\/STRONG>https:\/\/wfs.geonorge.no\/skwms1\/wfs.inspire-tn-ro?request=GetCapabilities&service=WFS<\/A>.<\/P><\/DIV>
Pokud neznáte standardy OGC, buďte vděční, to je naše práce! Výše uvedené URL je typický vzor, vrácený XML dokument oznamuje, co může WFS služba dělat. Víte, že vás donutím kliknout na výše uvedené URL
a<\/STRONG> prohlédnout si odpověď, ale před vzrušením z XML se zde odkloníme a začneme lépe chápat problém.<\/DIV><\/DIV>Zde je mapa 50 potravinářských podniků do vzdálenosti 500 m chůze od Královského paláce v Oslu. Pozoruji vzorec nutnosti jít na sever nebo jih od paláce na oběd, což je zajímavé, možná to souvisí s nutností přejít hlavní silnici protínající oblast, ale hlavní pointa je, že centrum Osla má mnoho silnic podél kterých můžete chodit pěšky, zatímco v arktickém kruhu - ne tolik (žádná mapa, ale věřte mi). Budeme potřebovat způsob čtení WFS silniční dopravní služby po částech tak, abychom nepožadovali více než limit odpovědi služby ve městech a nedělali zbytečné požadavky v oblastech s málo silnicemi. Navrhneme strategii čtení WFS dlaždicemi.<\/STRONG><\/DIV><\/DIV>
<\/DIV><\/DIV>OK nyní<\/EM> klikněte na GetCapabilities <\/_A> URL a hledejte tyto věci:<\/_DIV><\/_DIV>
My
nemůžeme<\/_STRONG> požadovat stránky:<\/_DIV><\/_DIV>
Můžeme
pouze získat<\/_STRONG> 10000<\/_STRONG> prvků najednou:<\/_DIV><\/_DIV>
<\/_DIV>
Můžeme získat typy prvků
tn-ro:RoadLink<\/_STRONG> v široké škále souřadnicových systémů přes obrovskou oblast:<\/_DIV><\/_DIV>
<\/_DIV>
Můžeme požadovat prvky uvnitř
Bounding Box<\/_STRONG> (BBOX):<\/_DIV><\/_DIV>
<\/_DIV>
Nyní cvičení. Otevřete aplikaci Workbench z pásu karet Analýza (Data Interoperability musí být nainstalováno a licencováno) a přidejte WFS Reader s těmito parametry (GetCapabilities URL, verze WFS 2.0.0, typ prvku RoadLink, bez MaxFeatures). Připojte logger k readeru, není potřeba nic zapisovat.<\/_DIV>
<\/_DIV>
<\/_DIV>
<\/_DIV>
Spusťte pracovní prostor, uvidíte generované
toto URL<\/_A> a stáhnete 10000 prvků.<\/_DIV>
Nyní přidejte URL do svého prohlížeče a upravte URL tak, aby obsahovalo parametr 'resultType=hits<\/_STRONG>'. Toto je speciální požadavek pro spočítání počtu dostupných prvků ve službě, spusťte
upravené URL ve svém prohlížeči. Dostanete odpověď jako tuto:

Podívejte se na vlastnost numberMatched - Dostupných je 1 976 423 prvků Road Link.
Norsko má rozlohu přibližně 385 000 čtverečních kilometrů, takže průměrně asi 5 prvků road link na čtvereční kilometr a průměrně asi 2000 čtverečních kilometrů bude mít asi 10 000 road linků - limit služby WFS - přibližně čtverec o straně 45 km. <br>
Je to mnohem větší oblast na severu země k obsahu 10 000 prvků.<br>
Použitím vědecké metody výběru vhodného čísla z ničeho ve správném řádu velikosti byl můj výchozí bod pro schéma dlaždicového čtení WFS <b>síť rybích ok</b>, vytvořená pomocí nástroje <b>Create Fishnet</b>(buňky nekřížící se se zemí jsou odstraněny a použil jsem projekci ETRS 1989 UTM Zone 33N , což je EPSG :25833 ve vlastnostech služby):<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<p style="text-align:center">
</p>
<p>
Poznámka Přidal jsem několik polí (XMin,YMin,XMax,YMax,RoadCount) do sítě rybích ok a nastavil počáteční hodnoty polí souřadnicových hranic (pomocí Python snippetů - ty jsou ke stažení v blogu). tyto hranice budou použity jako vstupy parametru Bounding Box ve WFS požadavcích. ted potřebuji pracovní postup k upřesnění sítě rybích ok tak aby buňky byly postupně rozděleny tak aby bylo méně než 10 000 prvků road link v každé. prvně musím zjistit metodologii čtení služby WFS v rozsahu....
</p>
<p>
Pokud otevřete Workbench a přetáhnete <b>BasicGetFeatureWithBBOX.fmw</b>k dispozici ke stažení z blogu uvidíte WFS reader s vlastnostmi které jsem potřeboval k inspekci GetFeature URL. pracovní prostor vypadá takto:
</p> 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>
Pod čtečkou můžete vidět, jak jsem replikoval GetFeature URL v HTTPCaller, ale parametrizoval hodnoty BBOX. Použil jsem rozsah buněk fishnet obsahující město Trondheim. Formát stahování je GML. Použil jsem nástroj Quick Import geoprocessing (dostupný s Data Interoperability) k překladu GML do file geodatabase. Zde je 10 000 silničních úseků kolem Trondheimu:<\/DIV>
<\/DIV>
<\/DIV>

<\/DIV>
<\/DIV>
Nyní mám stavební bloky dlaždicového WFS čtečky. A tady to je!
ReadWFSFeatures.fmw<\/STRONG>:<\/DIV><\/DIV>
<\/DIV><\/DIV><\/DIV>Nástroj Spatial ETL čte prvky RoadLink v buňkách fishnet vybraných pomocí WHERE klauzule, zde je první průchod čtením prvků ve všech buňkách:<\/DIV><\/DIV>
<\/DIV><\/DIV>Vidím, že ne všechny 100km buňky protínají silnice - ty, které vidíte vybrané ve vrstvě fishnet - takže je lze smazat. Nyní začíná práce na zpřesnění fishnet.<\/DIV><\/DIV>Iterativní pracovní postup je tento (buďte velmi opatrní!):<\/DIV>Spusťte ReadWFSFeatures.fmw<\/STRONG> s WHERE<\/STRONG> klauzulí vybírající nejmenší velikost buňky (původně Shape_Length = 400000, pak 200000 když jsou tyto buňky vytvořeny, pak 100000 když jsou ty vytvořeny v následujícím kroku níže...<\/STRONG>)<\/LI>Přidejte výstupní třídu prvků RoadLink<\/STRONG> do vaší mapy<\/LI>Spusťte RoadCount.py<\/STRONG> v Python okně pro naplnění RoadCount<\/STRONG> v NO_Fishnet<\/STRONG><\/LI>Vyberte prvky NO_Fishnet<\/STRONG> s RoadCount >= 9000<\/STRONG> (podhodnocení 10 000 kvůli stavbě silnic)<\/LI>Pokud nejsou vybrány žádné prvky NO_Fishnet<\/STRONG>, pak PŘERUŠIT - dokončili jste tvorbu fishnetu
<\/STRONG><\/LI>Spusťte MinimumBoundingFishnet<\/STRONG>, aby se vytvořil samostatný fishnet s buňkami poloviční šířky/výšky předchozího minima; je důležité, aby výběr na NO_Fishnet<\/STRONG> byl stále aktivní<\/LI>Spusťte Smazat prvky<\/STRONG> na vybraných buňkách NO_Fishnet<\/STRONG><\/LI>Spusťte Připojit<\/STRONG>, abyste přidali vygenerované menší buňky fishnet do NO_Fishnet<\/STRONG>, pomocí možnosti mapování polí.<\/LI>Spusťte SetExtentAttributes.py<\/STRONG> v Python okně pro přepočítání souřadnic hranic<\/LI>Smažte třídu prvků RoadLink<\/STRONG><\/LI>Návrat k prvnímu kroku<\/LI><\/UL><\/DIV>První rozdělení buněk fishnet na 50km čtvercové prvky pomocí MinimumBoundingFishnet<\/STRONG> vypadá takto:<\/DIV><\/DIV>
<\/DIV><\/DIV>Po opakovaném průchodu procesem zpřesnění fishnetu, dokud žádná buňka neobsahuje více než 9 000 silnic, můžete spustit ReadWFSFeatures.fmw<\/STRONG> s WHERE klauzulí, která vybere všechny buňky fishnet a vytvoří kompletní třídu prvků RoadLink<\/STRONG>. Nakonec spusťte RoadCount.py<\/STRONG>, aby se naplnil NO_Fishnet<\/STRONG>, kolik silničních segmentů protíná každou buňku. Podívejte se, zda existují nějaké buňky s RoadCount = 0 a pokud si myslíte, že tam silnice nikdy nebudou postaveny, pak tyto buňky smažte, ale budete muset být Nor, abyste toto rozhodnutí učinili.<\/DIV><\/DIV>Stažení všech prvků trvalo přesně 1 hodinu 0 sekund a dorazilo přesně 1 976 423, jak bylo inzerováno službou WFS. Takto vypadají data s popisky jako konečný počet silnic:<\/DIV><\/DIV>
<\/DIV><\/DIV>Bunka fishnet může být znovu použita k přístupu k dalším WFS prvkům od agentury GeoNorge a metodologie může být aplikována na jakoukoli WFS službu, která nemůže dodat kompletní dataset s hlavními přístupy.<\/DIV><\/DIV>Tento příspěvek byl vytvořen pomocí softwaru ArcGIS Pro 2.5 beta 2<\/STRONG>, ale .fmw soubory by měly fungovat v Pro 2.4. Pokud vám nástroj MinimumBoundingFishnet<\/STRONG> nefunguje, stáhněte si novou kopii z zde<\/A>.\/