import xml.etree.ElementTree as ET
import json
def make_placemark(name, desc, lat, lon):
placemark_el = ET.Element("Placemark")
name_el = ET.Element("name")
name_el.text = name
placemark_el.append(name_el)
description_el = ET.Element("description")
description_el.text = desc
placemark_el.append(description_el)
point_el = ET.Element("Point")
coordinates_el = ET.Element("coordinates")
coordinates_el.text = str(lon) + ',' + str(lat) + ',0'
point_el.append(coordinates_el)
placemark_el.append(point_el)
return placemark_el
def json2html(jj):
tbl = r'
'
#
if isinstance(jj, dict):
for key, value in jj.items():
if isinstance(value, dict) or isinstance(value, list):
tbl += '' + str(key) + ' | ' + json2html(value) + ' |
'
else:
tbl += '' + str(key) + ' | ' + str(value) + ' |
'
elif isinstance(jj, list):
for ell in jj:
tbl += '' + json2html(ell) + ' |
'
#
tbl += '
'
return tbl
ET.register_namespace("", "http://www.opengis.net/kml/2.2")
el = ET.XML(r'')
doc = ET.Element("Document")
#
file_directory = r'C:\work1\crash_region_code_1165.json'
json_data=open(file_directory, 'r', encoding="utf-8").read()
str1 = json_data.split('\n')
for n in str1:
if n != '':
data = json.loads(n)
geo_code = data['geo_code']
doc.append(make_placemark(data['_id']['$oid'], json2html(data), geo_code['latitude'], geo_code['longitude']))
el.append(doc)
et = ET.ElementTree(el)
et.write(r'C:\work1\test22.kml', encoding='UTF-8', xml_declaration=True)