#!/usr/bin/env python3
import sys
import os
import csv
import xml.etree.ElementTree as ET
def main():
if len(sys.argv) != 2:
print(f"Missing input file argument. Usage: {sys.argv[0]} <input.gpx>", file=sys.stderr)
sys.exit(1)
gpx_path = sys.argv[1]
base, _ = os.path.splitext(gpx_path)
csv_path = f"{base}.csv"
tree = ET.parse(gpx_path)
root = tree.getroot()
# GPX namespace
ns = {"default": "http://www.topografix.com/GPX/1/1"}
# Open the output CSV (tab-separated)
with open(csv_path, "w", newline="", encoding="utf-8") as csvfile:
writer = csv.writer(csvfile, delimiter="\t", lineterminator="\n")
# Iterate over all <wpt> elements
for wpt in root.findall("default:wpt", ns):
lat = wpt.get("lat", "")
lon = wpt.get("lon", "")
name_elem = wpt.find("default:name", ns)
name = name_elem.text.strip() if (name_elem is not None and name_elem.text) else ""
writer.writerow([lat, lon, name])
print(f"Wrote waypoints to: {csv_path}")
if __name__ == "__main__":
main()