globalforest/databases/populatedb.py
2020-09-29 06:18:26 +03:00

35 lines
1.1 KiB
Python

from xml.etree import ElementTree as ET
import sys
import sqlite_utils
KML = "{http://www.opengis.net/kml/2.2}"
def iterate_kml(filepath):
fp = open(filepath)
parser = ET.XMLPullParser(["end"])
while True:
chunk = fp.read(1024 * 8)
parser.feed(chunk)
for event, element in parser.read_events():
assert event == "end"
if element.tag == f"{KML}Placemark":
name = element.find(f".//{KML}name").text
description = 'soon'
#description = element.find(f".//{KML}description").text
longitude, latitude, unknown = map(
float, element.find(f".//{KML}coordinates").text.split(",")
)
yield {
"name": name,
"x": latitude,
"y": longitude,
"description": description,
}
if not chunk:
break
if __name__ == "__main__":
db = sqlite_utils.Database("trees.db")
db["locations"].insert_all(iterate_kml(sys.argv[-1]))