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

Cómo leer archivos GIS con Geopandas

Raúl Estévez por Raúl Estévez
20 febrero, 2023
en Análisis GIS, Desarrollo GIS, Spatial Data Science, Tutoriales
Home Spatial Data Science
428
Vistas
CompartirTwitter

En este breve artículo vamos a mostrar de qué manera se pueden acceder y leer archivos GIS con información geográfica mediante Geopandas.

Geopandas es la principal librería de Python para trabajar con datos espaciales. Es una herramienta imprescindible para manipular, transformar, visualizar y analizar conjuntos de datos con componente geográfica.

GeoPandas
Logo de la librería de Python Geopandas

El punto esencial y básico para empezar a utilizar esta fantástica librería de Python es conocer cómo leer archivos con datos espaciales. Veamos cómo podemos realizar estas tareas con Geopandas.

¿Cómo leer archivos de datos espaciales con Geopandas?

Leer archivos espaciales con Geopandas es equivalente a la creación de un objeto GeoDataFrame de Geopandas que contenga los datos de dicho archivo.

Un objeto GeoDataFrame es una estructura de datos tabular que contiene por lo menos una columna con un objeto (Geoseries) que contiene la geometría.

Si no estás familiarizado con estos conceptos y quieres profundizar al respecto, te invitamos que revises este artículo de introducción a Geopandas que publicamos anteriormente. En él se definen los conceptos de GeoSeries y GeoDataFrame entre otros puntos.

Librería GeoPandas de Python: qué es y para qué sirve

Que Geopandas trabaje mediante un objeto GeoDataFrame permite homogeneizar la estructura de cualquier tipo de dato, para que la librería de Python sea capaz de trabajar con ellos independientemente de su formato de origen.

Así pues, vamos a ver cómo podemos convertir con Geopandas distintos tipos de archivos espaciales o geográficos a un GeoDataFrame con pocas líneas de código.

Cómo leer un Shapefile con Geopandas

Para leer un archivo vectorial de tipo Shapefile, deberemos importar la librería Geopandas y a continuación utilizar el método read_file(), especificando como parámetro el archivo SHP.

Deberemos almacenar el objeto en una variable, que será el objeto GeoDataFrame de Geopandas que contenga los datos del Shapefile leído.

import geopandas as gpd

gdf = gpd.read_file('datos.shp')

La variable ‘gdf’ contiene el objeto GeoDataFrame construido a partir del Shapefile de origen.

Como leer un GeoJSON con Geopandas

La misma sintaxis aplica para archivos de tipo GeoJSON:

import geopandas as gpd

gdf = gpd.read_file('datos.geojson')

Podemos utilizar el siguiente código para obtener los primeros registros del GeoDataFrame creado en base al GeoJSON leído:

print(gdf.head())

Asimismo, podemos ver la estructura de columnas del GeoDataFrame con el siguiente código:

print(gdf.columns)
Cómo leer GeoJSON con Geopandas Python
Visualización de los primeros registros de un GeoDataFrame creado a partir de la lectura de un archivo GeoJSON con Geopandas

Cómo leer un Geopackage con Geopandas

Para leer y cargar una capa desde un Geopackage a un GeoDataFrame de Geopandas, la sintaxis es ligeramente distinta.

Esto es debido a que, como debes saber, un Geopackage es un formato basado en una base de datos SQLite espacial, por lo que puede contener más de una capa.

Por ello, es necesario especificar el nombre de la capa que se desea leer mediante el argumento ‘layer’:

import geopandas as gpd

gdf = gpd.read_file('datos.gpkg', layer='nombre_capa')
Capa de NUTS 3 del Geopackage que vamos a tratar de leer con Geopandas

Es importante tener en cuenta que el nombre de la capa debe coincidir exactamente con el nombre de la capa en el archivo Geopackage, incluyendo mayúsculas y minúsculas

Si no se especifica el argumento ‘layer’, Geopandas leerá todas las capas del archivo Geopackage y devolverá un diccionario de objetos GeoDataFrame.

Código Python para leer un GeoPackage con Geopandas de Python
Código Python para leer un Geopackage y especificar la capa (layer) a convertir a GeoDataFrame con Geopandas
Listado registros leer GeoPackage con GeoPandas
Resultado de los primeros registros de la capa Geopackage leída con Geopandas y convertida a GeoDataFrame

Cómo leer un KML con Geopandas

Para leer archivos KML con Geopandas será necesario especificar el argumento ‘driver’.

Por lo demás, la sintaxis es muy similar ya que también se hace uso del método read_file() como se muestra a continuación:

import geopandas as gpd

gdf = gpd.read_file('datos.kml', driver='KML')

Si tienes problemas para leer un archivo KML es posible que la razón sea que la librería Fiona no tiene habilitado el driver KML por defecto.

Para habilitarlo, deberás introducir los siguientes comandos en la consola de python:

import fiona

# Listar los drivers disponibles en Fiona con:
fiona.supported_drivers

# Asegurarse que existen en el listado.
# De lo contario deberán habilitarse.

# Habilitar los drivers (según versión):
fiona.drvsupport.supported_drivers['libkml'] = 'rw'
fiona.drvsupport.supported_drivers['LIBKML'] = 'rw'

# O bien:
fiona.drvsupport.supported_drivers['libkml'] = 'rw'
fiona.drvsupport.supported_drivers['LIBKML'] = 'rw'

# Comprobar nuevamente que se ha actualizado el listado:
fiona.supported_drivers
Drivers Fiona para leer KML con GeoPandas
Añadiendo los drivers sobre Fiona para habilitar la lectura y escritura (r, w) de archivos KML para Geopandas

Cómo leer un CSV con Geopandas

Para el caso de archivos CSV, la técnica es ligeramente distinta, dado que no estamos hablando de archivos GIS vectoriales propiamente.

A pesar de que no es un formato de archivo espacial como tal, es interesante conocer de qué manera se puede ingerir un CSV con geometrías en Geopandas ya que a pesar de ello es bastante habitual intercambiar o encontrar información geográfica en este formato.

Para conseguirlo, deberemos ir un poco más allá y apoyarnos en la librería Shapely (sobre la que se construye Geopandas) junto a Geopandas propiamente.

Esto es debido a que necesitamos procesar la columna de geometría (generalmente en formato WKT) para indicar a Geopandas la lectura de dicha información mediante Shapely.

Deberemos indicar los parámetros ‘GEOMETRY_COL’ y ‘encoding’ en el método read_file() de Geopandas:

import geopandas as gpd
from shapely import wkt

# leer el archivo CSV
datos = gpd.read_file('datos.csv', GEOMETRY_COL='geom', encoding='utf-8')

# Convertir la columna geométrica de texto a objetos Shapely
datos['geom'] = datos['geom'].apply(wkt.loads)

# Convertir el DataFrame a un GeoDataFrame
gdf = gpd.GeoDataFrame(datos, geometry='geom')

Deberemos alterar la columna de geometría (originalmente en formato texto -WKT- desde el CSV) con wkt.loads() de Shapely para convertirla a un objeto geométrico que Geopandas pueda procesar.

Finalmente convertimos el DataFrame en un GeoDataFrame de Geopandas ahora que ya tenemos la geometría debidamente convertida.

Una vez conocemos cómo acceder a la geoinformación podemos empezar a realizar tareas más avanzadas destinadas a la transformación de datos es decir, a manipularlos, visualizarlos, analizarlos, combinarlos, etcétera.

Esperamos que este breve artículo sea útil para aprender a leer y cargar datos vectoriales GIS con Geopandas para trabajar con Python.

Etiquetas: Data ScienceGeoinformáticaGeoJSONGeopackageGeopandasGISProgramaciónPythonShapefileSistemas de Información GeográficaSpatial Data ScienceTutorial
Compartir14Tweet9
AVISO
Post anterior

Cómo realizar un join espacial en PostGIS

Post siguiente

Librerías Python para visualización de datos

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
python visualizacion datos

Librerías Python para visualización de datos

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

librerías web mapping javascript

Principales librerías y APIs para web mapping

15 febrero, 2019
5.2k
como acceder sector geo GIS SIG aprender

5 consejos para adentrarse en el sector GEO

10 enero, 2019
661
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
474
geopandas leer archivos GIS

Cómo leer archivos GIS con Geopandas

20 febrero, 2023
428
Join espacial PostGIS

Cómo realizar un join espacial en PostGIS

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

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

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

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

9 diciembre, 2022
371
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
474
Spatial Data Science

Cómo leer archivos GIS con Geopandas

20 febrero, 2023
428
Análisis GIS

Cómo realizar un join espacial en PostGIS

19 febrero, 2023
304
Novedades GIS

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

19 diciembre, 2022
364

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