Usando GeoPandas en la Python Console de QGIS (GNU/Linux Debian)

Tratando de ser purista en el uso de PyQGIS, a veces, he obviado el uso de módulos útiles en Python; sobre todo porque algunos son difíciles de instalar en Windows. No obstante, voy a hacer una excepción comenzando por GeoPandas. GeoPandas extiende los ‘datatypes’ usados por ‘pandas’ para permitir operaciones sobre geometrías; las cuales son realizadas con el módulo ‘shapely’. Además, GeoPandas depende adicionalmente de ‘fiona’ para el acceso a los archivos y ‘descartes’ y ‘matplotlib’ para graficar.

En el caso de GNU/Linux Debian es muy fácil instalar el módulo (como superusuario) empleando ‘easy_install’:

.
 easy_install geopandas
.

Después de instalado, voy a probar algunas opciones con el shapefile siguiente:

geopandas1

El código completo se encuentra a continuación. Las primeras líneas refieren la importación del módulo y la lectura del archivo correspondiente.

import geopandas as gpd
poly = gpd.read_file("/home/zeito/pyqgis_data/polygon8.shp")
print poly.head

# copy poly to new GeoDataFrame
points = poly.copy()

# change the geometry
points.geometry = points['geometry'].centroid

# save the centroid shapefile
points.to_file('/home/zeito/pyqgis_data/pol8_centroid.shp')

buffer = points.copy()

buffer.geometry = buffer['geometry'].buffer(5000)

# save the buffer shapefile
buffer.to_file('/home/zeito/pyqgis_data/pol8_buffer.shp')

rotate = poly.copy()
rotate.geometry = poly['geometry'].rotate(30, (416572.447683, 4438177.70125))

# save the rotate shapefile
rotate.to_file('/home/zeito/pyqgis_data/pol8_rotate.shp')

La instrucción ‘print poly.head’ permite imprimir en la Python Console de QGIS el encabezado del archivo shapefile donde se puede apreciar, además de la geometría, todos los campos que se encuentran en la tabla atributiva del shapefile.

geopandas2

Las líneas subsiguientes de código permiten determinar, respectivamente, el centroide de cada feature de los polígonos, el buffer (5000 m) de cada centroide y, por último, la rotación del conjunto inicial de polígonos (30 grados) con respecto al punto (416572.447683, 4438177.70125). Todas estas geometría se grabaron como shapefiles a partir del método ‘to_file’ contenido en el módulo de GeoPandas y luego se cargaron manualmente al Map Canvas de QGIS; tal como se indica a continuación:

geopandas3

Un ‘dir’ a cualquiera de los objetos geométricos considerados permitirá tener una visión general de todos los métodos potencialmente utilizables. Uno de ellos es ‘area’. Para un ejemplo rápido en la Python Console de QGIS se tiene:

>>>area = poly.geometry.area
>>>for item in area:
>>>...	print item
138971089.37
280502186.97
373715925.391
213453359.473
196392600.496
144829440.039
127035968.315
162925151.135
Esta entrada fue publicada en Código Python, SIG, Software Libre. Guarda el enlace permanente.

4 respuestas a Usando GeoPandas en la Python Console de QGIS (GNU/Linux Debian)

  1. Te aconsejo usar todo ésto en la consola integrada de IPython en QGIS (IPython console plugin).

  2. Pingback: Instalación de la consola integrada de IPython en QGIS (IPython console plugin) y GNU/Linux Debian | El Blog de José Guerrero

  3. Pingback: Usando Fiona y Shapely en la Python Console de QGIS (GNU/Linux Debian) | El Blog de José Guerrero

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s