Muchas organizaciones publican servicios OGC WFS como una opción para el suministro de datos, ya sea para el público en general o para una audiencia restringida. Sin embargo, a menudo estos servicios están destinados a la cartografía a gran escala, como dentro de un solo municipio, y no se admite la descarga masiva a escala nacional: o bien se establece un tamaño máximo de colección de entidades por solicitud en el servidor, o no se admite la paginación de respuestas, por lo que un cliente estándar no entregará un conjunto de datos completo. A veces, aunque estas restricciones no estén presentes, ensamblar y entregar una solicitud para una gran colección de entidades está más allá de la capacidad del servidor o la configuración de red (por diseño), o la aplicación cliente no soporta paginación (divulgación completa, la paginación de respuesta WFS 2.0.0 llegará al núcleo de ArcGIS Pro en una versión futura; la extensión Data Interoperability ya soporta la paginación WFS 2.0.0 si el servidor proporciona URLs next\/previous).<\/P>
<\/P>
Este blog trata sobre cómo usar ArcGIS Data Interoperability<\/STRONG> para sortear estas limitaciones y lograr una descarga masiva repetible de datos WFS<\/STRONG> a cualquier escala. Necesitarás habilidades sólidas en Data Interoperability (o FME) para implementar este flujo de trabajo, o estar dispuesto a aprender del contenido descargable del blog.<\/P><\/P>En este punto necesito mostrarte un mapa o te irás a hacer otra cosa, así que te traigo el tema de hoy - ¡Noruega!<\/P><\/P><\/P><\/P>Es necesario usar un ejemplo del mundo real, y la gente de GeoNorge tiene excelentes servicios públicos WFS que me permiten mostrar los problemas, así que Noruega es el elegido. Navegando por su sitio me decidí por un servicio de red vial. Aquí te explico cómo llegar tú mismo, mientras aprendes un poco de noruego opcionalmente. Aquí está GeoNorge<\/A>, (no uses '\/en' si tu noruego es suficiente) haz clic en Ir al catálogo de mapas<\/A>, luego en el panel selector a la izquierda elige Tipo = Servicio, Tema = Transporte, Forma de distribución = Servicio WFS, luego de los servicios disponibles haz clic en ELF Road Transport Network<\/A>. Desplázate hacia abajo y verás: Obtener URL de Capacidades: <\/STRONG>https:\/\/wfs.geonorge.no\/skwms1\/wfs.inspire-tn-ro?request=GetCapabilities&service=WFS<\/A>.<\/P><\/DIV>Si no conoces los estándares OGC, agradécelo, ¡ese es nuestro trabajo! La URL anterior es un patrón típico, el documento XML devuelto anuncia lo que el servicio WFS puede hacer. Sabes que te voy a hacer clicar en la URL anterior ¿verdad? y<\/STRONG> examinar la respuesta, pero antes de la emoción del XML nos saldremos del camino aquí y comenzaremos a entender mejor el problema.<\/DIV><\/DIV>Aquí hay un mapa de 50 negocios de comida dentro de 500m caminando del Palacio Real en Oslo. Detecto un patrón de tener que caminar al norte o sur del palacio para almorzar, lo cual es interesante, tal vez sea función de tener que cruzar una carretera principal que divide el área, pero mi punto principal es que el centro de Oslo tiene muchas carreteras por las que puedes caminar al lado, mientras que en el círculo ártico - no tantas (sin mapa, pero confía en mí). Vamos a necesitar una forma de leer el servicio WFS de transporte vial en fragmentos para no solicitar más del límite de respuesta del servicio en ciudades y no hacer solicitudes innecesarias en áreas con pocas carreteras. Vamos a diseñar una estrategia de lectura WFS por teselas.<\/STRONG><\/DIV><\/DIV><\/DIV><\/DIV>OK ahora<\/EM> haz clic en la URL GetCapabilities< \/A> y busca estas cosas:<\/DIV><\/DIV>No podemos< \/STRONG> solicitar páginas:< \/DIV>< \/DIV>Solo podemos obtener 10000< \/STRONG> entidades a la vez:< \/DIV>< \/DIV>< \/DIV>Podemos recuperar tipos de entidad tn-ro:RoadLink< \/STRONG> en una amplia variedad de sistemas coordenados sobre una enorme área:< \/DIV>< \/DIV>< \/DIV>Podemos solicitar entidades dentro de un Caja delimitadora< \/STRONG> (BBOX):< \/DIV>< \/DIV>< \/DIV>Ahora un ejercicio. Abre la aplicación Workbench desde la cinta Analysis (Data Interoperability debe estar instalado y licenciado) y añade un lector WFS usando estos parámetros (URL GetCapabilities, Versión WFS 2.0.0, tipo entidad RoadLink, sin MaxFeatures). Conecta un registrador al lector, no es necesario escribir nada.< \/DIV>< DIV >< \/ DIV >< DIV >< IMG __jive_id = "472660 " class = "image-6 j-img-centered jive-image " src = "https:\/\ /us.v-cdn.net\ /6038851\ /uploads\ /legacyfs\ /online\ /472660_pastedImage_1.png " style = "display: block ; margin-left : auto ; margin-right : auto ; " \ / >< \/ DIV >< DIV >< \/ DIV >< DIV >< IMG __jive_id = "472661 " class = "image-7 j-img-centered jive-image " src = "https:\/\ /us.v-cdn.net\ /6038851\ /uploads\ /legacyfs\ /online\ /472661_pastedImage_2.png " style = "display: block ; margin-left : auto ; margin-right : auto ; " \ / >< \/ DIV >< DIV >< \/ DIV >< DIV >Ejecuta el espacio de trabajo, verás que se genera esta URL esta URL < \/ A > y obtendrás una descarga con 10000 entidades.< \/ DIV >< DIV >< \/ DIV >< DIV >Ahora añade la URL a tu navegador y edita la URL para añadir un parámetro '< STRONG >resultType=hits< \/ STRONG >'.& nbsp ; Esta es una solicitud especial para contar el número de entidades disponibles en el servicio, ejecuta la URL editada < A href = "http:\/\ /wfs.geonorge.no\ /skwms1\ /wfs.inspire-tn-ro?SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&TYPENAMES=tn-ro%3ARoadLink&NAMESPACES=xmlns%28tn-ro%2Chttp%3A%2F%2Finspire.ec.europa.eu%2Fschemas%2Ftn-ro%2F4.0%29&OUTPUTFORMAT=application%2Fgml%2Bxml%3B%20version%3D3.2&resultType=hits " rel = "nofollow noopener noreferrer " > editada < \/ A > en tu navegador.& nbsp ; Obtendrás una respuesta como esta:< \/ DIV >< DIV >< \/ DIV >< DIV >< IMG __jive_id = "472662 " class = "jive-image image-8 j-img-centered j-img-original " src = "https:\/\ /us.v-cdn.net\ /6038851\ /uploads\ /legacyfs\ /online\ /472662_pastedImage_1.png " style = "display: block ; margin-left : auto ; margin-right : auto ; " \ / >< \/ DIV >< DIV >< \/ DIV >< DIV >Mira la propiedad numberMatched -& nbsp ; < STRONG >1.976.423 entidades Road Link están disponibles.< \/ STRONG >< \/ DIV >< DIV >< \/ DIV >< DIV >< \/ DIV >< DIV >Noruega tiene una superficie terrestre aproximada de ~385.000 kilómetros cuadrados, así que en promedio ~5 entidades road link por kilómetro cuadrado, y en promedio ~2000 kilómetros cuadrados tendrán ~10.000 enlaces viales, el límite del servicio WFS, aproximadamente un cuadrado de 45 km.& nbsp ; Será un área mucho mayor en el norte del país para contener 10.000 entidades.& nbsp ; Usando el método científico de elegir un número conveniente sacado del aire que esté en el orden correcto de magnitud, mi punto inicial para un esquema teselado para lectura WFS fue una malla cuadrada < STRONG >de 100 km< \/ STRONG > hecha con la herramienta geoprocesamiento < STRONG >Create Fishnet< \/ STRONG > (las celdas que no intersectan tierra son eliminadas, y usé proyección ETRS 1989 UTM Zona 33N, que es EPSG:25833 según las propiedades del servicio):< \/ DIV >< DIV >< \/ DIV >< DIV >< IMG __jive_id = "472776 " class = "j-img-centered jive-image image-10 " src = "https:\/\ /us.v-cdn.net\ /6038851\ /uploads\ /legacyfs\ /online\ /472776_pastedImage_1.jpg " style = "display: block ; margin-left : auto ; margin-right : auto ; " \ / >< \/ DIV >< DIV >< \/ DIV >< DIV>Mira que añadí algunos campos (XMin,YMin,XMax,YMax,RoadCount) a la malla y establecí los valores iniciales para los campos límites coordenados (usando fragmentos Python - estos están en la descarga del blog).& nbsp ; Estos límites serán usados como entradas para parámetros Bounding Box en solicitudes WFS.& nbsp ; Ahora necesito un flujo para refinar la malla subdividiendo progresivamente las celdas para que haya menos de 10.000 entidades road link en cada una.& nbsp ; Primero necesito entender la metodología para leer el servicio WFS dentro de una extensión....< \/ DIV >< DIV >< \/ DIV >< DIV>Si abres Workbench y arrastras < STRONG >BasicGetFeatureWithBBOX.fmw< \/ STRONG > desde la descarga del blog verás un lector WFS con las propiedades necesarias para inspeccionar una URL GetFeature.& nbsp ; El espacio se ve así:< \/ DIV >< 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>Debajo del lector puedes ver cómo replicé la URL GetFeature en un HTTPCaller pero parametrizando los valores BBOX. Usé una extensión de celda fishnet que contiene la ciudad de Trondheim. El formato de descarga es GML Utilicé la herramienta de geoprocesamiento Quick Import (disponible con Data Interoperability) para traducir el GML a una geodatabase de archivo. Aquí hay 10,000 enlaces de carreteras alrededor de Trondheim:<\/DIV><\/DIV><\/DIV><\/DIV><\/DIV>Ahora tengo los bloques de construcción de un lector WFS en mosaico. ¡Y aquí está! ReadWFSFeatures.fmw<\/STRONG>:<\/DIV><\/DIV><\/DIV><\/DIV><\/DIV>La herramienta Spatial ETL lee las características RoadLink en celdas fishnet seleccionadas por una cláusula WHERE, aquí está la primera pasada leyendo características en todas las celdas:<\/DIV><\/DIV><\/DIV><\/DIV>Puedo ver que no todas las celdas de 100km intersectan carreteras - las que puedes ver seleccionadas en la capa fishnet - por lo que pueden ser eliminadas. Ahora comienza el trabajo de refinar el fishnet.<\/DIV><\/DIV>El flujo iterativo es este (¡ten mucho cuidado!):<\/DIV>Ejecuta ReadWFSFeatures.fmw<\/STRONG> con una cláusula WHERE<\/STRONG> seleccionando el tamaño de celda más pequeño (inicialmente Shape_Length = 400000, luego 200000 cuando se crean esas celdas, luego 100000 cuando se crean en un paso posterior abajo...<\/STRONG>)<\/LI>Añade la clase de entidad RoadLink<\/STRONG> resultante a tu mapa<\/LI>Ejecuta RoadCount.py<\/STRONG> en la ventana Python para llenar RoadCount<\/STRONG> en NO_Fishnet<\/STRONG><\/LI>Selecciona las entidades NO_Fishnet<\/STRONG> con RoadCount >= 9000<\/STRONG> (reduciendo a menos de 10,000 para permitir construcción de carreteras)<\/LI>Si no hay entidades NO_Fishnet<\/STRONG> seleccionadas entonces DETÉN - has terminado de crear el fishnet<\/STRONG><\/LI>Ejecuta MinimumBoundingFishnet<\/STRONG> para crear un fishnet separado con celdas con la mitad del ancho/alto del mínimo anterior; es importante que la selección en NO_Fishnet<\/STRONG> siga activa<\/LI>Ejecuta Borrar Entidades<\/STRONG> en las celdas seleccionadas de NO_Fishnet<\/STRONG><\/LI>Ejecuta Añadir<\/STRONG> para agregar las celdas fishnet más pequeñas generadas a NO_Fishnet<\/STRONG>, usando la opción de mapa de campos.<\/LI>Ejecuta SetExtentAttributes.py<\/STRONG> en la ventana Python para recalcular las coordenadas del límite<\/LI>Borra la clase de entidad RoadLink<\/STRONG><\/LI>Regresa al primer paso<\/LI><\/UL><\/DIV>La primera subdivisión de celdas fishnet en características cuadradas de 50km con MinimumBoundingFishnet<\/STRONG> se ve así:<\/DIV><\/DIV><\/DIV><\/DIV>Después de iterar el proceso de refinamiento del fishnet hasta que ninguna celda contenga más de 9,000 carreteras, puedes ejecutar ReadWFSFeatures.fmw<\/STRONG> con una cláusula WHERE que seleccione todas las celdas fishnet y crear la clase completa de entidad RoadLink<\/STRONG>. Finalmente ejecuta RoadCount.py<\/STRONG> para llenar NO_Fishnet<\/STRONG> con cuántos segmentos de carretera intersectan cada celda. Revisa si hay alguna celda con RoadCount = 0 y si crees que nunca se construirán carreteras allí entonces elimina esas celdas, pero tendrás que ser noruego para hacer ese juicio.<\/DIV><\/DIV>Descargar todas las características tomó exactamente 1hr 0s y llegaron exactamente 1,976,423, tal como lo anunciaba el servicio WFS. Así es como se ven los datos, con las etiquetas siendo el conteo final de carreteras:<\/DIV><\/DIV><\/DIV><\/DIV>El fishnet puede reutilizarse para acceder a otras características WFS de la agencia GeoNorge, y la metodología aplicarse a cualquier servicio WFS que no pueda suministrar un conjunto completo de datos con enfoques centrales.<\/DIV><\/DIV>Esta publicación fue creada usando el software ArcGIS Pro 2.5 beta 2<\/STRONG>, pero los archivos .fmw deberían funcionar en Pro 2.4. Si la herramienta MinimumBoundingFishnet<\/STRONG> no funciona para ti, descarga una copia nueva desde aquí<\/A>.<\/DIV><\/BODY><\/HTML>
Los miembros registrados pueden publicar, seguir actualizaciones y más. ¿Nuevo aquí? Regístrate para una cuenta gratuita.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.