Convertendo GeoJSON em objetos Python? [fechadas]

24

Novo no site, no geoJSON e no python.

Meu objetivo é ler um arquivo com dados geoJSON e usá-lo para gerar formas a serem usadas em um aplicativo que esteja usando scripts python. O Python tem a capacidade de ler e manipular. Encontrei alguns exemplos, mas eles não estão atravessando a hierarquia geoJSON corretamente.

Estou procurando uma biblioteca, ou instruções, sobre como extrair os dados da geometria do arquivo de dados geoJSON. Em outras palavras, eu gostaria de poder dizer "obtenha a lista de recursos ..." - então, para cada um dos recursos, gostaria de obter a geometria, ler o tipo e obter as coordenadas para esse item de geometria específico. Repita para cada um dos itens na lista de recursos.

Alguma sugestão?

Mike Weber
fonte

Respostas:

37

Ao carregar um arquivo GeoJSON usando a jsonbiblioteca, você obtém um dictque contém uma entrada features, que contém a lista de recursos. Cada recurso, por sua vez, consiste em um dictque, entre outras coisas, contém uma entrada geometry. O geometryé um dictcontendo as entradas typee coordinates. Então você pode atravessar o seu arquivo GeoJSON assim:

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']
Jake
fonte
Excelente sugestão. Isso foi muito mais fácil do que o que eu estava tentando fazer. Eu precisava alterar carga para cargas, e numpy não é uma biblioteca na minha instalação atual do python. Obrigado pela resposta rápida. Eu poderei seguir em frente agora.
Mike Weber
1
Numpy não é tecnicamente necessário. O recurso ['geometria'] ['coordenadas'] (acima) é apenas uma lista de Python.
sgillies
@ sgillies: Bom ponto, Sean. Eu removi o uso de numpypara evitar confusão.
Jake
7

Minha lib PyGeoj é especificamente concebida como um leitor e gravador de arquivos geojson, com uma API simples que transforma o conteúdo do arquivo em objetos com atributos, para que você não precise lidar com os dicionários diretamente. Ele também possui alguns métodos de conveniência, como calcular e adicionar o bbox para toda a coleção de recursos ou apenas para cada recurso.

Por exemplo, o código a seguir faria o que o pôster pedia:

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

A biblioteca também pode importar e exportar objetos de / para outras bibliotecas por meio do _geo_interface_protocolo, entre outras coisas, conforme visto na documentação na página do Github do projeto.

Karim Bahgat
fonte
você biblioteca é grande, eu só comecei a usá-lo hoje
Ziggy
se eu quisesse começar a fazer o mapeamento da web com geojson de análise de python, qual seria o melhor software para usar?
Ziggy #
1
Para aplicativos da Web que trabalham com GeoJson, use a biblioteca javascript do Leaflet. Aqui está um bom exemplo de tópico: gis.stackexchange.com/questions/68489/…
Para comentar