Geo-Koordinaten aus Straßennamen CSV generieren (latitude und longitude)
Level:
Fortgeschritten 👍
Eine KI wie ChatGPT kann uns eine Menge Arbeit abnehmen, die eigentlich langweilig ist und keiner machen will. Ich gebe dir hier auf meinem Channel immer wieder Herausforderungen und Anwendungsbeispiele, die bei mir in meinem Arbeitsalltag als Webdesigner vorgekommen sind und wie ich diese mit Chat-GPT oder anderen AI Tools gelöst habe.
In diesem Beispiel habe ich eine Händlerliste mit über 300 Adressen in einer interaktiven Karte auf eine Kunden-Website integrieren wollen. Dafür brauchte ich die jeweiligen latitude und longitude Koordinaten, die ich automatisiert aus einer CSV Datei generieren wollte. Den Python Code dafür hat mir ChatGPT geschrieben.
Anleitung Schritt für Schritt
- Öffne die CSV-Datei mit den Adressen in Numbers auf dem Mac.
- Gehe sicher, dass du folgende Spaltenbeschreibungen verwendest "Strasse", "Postleitzahl", "Ort", "Land", "latitude" und "longitude".
- Öffne das Terminal (auf dem Mac Terminal in die Spotlight-Suche eingeben)
- Gebe: „pip install geopy” ein. Sollte der Code nicht funktionieren, musst du Python erst installieren.
- Den untenstehenden Code in einer Textdatei „koordinaten.py” speichern:
- Die Datei „koordinaten.py” sowie die „adressen.scv” in einem Ordner „Skript” auf dem Schreibtisch auf dem Mac ablegen
- Im Terminal auf dem MacBook folgendes eingeben: python3 /Users/deinbenutzername/Desktop/Skript/koordinaten.pyErsetze "deinbenutzername" durch deinen tatsächlichen Benutzernamen auf dem Mac.
- Zurücklehnen und entspannen, bis die ergebnisse.csv fertig gefüllt ist. Je nach Anzahl der Einträge kann das dauern.
Code:
from geopy.geocoders import Nominatim
import csv
geolocator = Nominatim(user_agent="my-app")
with open('adressen.csv', newline='', encoding='utf-8') as csvfile:
reader = csv.DictReader(csvfile, delimiter=';')
with open('ergebnisse.csv', 'w', newline='', encoding='utf-8') as resultfile:
fieldnames = ['Strasse', 'Postleitzahl', 'Ort', 'Land', 'latitude', 'longitude']
writer = csv.DictWriter(resultfile, fieldnames=fieldnames)
writer.writeheader()
for row in reader:
address = f"{row['Strasse']}, {row['Postleitzahl']} {row['Ort']}, {row['Land']}"
try:
location = geolocator.geocode(address)
writer.writerow({
'Strasse': row['Strasse'],
'Postleitzahl': row['Postleitzahl'],
'Ort': row['Ort'],
'Land': row['Land'],
'latitude': location.latitude,
'longitude': location.longitude
})
except:
writer.writerow({
'Strasse': row['Strasse'],
'Postleitzahl': row['Postleitzahl'],
'Ort': row['Ort'],
'Land': row['Land'],
'latitude': '',
'longitude': ''
})
Ich habe folgenden Promt für Chat GPT benutzt:
Ich habe eine „adressen.csv” Datei, in der jeweils ein Strassenname, Postleitzahl, Ort und Land hinterlegt sind. Ich brauche zu jeder dieser Adressen die latitude und longitude Koordinaten.
Dafür soll eine neue csv Datei „ergebnisse” erstellt werden, in der Strassenname, Postleitzahl, Ort, Land, latitude und longitude aufgelistet werden.
Sollte es bei einer Adresse einen Fehler geben, sollen die Felder latitude und longitude einfach leer gelassen werden.
Es muss eine kostenlose Lösung sein, bei der ich mich auch nirgends anmelden muss.
Kannst du mir dabei helfen?