def process_kml(kml):
    the_map = kml.features().next()
    print "Map: %s" % (the_map.name)

    layers = the_map.features()

    segment_records = {
        'name': [],
        'description': [],
        'polyline': [],
        'district': [],
        'difficulty': [],
        'difficulty_code': []
    }

    for layer in layers:
        print("Layer: %s" % (layer.name))
        try:
            segments = layer.features()
        except:
            continue

        for segment in segments:
            print "Segment: %s" % (segment.name)
            try:
                polyline = [(g.y, g.x) for g in segment.geometry.geoms]
                segment_records['name'].append(segment.name)
                segment_records['description'].append(segment.description)
                segment_records['polyline'].append(polyline)
                segment_records['district'].append(layer.name)
                segment_records['difficulty'].append(UNCLASSIFIED)
                segment_records['difficulty_code'].append('u')


#                 if 'Multi use Trail' == segment.description or \
#                    'Enhanced Street' == segment.description:
#                     segment_records['difficulty'].append(ALL_ABILITIES)
#                     segment_records['difficulty_code'].append('e')
#                 elif 'In street major separation' == segment.description:
#                     segment_records['difficulty'].append(INTERMEDIATE)
#                     segment_records['difficulty_code'].append('i')
#                 elif 'Sharrows' == segment.description or \
#                      'In street minor separation':
#                     segment_records['difficulty'].append(DIFFICULT)
#                     segment_records['difficulty_code'].append('d')
#                 else:
#                     segment_records['difficulty'].append(UNCLASSIFIED)
#                     segment_records['difficulty_code'].append('u')
            except:
                print "no geometry"

    segment_df = pd.DataFrame(segment_records)

    return segment_df
def process_kml(kml):
    the_map = kml.features().next()
    print "Map: %s" % (the_map.name)
    
    layers = the_map.features()

    segment_records = { 'name' : [],
                        'description' : [],
                        'polyline': [],
                        'district' : [],
                        'difficulty' : [],
                        'difficulty_code' : []
                    }
    
    for layer in layers:
        print("Layer: %s" % (layer.name))
        try:
            segments = layer.features()
        except:
            continue
        
        for segment in segments:
            print "Segment: %s" % (segment.name)
            try:
                polyline = [(g.y, g.x) for g in segment.geometry.geoms]
                segment_records['name'].append(segment.name)
                segment_records['description'].append(segment.description)
                segment_records['polyline'].append(polyline)
                segment_records['district'].append(layer.name)
                segment_records['difficulty'].append(UNCLASSIFIED)
                segment_records['difficulty_code'].append('u')
#                 if 'Multi use Trail' == segment.description or \
#                    'Enhanced Street' == segment.description:
#                     segment_records['difficulty'].append(ALL_ABILITIES)
#                     segment_records['difficulty_code'].append('e')                    
#                 elif 'In street major separation' == segment.description:
#                     segment_records['difficulty'].append(INTERMEDIATE)
#                     segment_records['difficulty_code'].append('i')
#                 elif 'Sharrows' == segment.description or \
#                      'In street minor separation':
#                     segment_records['difficulty'].append(DIFFICULT)
#                     segment_records['difficulty_code'].append('d')
#                 else:
#                     segment_records['difficulty'].append(UNCLASSIFIED)
#                     segment_records['difficulty_code'].append('u')
            except:
                print "no geometry"
                
    segment_df = pd.DataFrame(segment_records)
    
    return segment_df
Beispiel #3
0
    if re.search(' fm ', operator, re.I):
        return 'broadcast'
    return None


k = kml.KML()
with open(sys.argv[1], 'rb') as f:
    k.from_string(f.read())

kml = list(k.features())[0]

with engine.begin():
    for stmt in CREATE:
        conn.execute(text(stmt))

    for folder in kml.features():
        res = conn.execute(text('''INSERT INTO microwave_operator(name, type)
                                    VALUES (:name, :type) RETURNING id'''),
                           name=folder.name,
                           type=categorise(folder.name))
        operator = res.fetchone()[0]
        for feat in folder.features():
            conn.execute(text(
                '''INSERT INTO microwave_link (ref, operator, geometry) VALUES
                              (:ref, :operator,
                            ST_Transform(ST_SetSRID(ST_GeomFromText(:geometry), 4326), 3857)
                                )
                              '''),
                         ref=feat.name,
                         operator=operator,
                         geometry=feat.geometry.wkt)
	print '\tAdjusting lat/lon by ' + str(camp['latitude'] - lat) + ' / ' + str(camp['longitude'] - lon) 
	camp['latitude'] = lat
	camp['longitude'] = lon

# Loose string match score above this value results in auto-match
AUTO_MATCH_THRESHOLD = .9
# Loose string match score above this value results in human prompt
POSSIBLE_MATCH_THRESHOLD = .5

readFile = open('camps_geocoded.json')
camps = json.load(readFile)

readFile = open('burnermaps_camps_8_11_14.kml')
kml = kml.KML()
kml.from_string(readFile.read())
kml_features = list(kml.features())

# Load Unofficial Burning Man Map KML into dictionary
# of name.lower() -> coordinates
camp_to_loc = {}
for feature in kml_features:
	for folder in list(feature.features()):
		if folder.name == 'Theme Camps':
			#print str(len(list(folder.features()))) + ' camps'
			for camp in list(folder.features()):
				camp_to_loc[camp.name.strip().lower()] = (camp.geometry.y, camp.geometry.x)
				#print camp.name.strip() + ' ' + str(camp.geometry.y) + ', ' + str(camp.geometry.x)


# A map of official camp name -> unofficial name
# populated by fuzzy string matching. If the match is exact