Hay muchos trabajos ETL que podrías querer activar desde tu mapa y el patrón que exploraremos en este blog te ayudará a lograrlo.<\/P>
Aquí hay un caso de uso, ejecutar una herramienta web ETL que acepta características de área de un mapa como entrada. La herramienta web construye una geodatabase móvil que se devuelve a mi sesión Pro o al widget de análisis Experience Builder como un archivo local, pero podrías ETL datos desde cualquier lugar a cualquier lugar, en cualquier formato. Los datos no tienen que estar en tu mapa, ni siquiera en tu proyecto ArcGIS Pro.<\/STRONG><\/P>Spoiler<\/a> (Resalta para leer)<\/noscript>Ten en cuenta que la herramienta web mostrada aquí no devolverá una geodatabase móvil cuando se ejecute en el visor de mapas, primero tendría que comprimirse. Esto es sencillo de hacer con el escritor de geodatabase móvil, solo escribe con la extensión de nombre de archivo .geodatabase.zip y se creará automáticamente un archivo ZIP.<\/div>Ten en cuenta que la herramienta web mostrada aquí no devolverá una geodatabase móvil cuando se ejecute en el visor de mapas, primero tendría que comprimirse. Esto es sencillo de hacer con el escritor de geodatabase móvil, solo escribe con la extensión de nombre de archivo .geodatabase.zip y se creará automáticamente un archivo ZIP.<\/div><\/div><\/noscript><\/div><\/div>Ejecutando una herramienta web ETL en Pro<\/span><\/span><\/P>La descarga del blog tiene mi caja de herramientas de ejemplo, así que vamos a repasar los pasos. Hay una herramienta modelo y una herramienta ETL en la caja de herramientas descargada del blog, el modelo envuelve la herramienta ETL. Usé ArcGIS Pro 3.6 y por supuesto ArcGIS Data Interoperability para Pro 3.6.<\/P>ModelBuilder envolviendo el ETL<\/span><\/span><\/P>Las cosas comienzan con un parámetro de entrada FeatureSet, en mi caso con geometría poligonal destinada a ser el área(s) de interés que contiene cualquier número de ciudades estadounidenses. En tiempo de ejecución esto te permite elegir desde una capa del mapa, buscar datos o crear tus propias características desde cero. El FeatureSet luego se escribe como datos EsriJSON en la ruta %scratchFolder%\\esri.json. <\/STRONG>Si no estás familiarizado con la sustitución inline de variables en ModelBuilder entonces léelo aquí<\/A>. Cuando la herramienta se ejecuta localmente esta ruta estará en la carpeta scratch del proyecto, y cuando es una herramienta web, en la carpeta scratch del trabajo.<\/P>Ahora un poco de viaje en el tiempo. Imagina que estás construyendo el modelo anterior y todo lo que tienes es la entrada FeatureSet y la herramienta Features to JSON en el modelo. Guárdalo y ejecútalo y tendrás un archivo esri.json en tu carpeta scratch. Ahora construye tu herramienta ETL (incrustada, en la misma caja de herramientas que el modelo) que haga lo que quieres dado el input EsriJSON. Aquí está la mía.<\/P>ETL que lee EsriJSON y hace cosas<\/span><\/span><\/P>Como dice la anotación, un lector EsriJSON (NB: con propiedad de entrada de ruta única) trae mi entrada del mapa, las características se agregan (quiero una característica, multipartes están bien) luego se proyectan como necesito en mi procesamiento posterior. En mi caso la característica resultante se usa como iniciador y filtro espacial en un FeatureReader, que extrae algunos datos del Living Atlas y los escribe a una geodatabase móvil con esquema dinámico<\/A>. Sin embargo, hay un truco en las rutas de los datos.<\/P>Aquí estoy editando parámetros del usuario en la herramienta ETL y el primero es un parámetro scriptado SCRATCHFOLDER que obtiene lo que ArcPy está usando, ya sea localmente en Pro o en una carpeta de trabajo en una herramienta web. Los parámetros scriptados se evalúan antes de que ocurra cualquier procesamiento de datos.<\/P>Parámetro scriptado SCRATCHFOLDER<\/span><\/span><\/P>El siguiente parámetro es la ruta del archivo fuente EsriJSON, que será suministrada por el modelo pero para asegurarme establezco la ruta predeterminada para usar el parámetro scriptado SCRATCHFOLDER. Ten en cuenta que debes guardar el estado del parámetro después de agregar SCRATCHFOLDER y reabrir el diálogo para usar el valor en otros parámetros.<\/P>Parámetro de entrada EsriJSON<\/span><\/span><\/P>Ahora el truco, la geodatabase móvil de salida se escribe con permiso para sobrescribir a la carpeta scratch.<\/P>Salida de geodatabase móvil a carpeta scratch<\/span><\/span><\/P>Ahora volvemos al modelo. Se añade la herramienta ETL y se conecta el archivo EsriJSON como su entrada. La salida de la herramienta ETL se escribe a %scratchFolder%\\Extract.geodatabase.<\/P>Volver al futuro<\/span><\\/span><\\/P>El último paso es añadir una herramienta modelo Calculate Value que copia la ruta de salida a un nuevo parámetro tipo Archivo. Esto es necesario porque la salida debe ser Derived para que una herramienta web devuelva datos. Asegúrate que la salida de la herramienta ETL no esté configurada como intermedia en ModelBuilder o ¡no obtendrás salida! Revisa la expresión Calculate Value, es necesaria para proteger la ruta contra interpretación como caracteres escape asegurando que sea una cadena raw.<\\/P>Se devuelven datosNo tengo asociaciones de archivos para archivos .geodatabase pero puedo abrir el enlace en Data Inspector:Mobile geodatabase in Data Inspector¡Ahora tengo una herramienta web ETL que puedo compartir con mis colegas! Hablando de colegas, estoy en deuda con @SashaLockamy por su ayuda para armar esto.
Ejecutando una herramienta web ETL en Pro<\/span><\/span><\/P>La descarga del blog tiene mi caja de herramientas de ejemplo, así que vamos a repasar los pasos. Hay una herramienta modelo y una herramienta ETL en la caja de herramientas descargada del blog, el modelo envuelve la herramienta ETL. Usé ArcGIS Pro 3.6 y por supuesto ArcGIS Data Interoperability para Pro 3.6.<\/P>ModelBuilder envolviendo el ETL<\/span><\/span><\/P>Las cosas comienzan con un parámetro de entrada FeatureSet, en mi caso con geometría poligonal destinada a ser el área(s) de interés que contiene cualquier número de ciudades estadounidenses. En tiempo de ejecución esto te permite elegir desde una capa del mapa, buscar datos o crear tus propias características desde cero. El FeatureSet luego se escribe como datos EsriJSON en la ruta %scratchFolder%\\esri.json. <\/STRONG>Si no estás familiarizado con la sustitución inline de variables en ModelBuilder entonces
Ahora un poco de viaje en el tiempo. Imagina que estás construyendo el modelo anterior y todo lo que tienes es la entrada FeatureSet y la herramienta Features to JSON en el modelo. Guárdalo y ejecútalo y tendrás un archivo esri.json en tu carpeta scratch. Ahora construye tu herramienta ETL (incrustada, en la misma caja de herramientas que el modelo) que haga lo que quieres dado el input EsriJSON. Aquí está la mía.<\/P>
ETL que lee EsriJSON y hace cosas<\/span><\/span><\/P>Como dice la anotación, un lector EsriJSON (NB: con propiedad de entrada de ruta única) trae mi entrada del mapa, las características se agregan (quiero una característica, multipartes están bien) luego se proyectan como necesito en mi procesamiento posterior. En mi caso la característica resultante se usa como iniciador y filtro espacial en un FeatureReader, que extrae algunos datos del Living Atlas y los escribe a una geodatabase móvil con
Aquí estoy editando parámetros del usuario en la herramienta ETL y el primero es un parámetro scriptado SCRATCHFOLDER que obtiene lo que ArcPy está usando, ya sea localmente en Pro o en una carpeta de trabajo en una herramienta web. Los parámetros scriptados se evalúan antes de que ocurra cualquier procesamiento de datos.<\/P>
Parámetro scriptado SCRATCHFOLDER<\/span><\/span><\/P>El siguiente parámetro es la ruta del archivo fuente EsriJSON, que será suministrada por el modelo pero para asegurarme establezco la ruta predeterminada para usar el parámetro scriptado SCRATCHFOLDER. Ten en cuenta que debes guardar el estado del parámetro después de agregar SCRATCHFOLDER y reabrir el diálogo para usar el valor en otros parámetros.<\/P>Parámetro de entrada EsriJSON<\/span><\/span><\/P>Ahora el truco, la geodatabase móvil de salida se escribe con permiso para sobrescribir a la carpeta scratch.<\/P>Salida de geodatabase móvil a carpeta scratch<\/span><\/span><\/P>Ahora volvemos al modelo. Se añade la herramienta ETL y se conecta el archivo EsriJSON como su entrada. La salida de la herramienta ETL se escribe a %scratchFolder%\\Extract.geodatabase.<\/P>Volver al futuro<\/span><\\/span><\\/P>El último paso es añadir una herramienta modelo Calculate Value que copia la ruta de salida a un nuevo parámetro tipo Archivo. Esto es necesario porque la salida debe ser Derived para que una herramienta web devuelva datos. Asegúrate que la salida de la herramienta ETL no esté configurada como intermedia en ModelBuilder o ¡no obtendrás salida! Revisa la expresión Calculate Value, es necesaria para proteger la ruta contra interpretación como caracteres escape asegurando que sea una cadena raw.<\\/P>Se devuelven datos
No tengo asociaciones de archivos para archivos .geodatabase pero puedo abrir el enlace en Data Inspector:
Mobile geodatabase in Data Inspector
¡Ahora tengo una herramienta web ETL que puedo compartir con mis colegas! Hablando de colegas, estoy en deuda con
Para mayor claridad, los pasos para construir mi herramienta web fueron:
Por favor comenta en la publicación con tus experiencias.
Los miembros registrados pueden publicar, seguir actualizaciones y más. ¿Nuevo aquí? Regístrate gratis.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.