Mostrando entradas con la etiqueta ETL. Mostrar todas las entradas
Mostrando entradas con la etiqueta ETL. Mostrar todas las entradas

viernes, 2 de diciembre de 2016

Análisis topológico con FME Desktop


Existen muchas alternativas para realizar un análisis topológico de nuestro conjunto de datos, sin duda el más completo, desde mi punto de vista es ArcGIS, ya que permite realizarlo desde un primer momento, hasta las últimas fases del mismo realizando una limpieza total de los datos de partida. Pero que sea el más completo no significa que sea el más eficiente, ni que todas las fases del análisis respondan al 100% a nuestras necesidades y expectativas. 

Actualmente encontramos en el mercado una gran variedad de herramientas y programas que pueden completar las “debilidades” del programa de la firma ESRI, e incluso mejorar muchas de las utilidades implementadas en el mismo, haciéndolo más eficiente. Para mi, sin duda, uno de los mejores es FME Desktop, que como ya comenté en una entrada anterior es una herramienta ETL mayormente centrada en la manipulación de información geoespacial. 

Evidentemente este programa no hace milagros, y sí como en el caso que veíamos en la entrada “Revisión de topologías en ArcGIS” (en la cual pretendíamos crear polígonos a partir de líneas), los datos iniciales presentan errores topológicos, como por ejemplo colgantes, el resultado no será todo lo completo que nos gustaría, quedándonos líneas sin su polígono correspondiente.

FME ofrece multitud de herramientas para realizar un análisis topológico previo, para detectar y depurar errores, pero sin duda lo más interesante es que podemos resolver los errores directamente, sin crear una topología previa, ya que el programa la genera en tiempo de ejecución.

Así pues en el ejemplo anterior, y para minimizar los errores, podemos añadir una serie de transformadores que hacen una depuración previa de los datos de partida. El modelo podría quedar de la siguiente manera:

Cada una de las partes del modelo presenta una serie de características y variables que podemos modificar según consideremos. Vamos a analizar uno a uno todos los elementos del modelo, pero hay que tener en cuenta que el programa contiene al rededor de 500 transformadores, y cada uno de ellos con sus propias variables. Evidentemente esto es solo una pequeña muestra del potencial de este programa, que intentaré desarrollar en futuras entradas.

  • Snapper: esta herramienta se utiliza para alargar líneas (o añadir vértices), hasta la línea más próxima. También nos permite utilizar un atributo en concreto para realizar esta acción. Por ejemplo si tenemos en un mismo shapefile distintos elementos lineales tales como alambradas, muros, tapias… puede ser que necesitemos realizar este proceso solo sobre un tipo de entidades. Para ello realizaremos esta acción especificando el campo concreto en el cual queremos realizar el proceso. Obligatoriamente tendremos que asignar una tolerancia al proceso (cuanto mayor sea esta más impredecible será el resultado). Otra serie de variables son el tipo de snapping, añadir vértice adicional, que modificaremos en función de nuestras necesidades.


  • Intersector: esta herramienta se utiliza para romper elementos que se cruzan ya sean poligonales o lineales. Por ejemplo si tenemos un archivo de líneas que van a conformar una red del tipo que sea, esta herramienta es útil porque nos generara vértices en las intersecciones de la red. En el caso de tener un shape poligonal, por ejemplo de cultivos de una zona, nos será útil para eliminar solapes entre parcelas, para no falsear la superficie total de trabajo. Las distintas opciones que nos brinda esta herramienta son por ejemplo tener en consideración la z del elemento, ya que en muchos casos los cruces entre líneas a distinta cota no necesitan un vértice adicional. También nos da la opción de partir líneas que se cruzan con sí mismas, y otra serie de opciones que vendrán definidas por las necesidades del tipo de trabajo a realizar.

  • Area builder: esta herramienta se utiliza para crear polígonos a partir de líneas. Si los procesos anteriores se han realizado de forma correcta, y han solucionado los errores topológicos, los polígonos serán generados correctamente.



martes, 25 de octubre de 2016

Exportar Capas GIS a formato CAD

Una de las tareas más solicitadas por los usuarios de GIS, y una fuente inagotable de quebraderos de cabeza y discusiones, es la más que recurrente transformación de la información GIS en formato CAD. Sin entrar en detalles de si es necesario, o por el contrario una pérdida de tiempo, la realidad es que cada día nos encontramos con más de una petición para transformar de un formato a otro.

La primera aproximación que se puede hacer al problema es la utilización de las herramientas que incorpora por defecto ArcGIS (10.3 en este caso y sin la extensión "Data Interoperability"). Sería tan fácil como seleccionar la capa que se desea exportar, y con el botón derecho del ratón Exportar a formato CAD.





Seleccionaríamos la carpeta de salida y tendríamos nuestra capa en formato CAD. Si en lugar de exportar toda la capa, solo queremos una parte de ella, podemos utilizar cualquier herramienta de selección, y solo se exportará la parte seleccionada. También se puede seleccionar un conjunto de capas, que serán exportadas en un único archivo CAD. También se puede acceder a la misma herramienta por medio de ArcToolBox

Aunque esta funcionalidad puede resultar suficiente en muchos casos, en otros muchos no lo es, ya que el fichero de salida solo tendrá información de los elementos geométricos (puntos, líneas y polígonos), y nada referente a los atributos de dichas geometrías.

Llegados a este punto tenemos tres opciones. La primera sería acudir a algún Software externo que nos permita personalizar el fichero CAD de salida, como por ejemplo Xtools, o el ya mencionado en otras entradas FME. Este segundo permite una personalización completa del producto de salida, y si se dispone del Software y de los conocimientos necesarios, sería una opción más óptima que la que se va a detallar a continuación.

Le segunda sería desarrollar un script o programa utilizando Python u otro lenguaje de programación, por supuesto para ello tendríamos que saber programar. 

La tercera, como ya os podréis imaginar, es el uso de Model Builder para crear nuestra propia herramienta. Dependiendo del número de capas que queramos exportar, y de los atributos que queramos representar en el CAD de salida el modelo generado podría ser algo como esto:




A pesar de su horrible aspecto, la mayoría de las tareas en este proceso están repetidas para las diferentes capas que queremos exportar. 

La herramienta mostrada arriba no crea el fichero en formato CAD por sí misma, es un paso previo para preparar una Geodatabase con las capas en el formato adecuado para, posteriormente, usando la herramienta "Export to CAD", genere los archivos con la simbología y los niveles deseados. 

Los ficheros generados por la herramienta para crear archivos en formato CAD (AutoCAD en este ejemplo), vienen definidos no solo por la geometría del elemento de entrada, sino también por cierto atributos que definirán entre otras cosas, el color, el grosor, el tipo de línea, y si es un texto, o un elemento geométrico. 

Para ello la herramienta lee los atributos de la capa de origen y si encuentra algún campo "clave", entonces lee la información almacenada en él, para representarla de la forma definida. Estos campos que denomino clave son por ejemplo:
  • CadType: define el tipo de elemento de salida (Texto, Numero entero, decimal...)
  • TxtValue: en caso de que el tipo anterior haya sido definido como texto o número, el valor que pongamos aquí será el que se exportara en el fichero de salida como caracteres (números o letras). En este caso la entidad de origen, línea, punto o polígono será remplazada por el texto del campo (por ejemplo si tenemos los nombres de las calles en un fichero de líneas, solo se representara el texto). 

Para los elemento que queremos representar además de como texto, como entidad geométrica, por ejemplo el uso de una parcela rustica y el borde que la delimita, será necesario duplicar la entidad de entrada  para obtener por un lado el texto, y por el otro el polígono en este caso.

En caso de solo necesitar las geometrías, podremos modificar la simbología del fichero CAD, añadiendo más campos "clave", como por ejemplo:
  • Color: define el color de salida y tiene que ser definido como doble
  • LineWt: determinará el grosor de la línea. También ha de ser definido como doble.

Así pues y en términos generales partimos de una o varias capas GIS (shapefile, Geodatabase...), con la herramienta "Add Field" añadiremos los campos o atributos "clave" que consideremos necesarios y con la herramienta "Calculate Field" le asignaremos el valor que consideremos. Si por ejemplo el nombre de la calle está almacenado en un campo llamado "Street" simplemente tendremos que crear una expresión que referencie el campo TxtValue (el cual previamente habremos definido como CadType= Texto) al campo "Street". 

Todo lo anterior será almacenado en una Geodatabase que será el fichero de entrada en la herramienta "Export to CAD", que ahora si representara los niveles de la manera que defininmos previamente.

sábado, 8 de octubre de 2016

Capas GIS y "Excel Dashboards" (Parte II)

A continuación se detalla los pasos esbozados en la entrada anterior, a un nivel más técnico, con toda la información necesaria para implementar el proceso, tanto en ArcGIS como en Excel:

1. Crear un modelo en ArcToolBox (o un script en Python) que convierta los datos de  partida a formato Personal Geodatabase. La herramienta que usaremos aquí será "Copy Feature", pero podría ser cualquier otra que transfiera los datos de partida a nuestra "personal geodatabase", la cual tendremos que haber creado anteriormente. En este punto, y antes de ejecutar la herramienta nos aseguraremos de que el archivo (capa) de salida, reemplaza a la previamente existente, marcando la opción de sobrescribir los ficheros de salida dentro de "Opciones de Geoprocesamiento". Esto es importante ya que el Excel tomará la información de la Base de Datos y buscara la tabla con el nombre que le especifiquemos de origen.



2. Crear un Excel, y asignarle como datos de origen el archivo .mdb creado en el paso anterior. Seleccionar Tabla como formato a mostrar.




3. Si en el paso primero construimos una ArcToolBox, crear un script que ejecute la herramienta, y guardarla con la extensión .py. Si anteriormente elegimos la opción de crear la herramienta como un Script en Python, este paso no es requerido. Esto es necesario porque como ya veremos en el siguiente punto, definiremos una tarea programada dentro de Windows que llame a nuestra herramienta, y un ArcToolbox no puede ser ejecutada de esta manera. El script sería algo como:

   import arcpy  
  arcpy.ImportToolbox(r" RutaDeLaHerramienta\NombreDeLaHerramienta.tbx", "TBX")           arcpy.Model_TBX()

4. Ir a las tareas programadas de Windows y definir la ejecución del script con la frecuencia deseada, por ejemplo todos los días a primera hora de la mañana, así los cambios realizados la jornada anterior en la base de datos GIS, serán reflejados al día siguiente en nuestro archivo .mdb



5. El último paso sería actualizar los datos en el Excel, para ello la forma más sencilla es en el menú de tablas de origen de datos externos/propiedades de conexión, marcaremos actualizar datos cuando se abra el archivo. En caso de que tus conocimientos en Python sean más avanzados, podrás crear otro script, o ampliar el código del primero, para llamar a la función RefreshAll() utilizando la extensión para Windows de Python.



Esto hará que cada vez que abramos nuestro excel se carguen los datos de nuestra Geodatabase, que a su vez está alimentada por nuestra base de datos GIS.

Este sería una visión resumida del proceso en su conjunto:



Una vez realizada la "conexión" entre nuestra fuente de datos GIS y nuestra hoja de cálculo, solo queda pensar que información queremos visualizar, y de qué manera. 

Como comentamos en la entrada anterior una excelente manera de hacer más accesible la información será con el uso de los cada vez más extendidos "Excel Dashboards" en los cuales podremos incluir "Pivot Tables" y "Slicers" entre otros elementos, para facilitar la visualización y el análisis de la información alfanumérica.

En el ejemplo que se muestra a continuación, la información representada es relativa a las tuberías de una red de drenaje urbano de aguas residuales. La red está organizada en diferentes áreas de captación (Slicer de la derecha), y puede ser filtrada por diferentes atributos como el diámetro de la tubería, el material o el año de instalación. La información puede ser representada a modo de gráfico, que se actualiza automáticamente cuando el filtro es modificado.






Capas GIS y "Excel Dashboards" (Parte I)

Como comentaba en la entrada anterior, una de las opciones para presentar los datos contenidos en una base de datos GIS, es utilizando Microsoft Excel. Dentro de este programa, y más concretamente en las últimas versiones, existen multitud de herramientas de análisis de datos, y de representación de los mismos.

Entre estas múltiples opciones vamos a profundizar un poco más en la creación de los denominados Dashboards, y la creación de gráficos dinámicos y slicers asociados a estos datos.

El primer factor a tener en cuenta es el origen de los datos, y si queremos que el resultado sea dinámico o no. Con dinámico quiero decir que si es necesario para el objeto de nuestro trabajo, que la información se actualicen al mismo tiempo que se actualiza la información en el GIS, o por el contrario simplemente necesitamos una instantánea de nuestro GIS en un momento determinado.

El segundo supuesto no supone un gran problema para alguien con unos mínimos conocimientos en SIG, simplemente tendremos que exportar los datos de la tabla de atributos de la capa que queramos analizar, y abrirla en Excel, es más, si el formato en el que estamos trabajando es shapefile, podremos abrir directamente el archivo .dbf.





En caso de encontrarnos en el primer supuesto, que bajo mi punto de vista es el que siempre tendríamos que seguir, la cosa se complica ligeramente, ya que tenemos que encontrar la forma de vincular el excel que conformará nuestro dashboard, con los datos de origen. Dentro de Excel existe la opción de importar datos de muy diversas fuentes (incluidas Bases de Datos Oracle o incluso Esri GeoDatabase).





En esta entrada no utilizaremos estas funcionalidades, que a decir verdad es la forma más óptima, por dos motivos, el primero es que necesitaríamos un perfil más técnico a nivel de bases de datos para configurar la conexión, y el segundo es porque el origen de nuestros datos puede ser diverso, lo cual nos llevaría a establecer la conexión con diversas proveedores de datos.

Así pues, mi propuesta para crear Dashboards a partir de datos GIS, y mantener el vínculo con los datos de origen es la que explicaré a continuación de manera resumida para desarrollarla de una manera más detallada en la siguiente entrada:


  1. Crear un modelo en ArcToolBox (o un script en Python) que convierta los datos de  partida a formato Personal Geodatabase.
  2. Crear un Excel, y asignarle como datos de origen el archivo .mdb creado en el paso anterior.
  3.  Si en el paso primero construimos una ArcToolBox, crear un script que ejecute la herramienta, y guardarla con la extensión .py. Si creamos un script en Python, este paso no es necesario.
  4. Ir a las tareas programadas de Windows y definir la ejecución del script con la frecuencia deseada, por ejemplo todos los días a primera hora de la mañana, así los cambios realizados la jornada anterior en la base de datos GIS, serán reflejados al día siguiente en nuestro archivo .mdb
  5. El último paso sería actualizar los datos en el Excel, para ello la forma más sencilla es en el menú de tablas de origen de datos externos/propiedades de conexión, marcaremos actualizar datos cuando se abra el archivo
  6. Esto hará que cada vez que abramos nuestro excel se carguen los datos de nuestra Geodatabase, que a su vez está alimentada por nuestra base de datos GIS
En la próxima entrada hablaré más en detalle en la parte técnica del proceso (script, toolboxes, etc.), incluyendo algunos ejemplos básicos en la representación de la información en forma de Excel Dashboard (o Smartsheets).


sábado, 16 de abril de 2016

Modelos con FME

Siguiendo con la entrada anterior, me gustaría introducir en este caso un Software que complementa, y en muchas ocasiones aporta nuevas funcionalidades a ArcGIS (no en vano, éste, está integrado dentro de la extensión Data Interoperability del Software de la casa ESRI).

Este programa se engloba dentro de los procesos conocidos como ETL (Extract, Transform and Load o extraer, transformar y cargar), que permiten exportar, importar, analizar y limpiar datos entre distintos formatos y/o plataformas.

FME, software desarrollado por la casa Safe Software, es una fantástica herramienta ETL mayormente centrada en la manipulación de información geoespacial. Aparte de la multitud de formatos admitidos y transformadores que posee el programa, otro gran punto a su favor es la facilidad a la hora de crear modelos o herramientas, en parte gracias a su interface sencilla e intuitiva.

Así pues, es posible crear modelos como el que presentamos anteriormente en Model Builder sin la necesidad del uso de ArcGIS. Igual que comparábamos ModelBuilder con  una especie de lenguaje programación a alto nivel, FME permite aún más funcionalidades que el módulo de ArcGIS, y siguiendo con la analogía, se podría decir que tiene muchas más clases y métodos con los que implementar nuestro programa, ofreciéndonos así   una gama mucho más amplia de posibilidades.

A grandes rasgos el funcionamiento del programa es el siguiente: Tenemos un dato (o conjunto de datos) de entrada, a los cuales les aplicaremos uno (o varios) procesos, llamados transformadores, que arrojaran como resultado uno o varios ficheros de salida. Así por ejemplo, teniendo un fichero en formato DWG de líneas que representan el contorno de las fincas rústicas de un municipio, necesitamos como resultado un fichero en formato SHP poligonal. En el programa indicaremos el fichero de entrada “Reader” que será el fichero en formato DWG, el transformador apropiado, en este caso “AreaBuilder” y por último definiremos el formato del fichero de salida o “Writer”


Otra gran ventaja del programa es que permite manejar una amplia multitud de formatos tanto GIS y CAD como otros formatos tabulares, archivos Excel y Bases de Datos por ejemplo. Así pues podremos realizar uniones entre tablas de una base de datos Oracle y un shapefile de una manera muy sencilla y eficiente.

En futuras entradas se presentaran varios ejemplos desarrollados, tanto en ArcGIS como en FME, y se intentará evaluar cuál de los dos métodos es más eficiente, tanto en el proceso de elaboración, como a los resultados arrojados.