<\/HEAD>
Muitas organizações publicam serviços OGC WFS como uma opção para fornecimento de dados, seja para o público em geral ou para um público restrito. Muitas vezes, no entanto, esses serviços são destinados a mapeamento em grande escala, como dentro de um único município, e o download em massa em escala nacional não é suportado - ou um tamanho máximo de coleção de feições por solicitação é definido no servidor, ou a paginação da resposta não é suportada, então um cliente padrão não vai entregar um conjunto de dados inteiro. Às vezes, embora essas restrições não estejam presentes, montar e entregar uma solicitação para uma grande coleção de feições está além da capacidade do servidor ou das configurações de rede (por design), ou o aplicativo cliente não suporta paginação (divulgação completa, a paginação de resposta WFS 2.0.0 está chegando ao core do ArcGIS Pro em uma versão futura; a extensão Data Interoperability já suporta paginação WFS 2.0.0 se o servidor fornecer URLs next\/previous).<\/P>
<\/P>
Este blog é sobre usar ArcGIS Data Interoperability<\/STRONG> para contornar essas limitações e alcançar download em massa repetível de dados WFS<\/STRONG> em qualquer escala. Você precisará de habilidades sólidas em Data Interoperability (ou FME) para implementar este fluxo de trabalho, ou estar disposto a aprender com o conteúdo do download do blog.<\/P><\/P>Neste ponto preciso mostrar um mapa ou você vai fazer outra coisa, então apresento o assunto de hoje - Noruega!<\/P><\/P>
<\/P><\/P>É necessário usar um exemplo do mundo real, e as pessoas da GeoNorge têm excelentes serviços públicos WFS que me permitem mostrar os problemas, então Noruega é o escolhido. Navegando pelo site deles escolhi um serviço de rede rodoviária. Aqui está como chegar lá você mesmo, enquanto opcionalmente aprende um pouco de norueguês. Aqui está GeoNorge<\/A>, (não use ' \/en' se seu norueguês estiver bom) clique em Ir para o catálogo de mapas<\/A>, então no painel seletor à esquerda escolha Tipo = Serviço, Tópico = Transporte, Forma de distribuição = Serviço WFS, então dos serviços disponíveis clique em ELF Road Transport Network<\/A>. Role para baixo e você verá: Get Capabilites Url: <\/STRONG>https:\/\/wfs.geonorge.no\/skwms1\/wfs.inspire-tn-ro?request=GetCapabilities&service=WFS<\/A>.<\/P><\/DIV>
Se você não conhece os padrões OGC, seja grato, esse é nosso trabalho! A URL acima é um padrão típico, o documento XML retornado anuncia o que o serviço WFS pode fazer. Você sabe que vou fazer você clicar na URL acima não é
e<\/STRONG> inspecionar a resposta, mas antes da empolgação do XML vamos sair da estrada aqui e começar a entender melhor o problema.<\/DIV><\/DIV>Aqui está um mapa de 50 negócios alimentícios dentro de 500m a pé do Palácio Real em Oslo. Detecto um padrão de ter que caminhar para norte ou sul do palácio para almoçar, o que é interessante, talvez seja uma função de ter que atravessar uma estrada principal que divide a área, mas meu ponto principal é que o centro de Oslo tem muitas ruas pelas quais você pode caminhar ao lado, enquanto no círculo ártico - não tantas (sem mapa, mas confie em mim). Vamos precisar de uma maneira de ler o serviço WFS de transporte rodoviário em pedaços para que não solicitemos mais do que o limite da resposta do serviço nas cidades e não façamos solicitações desnecessárias em áreas com poucas estradas. Vamos projetar uma estratégia de leitura WFS em mosaicos.<\/STRONG><\/DIV><\/DIV>
<\/DIV><\/DIV>OK agora<\/EM> clique na URL GetCapabilities <\/A> e procure estas coisas:<\/DIV><\/DIV>
Nós
não podemos<\/STRONG> solicitar páginas:<\/DIV><\/DIV>
<\/DIV>Podeos só obter<\/STRONG> 10000<\/STRONG> feições por vez:<\/DIV><\/DIV>
<\/DIV><\/DIV>Podeos recuperar tipos de feição tn-ro:RoadLink<\strong> em uma grande variedade de sistemas coordenados sobre uma área enorme:<\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>
Abaixo do leitor você pode ver como repliquei a URL GetFeature em um HTTPCaller, mas parametrizei os valores BBOX. Usei uma extensão de célula fishnet contendo a cidade de Trondheim. O formato de download é GML Usei a ferramenta de geoprocessamento Quick Import (disponível com Data Interoperability) para traduzir o GML em um file geodatabase. Aqui estão 10.000 links de estradas ao redor de Trondheim:<\/DIV>
<\/DIV>
<\/DIV>

<\/DIV>
<\/DIV>
Agora eu tenho os blocos de construção de um leitor WFS em mosaico. E aqui está!
ReadWFSFeatures.fmw<\/STRONG>:<\/DIV><\/DIV>
<\/DIV><\/DIV><\/DIV>A ferramenta Spatial ETL lê as feições RoadLink em células fishnet selecionadas por uma cláusula WHERE, aqui está a primeira passagem lendo feições em todas as células:<\/DIV><\/DIV>
<\/DIV><\/DIV>Posso ver que nem todas as células de 100km intersectam estradas - as que você pode ver selecionadas na camada fishnet - então elas podem ser deletadas. Agora começa o trabalho de refinar o fishnet.<\/DIV><\/DIV>O fluxo iterativo é este (seja muito cuidadoso!):<\/DIV>Execute ReadWFSFeatures.fmw<\/STRONG> com uma cláusula WHERE<\/STRONG> selecionando o menor tamanho de célula (inicialmente Shape_Length = 400000, depois 200000 quando essas células forem feitas, depois 100000 quando essas forem feitas em uma etapa subsequente abaixo...<\/STRONG>)<\/LI>Adicione a classe de feição RoadLink<\/STRONG> gerada ao seu mapa<\/LI>Execute RoadCount.py<\/STRONG> na janela Python para preencher RoadCount<\/STRONG> em NO_Fishnet<\/STRONG><\/LI>Selecione as feições NO_Fishnet<\/STRONG> com RoadCount >= 9000<\/STRONG> (abaixando para 10.000 para permitir construção de estradas)<\/LI>Se não houver feições NO_Fishnet<\/STRONG> selecionadas então PARE - você terminou de fazer o fishnet
<\/STRONG><\/LI>Execute MinimumBoundingFishnet<\/STRONG> para criar um fishnet separado com células metade da largura/altura do mínimo anterior; é importante que a seleção em NO_Fishnet<\/STRONG> ainda esteja ativa<\/LI>Execute Delete Features<\/STRONG> nas células selecionadas NO_Fishnet<\/STRONG><\/LI>Execute Append<\/STRONG> para adicionar as células menores geradas ao NO_Fishnet<\/STRONG>, usando a opção field map.<\/LI>Execute SetExtentAttributes.py<\/STRONG> na janela Python para recalcular as coordenadas dos limites<\/LI>Delete a classe de feição RoadLink<\/STRONG><\/LI>Volte ao primeiro passo<\/LI><\/UL><\/DIV>A primeira subdivisão das células fishnet em feições quadradas de 50km com MinimumBoundingFishnet<\/STRONG> fica assim:<\/DIV><\/DIV>
<\/DIV><\/DIV>Após repetir o processo de refinamento do fishnet até que nenhuma célula contenha mais de 9.000 estradas, você pode executar ReadWFSFeatures.fmw<\/STRONG> com uma cláusula WHERE que selecione todas as células fishnet e criar a classe completa de feição RoadLink<\/STRONG>. Finalmente execute RoadCount.py<\/STRONG> para preencher o NO_Fishnet<\/STRONG> com quantos segmentos de estrada intersectam cada célula. Veja se há alguma célula com RoadCount = 0 e se você acha que estradas nunca serão construídas lá então delete as células, mas você terá que ser norueguês para fazer esse julgamento.<\/DIV><\/DIV>Baixar todas as feições levou exatamente 1h 0s e exatamente 1.976.423 chegaram, exatamente como anunciado pelo serviço WFS. Aqui está como os dados aparecem, com os rótulos sendo a contagem final das estradas:<\/DIV><\/DIV>
<\/DIV><\/DIV>O fishnet pode ser reutilizado para acessar outras feições WFS da agência GeoNorge, e a metodologia aplicada a qualquer serviço WFS que não possa fornecer um conjunto completo de dados com abordagens principais.<\/DIV><\/DIV>Esta postagem foi criada usando o software ArcGIS Pro 2.5 beta 2<\/STRONG>, mas os arquivos .fmw devem funcionar no Pro 2.4. Se a ferramenta MinimumBoundingFishnet<\/STRONG> não funcionar para você, baixe uma cópia nova em aqui<\/A>.\/<\BODY\/><\HTML\>