Spaces:
Runtime error
Runtime error
File size: 1,640 Bytes
06cb2a3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
from xml.etree import ElementTree as ET
import pandas as pd
# Define the KML namespace
ns = {'kml': 'http://www.opengis.net/kml/2.2'}
# 1. Parse the KML file
tree = ET.parse("merged/data/temp_unzipped/doc.kml")
root = tree.getroot()
# 2. Find all Folder elements using the namespace
folders = root.findall(".//kml:Folder", ns)
# 3. Choose the second folder
# Print folder names to help identify the correct one
print("Available folders:")
for i, folder in enumerate(folders):
name = folder.find(".//kml:name", ns)
print(f"{i}: {name.text if name is not None else 'Unnamed folder'}")
interesting_folder = folders[1] # You might want to adjust this index based on the output
# 4. For each Placemark, gather data
rows = []
for placemark in interesting_folder.findall(".//kml:Placemark", ns):
row_data = {}
# Get placemark name if available
name = placemark.find(".//kml:name", ns)
if name is not None:
row_data['Name'] = name.text
# ExtendedData -> Data elements
extended_data = placemark.find(".//kml:ExtendedData", ns)
if extended_data is not None:
data_elements = extended_data.findall(".//kml:Data", ns)
for data_el in data_elements:
col_name = data_el.get("name")
val_el = data_el.find(".//kml:value", ns)
value = val_el.text if val_el is not None else None
row_data[col_name] = value
rows.append(row_data)
# Convert to DataFrame and save as CSV
df = pd.DataFrame(rows)
df.to_csv("merged/data/output.csv", index=False)
print(f"Processed {len(rows)} placemarks")
print("Output saved to merged/data/output.csv")
|