Mengkonversi GeoJSON ke objek Python? [Tutup]

24

Baru di situs, dan di geoJSON, dan di python.

Tujuan saya adalah membaca dalam file dengan data geoJSON, dan menggunakannya untuk menghasilkan bentuk untuk digunakan dalam aplikasi yang menggunakan skrip python. Python memiliki kemampuan untuk membacanya, dan melakukan manipulasi. Saya telah menemukan beberapa contoh, tetapi mereka tidak melintasi hierarki geoJSON dengan benar.

Saya mencari perpustakaan, atau instruksi, tentang cara mengekstrak data geometri dari file data geoJSON. Dengan kata lain, saya ingin mengatakan "dapatkan daftar fitur ..." - lalu, untuk setiap fitur, saya ingin mendapatkan geometri, membaca jenisnya, dan mendapatkan koordinat untuk item geometri tertentu. Ulangi untuk setiap item dalam daftar fitur.

Ada saran?

Mike Weber
sumber

Jawaban:

37

Saat Anda memuat file GeoJSON menggunakan jsonpustaka, Anda mendapatkan dictyang berisi entri features, yang berisi daftar fitur. Setiap fitur pada gilirannya terdiri dari dict, yang, di antaranya, berisi entri geometry. The geometryadalah dictyang mengandung entri typedan coordinates. Jadi Anda dapat melintasi file GeoJSON Anda seperti ini:

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
sumber
Saran yang bagus. Ini jauh lebih mudah daripada apa yang saya coba lakukan. Saya memang perlu mengubah beban menjadi banyak, dan numpy bukan perpustakaan di instalasi python saya saat ini. Terima kasih atas balasan cepatnya. Saya akan bisa melanjutkan sekarang.
Mike Weber
1
Numpy tidak dibutuhkan secara teknis. fitur ['geometri'] ['koordinat'] (di atas) hanyalah daftar Python.
sgillies
@sgillies: Poin bagus, Sean. Saya telah menghapus penggunaan numpyuntuk menghindari kebingungan.
Jake
7

Lib PyGeoj saya secara khusus dimaksudkan sebagai pembaca dan penulis file geojson, dengan API sederhana yang mengubah konten file menjadi objek dengan atribut, sehingga Anda tidak harus berurusan dengan kamus secara langsung. Ini juga memiliki beberapa metode kenyamanan, seperti menghitung dan menambahkan bbox untuk seluruh kumpulan fitur atau hanya untuk setiap fitur.

Jadi misalnya, kode berikut akan melakukan apa yang diminta oleh poster:

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

Perpustakaan juga dapat mengimpor dan mengekspor objek dari / ke perpustakaan lain melalui _geo_interface_ protokol, antara lain seperti yang terlihat dalam dokumentasi di halaman Github proyek.

Karim Bahgat
sumber
perpustakaan Anda hebat, saya baru mulai menggunakannya hari ini
ziggy
jika saya ingin mulai melakukan pemetaan web dengan python parsing geojson, perangkat lunak apa yang terbaik untuk digunakan?
ziggy
1
Untuk aplikasi web yang bekerja dengan GeoJson, gunakan pustaka javascript Leaflet. Berikut adalah contoh thread yang bagus: gis.stackexchange.com/questions/68489/…
Untuk Komentar