Converting GeoJSON to Python objects?
When you load a GeoJSON file using the json
library, you get a dict
that contains an entry features
, which contains the list of features. Each feature in turn consists of a dict
, which, among other things, contains an entry geometry
. The geometry
is a dict
containing the entries type
and coordinates
. So you can traverse your GeoJSON file like this:
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']
My lib PyGeoj is specifically meant as a geojson file reader and writer, with a simple API that turns the file contents into objects with attributes, so you don't have to deal with the dictionaries directly. It also has some convenience methods, like calculate and add the bbox for the entire feature collection or just for each feature.
So for instance, the following code would do what the poster asked for:
import pygeoj
testfile = pygeoj.load("test.geojson")
for feature in testfile:
print feature.geometry.type
print feature.geometry.coordinates
The library can also import and export objects from/to other libraries via the _geo_interface_
protocol, among other things as seen in the documentation on the project's Github page.
There are many geospatial Python modules that can convert GeoJSON to shapefiles (and the reverse):
- Fiona
- PySAL
- Pyshp 1.7 and up
- GDAL/OGR
- PyQGIS with the new API
- python-geojson
see Python Geo_interface applications