Преобразование GeoJSON в объекты Python? [закрыто]

24

Новое на сайте, и для GeoJSON, и для Python.

Моя цель - прочитать файл с данными geoJSON и использовать его для создания фигур, которые будут использоваться в приложении, использующем скрипты Python. Python имеет возможность прочитать его, и сделать некоторые манипуляции. Я нашел несколько примеров, но они неправильно обходят иерархию geoJSON.

Я ищу библиотеку или инструкции, как извлечь данные геометрии из файла данных geoJSON. Другими словами, я хотел бы иметь возможность сказать «получить список объектов ...» - тогда для каждого из объектов я хотел бы получить геометрию, прочитать тип и получить координаты для этот конкретный элемент геометрии. Повторите эти действия для каждого элемента в списке функций.

Какие-либо предложения?

Майк Вебер
источник

Ответы:

37

Когда вы загружаете файл GeoJSON с помощью jsonбиблиотеки, вы получаете элемент dict, содержащий запись features, которая содержит список функций. Каждая функция, в свою очередь, состоит из элемента dict, который, помимо прочего, содержит запись geometry. geometryЯвляется dictсодержащими записи typeи coordinates. Таким образом, вы можете просмотреть свой файл GeoJSON следующим образом:

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']
Джейк
источник
Отличное предложение. Это было намного проще, чем то, что я пытался сделать. Мне нужно было изменить нагрузку на загрузку, и numpy не является библиотекой в ​​моей текущей установке python. Спасибо за быстрый ответ. Я смогу двигаться дальше.
Майк Вебер
1
Numpy технически не нужен. feature ['geometry'] ['координаты'] (выше) - это просто список Python.
sgillies
@sgillies: Хорошая мысль, Шон. Я удалил использование, numpyчтобы избежать путаницы.
Джейк
7

Моя библиотека PyGeoj специально предназначена для чтения и записи файлов geojson, с простым API, который превращает содержимое файла в объекты с атрибутами, поэтому вам не нужно напрямую обращаться к словарям. Он также имеет несколько удобных методов, таких как вычисление и добавление bbox для всей коллекции объектов или только для каждой функции.

Так, например, следующий код будет делать то, что попросил автор:

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

Библиотека также может импортировать и экспортировать объекты из / в другие библиотеки через _geo_interface_протокол, среди прочего, как видно из документации на странице Github проекта.

Карим Бахгат
источник
у вас отличная библиотека, я только сегодня начал ее использовать
ziggy
Если бы я захотел начать делать веб-картографию с разбором Python Geojson, какое программное обеспечение лучше всего использовать?
зигги
1
Для веб-приложения, работающего с GeoJson, используйте библиотеку Leaflet javascript. Вот хороший пример потока: gis.stackexchange.com/questions/68489/…
для комментариев