Oro negro lo llaman, cuando en realidad hay otras cosas mucho más preciadas

Scripts y herramientas de ayuda

Siempre que puedo me gusta diseñar y automatizar procesos, de tal forma que la siguiente vez que haya que repetirlos cuesten mucho menos. Además, diseñar aplicaciones específicas tiene también la ventaja de poder adaptarlas a tus necesidades. Por ello, las aplicaciones principales las rodeo de un conjunto de herramientas que me ayudan en mi día a día con acciones concretas que puedo llevar a cabo más rápido que si las hiciera dentro del SIG. Aquí pongo algunas de ellas a tu disposición por si te pueden ayudar

Consideraciones iniciales

Estos scripts y herramientas de apoyo fueron diseñados para operar en Linux, así que ya sabes lo que eso implica, te toca más línea de comandos

Como todo el software que proporcionamos, va sin garantía de funcionamiento (no soy una empresa dedicada a software ni cobro por las herramientas), así que puedes encontrar fallos o algún que otro problema (pero tranquilo, eso no significa que se te vaya a romper el pc). Todos ellos fueron generados gracias a la información que aporta la comunidad, yo solo hice las adaptaciones que necesitaba para mis fines. En cualquier caso, hemos aplicado una licencia MIT, para reforzar esta idea.

Los scripts que he preparado aquí están pensados principalmente para ayudarte a preparar los datos en el formato con el que trabajan los programas principales, así como poder automatizar algunos procesos de representación de resultados finales. En el interiro de cada carpeta encontrarás el script, instrucciones, y un ejemplo con datos para que puedas probarlo. Los nombres me los invento yo, pero se los puedes cambiar si no te gustan, al igual que la programación que contienen, si tienes los conocimientos o bien te sientes lo suficientemente confiado (es cuestión de práctica y echarle horas).

Para leer los script y los programas tienes que ir a la función MAIN, que está en la parte inferior. Es la que indica el orden en el que van pasando las cosas (son todos de programación estructurada, nada de objetos). Existen muchos comentarios en español que explican que va pasando a lo largo del código, por lo que puede ser una oportunidad para ir aprendiendo sin miedo.

Otro aspecto a considerar, como he comentado, es que yo no soy programador, así que una de las cosas que echaras en falta si tu, lector, lo eres, son las mil y una líneas que se añaden a cualquier programa para evitar que el usuario meta la pata. En este caso, el usuario tendrá que ser cuidadoso y asegurarse que los archivos de configuración están correctos (es bueno guardar siempre una copia del original).

Recuerda que si el archivo de configuración está en el mismo directorio que el script, no es necesario escribir toda la ruta cuando ejecutas el script (./nombre_scritp.xx config.file), pero si lo tienes en otra carpeta, entonces si. Es la misma situación que hemos descrito en cómo ejecutar los programas de análisis espacial.

Importante: si no usas los scripts para obtener los archivos con el formato de trabajo especificado sino que exportas directamente desde el SIG, debes recordar que todos aquellos *.csv deben ir separados por espacios, para que sean leídos por los programas principales de análisis espacial que están escritos en lenguaje C. Si llevan incorporados nombres, a estos deben añadirse un guión bajo para sustituir los espacios (LA TOLA, debe quedar como LA_TOLA), para evitar errores de lectura. Este tipo de operaciones pueden hacerse fácilmente en MS Office Excel o Libre Office Calc. También, es fundamental que hagas una revisión visual siempre del archivo exportado, a veces, columnas que deberían ser tratadas como números las convierte a texto. Lo mejor para ello es abrir el archivo exportado en un block de notas sencillo que no le agregue formato.

Prepara formato de entrada para archivos .*csv de datos vectoriales

Script denominado prepara-vector.py escrito en Python 3.X utilizando como librerías principales Pandas para manejo de datos y Configparse para lectura de archivos de configuración. 

El propósito de esta herramienta es ayudarte a generar el archivo de entrada para datos vectoriales cuya estructura es ID, TIPO, XCOOR e YCOOR. Claro, dirás que es muy sencillo, ¿para que requiero una herramienta específica cuando puedo obtenerlo directamente desde el SIG? En realidad la complejidad deriva del campo TIPO (categoría) cuando este existe y además no es numérico. Es ese el motivo por el que cree este script, para simplificar la codificación de la categoría y obtener como salida el archivo final y su correspondiente diccionario. Para operarlo debes exportar la tabla de atributos del archivo vectorial tal cual en *.csv desde el SIG.Se han dispuesto tres archivos de ejemplo que responden a situaciones de datos de entrada con categorías distintas.

El modo de funcionamiento es sencillo, tienes un archivo de configuración donde debes especificar la posición que ocupan las columnas de interés (todas tienen que estar en el archivo ya presentes), teniendo en cuenta que para contar debemos empezar por el 0, que sería la primera columna. A continuación te indico las variables que incorpora el archivo de configuración:

Descarga aquí el script y un archivo de configuración de ejemplo

Como ejemplo de uso puedes ver en el desplegable inferior las posibles combinaciones (las tengo que apuntar porque hasta yo me olvido), las cuales también están presentes al abrir el script como comentarios.

Modo 0: No existe categoria, val = 0

creaide: 1 o 0, depende de si existe ID

creatip: 1, para que lo cree con ceros

catestx: 0, En origen no tiene

Modo 1: Existe categoria en 1 columna y es numerica, val = 1  (se lee directamente), tambien se utiliza cuando la categoria corresponde a cantidad (poblacion catestx=2)

creaide: 1 o 0, depende de si existe ID

creatip: 0, no requiere crear campo categoria 

catestx: 0 o 2, es numerica o bien es cantidad

Modo 2: Existe categoria en 1 columna y es texto, val = 2  (se crea campo code para transforacion texto a num)

creaide: 1 o 0, depende de si existe ID

creatip: 1, si requiere crear campo categoria para transferir valores

catestx: 1, es texto

Modo 3: Existe categoria en 2 columnas, una corta y otra larga catestx=1, val = 3 (se crea campo code para transforacion texto a num)

creaide: 1 o 0, depende de si existe ID

creatip: 1, si requiere crear campo categoria para transferir valores

catestx: 1, es texto

Prepara formato de entrada para archivos .*csv de UAEs

Script denominado prepara-UAE.py escrito en Python 3.X utilizando como librerías principales Pandas para manejo de datos y Configparse para lectura de archivos de configuración.

Este srcript tiene un propósito parecido al anterior, pero en este caso aplicado a los archivos *.csv que acompañan a las UAEs raster (*.grd). Este es más fácil trabajarlo directamente desde el SIG, generando los siguientes campos: ID, CODE, PERIM, AREA, XCOOR e YCOOR. Si ya los tienes, solo debes ordenarlos y eliminar el resto de atributos antes de exportar a *.csv. De otra forma, exportas el archivo original y luego adaptas un archivo de configuración para que el script genere el archivo con el formato necesario. En este caso hemos aportado un ejemplo sencillo derivado de los barrios de Quito para probar la herramienta.

Este script genera dos tipos de formato de archivo de salida: 1) el comentado anteriormente de uso más extendido para las modalidades de análisis espacial RASTER-RASTER y RASTER-VECTOR;  2) otro donde se añade una última columna con el nombre NAME, pensado para operar con capas administrativas en análisis espacial VECTOR-RASTER. El objetivo aquí consiste en transferir en bloque todas las zonas administrativas o de interés en las que un punto está situado. A continuación, indicamos cada uno de los parámetros disponibles en el archivo de configuración:

Descarga aquí el script y un archivo de configuración de ejemplo

Genera archivo *.grd para datos raster

Script denominado cambia_raster.sh escrito en lenguaje BASH que depende de la librería GDAL (debe estar instalada en el sistema) dedicada al manejo de datos espaciales tipo raster o vectoriales.

Para el caso del Qgis, he observado que el proceso de rasterización da menos problemas utilizando el formato *.geotif, que es el definido por defecto en el sistema. Así que la manera de operar es realizar el proceso de rasterización (vector-raster para UAE o datos poligonoales que van a trabajar como raster) dentro del SIG (aunque también tengo otro script para eso) y luego pasar a formato Binary Golden Software (*.grd) mediante el uso de este script. El diseño del mismo contempla varios supuestos dependiendo de la proyección de origen del dato. 

Para operar con él hay que abrirlo en un editor simple y modificar las primeras líneas, donde encontrarás tres secciones específicas que hacen referencia al tipo de raster esperado (decimal o entero), el tipo de proyección origen destino y el nombre del archivo de entrada y la ruta escogida de salida. En este caso está preparado para operar en el DMQ. El resultado final debería ser el archivo que realmente procesemos con las aplicaciones de análisis espacial.

Se ha incluido un ejemplo a partir de una cuenca hidrográfica de Quito, para pasar de formato *.geotif a *.grd.

Descarga aquí el script y un archivo de configuración de ejemplo

Unifica archivos .*csv de salida con shapefiles

Script denominado unifica_csvtoshp.py escrito en Python 3.X utilizando como librerías principales Pandas y Geopandas para manejo de datos y Configparse para lectura de archivos de configuración.

Como hemos explicado, bien para los archivos de UAEs, bien para los vectoriales, los archivos de salida en formato *.csv pueden unirse físicamente a la capa shapefile de la que son originarios mediante un campo común (el ID), de tal forma que entidades vectoriales y nuevos atributos queden fijados en un único archivo. Esta operación también puede realizarse fácilmente en el SIG, pero cuando son muchos y hay que hacerla frecuentemente, lo ideal es tener un archivo de configuración y un script que puede realizar varias uniones consecutivas, actualizando en cascada todas las capas de interés que queramos.

En este caso, los parámetros del archivo de configuración son sencillos:

Descarga aquí el script y un archivo de configuración de ejemplo

Pinta mapas en formato *.jpg a partir de shapefiles

La representación gráfica de la información obtenida es otro mundo. En nuestro caso hemos desarrollado algunas aproximaciones específicas para obtener algunos materiales (evitando tener que pintar mapas en el SIG constantemente). Una de estas estrategias pasa por generar mapas de coropletas en formato *.png para cada uno de los indicadores disponibles y capa evaluada. Luego, por ejemplo, pueden unificarse en un solo archivo tal como mostramos en el ejemplo de visualización de Quito.

Este tipo de script son ya bastante más personales y a gusto de cada uno, la idea es que puedas adaptarlo a tus necesidades si lo crees conveniente, al igual que nosotros hicimos. Además del script con los archivos de ejemplo y su correspondiente configuración, encontrarás un archivo adicional (campos_pinta.csv) que define que atributos deben ser convertidos a mapa. Este archivo se adapta para cada grupo de datos que dispongan de los mismos tipos de atributos. La forma de confeccionarlo es bastante simple con los siguientes campos de información:

A parte del anterior, nuestro archivo de entrada princpal es el shapefile que contiene las formas vectoriales y los atributos derivados del análisis espacial. Los parámetros del archivo de configuración se explican a continuación:

Descarga aquí el script y un archivo de configuración de ejemplo


¿Alguna pregunta o dudas?

Envía un correo a josemarllin [arroba]  gmail.com para obtener más información sobre el proyecto o aclarar dudas para su aplicación en tu zona de estudio