Python >> Tutoriel Python >  >> Python Tag >> JSON

Conversion d'objets GeoJSON en Python ?

Lorsque vous chargez un fichier GeoJSON en utilisant le json bibliothèque, vous obtenez un dict qui contient une entrée features , qui contient la liste des fonctionnalités. Chaque fonctionnalité consiste à son tour en un dict , qui contient entre autres une entrée geometry . Le geometry est un dict contenant les entrées type et 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']

Ma bibliothèque PyGeoj est spécifiquement conçue 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 à vous occuper directement des dictionnaires. Il propose également des méthodes pratiques, telles que 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 demande :

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 depuis/vers d'autres bibliothèques via le _geo_interface_ protocole, entre autres comme on le voit dans la documentation sur la page Github du projet.


Il existe de nombreux modules Python géospatiaux capables de convertir GeoJSON en shapefiles (et inversement) :

  • Fiona
  • PySAL
  • Pyshp 1.7 et versions ultérieures
  • GDAL/OGR
  • PyQGIS avec la nouvelle API
  • python-geojson

voir les applications Python Geo_interface