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

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.

jueves, 23 de junio de 2016

Creación de topologías en ArcGIS

La capacidad de realizar análisis topológicos, es una de las piedras angulares en los Sistemas de Información Geográfica, y que entre otras cosas, lo diferencia de programas de Diseño Asistido por Ordenador (CAD).

La topología (geoespacial en este caso) dentro de un GIS se podría definir como las relaciones espaciales entre las distintas entidades geométricas de los elementos de nuestro proyecto. Estas relaciones son por ejemplo; vecindad, proximidad, superposición, etc. 

Estas propiedades tienen una gran relevancia en el estudio de elementos con una componente espacial, por ejemplo, para determinar las distancias entre elementos que han de interactuar entre ellos (la distancia entre una estación de bomberos y una fábrica de productos inflamables). A lo largo de los años los SIG han desarrollado y mejorado la capacidad de análisis basadas en la topología. 

Muchos de los problemas que nos encontramos a la hora de trabajar con datos vectoriales de distintos formatos, es la falta de consistencia topológica que presentan. En muchos casos esto se debe a que en su origen estos no fueron concebidos pensando en sus relaciones espaciales sino como una mera representación de la realidad geográfica de una determinada zona. En otras muchas ocasiones la conversión de formatos entre distintas plataformas genera este tipo de inconsistencias que nos pueden generar más de un quebradero de cabeza. Un caso habitual es intentar crear un shape poligonal, a partir de uno lineal y ver que de los 5000 polígonos esperados solo tenemos 1000.

ArcGis ofrece distintas herramientas para identificar, y en algunos casos subsanar dichos problemas. Evidentemente el primer paso para solventar este tipo de situaciones es localizar los errores, para ello lo primero que tendremos que hacer es migrar los datos en cuestión dentro de un Feature Dataset, que a su vez estará dentro de una Geodatabase. La forma mas cómodo para hacerlo es creando en ArcCatalog la geodatabase y dentro ella el Feature Dataset, y dentro de este, importar el fichero en cuestión.




En este punto estamos en disposición de comenzar a generar la topología para dicha capa. Lógicamente hemos de saber cuáles son nuestras necesidades ya que tendremos que definir ciertas reglas topológicas, por ello antes de nada tendremos que analizar cuáles son los problemas que se nos presentan. En el ejemplo anterior posiblemente el error esté en que la capa lineal no está correctamente cerrada (o por lo menos no dentro de la tolerancia permitida). Para localizar dichos errores tendríamos que indicar dentro de la topología que tuviese en cuenta esta incidencia. Para ello ArcGis ofrece una serie de reglas topológicas, como por ejemplo la detección de colgantes, que en nuestro ejemplo sería la que nos sería de utilidad. Para añadir una (o varias) reglas topológicas dentro de nuestra geodatabase simplemente tendremos que desplegar el menu con el botón derecho del ratón y marcar la opción “New - Topology” 


Una vez aquí solo tendremos que ir siguiendo al asistente para definir el nombre de la topología , la tolerancia de la misma, la capa sobre la que será aplicada y por último la regla topológica concreta que vamos a aplicar, en nuestro caso “Must not have dangles”


Entonces el programa creara las relaciones especificadas, y nos preguntara si queremos validarla, le decimos que si y veremos como aparece una nueva capa dentro de nuestra Geodatabase. En este punto ya podremos conocer la magnitud de nuestro problema, ya que mirando las propiedades de la nueva capa, y pinchando en “Generate Summary”, podremos ver el número de elementos que incumplen la(s) regla(s) topológica(s) definidas.


Una vez llegados a este punto el siguiente paso lógico sería solucionar estos errores, a ser posible de la manera más automática que se pueda, y como veremos más adelante esto no siempre es fácil. 

Por supuesto ArcGIS ofrece múltiples formas de eliminar colgantes, pero en ocasiones (por lo menos a mi entender) no siempre es la más óptima, tanto en tiempos de procesos como en la calidad del resultado. 




sábado, 4 de junio de 2016

Creación de un MDT con ArcGIS. (Continuación)

Como vimos en la entrada anterior la creación de un MDT a partir de un archivo vectorial del formato que sea es relativamente fácil de realizar en ArcGIS, pero como tantos otros procesos en un GIS se puede hacer de muchas maneras. 

Esta otra forma de realizar un modelo digital de elevaciones es un poco más complicada, pero sin duda es más precisa que la anterior. 

Supongamos nuevamente que tenemos como fichero de origen un fichero DGN, el cual tiene definidas las entidades que la componen no solo por niveles (lo que en AutoCAD serían Layers), sino también por un vínculo a una BBDD que nos da un número que hace referencia al tipo de elemento que nos encontramos. Los que hayan utilizado MicroStation GeoGraphics sabrán de lo que hablo, para los que no, simplemente tendrán que cargar el fichero en ArcGIS, y abrir la tabla de atributos y entre las múltiples columnas verán una llamada MsLink-ODBC que hace referencia al vínculo que tenía ese elemento con la BBDD que definía el tipo de entidad.


Con este campo podremos conocer el tipo de entidad al que nos enfrentamos (por supuesto siempre que tengamos la correspondencia entre el número y la entidad geográfica a la que hace referencia, que estará definido en la BBDD a la que el fichero .dgn estaba vinculado). De esta manera podremos separar cada elemento para la posterior generación del MDT.

El paso siguiente será hacer la extracción de los elementos según este MSlink, para ello tendremos que reflexionar sobre qué elementos nos pueden ser útiles, y realmente pueden definir un MDT, ya que por ejemplo las líneas de los edificios o alambradas son elementos que cuando se restituyen no tienen cota terreno, y no han de ser tenidos en cuenta para este propósito.

Después de examinar todos los elementos, ya tendremos una lista de todos los MSlink que vamos a utilizar para generar nuestro MDT, ahora podemos operar de dos maneras, o bien separar los ficheros en el de origen (posiblemente para los que estén acostumbrados a trabajar con Microstation Geographics, será más rápido de esta manera), o hacerlo en ArcGIS. Aquí lo haremos en ArcGIS para no tener que depender de ningún otro Software externo para realizar el proceso completo.

Así pues, cargamos en ArcGIS el fichero inicial (en este caso al abrirlo veremos que como con los ficheros .dwg el programa los separa según el tipo de elemento), en nuestro caso será suficiente con el fichero de puntos y de polilineas


Haremos una selección por atributos de cada MSlink (este sería un buen ejemplo para crear una herramienta en Model Builder si tuviésemos que repetir este proceso en distintos ficheros) y la exportamos a un shape con el nombre de la entidad.



El resultado sería algo de este estilo, dependiendo del número de entidades que se utilicen para crear el MDT:



En ArcToolBox seleccionamos la herramienta Topo to Raster y añadimos los diferentes shapes de la siguiente forma:



El resto de valores los podemos dejar como aparecen por defecto, lo único que hay que definir es el “Type” ya que dependiendo del tipo que le asignemos, la interpolación que realizará ArcGIS será distinta. Es aquí donde reside la mayor diferencia con respecto al método anterior, ya que asignando un tipo más apropiado de interpolación, dependiendo de la entidad considerada, el resultado será más preciso.



Y a este le aplicaremos la herramienta Raster to Tin para crear el TIN, si es el tipo de archivo de salida que necesitamos.



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.


sábado, 9 de abril de 2016

Crear modelos en ArcGIS. Model Builder.

En esta ocasión voy a rescatar una de las entradas de mi antiguo No-Blog. Como ya mencioné, las entradas desarrolladas en aquella ocasión eran más técnicas, y 100% relacionadas con los Sistemas de Información Geográfica. En este caso la entrada trata sobre Model Builder, una utilidad incluida dentro de ArcGIS que nos permite la automatización de tareas de una manera intuitiva y más o menos sencilla. Se podría decir (pido perdón de antemano a los desarrolladores informáticos) que es una especie de programación a muy alto nivel, en la cual de hecho, cuantos más conocimientos se tengan de programación, mejores y más completos modelos se podrán crear.

Cuando trabajamos con datos geoespaciales en muchas ocasiones nos encontramos con que estos están divididos geográficamente por una gran diversidad de factores: límites administrativos, barreras geográficas, cambios de usos de suelos… En estos casos es posible que la información la tengamos segmentadas en distintos ficheros, y por diversas razones no podamos (o queramos) unificarlos en uno solo. El problema se nos presenta cuando necesitamos realizar uno o varios procesos sobre estos ficheros, ya que tendríamos que procesarlos de manera individual, con la pérdida de tiempo que ello supone, y la posible pérdida de precisión de los datos.

Para solventar este problema tenemos, principalmente, dos posibilidades: la primera es la creación de scripts o programas que automaticen estos procesos para lo cual evidentemente tendremos que saber programar en algún lenguaje, lo cual no suele estar al alcance de los que nos dedicamos a los GIS, en una perspectiva más aplicada al análisis de información, y a la gestión de datos geoespaciales. Por otro lado ArcGIS nos ofrece la oportunidad de crear modelos para encadenar subrutinas y herramientas implementadas dentro del propio programa (o incluso externas), utilizando datos de muy diversas fuentes y formatos. En definitiva Model Builder (asi se llama esta utilidad de ArcGIS), nos permite automatizar procesos y crear modelos que nos evitarán tener que repetir una y otra vez sobre toda la colección de datos los mismos procesos rutinarios. Es evidente que tiene sus limitaciones y no nos da tanta flexibilidad como lo haría la programación en Python u otros lenguajes, pero bien aplicado es una herramienta muy potente que nos ahorrará muchas horas de trabajo.

Por ejemplo supongamos que tenemos una serie de ficheros en formato .dwg de AutoCad del parcelario rustico de un determinado termino municipal. Supongamos también que el fichero está compuesto por líneas y textos, las líneas delimitan las parcelas y los textos indican el uso rustico de las mismas. Si el objetivo del trabajo que nos encomendasen fuese calcular la superficie total de cada cultivo en concreto necesitaríamos realizar una serie de procesos que pasarían por la importación de los datos a formato .shp (u otro operativo dentro de ArcGIS), y después toda la serie de procesos para crear las superficies, identificarlas a través de sus etiquetas y por ultimo calcular las superficies de cada uso.

Para alguien familiarizado con ArcGIS el proceso no es muy complicado en sí, pero si por ejemplo en lugar de un único termino municipal, son varios, el tiempo en realizar todos los procesos se ve significativamente incrementado. Como hemos dicho antes, para este tipo de situaciones existe ModelBuilder. Es posible que cuando abramos por primera vez está utilidad nos planteemos si realmente nos va a suponer un ahorro real de tiempo, ya que la creación del modelo nos llevará, en sí,  cierto tiempo, para ello debemos valorar el volumen de datos a procesar, y cuantificar el tiempo efectivo del procesado de los datos, frente al tiempo de creación del modelo. En nuestro ejemplo hemos cuantificado que realmente el volumen de datos es suficientemente grande como para “perder” tiempo en la creación del modelo.

El primer paso será crear un Toolbox vacía que almacenará nuestro modelo, para ello dentro de ArcCatalog en la carpeta deseada pulsaremos el botón derecho del ratón y añadiremos la caja de herramientas , y nuevamente con el botón derecho sobre esta, añadiremos un nuevo modelo.


Esto nos abre el interfaz de desarrollo para crear el modelo desde cero. Como vemos existen diferentes opciones, y herramientas para implementar nuestro modelo. Además podemos arrastrar sobre este las distintas herramientas de ArcToolbox, o datos del catálogo, para añadir nuevas utilidades a nuestro modelo. Así pues y después de varias pruebas el modelo quedaría de la siguiente manera. La forma de realizar el modelo, es arrastrar los distintos elementos que lo van a componer y definir los distintos parámetros de cada herramienta.

 


Los pasos que sigue el modelo son en resumidas cuentas los siguientes:

1. Trasformación de las líneas en polígonos.
2. Join espacial de los polígonos creados y la capa de etiquetas.
3. Añadimos un campo que almacenará las superficies.
4. Calculamos las superficies de cada polígono y lo añadimos al campo anterior.
5. Creamos la tabla de salida con los sumatorios de las superficies de cada cultivo en concreto

Así pues partiendo de los datos en formato CAD de las líneas del parcelario (topológicamente conectadas) y de las etiquetas de los usos rústicos conseguimos un resumen de las superficies de cada tipo de uso.



 

jueves, 3 de marzo de 2016

¿Qué podemos esperar de un GIS?

En muchas ocasiones la gente te plantea la temida pregunta - Pero, eso del GIS ¿para qué sirve? - y aunque llevo muchos años de experiencia en esto, cada día me resulta más difícil dar una respuesta sencilla y concisa, que no haga huir despavorido a el/la desafortunado/a que planteo la cuestión.

Intentando no acudir a una definición académica, se podría decir que, a grandes rasgos, un GIS es un sistema o conjunto de sistemas informáticos que tienen la capacidad de almacenar, analizar y gestionar información con un marcado carácter geoespacial. En esta definición, y en el contenido propio del acrónimo GIS (SIG en español) está la palabra "información" que es el elemento diferenciador con respecto a otros sistemas de representación de entidades espaciales (CAD por ejemplo), y que a su vez es el elemento que le otorga una importancia fundamental en la Gestión de Activos.


La información es almacenada generalmente de dos maneras; por un lado la información espacial (coordenadas, elevación, relaciones topológicas, conectividad, sistema de referencia...), y por otro lado la información vinculada a los elementos espaciales o atributos.


Así pues en un GIS (1) la información que nos vamos a encontrar en la mayoría de las ocasiones son puntos, líneas y polígonos, localizados espacialmente que interactúan entre ellos mediante reglas topológicas, y contienen información en formato tabular vinculada a las distintas entidades (atributos).


Con todo esto, y con la ayuda de un Software GIS (hay muchos en el mercado; libres como por ejemplo QGIS o de pago como ArcGIS) podremos realizar todo tipo de análisis, tanto basados en las relaciones espaciales de los distintos elementos (por citar algunos, proximidad) como consultas SQL contra la base de datos que gestiona los atributos.


Los SIG son utilizados en multitud de disciplinas como por ejemplo: Gestión del Territorio, Telecomunicaciones, Utilities, Logística, Transporte... y en general en todas aquellas en las que la componente espacial tiene cierta relevancia.


Un de las muchas utilidades en las que se puede emplear un GIS, es por ejemplo, el estudio de redes, ya sean estas de telecomunicaciones, aguas o transportes. Con las herramientas disponibles en la mayoría de los GIS del mercado, se pueden realizar multitud de análisis sobre estas, como por ejemplo la búsqueda de rutas optimas, análisis de tiempo de acceso,  áreas de servicio, etc.


Un ejemplo reciente, es la utilización de Software GIS embarcado por la EMT (Empresa Municipal de Transportes) de Madrid. Por un lado sus autobuses van equipados con una versión de ArcGIS que permite la navegación, y el cálculo de rutas alternativas, y por otro lado un centro de control, donde monitorizar la posición de la flota en tiempo real.


(1) Aquí hacemos referencia a lo que se denomina GIS vectorial, aunque la mayoría de los GIS disponibles permiten el análisis de datos vectoriales y raster, se suele utilizar esta diferenciación en función de los datos que se pretenden analizar. Otro tipo de información que puede ser almacenada y gestionada es, por ejemplo, vídeos, series temporales, documentos, etc.