ele1 = ["road1", 0, 120, 60]
ele2 = ["road1", 1, 122, 65]
ele3 = ["road1", 2, 125, 63]
ele4 = ["road2", 0, 123, 61]
ele5 = ["road2", 1, 113, 41]
ele6 = ["road3", 0, 173, 69]
ele7 = ["road3", 1, 113, 23]
ele8 = ["road4", 0, 123, 67]
ele8 = ["road4", 1, 143, 97]
ele9 = ["road5", 0, 133, 61]
ele10= ["road5", 1, 173, 91]
parent_list = [ele1, ele2, ele3, ele4, ele5, ele6, ele7 ,ele8, ele9, ele10]
key_list = []
for ele in parent_list:
if ele[0] not in key_list:
key_list.append(ele[0])
all_data = []
for ele in key_list:
ele_dict = {}
ele_dict.setdefault(ele,[])
all_data.append(ele_dict)
for e in parent_list:
road_name = e[0]
for dic in all_data:
key = [key for key in dic.keys()][0]
if key == road_name:
dic[key] = dic[key] + e[1:]
kml = ""
kml_head = """<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0"> <Document>"""
kml += kml_head
string = """
<Placemark>
<LineString>
<name>{road_name}</name>
<!--altitudeMode>clampToGround</altitudeMode-->
<altitudeMode>absolute</altitudeMode>
<!--altitudeMode>clampToGround</altitudeMode>
<altitudeMode>clampToGround</altitudeMode-->
<coordinates>
{contents}
</coordinates>
</LineString>
</Placemark>"""
kodo = "0.0"
for road in all_data:
road_name = [key for key in road.keys()][0]
info_base = road[road_name]
set_quantity = int(len(info_base)/3)
contents = ""
for n in range(0,set_quantity):
keido = str(info_base[3*n+1])
ido = str(info_base[3*n+2])
#print(keido, ido)
info = ",".join([keido, ido, kodo])+"\n"
contents = contents + info
placemark = string.format(road_name=road_name,contents=contents[:-2])
kml += placemark
kml += "\n"+"</Document></kml>"
print(kml)
with open("output.kml", "a", encoding="utf-8") as f:
f.write(kml)