Convertir GeoJSON en objets Python? [fermé]

24

Nouveau sur le site, et sur geoJSON, et sur python.

Mon objectif est de lire un fichier contenant des données geoJSON et de l'utiliser pour générer des formes à utiliser dans une application qui utilise des scripts python. Python a la capacité de le lire et de faire quelques manipulations. J'ai trouvé quelques exemples, mais ils ne traversent pas correctement la hiérarchie geoJSON.

Je recherche une bibliothèque ou des instructions sur la façon d'extraire les données de géométrie du fichier de données geoJSON. En d'autres termes, je voudrais pouvoir dire "obtenir la liste des entités ..." - puis, pour chacune des entités, j'aimerais obtenir la géométrie, lire le type et obtenir les coordonnées pour cet élément de géométrie particulier. Répétez l'opération pour chacun des éléments de la liste des fonctionnalités.

Aucune suggestion?

Mike Weber
la source

Réponses:

37

Lorsque vous chargez un fichier GeoJSON à l'aide de la jsonbibliothèque, vous obtenez un fichier dictcontenant une entrée features, qui contient la liste des fonctionnalités. Chaque fonctionnalité à son tour se compose d'un dict, qui, entre autres, contient une entrée geometry. Le geometryest un dictcontenant les entrées typeet coordinates. Vous pouvez donc parcourir votre fichier GeoJSON comme ceci:

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
la source
Excellente suggestion. C'était beaucoup plus facile que ce que j'essayais de faire. J'ai eu besoin de changer la charge en charges, et numpy n'est pas une bibliothèque dans mon installation actuelle de python. Merci pour la réponse rapide. Je vais pouvoir continuer maintenant.
Mike Weber
1
Numpy n'est pas techniquement nécessaire. La caractéristique ['géométrie'] ['coordonnées'] (ci-dessus) n'est qu'une liste Python.
sgillies
@sgillies: Bon point, Sean. J'ai supprimé l'utilisation de numpypour éviter toute confusion.
Jake
7

My lib PyGeoj est spécifiquement conçu comme un lecteur et un écrivain de fichiers geojson, avec une API simple qui transforme le contenu du fichier en objets avec des attributs, vous n'avez donc pas à traiter directement avec les dictionnaires. Il a également quelques méthodes pratiques, comme calculer et ajouter la bbox pour l'ensemble de la collection de fonctionnalités ou uniquement pour chaque fonctionnalité.

Ainsi, par exemple, le code suivant ferait ce que l'affiche demandait:

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

La bibliothèque peut également importer et exporter des objets de / vers d'autres bibliothèques via le _geo_interface_protocole, entre autres choses comme vu dans la documentation sur la page Github du projet.

Karim Bahgat
la source
votre bibliothèque est géniale, je viens de commencer à l'utiliser aujourd'hui
ziggy
si je voulais commencer à faire du web-mapping avec python parsing geojson, quel serait le meilleur logiciel à utiliser?
ziggy le
1
Pour une application Web fonctionnant avec GeoJson, utilisez la bibliothèque javascript de Leaflet. Voici un bon exemple de fil: gis.stackexchange.com/questions/68489/…
Pour un commentaire du