Перетворення 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 технічно не потрібен. функція ['геометрія'] ['координати'] (вище) - це лише список Python.
sgillies

@sgillies: Добре, Шон. Я видалив використання, numpyщоб уникнути плутанини.
Джейк

7

My lib 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 проекту.


у вас бібліотека чудова, я щойно почав користуватися нею сьогодні
зиггі

якби я хотів почати робити веб-картографування з розбору геофізону python, що було б найкращим програмним забезпеченням?
зиггі

1
Для веб-додатків, що працюють з GeoJson, використовуйте бібліотеку JavaScript JavaScript Leaflet. Ось хороший приклад теми
для коментаря

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.