Analizar geometría de un shapefile mediante el módulo OGR de Python

La página 42 del libro Python Geospatial Development nos trae otro código útil que permite analizar la geometría de un shapefile mediante el módulo OGR de Python. Se ha modificado ligeramente para adaptarlo a mi sistema Debian GNU/Linux y para que permita seleccionar el rasgo que queremos que se despliegue del shapefile. El código (py_geometria.py) es el siguiente:

#!/usr/bin/env python
# -*- coding: utf-8

def analizaGeometria(geometria,indent=0):	
	s = []
	s.append(" " * indent)
	s.append(geometria.GetGeometryName())
	
	if geometria.GetPointCount() > 0:
		s.append(" con %d puntos" % geometria.GetPointCount())

	if geometria.GetGeometryCount() > 0:
		s.append(" conteniendo:")

	print "".join(s)
		
	for i in range(geometria.GetGeometryCount()):
		analizaGeometria(geometria.GetGeometryRef(i),indent+3)
		
import osgeo.ogr
from os import system,chdir

system("clear")

path = '/home/zeito/Desktop/tl_2009_us_state'

chdir(path)

NameShape = "tl_2009_us_state.shp"

shapefile = osgeo.ogr.Open(NameShape)

layer = shapefile.GetLayer(0)

numfeatures = layer.GetFeatureCount()

print "El Shapefile %s tiene %d rasgos" % (NameShape, numfeatures)

NumRasgo = int(raw_input("Número de rasgo a visualizar = ? "))

feature = layer.GetFeature(NumRasgo)

geometria = feature.GetGeometryRef()

Name = feature.GetField("NAME")

print "El nombre es %s" % Name

analizaGeometria(geometria)

y produce esta salida para el rasgo número 4 (NAME = ‘Commonwealth of the Northern Mariana Islands’) del shapefile tl_2009_us_state.shp:

El Shapefile tl_2009_us_state.shp tiene 56 rasgos
Número de rasgo a visualizar = ? 4
El nombre es Commonwealth of the Northern Mariana Islands
MULTIPOLYGON conteniendo:
   POLYGON conteniendo:
      LINEARRING con 86 puntos
   POLYGON conteniendo:
      LINEARRING con 39 puntos
   POLYGON conteniendo:
      LINEARRING con 55 puntos
   POLYGON conteniendo:
      LINEARRING con 45 puntos
   POLYGON conteniendo:
      LINEARRING con 56 puntos
   POLYGON conteniendo:
      LINEARRING con 81 puntos
   POLYGON conteniendo:
      LINEARRING con 42 puntos
   POLYGON conteniendo:
      LINEARRING con 45 puntos
   POLYGON conteniendo:
      LINEARRING con 96 puntos
   POLYGON conteniendo:
      LINEARRING con 30 puntos
   POLYGON conteniendo:
      LINEARRING con 40 puntos
   POLYGON conteniendo:
      LINEARRING con 201 puntos

La recopilación de estos pequeños trozos de código en una “librería” de archivos que comienzan todos por el prefijo py_ (para colocarlos todos juntos en mi home de usuario), me ha permitido solventar rápidamente algunas tareas. La más reciente fue la de transformar un archivo de texto con coordenadas en un shapefile de puntos para ser cargado en QGIS y convertirlo en polígono para la determinación expedita de su área (requerida para corroborar si mi código Python de ese entonces producía los resultados esperados).

Esta entrada fue publicada en Código Python, GDAL/OGR, SIG, Software Libre. Guarda el enlace permanente.

3 respuestas a Analizar geometría de un shapefile mediante el módulo OGR de Python

  1. iris dijo:

    Holaa pues mi problema esta en windows, que me marca un error en import osgeo.ogr
    ImportError: No module named ‘osgeo’ nose a que se deba descargue la libreria gdal y la coloque en la carpeta de python lib pero sigue marcando ese error no se a que se deba

  2. tengo ganas de meterme a estudiar python, pero me quedan la duda de la potencialidad con arcgis, ¿python es mejor que visual basic ?

    gracias

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