28 votos

¿Convertir GeoJSON en objetos Python?

Nuevo en el sitio, y en geoJSON, y en python.

Mi objetivo es leer un archivo con datos geoJSON, y utilizarlo para generar formas que se utilizarán en una aplicación que está utilizando scripts de python. Python tiene la capacidad de leerlo, y hacer algunas manipulaciones. He encontrado algunos ejemplos, pero no están atravesando la jerarquía geoJSON correctamente.

Estoy buscando una biblioteca, o instrucciones, sobre cómo extraer los datos de geometría del archivo de datos geoJSON. En otras palabras, me gustaría poder decir "obtener la lista de características..." - entonces, para cada una de las características, me gustaría obtener la geometría, leer el tipo, y el obtener las coordenadas para ese elemento de geometría en particular. Repetir para cada uno de los elementos de la lista de características.

¿Alguna sugerencia?

46voto

Dalroth Puntos 2468

Cuando se carga un archivo GeoJSON mediante la función json biblioteca, se obtiene un dict que contiene una entrada features que contiene la lista de características. A su vez, cada característica está formada por un dict que, entre otras cosas, contiene una entrada geometry . El geometry es un dict que contiene las entradas type y coordinates . Así que puedes recorrer tu archivo GeoJSON de esta manera:

import json

with open('test.json') as f:
    data = json.load(f)

for feature in data['features']:
    print feature['geometry']['type']
    print feature['geometry']['coordinates']

8voto

Adrian Wible Puntos 1027

Mi biblioteca PyGeoj está pensado específicamente como un lector y escritor de archivos geojson, con una sencilla API que convierte el contenido de los archivos en objetos con atributos, para que no tengas que lidiar con los diccionarios directamente. También tiene algunos métodos de conveniencia, como calcular y añadir el bbox para toda la colección de características o sólo para cada característica.

Así, por ejemplo, el siguiente código haría lo que pide el cartel:

import pygeoj
testfile = pygeoj.load("test.geojson")
for feature in testfile:
    print feature.geometry.type
    print feature.geometry.coordinates

La biblioteca también puede importar y exportar objetos de/a otras bibliotecas a través del _geo_interface_ entre otras cosas, como se ve en la documentación de la página Github del proyecto.

5voto

GreyCat Puntos 146

Hay muchos módulos geoespaciales de Python que pueden convertir GeoJSON en shapefiles (y a la inversa):

véase Aplicaciones Python Geo_interface

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X