¿Convertir GeoJSON a objetos de Python? [cerrado]

18

Nuevo en el sitio, geoJSON y python.

Mi objetivo es leer un archivo con datos geoJSON y usarlo para generar formas que se utilizarán en una aplicación que utiliza scripts de Python. Python tiene la capacidad de leerlo y hacer algo de manipulación. 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 ..."; luego, para cada una de las características, me gustaría obtener la geometría, leer el tipo y obtener las coordenadas para ese elemento de geometría particular. Repita para cada uno de los elementos en la lista de características.

¿Alguna sugerencia?

    
pregunta Mike Weber 08.10.2013 - 21:37

3 respuestas

33

Cuando carga un archivo GeoJSON utilizando la biblioteca json , obtiene un dict que contiene una entrada features , que contiene la lista de características. Cada función, a su vez, consta de un dict , que, entre otras cosas, contiene una entrada geometry . geometry es un dict que contiene las entradas type y coordinates . Para que puedas atravesar tu archivo GeoJSON así:

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']
    
respondido por el Jake 08.10.2013 - 22:00
7

Mi lib PyGeoj se entiende específicamente como un lector y escritor de archivos geojson, con una API simple que convierte el contenido del archivo en objetos con atributos, por lo que no tiene que lidiar con los diccionarios directamente. También tiene algunos métodos de conveniencia, como calcular y agregar el bbox para toda la colección de características o solo para cada característica.

Entonces, por ejemplo, el siguiente código haría lo que pidió 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 protocolo _geo_interface_ , entre otras cosas, como se ve en la documentación en la página Github del proyecto.

    
respondido por el Karim Bahgat 27.07.2014 - 00:42
3

Hay muchos módulos geoespaciales de Python que pueden convertir GeoJSON a shapefiles (y al revés):

consulte aplicaciones Python Geo_interface

    
respondido por el gene 08.10.2013 - 22:13

Lea otras preguntas en las etiquetas