El Blog colaborativo sobre Geotecnologías, GIS y Mapas para la comunidad GEO
  • Política de cookies
  • Más información
  • Contacto
geomapik
  • Proyecto
  • Contacto
Sin resultados
Ver todos los resultados
geomapik

Librerías Python GIS para manipular y analizar datos espaciales

Raúl Estévez por Raúl Estévez
16 septiembre, 2019
en Análisis GIS, Desarrollo GIS
Home Desarrollo GIS
8.1k
Vistas
CompartirTwitter

En este articulo se pretende recoger, describir y diferenciar las principales librerías de Python para GIS más utilizadas para trabajar con geoinformación y para realizar análisis espacial.

El lenguaje de programación Python goza de una tremenda popularidad. Su vinculación con los GIS es innegable: aporta grandes ventajas en la gestión y el análisis de información espacial.

Python: un aliado de los GIS

Python es uno de los lenguajes de programación más extendidos dentro del desarrollo de software y del análisis de datos.

En clave GIS, el lenguaje Python puede utilizarse como una potente herramienta para manipular y realizar análisis espacial avanzado mediante una serie de librerías específicamente desarrolladas para tales fines.

En cierto modo, Python rivaliza en popularidad e importancia con lenguajes como SQL para trabajar con Bases de Datos Espaciales u otros lenguajes vinculados específicamente a la programación web como JavaScript, utilizado habitualmente para realizar aplicaciones y visores de mapas web.

Python es uno de los lenguajes principales y fundamentales dentro del ámbito GIS, tal y como destacamos en nuestro artículo sobre los principales lenguajes de programación GIS.

La clave en el uso de Python frente a un GIS de escritorio convencional radica en la facilidad para visualizar y manipular datos mediante scripting, adaptar los geoprocesos de análisis o diseñar nuevos, establecer rutinas de trabajo con los datos espaciales que ahorren tiempo y reducir los tiempos de ejecución de tareas, entre otros.

Fortalezas y aplicaciones de Python como lenguaje de programación

La popularidad creciente de Python no es casualidad: existen ciertos aspectos del lenguaje que lo apuntalan como uno de los lenguajes más usados después de JavaScript y Java.

Entre esos aspectos que hacen fuerte a Python destacan:

  • su relativa facilidad de aprendizaje debido a la sencillez de su sintaxis y a las estructuras de datos que utiliza.
  • ser multiparadigma, pero especialmente por el hecho de poder adaptarse a la programación orientada a objetos.
  • el carácter modular: es fácilmente ampliable mediante paquetes o librerías.
  • la capacidad de ejercer como lenguaje «pegamento» o «puente», es decir, por tratarse de un lenguaje apto para trabajar como conexión entre componentes de software distinto o entre plataformas.
  • un gran soporte, popularidad y comunidad activa que lo respalda, lo aprende y lo utiliza a diario.

Además, a diferencia de otros lenguajes de programación, Python es claramente multipropósito: cubre y es susceptible de ser aplicado a un enorme rango de escenarios, proyectos y tareas precisamente derivado de su naturaleza modular.

Su versatilidad, es decir, la capacidad de ser aplicado a prácticamente cualquier campo y ante cualquier propósito, es claramente otro de sus principales puntos fuertes.

Python para GIS
Código Python. Fuente: imagen de Johnson Martin de Pixabay.

Python permite ser utilizado en programación web en el lado servidor, se utiliza para acceder y gestionar bases de datos, para programar aplicaciones de escritorio y desarrollar interfaces.

Además, tiene enormes aplicaciones en estadística y análisis de datos, es imprescindible en Big Data y Machine Learning, se utiliza también para el desarrollo de aplicaciones científicas e incluso en el ámbito de los videojuegos.

Principales aplicaciones y usos de Python para GIS

Cuando hablamos de las aplicaciones de Python dentro del ámbito GIS o geoespacial, cabe destacar su utilidad ante dos propósitos generales:

  • Automatizar tareas repetitivas mediante scripts o plugins, centrándose en la propia gestión y el tratamiento de la geoinformación.
  • Realizar análisis espacial avanzado, expandiendo las herramientas de análisis convencionales de los GIS de escritorio mediante librerías específicas.

Librerías Python GIS para análisis espacial

A continuación listamos las principales (que no únicas) librerías de Python especialmente diseñadas y utilizadas para tratar con datos GIS tanto vectoriales como ráster, así como para realizar análisis espacial.

GDAL/OGR: la librería de cabecera

GDAL es el acrónimo de la librería Geospatial Data Abstraction Library. Fue creada en los años 90 por Frank Warmerdam y publicada originalmente en el año 2000.

Por su parte, el nombre OGR proviene de OpenGIS Simple Features Reference Implementation, nombre olvidado y adaptado posteriormente a OGR Simple Features Library.

GDAL librería Python GIS

Las principales diferencias entre ambas librerías se deben a su aplicación: GDAL se orienta al procesamiento de datos de tipo ráster provenientes de más de 200 formatos distintos, mientras que OGR se utiliza para leer, escribir, proyectar y convertir datos GIS de carácter vectorial, soportando también una gran cantidad de formatos distintos.

Se puede acceder al listado de todos los formatos GIS ráster soportados por GDAL introduciendo en la consola:

ogr2ogr --formats
libreria python GIS OGR formatos
Algunos de los formatos GIS vectoriales soportados por la librería OGR. Fuente: elaboración propia.

Por su parte, podemos conocer el listado de formatos GIS ráster utilizados en OGR haciendo uso del comando:

gdalinfo --formats
libreria gdal python gis
Formatos soportados por GDAL para trabajara con archivos GIS de tipo ráster. Fuente: elaboración propia.

El hecho de hacer referencia a ambas librerías como una única se debe a que la instalación de GDAL lleva implícita o da acceso a OGR, al depender en ciertos aspectos de la primera. En cierto modo podríamos decir que OGR es la «sublibrería» de GDAL dedicada al trabajo con datasets vectoriales.

GDAL/OGR es una de las principales librerías de acceso a datos de carácter espacial y de las más utilizadas, no sólo por programadores, sino también por otras librerías de Python y aplicaciones de software diverso.

Entre las distintas aplicaciones que se nutren de esta librería se sitúan: MapServer, GRASS, QGIS, ArcGIS, FME…

Shapely: para manipular datos vectoriales

La librería Shapely para Python está enfocada en la manipulación y el análisis de datos vectoriales. Se basa en GEOS, una librería escrita en C++ que provee de algoritmos a PostGIS, además de a otras librerías como sf para el lenguaje R.

Shapely trabaja básicamente con elementos geométricos de tipo Punto, Línea y Polígono.

Asimismo, también admite geometrías basadas en colecciones de elementos de carácter Multipunto, Multilínea y Multipolígono.

Permite, entre otros, realizar análisis geométricos:

  • basados en las características y la posición de los elementos involucrados (calcular coordenadas, centroides, distancias, áreas, perímetros, buffers o áreas de influencia…).
  • basados en la relación espacial entre los elementos (intersección, cruce, inclusión, exclusión…) en base a predicados booleanos (verdadero o falso).
analisis espacial shapely python
Ejemplo de método de análisis espacial, referido a la diferencia entre dos objetos geométricos distintos, contenido en la librería de Shapely de Python. Fuente: Documentación oficial de Shapely.

Tiene un manual de usuario completo y de fácil comprensión, muy recomendable para familiarizarse con la librería y consultar ante dudas o para visualizar ejemplos. En GIS StackExchange pueden resolverse dudas siguiendo la etiqueta «shapely».

Fiona: para leer y escribir archivos vectoriales

El propósito principal de la librería de Python Fiona es la lectura y escritura de archivos geométricos de tipo vectorial.

Generalmente se utiliza en combinación con otras librerías como Shapely para el procesado y la manipulación de información geográfica vectorial.

Para el trabajo en exclusiva con archivos en formato shapefile de ESRI puede utilizarse la librería pyshp.

La librería para Python pyshp es tan simple como su propósito: está escrita estrictamente para leer y/o escribir archivos shapefile de ESRI, corriendo directamente sobre Python.

GeoPandas: facilitando el trabajo con datos espaciales

La librería GeoPandas es la extensión de la librería Pandas de Python, que permite acceder y trabajar con las estructuras y tipos de datos de esta librería en operaciones de tipo espacial.

Geopandas, no obstante, depende de las otras dos librerías vectoriales mencionadas: para acceder a archivos depende de Fiona y para realizar operaciones geométricas depende de Shapely.

Así pues, los objetos geométricos válidos son exactamente los mismos que usa Shapely: punto, línea y polígono además de las colecciones de objetos. No obstante, GeoPandas introduce dos estructuras de datos distintas, heredadas y adaptadas a las correspondientes referencias espaciales de la librería original Pandas: GeoSeries y GeoDataFrame.

Mapa GeoPandas Python libreria
Ejemplo de mapa construido con GeoPandas mostrando buffers generados con la misma librería alrededor de puntos. Fuente: Documentación Oficial de la librería GeoPandas.

Podría decirse que ambas estructuras funcionan análogamente a una base de datos. GeoSeries es un elemento vectorial con capacidad de reunir conjuntos de elementos geométricos como un único objeto. GeoDataFrame es la estructura tabular de los datos contenidos en GeoSeries.

GeoPandas También permite graficar datos y mostrar visualizaciones de mapas, en este caso mediante matplotlib. Puedes echar un vistazo a nuestro artículo sobre generación de mapas con GeoPandas y matplotlib para conocer más acerca de éstas y otras librerías para visualización de datos espaciales y confección de mapas en Python.

Pyproj: para trabajar con proyecciones

La librería pyproj consiste en la interfaz de la librería PROJ4 de OSGeo traída a Python desde C y su uso está centrado básicamente en la proyección y conversión de geometrías entre sistemas de referencia de coordenadas.

A continuación, un simple ejemplo de la transformación de las coordenadas de un punto de un SRC a otro:

# Importar la librería pyproj
from pyproj import Proj, transform

# Definimos los SRC involucrados
etrs89 = Proj(init='epsg:25830') # SRC origen
wgs84 = Proj(init='epsg:4326') # SRC destino

# Indicamos coordenadas X e Y del punto a transformar
x, y = (209811.26, 4374736.23)

# Aplicamos transformación, pasando como parámetros 
# las 3 variables definidas anteriormente
coordenadas = transform(etrs89, wgs84, x, y)

# Mostramos el resultado
print coordenadas
(-6.373443550273573, 39.47330540167159)

Permite trabajar con cientos de sistemas de coordenadas distintos, realizando cálculos y transformaciones tanto cartográficas como geodésicas mediante las clases Proj y Geod respectivamente.

Rasterio: para manipular imágenes ráster

El propio nombre ofrece pistas acerca de su cometido: la librería Rasterio para Python permite leer, manipular y escribir archivos de tipo ráster.

Rasterio Python GIS raster
Rasterio es una libreria Python utilizada habitualmente para tratar imágenes de satélite y ráster. Fuente: WikiImages de Pixabay.

Es una buena alternativa a GDAL como librería para trabajar con imágenes ráster pues permite ejecutar procesos similares escribiendo menos código, con una sintaxis algo más sencilla y elegante.

Algunos artículos cómo el de Martin en GIS-Blog o el de Andrew Cutts en ACGeospatial apuntan a que, si bien el tiempo de ejecución de ambas librerías es similar, en la mayoría de ocasiones GDAL tiene un mejor desempeño que Rasterio cuando se trata de trabajar con imágenes de satélite o capas ráster desde Python.

Rasterio se construye en base a las funcionalidades de diversas librerías de Python como Numpy o la propia GDAL.

Puedes encontrar toda la información acerca de su funcionamiento y particularidades en su documentación, bastante completa y con ejemplos gráficos para mayor utilidad.

Etiquetas: AnálisisCartografíaDatosDesarrollo GISGISLibrerías GISMapasProgramaciónPythonSistemas de Información Geográfica
Compartir260Tweet162
AVISO
Post anterior

Cómo conectar PostGIS y QGIS para importar capas

Post siguiente

¿Qué es PostGIS? Extensión GIS para PostgreSQL

Raúl Estévez

Raúl Estévez

Geógrafo y Geoinformático. 8 años de experiencia. Apasionado de los GIS y la geotecnología, el análisis espacial y la cartografía digital. Especializado en gestión, análisis, integración y visualización de geoinformación. No entiendo el mundo sin los mapas.

Post siguiente
que es postgis

¿Qué es PostGIS? Extensión GIS para PostgreSQL

cómo instalar postgis

Cómo instalar PostGIS y PostgreSQL en Ubuntu

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Posts Recomendados

Cómo extraer y representar curvas de nivel con QGIS

Cómo extraer y representar curvas de nivel con QGIS

11 diciembre, 2018
23.9k
qpackage qconsolidate plugin qgis

QPackage y QConsolidate: empaquetar y exportar proyectos de QGIS

25 febrero, 2019
11.7k
Geotecnologías GIS Mapas Cartografía Digital

Geotecnologías, GIS y Mapas

Información, recursos de aprendizaje y novedades del sector GEO para los usuarios especializados en el manejo de la información geográfica, su análisis y su representación.

Posts Nuevos

python visualizacion datos

Librerías Python para visualización de datos

21 febrero, 2023
1.2k
geopandas leer archivos GIS

Cómo leer archivos GIS con Geopandas

20 febrero, 2023
1k
Join espacial PostGIS

Cómo realizar un join espacial en PostGIS

19 febrero, 2023
636
Overture Maps. ¿Rival para Google Maps?

Overture Maps ¿una nueva plataforma de mapas con datos abiertos?

19 diciembre, 2022
551
El futuro de los GIS según OpenAI

El futuro de los GIS y el sector geoespacial según OpenAI

9 diciembre, 2022
561
Geotecnologías GIS Mapas Cartografía Digital

El blog colaborativo sobre Geotecnologías, GIS y Mapas para la comunidad GEO

Información, recursos de aprendizaje y novedades del sector GEO para los usuarios especializados en el manejo de la información geográfica, su análisis y su representación.

Todo reunido en un blog colaborativo y abierto. ¿Te animas a colaborar con geomapik?

Categorías

  • Análisis GIS
  • Desarrollo GIS
  • Novedades GIS
  • Recursos GIS
  • Spatial Data Science
  • Tutoriales
  • Uncategorized
  • Webmapping
Sin resultados
Ver todos los resultados
Spatial Data Science

Librerías Python para visualización de datos

21 febrero, 2023
1.2k
Spatial Data Science

Cómo leer archivos GIS con Geopandas

20 febrero, 2023
1k
Análisis GIS

Cómo realizar un join espacial en PostGIS

19 febrero, 2023
636
Novedades GIS

Overture Maps ¿una nueva plataforma de mapas con datos abiertos?

19 diciembre, 2022
551

Etiquetas

Análisis (16) Análisis de datos (6) Análisis geoespacial (3) aprender GIS (5) ArcGIS (5) Bases de Datos Espaciales (5) Cartografía (29) Data Analysis (6) Data Science (6) Datos (9) Desarrollo GIS (16) Diseño cartográfico (6) ESRI (3) geoestadística (2) Geoinformática (8) GeoJSON (2) Geopackage (2) Geopandas (4) Geoproceso (2) Geotecnología (5) GIS (44) Javascript (4) Jupyter Notebook (3) Mapas (20) Matplotlib (2) MDT (3) Medio Ambiente (2) OpenStreetMap (3) pgAdmin (2) plugins (7) PostGIS (8) PostgreSQL (7) Programación (17) Python (10) QGIS (25) R (5) Shapefile (2) Sistemas de Información Geográfica (34) Spatial Data Science (4) SQL (7) Tutorial (14) visor de mapas (3) visualización (3) Webmapping (11) WKT (2)

© 2018 geomapik - Geotecnologías, GIS y Mapas

Sin resultados
Ver todos los resultados
  • Proyecto
  • Contacto

© 2018 geomapik - Geotecnologías, GIS y Mapas

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies