Konwertujesz GeoJSON na obiekty Python? [Zamknięte]

24

Nowy na stronie, w geoJSON i w Pythonie.

Moim celem jest odczytanie pliku z danymi geoJSON i wykorzystanie go do wygenerowania kształtów do użycia w aplikacji korzystającej ze skryptów Python. Python ma możliwość odczytania go i wykonania pewnych operacji. Znalazłem kilka przykładów, ale nie przemierzają one poprawnie hierarchii geoJSON.

Szukam biblioteki lub instrukcji, jak wyodrębnić dane geometrii z pliku danych geoJSON. Innymi słowy, chciałbym móc powiedzieć „pobierz listę cech ...” - wtedy dla każdej z nich chciałbym uzyskać geometrię, odczytać typ i uzyskać współrzędne dla ten konkretny element geometrii. Powtórz dla każdego elementu na liście funkcji.

Jakieś sugestie?

Mike Weber
źródło

Odpowiedzi:

37

Gdy ładujesz plik GeoJSON przy użyciu jsonbiblioteki, otrzymujesz plik dictzawierający pozycję features, która zawiera listę funkcji. Każda funkcja z kolei składa się z dict, który, między innymi, zawiera wpis geometry. geometryJest dictzawierający wpisy typei coordinates. Możesz więc przeglądać swój plik GeoJSON w następujący sposób:

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
źródło
Doskonała sugestia. Było to o wiele łatwiejsze niż to, co próbowałem zrobić. Musiałem zmienić obciążenie na obciążenia, a numpy nie jest biblioteką w mojej bieżącej instalacji Pythona. Dziękuję za szybką odpowiedź. Będę mógł teraz przejść.
Mike Weber,
1
Numpy nie jest technicznie potrzebne. feature [„geometria”] [„współrzędne”] (powyżej) to tylko lista Pythona.
sgillies,
@sgillies: Dobra uwaga, Sean. Usunąłem użycie, numpyaby uniknąć zamieszania.
Jake
7

My lib PyGeoj jest specjalnie zaprojektowany jako czytnik i pisarz plików geojson, z prostym interfejsem API, który zamienia zawartość pliku w obiekty z atrybutami, dzięki czemu nie musisz bezpośrednio zajmować się słownikami. Ma także kilka metod wygody, takich jak obliczanie i dodawanie pola wyboru dla całej kolekcji funkcji lub tylko dla każdej funkcji.

Na przykład poniższy kod zrobiłby to, o co poprosił plakat:

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

Biblioteka może również importować i eksportować obiekty z / do innych bibliotek za pośrednictwem _geo_interface_protokołu, między innymi zgodnie z dokumentacją na stronie Github projektu.

Karim Bahgat
źródło
Twoja biblioteka jest świetna, właśnie zacząłem z niej korzystać dzisiaj
ziggy 27.04.16
gdybym chciał rozpocząć mapowanie sieci z geojsonem do analizowania Pythona, jakie oprogramowanie byłoby najlepsze do użycia?
ziggy 27.04.16
1
W przypadku aplikacji sieci Web współpracującej z GeoJson użyj biblioteki javascript Leaflet. Oto dobry przykładowy wątek: gis.stackexchange.com/questions/68489/…
Na komentarz