from django.utils.xmlutils import SimplerXMLGenerator from geopy.util import parse_geo import csv # "Airport Facilities Data" from # http://www.faa.gov/airports_airtraffic/airports/airport_safety/airportdata_5010/menu/index.cfm reader = csv.DictReader(open('facilities.csv'), delimiter='\t') f = open('airports.kml', 'w') x = SimplerXMLGenerator(f, 'utf-8') x.startDocument() x.startElement('kml', { 'xmlns' : 'http://earth.google.com/kml/2.1', }) x.startElement('Document', {}) for row in reader: counter = counter + 1 x.startElement('Placemark', {}) x.addQuickElement('name', row['FacilityName']) x.startElement('description', {}) x.addQuickElement('h1', row['LocationID']) x.addQuickElement('p', "%s, %s" % (row['City'], row['StateName'])) if row['AirportStatusCode'] is 'CI': x.addQuickElement('p', 'Closed indefinitely') elif row['AirportStatusCode'] is 'CP': x.addQuickElement('p', 'Closed permanently') elif row['AirportStatusCode'] is 'O': x.addQuickElement('p', 'Operational') x.endElement('description') x.startElement('Point', {}) lat_bits = row['ARPLatitude'].split('-') lon_bits = row['ARPLongitude'].split('-') lat, lon = parse_geo("%s %sm %ss %s %s %sm %ss %s" % (lat_bits[0], lat_bits[1], lat_bits[2].split('.')[0], lat_bits[2][-1], lon_bits[0], lon_bits[1], lon_bits[2].split('.')[0], lon_bits[2][-1])) x.addQuickElement('coordinates', "%s,%s,%s" % (lon, lat, row['ARPElevation'])) x.endElement('Point') x.endElement('Placemark') x.endElement('Document') x.endElement('kml') f.close()