GeoJSON in Python-Objekte konvertieren? [geschlossen]

24

Neu auf der Site, in GeoJSON und in Python.

Mein Ziel ist es, eine Datei mit GeoJSON-Daten einzulesen und daraus Formen zu generieren, die in einer Anwendung verwendet werden, die Python-Skripte verwendet. Python kann es einlesen und manipulieren. Ich habe einige Beispiele gefunden, aber sie durchlaufen die geoJSON-Hierarchie nicht korrekt.

Ich suche nach einer Bibliothek oder Anweisungen zum Extrahieren der Geometriedaten aus der geoJSON-Datendatei. Mit anderen Worten, ich möchte sagen können, dass die Liste der Features abgerufen werden soll. Dann möchte ich für jedes der Features die Geometrie abrufen, den Typ lesen und die Koordinaten abrufen das bestimmte Geometrieelement. Wiederholen Sie diesen Vorgang für jedes Element in der Liste der Funktionen.

Irgendwelche Vorschläge?

Mike Weber
quelle

Antworten:

37

Wenn Sie eine GeoJSON-Datei mithilfe der jsonBibliothek laden , erhalten Sie dicteinen Eintrag features, der die Liste der Features enthält. Jedes Feature besteht wiederum aus einem dict, das unter anderem einen Eintrag enthält geometry. Das geometryist ein um dictdie Einträge enthält , typeund coordinates. So können Sie Ihre GeoJSON-Datei wie folgt durchlaufen:

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
quelle
Hervorragender Vorschlag. Das war viel einfacher als das, was ich versucht habe. Ich musste Load auf Load ändern, und Numpy ist in meiner aktuellen Python-Installation keine Bibliothek. Danke für die schnelle Antwort. Ich kann jetzt weitermachen.
Mike Weber
1
Numpy wird technisch nicht benötigt. Feature ['Geometrie'] ['Koordinaten'] (oben) ist nur eine Python-Liste.
sgillies
@sgillies: Guter Punkt, Sean. Ich habe die Verwendung von entfernt numpy, um Verwirrung zu vermeiden.
Jake
7

My lib PyGeoj ist speziell als Geojson-Datei-Lese- und -Schreibprogramm gedacht, mit einer einfachen API, die den Dateiinhalt in Objekte mit Attributen umwandelt, sodass Sie sich nicht direkt mit den Wörterbüchern befassen müssen. Es gibt auch einige bequeme Methoden, wie das Berechnen und Hinzufügen der bbox für die gesamte Feature-Sammlung oder nur für jedes Feature.

So würde zum Beispiel der folgende Code das tun, wonach das Poster gefragt hat:

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

Die Bibliothek kann auch Objekte über das _geo_interface_Protokoll aus / in andere Bibliotheken importieren und exportieren , wie in der Dokumentation auf der Github-Seite des Projekts beschrieben.

Karim Bahgat
quelle
Sie Bibliothek ist großartig, ich habe gerade erst begonnen, es heute
ziggy
Wenn ich anfangen wollte, Web-Mapping mit Python-Parsing-Geojson durchzuführen, welche Software ist die beste?
Ziggy
1
Verwenden Sie für Webanwendungen, die mit GeoJson arbeiten, die Javascript-Bibliothek Leaflet. Hier ist ein gutes Beispiel-Thread: gis.stackexchange.com/questions/68489/…
Für Kommentar