Technologische Neuigkeiten, Bewertungen und Tipps!

Geokodieren Sie Millionen von Standorten, ohne verklagt zu werden – auf dem Weg zur KI

Hinweis: Der folgende Artikel hilft Ihnen dabei: Geokodieren Sie Millionen von Standorten, ohne verklagt zu werden – auf dem Weg zur KI

Ursprünglich veröffentlicht auf Towards AI, dem weltweit führenden Nachrichten- und Medienunternehmen für KI und Technologie. Wenn Sie ein KI-bezogenes Produkt oder eine KI-bezogene Dienstleistung entwickeln, laden wir Sie ein, darüber nachzudenken, KI-Sponsor zu werden. Bei Towards AI helfen wir bei der Skalierung von KI- und Technologie-Startups. Wir helfen Ihnen dabei, Ihre Technologie der breiten Masse zugänglich zu machen.

Mit Blick auf GeoBatchPy und Geodatenanalysen

Exponential Time Smoothing (ETS) ist eine in der Community der Zeitreihenprognosen weit verbreitete Technik, bei der es darum geht, Signale aus immer weiter entfernten Zeiten herunterzugewichten. Und ähnliche Methoden sind in Vorhersagemodellen außerhalb der Zeitreihenvorhersage Standard, solange die Zeit Teil des Problems ist. Möchten Sie die Kundenabwanderung vorhersagen? Versuchen Sie es mit einem gewichteten Durchschnitt vergangener Kaufbeträge.

Das räumliche Äquivalent der zeitlichen Gewichte ist eine räumliche Gewichtsmatrix. Es gilt die gleiche Idee: Berechnen Sie einen gewichteten Durchschnitt, wobei die Gewichte vom räumlichen Abstand in einem zweidimensionalen Koordinatensystem abhängen. Doch im Gegensatz zur Zeit erfordert die Entfernung im Raum erhebliche Vorarbeiten. Wahrscheinlich beginnen Sie mit (strukturierten) Adresstexten als Standortdaten. Wie bringt man sie also in ein Koordinatensystem?

Im Folgenden verwenden wir das Längen-Breiten-Koordinatensystem. Und der Übergang von Texten zu Längen- und Breitengraden wird Geokodierung genannt. Es gibt Dutzende, wenn nicht Hunderte von Geokodierungsdienstleistern. Doch die Wahl erweist sich aus Kosten- und Rechtsgründen als riskant.

Lesen Sie die Lizenz, wenn Sie nicht gesperrt oder verklagt werden möchten

Bei der Auswahl eines Geodienstanbieters ist Vorsicht geboten. Google Maps und Mapbox sind aufgrund ihrer restriktiven Lizenz zwei prominente, aber schlechte Optionen für unsere Analyse-Anwendungsfälle – Sie dürfen Ergebnisse nicht speichern und weitergeben. Beispielsweise hat Google Mechanismen geschaffen, um Missbrauch seiner APIs zu erkennen, was im besten Fall zu einer Sperrung Ihres Kontos führt. Daher ist das Speichern von Millionen von Geocodes für spätere Analysen nicht zulässig.

Glücklicherweise füllt ein Startup namens Geoapify diese Nische mit Bravour. Dabei geht es nicht nur um rechtliche Gründe. Es geht auch um Kosten, Bedienkomfort (Batch-Verarbeitung) und gute Integration in Open Data und Open Source-Standards.

Warum Geoapify für Geodatenanalysen?

Kurz gesagt, deshalb haben wir uns für Geoapify entschieden:

  • Wir müssen Millionen von Standortdatensätzen geokodieren, ohne Pleite zu gehen. Geoapify bietet Batch-Geokodierung mit einem Rabatt von 50 % an.
  • Geoapify nutzt OpenStreetMap und andere offene Datenquellen mit einer benutzerfreundlichen Lizenz, damit wir Ergebnisse für Analysen speichern können. Als Nebeneffekt können wir unsere internen Standortdaten mit einem umfangreichen Ökosystem offener Datenquellen wie Wikidata verknüpfen.
  • Bei Geoapify geht es nicht nur um Geokodierung. Es bietet außerdem Ortsdetails, Isolinien, Reiseentfernungen und mehr – wobei die meisten Dienste über die Batch-API mit einem Rabatt von 50 % abgedeckt werden.

Beginnen Sie noch heute zum Nulltarif mit der Nutzung der Dienste von Geoapify, einschließlich der kommerziellen Nutzung. Ihr kostenloses Kontingent ermöglicht die Batch-Geokodierung von 6.000 Adressen pro Tag. Melden Sie sich bei geoapify.com an und generieren Sie im Handumdrehen Ihren API-Schlüssel.

Tutorial – GeoBatchPy für Batch-Geokodierung und mehr

Wir lieben Python und die Befehlszeile. Als wir anfingen, erfüllte kein Geoapify-API-Client unsere Anforderungen. Also haben wir GeoBatchPy erstellt.

GeoBatchPy ist ein Python-Client für die Geoapify-API. Und es verfügt über eine Befehlszeilenschnittstelle für die Batch-API, die besonders dann zum Einsatz kommt, wenn Sie eine große Anzahl von Standorten verarbeiten müssen. Sie können die neueste Version von PyPI mit pip install geobatchpy installieren. Wir empfehlen jedoch, eine neue Conda-Umgebung zu erstellen, die GeoPandas und PySAL abdeckt, wenn Sie dem folgenden Tutorial mit Ihren Daten folgen möchten.

Dieses Tutorial zeigt, wie Sie GeoBatchPy in einen Geoanalyse-Workflow integrieren, angefangen bei einfachen Adressdatensätzen, gefolgt von Batch-Geokodierung, bis hin zur Berechnung räumlicher Gewichtsmatrizen. Wir schließen mit einem einfachen Analyse-Anwendungsfall.

Teil 1 – Datenvorverarbeitung

Unser Datensatz für dieses Tutorial besteht aus 1081 Sportstadien, hauptsächlich in Deutschland, Belgien und den Niederlanden. Wir haben die Daten mit der Places API von Geoapify generiert.

Der Geokodierungsdienst von Geoapify akzeptiert Freitextsuche und strukturierte Eingaben, wobei letztere nur dann hilfreich sind, wenn wir großes Vertrauen in die Qualität unserer Daten haben. Ich habe zu viele Probleme mit der Datenqualität in realen strukturierten Adressdatensätzen gesehen. Und meine Schlussfolgerung ist, mich für die Freitextsuche zu entscheiden. Hier analysieren wir die strukturierten Daten in eine Zeichenfolge pro Zeile.

Teil 2 – Geokodierung

Es ist Zeit, unsere Adressen zu geokodieren. Sie können dies mit unserer Python-API tun, wir bevorzugen jedoch die Befehlszeile. Zuerst bereiten wir die Eingabedatei mit Python vor:

Jetzt wechseln wir zur CLI. Damit die folgenden beiden Befehle funktionieren, müssen Sie entweder Ihre Umgebungsvariable GEOAPIFY_KEY festlegen oder die Option –api-key am Ende jedes Geobatch-Befehls hinzufügen. Zuerst übermitteln wir Aufträge an Geoapify-Server mit

Die Ausgabe des ersten Schritts, „tutorial-geocode-urls.json“, ist die Eingabe für den nächsten:

Die Bearbeitung unserer Anfragen nimmt Zeit in Anspruch, abhängig von der Anfragegröße, dem Abonnementplan und der Auslastung der Geoapify-Server.

Wir konvertieren die Ergebnisse in eine vereinfachte Liste von GeoJSON-ähnlichen Python-Wörterbüchern.

GeoPandas hilft uns, die Daten in ein Tabellenformat umzuwandeln. Die Methode analysiert die Geometrie in ein formschönes geometrisches Objekt, fügt alle Eigenschaften in separate Spalten ein und ignoriert den Rest. Wir setzen außerdem das Koordinatenreferenzsystem (CRS) auf „EPSG:4326“, was bedeutet, dass die Tupel der Geometrien als Längen- und Breitengrad interpretiert werden.

Teil 3 – räumliche Gewichtsmatrizen

Wir werden PySAL und seinen entfernungsbasierten Ansatz verwenden, um eine räumliche Gewichtsmatrix zu berechnen. PySAL verfügt über mehrere Methoden, von denen jede ihre eigenen Anforderungen hat. Die entfernungsbasierte Methode akzeptiert unseren Datenrahmen aus Geocodes als Eingabe und berechnet Gewichtungen, die standardmäßig linear mit zunehmender Entfernung abnehmen.

Wir nehmen drei Änderungen am Standardverhalten vor:

  • Die Parameter „fixed=False“ und „k=10“ führen zu einer variablen Zerfallsstärke pro Zielort. Auf diese Weise beträgt die Anzahl der Gewichtungen ungleich Null in der Nachbarschaft jedes Standorts k=10.
  • Wir setzen Gewichtungen auf der Diagonale auf 0. Dadurch wird jeder Zielort aus seiner Menge von Nachbarn mit Gewichtungen ungleich Null ausgeschlossen. Dies wird für unseren Anwendungsfall relevant sein.
  • Durch das Festlegen des Attributs transform=’R’ werden die Gewichtungen für einen bestimmten Zielort normalisiert, sodass ihre Summe 1 beträgt.

Teil 4 – ein einfacher Analyse-Anwendungsfall

Angenommen, wir möchten den Immobilienpreis pro Quadratmeter eines Standorts anhand der verfügbaren Preise in seiner Nachbarschaft vorhersagen. Wir berechnen einen gewichteten Durchschnitt unter Wiederverwendung unserer räumlichen Gewichtsmatrix aus dem vorherigen Abschnitt:

Das nächste Diagramm zeigt, dass allein der gewichtete Durchschnitt ein unvoreingenommener Indikator für den Preis ist.

Jetzt wird klar, warum wir die Diagonalgewichte auf 0 setzen und das Ziel von seinen Nachbarschaftsgewichten ausschließen. Auf diese Weise können wir den Preis jedes neuen Standorts anhand des gewichteten Durchschnitts seiner Nachbarn mit bekannten Preisen vorhersagen.

In einem realistischeren Szenario möchten Sie in Ihrem Vorhersagemodell mehr als nur benachbarte Preise berücksichtigen, um erhebliche Unterschiede in nahegelegenen Standorten widerzuspiegeln. Beispielsweise können zwei benachbarte Standorte preislich sehr unterschiedlich ausfallen, wenn man direkt starkem Verkehrslärm ausgesetzt ist. Der gewichtete Durchschnitt kann dann als einer von vielen Prädiktoren in einem an unsere Daten angepassten Regressionsmodell verwendet werden.

Fazit und Ausblick

Die meisten (oder alle?) Unternehmen verarbeiten Adressdaten für alltägliche betriebliche Zwecke. Für Rechnungen, Warenlieferungen, Kundenbesuche usw. Interne Standortdaten belaufen sich sehr schnell auf Tausende, wenn nicht Hunderttausende von Standortdatensätzen. Die Nutzung derselben Daten für Geodatenanalysen erfordert in der Regel erhebliche Vorbereitungsarbeiten, wie z. B. Geokodierung. Wir zeigen, wie Sie mit Geoapify und unserem Python-Paket unnötige Kosten und rechtliche Risiken vermeiden – und das mit nur wenigen Zeilen Code. Praktisch jedes Analyseprojekt hat das Potenzial, von einer Geodatendimension zu profitieren.

Wir motivieren räumliche Gewichtungen, indem wir mit dem zeitlichen Äquivalent beginnen, das im Analysebereich breite Anwendung findet. Es geht nicht nur um das eine oder das andere. Modelle können Zeit und Raum kombinieren, um beides zu berücksichtigen: Erstens gewichten sie einzelne Signale aus einer zeitlichen Entfernung herunter. Zweitens: Kombinieren Sie diese vorübergehend herabgewichteten Signale räumlich. Wenn wir beispielsweise die Kundenabwanderung untersuchen, können wir die durchschnittliche Loyalität in der Nachbarschaft jedes Kunden berechnen. Wir identifizieren das Datum und den Standort jedes Abwanderers aus der Vergangenheit – das sind die (binären) Signale. Und wir berechnen gewichtete Durchschnittswerte unter Berücksichtigung der Anzahl aktiver Kunden für die Nachbarschaft jedes aktuellen Kunden, gewichtet nach zeitlicher und räumlicher Entfernung. Dies zeigt beispielsweise an, ob ein Kunde in einem Gebiet lebt, in dem die lokale Konkurrenz in letzter Zeit zugenommen hat – etwas, worauf wir schnell reagieren möchten.


Geocode Millions of Locations Without Being Sued wurde ursprünglich in Towards AI auf Medium veröffentlicht, wo die Leute das Gespräch fortsetzen, indem sie diese Geschichte hervorheben und darauf reagieren.

Veröffentlicht über Towards AI