10 bibliotecas de Python para Mapeo y SIG
Para los usuarios más avanzados de SIG o incluso estudiantes que realizan estudios que requieren métodos y herramientas específicas, las bibliotecas de Python son la extensión definitiva, ya que les permite aumentar la funcionalidad principal del programa SIG.

En otras palabras, mediante el uso de bibliotecas de Python, es posible salir del molde o de lo establecido a nivel de análisis para un programa SIG, y crear nuevas herramientas que nos permiten aprovechar y profundizar más en nuestros datos, utilizando el programa SIG.

Con respecto a esto, tengo que decir que hoy en día, hay más de 200 bibliotecas estándar que podemos encontrar dentro de la web de Python. Pero, este número aumenta hasta el punto de ser interminable, si consideramos las bibliotecas de python creadas por terceros.

Así que, es posible decir que, el poder de los SIG gracias a Python hoy en día es infinito. Considerando que, esto a futuro será materia obligatoria y es un mundo que a penas está iniciando, y por tanto, es difícil encontrar información de calidad, vamos a empezar por lo más básico y vamos a conocer dentro de este artículo, ¿Cuáles son los paquetes de Python más populares que los profesionales de SIG utilizan hoy en día?. Empecemos.

¿Por qué es necesario aprender a utilizar bibliotecas de Python dentro de un SIG?

Si eres principiante y estás aprendiendo a manejar un SIG seguro te sentirás agobiado por todas las herramientas y análisis que puede llegar a poseer un programa SIG tipo ArcGIS Pro, ArcMap o Qgis, pero, mientras vas avanzando – y más si tu área es la investigación- te darás cuenta que el SIG posee pocas herramientas o funciones aplicables a tus datos espaciales.

Por ejemplo, un SIG no te permite calcular la diversidad alfa o beta de una zona, solo lo puedes hacer utilizando programas SIG específicos como DIVAGIS o añadiendo alguna biblioteca de python que te permita agregar esa función en específico – en este ejemplo estamos de suerte ya que podríamos utilizar SDMtoolbox que es un conjunto de varios scripts de python, para ser utilizados en ArcGIS y que nos permite realizar estos cálculos-.

En resumen, la idea que os quiero dejar, es que ningún software GIS tendrá la capacidad de hacerlo todo, en algún momento, sentiremos que a nuestro programa GIS le faltará cierta herramienta o función, y por tanto, será necesario, agregar una funcionalidad adicional y para hacerlo deberemos utilizar las bibliotecas de Python.

Así que antes de conocer las bibliotecas de python más populares, tal vez, sea necesario empezar por el principio y definir que es una Biblioteca de Python:

Una biblioteca de Python es código que otra persona ha escrito y para hacer la vida más fácil para el resto de nosotros y no reinventar la rueda, lo comparte al mundo.

Hoy en día encontraremos que los desarrolladores han escrito bibliotecas abiertas para aprendizaje automático, informes, gráficos y casi todo en Python. Así que si deseamos una funcionalidad adicional, podemos aprovechar estas bibliotecas, importándolas como scripts de python.

Bibliotecas Python para SIG

Entre las bibliotecas de Python más populares y más utilizadas dentro del mundo de los SIG, encontraremos este listado. Estas bibliotecas, nos permitirán ampliar o reforzar las funciones de gestión, análisis y visualización de datos espaciales de nuestro programa SIG.

Arcpy

Si utilizas ArcGIS Pro o ArcMap, probablemente has oído en algún momento ArcPy. ArcPy es una biblioteca de python diseñada para operaciones de geoprocesamiento. Pero no es solo para el análisis espacial, sino también para la conversión de datos, la administración y la producción de mapas utilizando los programas SIG de ESRI -En un comienzo con ArcMAP y en una versión más avanzada para ser utilizada con ArcGIS Pro-.

Geopandas

A diferencia de la librería Pandas que realiza análisis tabulares directos, la biblioteca geopandas agrega un componente geográfico. Para las operaciones de superposición, geopandas utiliza Fiona y Shapely, que son bibliotecas de Python propias.

GDAL/OGR

La biblioteca GDAL/OGR nos permite convertir o «traducir» información de un formato de información SIG a otro. Es muy común que programas SIG como QGIS, ArcGIS, ERDAS, ENVI y GRASS GIS utilice de alguna forma esta biblioteca para convertir información. En este momento, GDAL/OGR admite 97 formatos vectoriales y 162 ráster.

RSGISLib

La biblioteca RSGISLib es un conjunto de herramientas que permiten procesar y analizar información obtenida por teledetección. Con ella es posible realizar clasificaciones, filtrar o calcular estadísticas de imágenes raster. Además encontraremos funciones muy útiles como el módulo para la segmentación y clasificación basada en objetos (GEOBIA).

PyProj

PyProj permite proyectar y transformar coordenadas entre un amplío número de sistemas de referencia geográfica. También permite realizar cálculos geodésicos y de distancias para cualquier referencia dada.

Bibliotecas python para ciencia de datos

La información espacial puede definirse como información con coordenadas geográficas, es por esto, que dentro del campo de los SIGs, la ciencia de datos esté tomando terreno aceleradamente o visto de otro modo, que tenga tanta importancia. Conocer técnicas y recursos de big data es necesario, ya que son otros métodos que permiten extrae información de los datos. Ya sabemos que la ciencia de datos básicamente se encarga en recopilar información e intenta darles un sentido.

Esto nos plantea la necesidad de conocer nuevas técnicas o métodos que permitan manejar grandes cantidades de datos y encontrar patrones. Es por este motivo, que a continuación vamos a estudiar varias bibliotecas de Python que nos facilitará el análisis de grandes volúmenes de datos .

NumPy

Numerical Python (NumPy library) toma los datos de las tablas de atributos y los coloca en  matrices estructuradas. Lo interesante de colocar los datos en una matriz estructurada, es que los cálculos se realizan mucho más rápido a la hora de realizar cualquier proceso de computación científica. Otra de las fortalezas de NumPy es que puede trabajar con otras bibliotecas de Python como SciPy utilizada para realizar operaciones estadísticas pesadas.

Pandas

La biblioteca Pandas es inmensamente popular dentro del mundo de la organización de datos. No es sólo es útil para estadísticos, también, es increíblemente útil para analistas SIG. Á clave de esta biblioteca es su rendimiento computacional, todo esto gracias a, su marco de datos optimizados para trabajar con big data. Como curiosidad os comento que, estos Marcos de Datos están optimizados de tal manera que ni siquiera Microsoft Excel sería capaz de manejar.

Matplotlib

Cuando trabajamos con un elevado número de puntos de datos, a veces, para comprenderlos, es mejor trazarlos. Para esta función lo mejor es utilizar la biblioteca matplotlib que facilita la visualización gráfica de los datos. Matplotlib lo hace todo, traza gráfico y mapas y funciona muy bien con un elevado número de datos.

Scikit

Scikit es una biblioteca de Python que permite el aprendizaje automático. Está construido en NumPy, SciPy y matplotlib. Por lo tanto, si desea realizar cualquier minería de datos, clasificación o predicción de ML, la biblioteca de Scikit es una buena opción.

Re (expresiones regulares)

La biblioteca expresiones regulares (Re) es una buena herramienta para aplicar filtros a grandes volúmenes de datos. Por ejemplo, si deseamos localizar una cadena específica dentro de un montón de datos en una tabla. Además, también permite detectar, extraer y reemplazar patrones coincidentes en los datos.

ReportLab

ReportLab será una de las bibliotecas que más utilices de esta lista. Como bien sabes, los SIG a menudo carecen de capacidades suficientes para la presentación de informes, con esta biblioteca podrás mejorar tus presentaciones y además también te permite crear tu propia plantilla.

Estas son las bibliotecas de Python que creo que son las más importantes para trabajar con SIG y ciencia de datos.

Ahora, es tu turno. Déjanos un comentario si conoces otra librería que debería estar en esta lista.

Nos vemos en el siguiente post,

Isis

El auge del aprendizaje automático (ML): Cómo se aplica la inteligencia artificial en el mundo de los SIG
Probablemente has oído hablar del aprendizaje automático  (Machine Learning en inglés), y tal vez, no sepas definirlo o te imagines a un robot humanoide super listo jugando ajedrez contigo.

En realidad, el aprendizaje automático no es tan futurista como el nombre nos indica, aunque si se aplica en la robótica, no es un robot capaz de retarte a una partida de ajedrez.
Son simplemente algoritmos que buscan patrones o diferencias entre datos y son capaces de detectarlos e incluir ese patrón entre sus datos. En otras palabras en un software capaz de escribir software.

Por ejemplo, pensemos en la bandeja de Spam, en ella suelen llegar mensajes de «Hazte Rico, por James Smith», esto quiere decir que hay un programa que cada vez que ve un mail similar o con estas características lo envía a spam.

Ahora pensemos que el que hace ese mail, se ha dado cuenta que lo detectan y le envían a spam su email. Así que, decide crear otro email masivo y como siempre con un virus de regalo. Esta vez, «Tienes una multa, Margarita Flecher»,  y lo envía masivamente.

Los que reciben el email, verán ese mail y lo borrarán inmediatamente o lo marcarán como spam. Con estas acciones de los usuarios, se está creando un patrón o comportamiento masivo, que detecta nuestro software antispam, aquel que siempre nos protege de los mail maliciosos.

El software detecta que los usuarios están enviando el email a spam o borrándolo «Tienes una Multa, Margarita Flecher», así que lo incluye a su base de datos de mails sospechosos.  Lo que ha ocurrido aquí, es que sin ningún programador detrás, el software aprendió un nuevo mail spam, lo incluyó dentro de su código, y a partir de ahora, siempre Margarita Flecher y su multa serán enviadas automáticamente a la carpeta spam de tu email.

Así que, esta capacidad del software de poder escribir en su código, aumentar su base de datos y detectar patrones, es una manera simple de dar un ejemplo de Aprendizaje Automático.

Tipos de aprendizaje automático (ML)

Antes de empezar a dar ejemplos sobre como se aplica el aprendizaje automático en el mundo de los SIGs, es necesario entender que existen dos tipos o categorías de aprendizaje automático: el aprendizaje supervisado y el no supervisado.

El aprendizaje supervisado consiste en indicarle al programa una serie de patrones válidos para que los considere de referencia. Por ejemplo, es muy similar a lo que nosotros conocemos como Clasificación Supervisada cuando trabajamos con imágenes o rasters en un SIG. En este último caso, le indicamos que patrones o características queremos que relacione a una categoría. Por ejemplo, si queremos clasificar una imagen de satélite con una combinación de bandas de color verdadero, le indicamos al programa que  el azul es agua, el verde claro cultivos, etc. Para que el indique las categorías y clasifique toda la imagen.

En este caso, cuando hablamos de Aprendizaje supervisado, el ejemplo más clásico es la detección de rostros humanos. El programa es capaz de reconocerlos ya que el programador le ha suministrado distintas fotos de rostros humanos como ejemplo para crear su base de datos y referencias.

En cambio, cuando hablamos de aprendizaje no supervisado, el programa no cuenta con datos que definan qué información es satisfactoria o no.

En este caso, el programa busca patrones que permitan separar y clasificar los datos en diferentes grupos, en función de sus atributos.

Siguiendo con el ejemplo anterior, podemos indicar que el proceso es muy similar a la clasificación no supervisada, donde el programa determina patrones en la imagen y los clasifica en clusters para realizar la clasificación.

Así que al igual que con las imágenes satelitales,  la información obtenida o los resultados obtenidos después de aplicar a nuestros datos un  algoritmo de aprendizaje no supervisado, debe ser posteriormente interpretada por una persona para darle utilidad.

Ahora bien, después de este ejemplo vamos a pasar a nuestro campo de trabajo o estudio y vamos a ver algunos ejemplos de como se aplican las técnicas de aprendizaje automático dentro del mundo de los SIGs.

Clasificación de imágenes (Máquina vectorial de soporte)

Como seguro nos ha pasado más de una vez, al visualizar una imagen satélite, no siempre es fácil conocer si estás observando un árbol o un campo de cultivo, o definir si es una carretera asfaltada o no. Así que si para nuestro cerebro es difícil imagínate lo difícil que puede ser para un programa informático.

Cuando se desea clasificar imágenes utilizando técnicas de aprendizaje automático, una de las opciones es, la técnica de aprendizaje automático Maquina Vectorial de Soporte o Support Vector Machine (SVM), en inglés.

Esta técnica de aprendizaje automático toma información o reconoce los patrones a partir de los datos clasificados, luego una vez reconocidos y creados grupos de similares analiza los extremos. A continuación, dibuja  las líneas de los límites.

Ahora bien, los resultados obtenidos con este tipo de clasificación supervisada no son perfectos y aún es necesario mejorar los distintos algoritmos basados en esta técnica. A medida que los algoritmos mejoren y se incorporen más datos de entrenamiento, esta técnica será más fiable y podrá ser usada en cualquier imagen satélite.

Predicción mediante Kriging Bayesiano Empírico (EBK)

El éxito o el uso tan extendido de los distintos métodos para realizar la Interpolación de Kriging radican en que, esta técnica de interpolación, nos ayuda a predecir valores desconocidos basados en un patrón espacial.

Ahora bien, el método Kriging bayesiano empírico (EBK), en comparación con otros métodos de  kriging, es una interpolación de estadísticas geográficas que automatiza los aspectos más complejos. Por ejemplo, los otros métodos de kriging requieren el ajuste manual de los parámetros para realizar los modelos, y nos obligará a realizar varias pruebas hasta obtener resultados precisos, pero EBK calcula automáticamente esos parámetros por medio de un proceso de creación de subconjuntos y simulaciones.

En otras palabras, el método de Empirical Bayesian Kriging (EBK), realiza diversas predicciones utilizando una variedad de simulaciones, al menos, hasta cien veces. Al final, mezcla todos los resultados y crea una superficie final. Generando lo que el programa cree que es la mejor solución.

Esta es la razón por la que EBK casi siempre predice mejor que otros métodos para realizar la interpolación de kriging.

Segmentación de imágenes y clustering con K-means

Cuando hablamos de clustering (que en castellano se denomina agrupamiento) nos referimos a que vamos a agrupar automáticamente datos. Como vimos en el apartado anterior, estos métodos, son un tipo de aprendizaje automático no-supervisado.

Ahora bien, uno de los métodos más populares para agrupar datos es el algoritmo K-means.  Este algoritmo realiza la segmentación en función a la similitud de los datos, creando un número específico de grupos que ha sido indicado por nosotros y que es el valor K.

En otras palabras, este método de aprendizaje no supervisado, asigna a cada punto o pixel de la imagen a uno de los grupos a crear, siempre en función de la similitud de las entidades. Por ejemplo, la similitud puede basarse en las características espectrales y la ubicación.

En una clasificación no supervisada, el algoritmo k-means segmenta primero la imagen para su posterior análisis. A continuación, a cada clúster se le asigna una clase de cobertura terrestre.

Sin embargo, los SIG pueden usar la agrupación en clústeres de otras maneras únicas. Por ejemplo, los puntos de datos podrían representar características ambientales (como niveles de contaminación).

El proceso de aprendizaje profundo y capacitación para Big Data

Ya sea en el mundo de los SIGs u otros campos, el aprendizaje automático está siendo una herramienta para análisis cada vez más común. Ya que con sus métodos es posible analiza grandes conjuntos de datos y casi siempre en los resultados se muestran comportamientos o patrones que con otros análisis o que con menos datos nunca se habían revelado o notado.

En general, los SIG utilizan el aprendizaje automático para la predicción, la clasificación y la agrupación en clústeres de los datos. Pero aun queda mucho por descubrir, eso lo veremos en un futuro próximo, ya que cada día se crean nuevas formas de analizar datos geográficos bajo el enfoque de la inteligencia artificial y el aprendizaje automático, esto conseguirá que el mundo de los SIGs y la forma de interactuar con ellos cambien completamente.

Para saber más:

  1. Artículo sobre Empirical Bayesian Kriging: https://www.esri.com/news/arcuser/1012/files/ebk.pdf
  2. Técnicas de Clasificación de Imágenes en la Teledetección
  3. Big Data en los estudios de Ecología
Big Data en los estudios de Ecología

Los diversos estudios científicos realizados para determinar y describir como son los ecosistemas, han permitido recopilar mucha información durante las últimas décadas, pero el problema es que, esta información se ha recopilado de manera aislada. Una de las ventajas de lo que hoy conocemos como “El Big Data” es que, permitirá agrupar toda esta información, estudiarla y obtener un nuevo enfoque de los problemas medioambientales , en este caso, a una nueva escala: una escala global .

Por tanto, el Big Data debe verse como algo más que un gran cúmulo de datos binarios -o ceros y unos-. En realidad se ha convertido en una nueva forma de gestionar la información, convirtiéndose en una auténtica revolución digital, que no resuelve únicamente el problema de como almacenar la ingente cantidad de información generada por la humanidad, sino también que, busca optimizar el manejo o la gestión de toda esa información.

Como curiosidad os comento: Un estudio de la empresa IBM indica que, el 90% de los datos almacenados en los servidores de todo el mundo se han generado en los dos últimos años. Ahora bien, si mezclamos esta observación con la idea de que, el 90% de la información es susceptible a ser georreferenciada, no es una locura pensar que, unos de los sectores donde la información crece de manera exponencial, son: la exploración espacial, la teledetección o los estudios científicos relacionados al territorio, como son: los modelos de Cambio Climático o la Distribución de Especies.

Big Data y Ecología

Ya pensando en problemas globales como el Cambio Climático, nos hace darnos cuenta que, para la resolución de varios de los problemas medioambientales actuales, requieren que el enfoque en el estudio de los ecosistemas, deje de realizarse de manera individual y aislada.

Aquí es dónde intervienen los métodos utilizados bajo el enfoque del Big Data. Que en esencia lo que permiten es unir la información o datos de estudios recopilados en proyectos de investigación individuales, para lograr una proyección global.

Como curiosidad y para entender la magnitud de toda esta información que se ha ido recopilando de manera aislada, se estima que todos los datos, recopilados por científicos de universidades y centros de I+D, supera los cientos de terabytes.

Así que parece que no hay otra opción que para responder al el enfoque global, que se pide en la actualidad a la investigación en ecología, -con el fin de estudiar y responder a problemas globales como el cambio climático, la pérdida global de diversidad (especies, ecosistemas, etc.)- requiere de manera urgente utilizar las distintas herramientas y métodos computacionales aplicados en Big Data.