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?

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']

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.


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.