import folium
from xml.dom.minidom import parseString
with open('WRSC2019_day4.kml', 'rt') as f:
doc=f.read()
p = parseString(doc)
nodes = p.getElementsByTagName('Placemark')
way_points={}
for n in nodes:
raw_coord = n.getElementsByTagName('coordinates')[0].firstChild.nodeValue.split(',')
name = (n.getElementsByTagName('name')[0].firstChild.nodeValue)
way_points[name] = [float(raw_coord[1]), float(raw_coord[0])]
map_osm = folium.Map(location=way_points['marker1'], zoom_start=17)
marker_list = [['A', way_points['marker1']],
['B', way_points['marker2']]]
def add_waypoint(name, latlon):
folium.map.Marker(
latlon,
icon=folium.features.DivIcon(
icon_size=(12,12),
icon_anchor=(0,0),
html='<div style="font-size: 12pt">{}</div>'.format(name),
)
).add_to(map_osm)
folium.CircleMarker(latlon, radius=5).add_to(map_osm)
def calc_offset(wp, anchor):
lat_offset = wp[0] - anchor[0]
lon_offset = wp[1] - anchor[1]
return [lat_offset, lon_offset]
OFFSET = calc_offset(way_points['marker1'], way_points['anchor1'])
def apply_offset(wp, OFFSET=OFFSET):
return [wp[0] - OFFSET[0], wp[1] - OFFSET[1]]
def add_waypoint_south(name, latlon):
folium.map.Marker(
apply_offset(latlon),
icon=folium.features.DivIcon(
icon_size=(12,12),
icon_anchor=(0,0),
html='<div style="font-size: 12pt">{}</div>'.format(name),
)
).add_to(map_osm)
folium.CircleMarker(apply_offset(latlon), radius=5).add_to(map_osm)
for marker in marker_list:
add_waypoint(marker[0], marker[1])
add_waypoint_south(marker[1], marker[1]) # South
map_osm