-
-
Save frankrowe/6071443 to your computer and use it in GitHub Desktop.
import shapefile | |
# read the shapefile | |
reader = shapefile.Reader("my.shp") | |
fields = reader.fields[1:] | |
field_names = [field[0] for field in fields] | |
buffer = [] | |
for sr in reader.shapeRecords(): | |
atr = dict(zip(field_names, sr.record)) | |
geom = sr.shape.__geo_interface__ | |
buffer.append(dict(type="Feature", \ | |
geometry=geom, properties=atr)) | |
# write the GeoJSON file | |
from json import dumps | |
geojson = open("pyshp-demo.json", "w") | |
geojson.write(dumps({"type": "FeatureCollection",\ | |
"features": buffer}, indent=2) + "\n") | |
geojson.close() |
Thanks for that nice little feature!
But I keep getting a decode error when running this script on the natural earth countries shapefile:
'utf8' codec can't decode byte 0xc5 in position 0: invalid continuation byte
But with the places shapefile it works perfectly fine!
Do you have any idea where that might come from?
hey man i had the same issue but look
basically before doing something like reader.shapeRecords()
you gotta change the encoding type, in my case i was using some data from Guadalajara, MX and i had to change the encoding to be latin1 as you can see in the screenshot, then, it worked normally
Thanks for that nice little feature!
But I keep getting a decode error when running this script on the natural earth countries shapefile:
'utf8' codec can't decode byte 0xc5 in position 0: invalid continuation byte
But with the places shapefile it works perfectly fine!
Do you have any idea where that might come from?hey man i had the same issue but look
basically before doing something like
reader.shapeRecords()
you gotta change the encoding type, in my case i was using some data from Guadalajara, MX and i had to change the encoding to be latin1 as you can see in the screenshot, then, it worked normally
Hey I am trying to do same thing using pycharm but its giving error feedback. can you assist me sire.
Thanks for that nice little feature!
But I keep getting a decode error when running this script on the natural earth countries shapefile:
'utf8' codec can't decode byte 0xc5 in position 0: invalid continuation byte
But with the places shapefile it works perfectly fine!
Do you have any idea where that might come from?