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).


domingo, 2 de octubre de 2016

Distribución de la Información Geoespacial

Como ya he comentado en otras entradas, los Sistemas de Información Geográfica son una fuente (casi) inagotable de información para nuestro negocio, siempre y cuando el proceso de creación y actualización de la información esté correctamente implementado, y los usuarios y partes implicadas, mantengan la comunicación con el departamento responsable de actualizar la base de datos GIS.

Prácticamente cualquier información referente a un activo físico puede ser almacenada en una base de datos GIS, aunque en algunos casos no sea el método más eficiente, y puede hacerse accesible prácticamente al instante en cualquier lugar (aplicaciones de escritorio, dispositivos móviles, entornos web...).

Hasta aquí todo es muy bonito y aunque estamos ante una herramienta con usos casi ilimitados en la gestión y análisis de la información geoespacial, por supuesto tiene inconvenientes.

Como casi todos los programas informáticos del mercado, desde hojas de cálculo como Excel hasta Sistemas de Planificación de Recursos Empresariales como SAP o Maximo, requieren de una serie de conocimientos que no se terminan en la práctica y utilización del software, sino que se basan en la experiencia y conocimientos más profundos, de las capacidades y funcionalidades del Software, de la formación académica previa, y de cómo se pueden plasmar todos ellos dentro del campo en el cual queramos aplicarlo.

Al igual que no se puede decir que un novelista es alguien que se limita a utilizar un procesador de texto, sería un error decir que un profesional de los Sistemas de Información Geográfica es alguien que solo produce mapas (por desgracia aún hay mucha gente que piensa de esta manera)

Así pues, y aunque alcanzar un nivel básico de uso de un SIG, debería estar al alcance de cualquiera que le dedique un poco de tiempo, en muchas ocasiones nos encontramos con que esto no sucede, y se hace necesario el empleo de otras herramientas y formatos para hacer llegar la información a los potenciales consumidores de información geoespacial.

En otros casos la información ha de ser accesible, sintética, y fácilmente comprensible para los responsables de departamentos estratégicos encargados de la toma de decisiones.

Llegados a este punto, se puede considerar que ya habremos claudicado, y estaremos buscando nuevas formas para distribuir la información. La primera y más inmediata es la creación de mapas en formato papel o PDF. Estos han de ser claros y enfocados al objetivo que se pretende representar, manteniendo la información necesaria, eliminando la superflua y remarcando la fundamental. En cuanto al formato PDF se pueden incluir ciertas funcionalidades de los GIS, como el manejo de capas y la inclusión de atributos.

La segunda, y no menos importante, es el análisis de la información alfanumérica que acompaña a la información geográfica. Con el uso de hojas de cálculo o bases de datos externas al GIS, se pueden realizar análisis muy diversos y gráficos para ayudar a comprender mejor los datos que yacen bajo la información geográfica.

En la siguiente entrada hablaré de los  "Excel Dashboards", y el uso de gráficos dinámicos partiendo de la información tabular de una capa GIS. Si bien es verdad que las últimas versiones de ArcGIS, están centrándose mucho en estos aspectos, bajo mí punto de vista, aún no se pueden comparar con las funcionalidades que aporta el software de Microsoft. En cualquier caso aquí dejo un enlace para conocer más a fondo el uso de Dashboards en ArcGIS, y no descarto hacer una entrada en el futuro ahondando más en este asunto.