In [60]:
import csv, fiona
from shapely.geometry import Point, mapping
from fiona.crs import from_epsg
In [46]:
peaks = []
errs = []
with open('/Users/dnomadb/Documents/NationalFile_20140802.txt', 'r') as inFile:
info = csv.DictReader(inFile)
for row in info:
try:
aPeak = {}
sInfo = row[row.keys()[0]].split('|')
if sInfo[2].lower() == 'summit':
aPeak['name'] = sInfo[1]
aPeak['elevation_m'] = sInfo[15]
aPeak['altname'] = sInfo[17]
aPeak['lat'] = float(sInfo[9])
aPeak['lng'] = float(sInfo[10])
peaks.append(aPeak)
except:
errs.append(row)
In [61]:
wSchema = {'geometry': 'Point',
'properties': {u'ID': 'int:10',
'Name': 'str',
'AltName': 'str',
'elevation_m': 'int'}}
driver = u'ESRI Shapefile'
crs = from_epsg(4326)
In [63]:
with fiona.open('usgs_gnis_peaks.shp', 'w',
crs=crs,
driver=driver,
schema=wSchema) as shp:
for i, p in enumerate(peaks):
shp.write({
'geometry': mapping(Point((p['lng'],p['lat']))),
'properties': {
u'ID': i,
'Name': p['name'],
'AltName': p['altname'],
'elevation_m': p['elevation_m']
}
})