I am writing a fairly straight forward script of converting GeoJSON data into a shapefile using Shapely and Fiona. My script works but I cannot figure out how to define the CS in the script.
def GeoJSONToFC(shpname,USGSurl):
import urllib2
import json
from shapely.geometry import Point, mapping
from fiona import collection
from fiona.crs import from_epsg
crs = from_epsg(4326)
schema = {'geometry': 'Point', 'properties': { 'Place': 'str', 'Magnitude': 'str' }}
with collection(shpname, "w", crs, "ESRI Shapefile", schema) as output:
url = USGSurl
weburl = urllib2.urlopen(url)
if weburl.getcode() == 200:
data = json.loads(weburl.read())
for i in data["features"]:
mag, place = i["properties"]["mag"],i["properties"]["place"]
x,y = float(i["geometry"]["coordinates"][0]),float(i["geometry"]["coordinates"][1])
point = Point(x,y)
output.write({'properties':{'Place': place, 'Magnitude': mag},
'geometry': mapping(point)})
shpname = "C:\Users\Ralph\Desktop\quakes.shp"
url = "http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/significant_month.geojson"
GeoJSONToFC(shpname,url)
the crs variable contains the 4326 CS or WGS 1984. the error occurs on line 9 when I insert the crs variable containing the coordinate system into the collection.
Traceback (most recent call last):
File "C:\Users\Ralph\Desktop\GeoJSONToShapefile.py", line 23, in <module>
GeoJSONToFC(shpname,url)
File "C:\Users\Ralph\Desktop\GeoJSONToShapefile.py", line 9, in GeoJSONToFC
with collection(shpname, "w", crs, "ESRI Shapefile", schema) as output:
File "C:\Python27\ArcGIS10.1\lib\site-packages\fiona\__init__.py", line 180, in open
this_schema = schema.copy()
AttributeError: 'str' object has no attribute 'copy'
the script runs fine when I remove the crs variable but the shapefile has no projection
I have seen this post Using Fiona to write a new shapefile from scratch where the answer to defining a CS is
with fiona.open(shapeout, 'w',crs=from_epsg(3857),driver='ESRI Shapefile', schema=yourschema) as output:
I have tried this method and it gives me the exact same error as above. I also checked out the doc pages on fiona to no avail http://toblerity.org/fiona/fiona.html#module-fiona.crs