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']
                        }
        })