27.11.2023
Live-Wetterdaten in ArcGIS übertragen
Meteomatics und ArcGIS - Teil 1
ArcGIS - die zukunftsträchtige GIS-Software von ESRI - ist ein leistungsstarkes Tool zur Erkundung und Analyse räumlicher Daten, wie z. B. derjenigen, die von der Meteomatics Weather API stammen. In diesem Artikel gehen wir auf die Arten von Problemen ein, bei denen ArcGIS Ihnen helfen kann, sowie darauf, wie Sie API-Daten in ArcGIS erhalten und regelmässige Aktualisierungen planen können, damit Ihre ArcGIS-Karte immer eine aktuelle Vorhersage anzeigt, ohne dass Sie manuell eingreifen müssen.
Was ist GIS?
Vielleicht lesen Sie diesen Artikel und haben keine Ahnung, was GIS ist oder was es bedeutet, daher ist eine kurze Einführung in das Thema angebracht. GIS steht für "geografisches Informationssystem" und bezeichnet jede Software, die die Visualisierung, Bearbeitung und Analyse von räumlichen Daten ermöglicht.
Viele Probleme haben eine räumliche Komponente, und mit GIS-Software können Benutzer Daten mit einem geografischen Aspekt importieren und spezielle Werkzeuge verwenden, um die Daten anzuzeigen und strategische Fragen dazu zu beantworten.
Wir werden einige Beispiele für räumliche Fragen in unseren Artikeln über GIS-Integrationen mit unserer API untersuchen, aber betrachten Sie zunächst ein gängiges Beispiel: Sie betreiben eine Kette von Fitnessstudios in einem städtischen Gebiet und möchten den besten Standort für ein neues Studio finden. Sie verfügen über eine .csv-Datei mit den Standorten Ihrer bestehenden Fitnessstudios und könnten eine neue Einrichtung problemlos an einem Standort einrichten, der ein wenig von den bestehenden entfernt ist, aber woher wissen Sie, dass dies ein guter Standort ist? Mithilfe von GIS-Software können Sie Bevölkerungs- und Verkehrsnetzdaten heranziehen, um einen Standort zu finden, der nicht nur weit genug von Ihren bestehenden Standorten entfernt ist, sondern auch eine bestimmte und bedeutende Bevölkerungsgruppe bedient und sogar die Fahrzeit zum nächsten Restaurant für alle Ihre Kunden optimiert.
Integration von Meteomatics-Wetter-API-Daten in GIS-Arbeitsabläufe
Die Meteomatics Weather API bietet über 1800 Parameter aus mehr als 110 Wetterdatenquellen. Viele räumliche Probleme beinhalten auch einen Wetteraspekt, und die Möglichkeit, Meteomatics-Daten nahtlos in GIS-Workflows zu integrieren, ist für viele unserer Kunden eine unglaublich nützliche Funktion.
WMS-Daten
Meteomatics-Daten können über den WMS-Dienst, der über unsere API verfügbar ist, direkt mit ArcGIS verbunden werden. Dies eignet sich für Kunden, die einfach nur eine visuelle Anzeige des relativen Zustands des Wetters wünschen. WMS ist ein Protokoll, mit dem Bitmaps ausgetauscht werden können, was jedoch nicht die numerischen Werte der Daten beinhaltet. Für diese Art von Verhalten benötigen die Kunden eine fortgeschrittenere Lösung.
Wettervisualisierung mit MetX
Benutzer, die ein fortschrittliches Toolkit zur Visualisierung von Wetterdaten mit numerischen Datenabfragen und grafischen Optionen nutzen möchten, sollten MetX, unser massgeschneidertes Wettervisualisierungsprogramm, in Betracht ziehen.
Arbeitsabläufe der Geoverarbeitung
Stellen Sie sich vor, Sie möchten das obige Beispiel der Standorteignung um Wetterdaten erweitern. Vielleicht suchen Sie nicht nach Fitnessstudios, sondern nach dem besten Standort für ein neues Restaurant mit Aussenbestuhlung, und suchen nach einem Ort mit den besten durchschnittlichen Bedingungen. Oder Sie interessieren sich für die Strassenvereisung, damit Sie feststellen können, wie sicher die Fahrten zu Ihren Geschäften sind, und die Besucherzahlen in Echtzeit abschätzen können, wenn die Strassen gefährlich werden.
Diese Art von Aufgaben könnte zwar auch programmatisch in Python oder einer ähnlichen Sprache erledigt werden, aber die ArcGIS-Schnittstelle ermöglicht es den Benutzern, diese Art von Analyse über eine grafische Benutzeroberfläche zu implementieren, ohne dass Skripte erforderlich sind.
ArcGIS spielt seine Stärken vor allem durch die grosse Anzahl von Geodatensätzen aus, die den Benutzern über den ESRI Living Atlas zur Verfügung stehen. Aus jedem ArcGIS-Projekt heraus können die Benutzer alle Daten importieren, die im Living Atlas zur Verfügung stehen, einschliesslich vieler ESRI-Datensätze sowie aller vom Benutzer erstellten Inhalte, die dort veröffentlicht wurden. Dinge wie Verkehrsnetze und Bevölkerungsdaten in einem gebrauchsfertigen Format ermöglichen es Ihnen, Wetter-API-Daten für fortgeschrittenere Problemlösungen zu verwenden - zum Beispiel für die Berechnung des Risikos der Vereisung entlang eines Verkehrsnetzes.
Jedes der ArcGIS Geoprocessing-Tools kann auf räumliche Daten aus der ArcGIS-GUI heraus angewendet werden, ohne dass man dafür programmieren muss - obwohl alle diese Tools auch aus einem Python-Kontext heraus angewendet werden können, indem man das ArcPy-Paket verwendet. Dies alles führt zu einer enormen Flexibilität bei der Aufschlüsselung und Durchführung Ihrer Analysen. Die Wetterdaten, die für diese Werkzeuge benötigt werden, sind über die Meteomatics API verfügbar und können in ArcGIS importiert werden, um diese Lösungen zu unterstützen.
Um API-Daten in ArcGIS zu importieren, gibt es verschiedene Möglichkeiten, die wir in den Tech-Blog-Artikeln erläutern werden:
1. Das manuelle Herunterladen von Meteomatics-Daten und das anschliessende Öffnen in ArcGIS ist für viele Studien ausreichend.
- Einige Meteomatics-Daten sind bereits entsprechend für ArcGIS formatiert (Rasterdaten)
- Einige Meteomatics-Daten müssen zusätzlich formatiert werden (Feature-Daten), bevor sie in ArcGIS angezeigt werden können (hier ist oft eine programmatische Umformatierung erforderlich)
- Die anschließende Analyse der Daten kann dann mit der Geoprocessing-Toolbox von ArcGIS aus erfolgen oder mit denselben Werkzeugen (sowie anderen gewünschten Python-Funktionen) in einem Python-Skript
2. In Anwendungen, in denen Echtzeitdaten benötigt werden, z. B. in einem Dashboard zur Überwachung der Wetterbedingungen, muss ein Python-Skript eingerichtet werden, das die API kontinuierlich aufruft und die Daten innerhalb von ArcGIS aktualisiert.
Echtzeit-Erfassung und -Anzeige von Meteomatics-Daten in ArcGIS Pro
Der Schwerpunkt dieses Artikels liegt auf der Echtzeit-Erfassung und -Anzeige von Meteomatics-Daten innerhalb von ArcGIS Pro. Die Analyse von Wetterdaten mit Hilfe der Geoprocessing-Toolbox wird in einem späteren Artikel behandelt.
In diesem Beispiel werden wir den Anwendungsfall des Imports von Wetterdaten für eine Reihe von Einzelstandorten untersuchen und ein Skript so einrichten, dass diese Daten in regelmässigen Abständen aktualisiert werden. Der Spielzeug-Standortdatensatz ist eine kommagetrennte Liste von Breiten- und Längengraden, die europäischen Flughäfen entsprechen, und wir werden einige Wetterdaten importieren, die nützlich sein könnten, um festzustellen, ob ein Flug sicher ist oder nicht.
Datendarstellung in ArcGIS: Raster- oder Feature-Datensatz
Bevor wir beginnen, lassen Sie uns kurz betrachten, wie Daten in ArcGIS dargestellt werden. Wie die meisten GIS-Programme betrachtet ArcGIS Daten entweder als "Raster" oder als "Feature"-Datensatz. Im Allgemeinen sind Raster dazu gedacht, Daten darzustellen, die sich kontinuierlich über einen grossen Bereich verändern, während Features dazu verwendet werden, Daten darzustellen, die mit einzelnen Objekten verbunden sind. Diese Definition kann etwas verwirrend sein, da die Rasterdarstellung einer kontinuierlichen Variable wie ein Gitter aus diskreten Objekten aussieht und einige Raster diskrete Daten oder Boolesche Werte darstellen können. Der Unterschied zwischen den beiden lässt sich am besten grafisch veranschaulichen, und ich füge unten einige Schemata bei.
Abbildung 4: Eine schematische Darstellung der Datentypen in ArcGIS. Eine Feature Collection ist, wie der Name schon sagt, eine Sammlung von Features, bei denen es sich im Allgemeinen um Polygone, Linien oder Punkte handeln kann. Allen Features muss eine Geometrie zugeordnet werden, damit sie in eine ArcGIS-Karte eingefügt werden können.
API-Daten abrufen
In diesem Anwendungsfall ist jeder Flughafen ein Merkmal, dem wir Wetterdaten zuordnen können. Im Kontext der API können wir einige Wetterdaten für diese Orte in einem JSON- oder XML-Format anfordern, das etwa so aussehen wird:
Bevor wir diese Daten in ArcGIS ziehen und ablegen können, müssen wir sie neu formatieren. Insbesondere müssen wir ArcGIS mitteilen, welche Features in diesem Datensatz enthalten sind, und den Breiten- und Längengrad einem "Geometrie"-Attribut zuweisen, damit ArcGIS beim Öffnen der Datei weiß, dass dies die Ortsdaten sind. Da wir dies für jeden Ort im Feature-Set tun müssen, werden wir es programmatisch tun wollen.
from meteomatics import api import datetime as dt import pandas as pd import numpy as np import geopandas as gpd from shapely.geometry import Point airports = pd.read_csv('poi_european_airports.csv', header=None, index_col=[0, 1]) airports['ID'] = (np.arange(len(airports))+1).astype(float) df = api.query_time_series( airports.index.values, NOW, NOW+STEP, STEP, PARAMS, USERNAME, PASSWORD ).xs( key=NOW.strftime('%Y-%m-%d %H:00:00+00:00'), level=2 ) # have to make sure the index name and MultiIndex names are the same airports.index.name = df.index.name airports.index.names = df.index.names combined = pd.merge(df, airports, left_index=True, right_index=True) geom = [Point(coord[1], coord[0]) for coord in df.index] gdf = gpd.GeoDataFrame(combined.assign(coordinates=geom).reset_index(), geometry='coordinates') gdf.to_file("latest_data.geojson", driver='GeoJSON')
Meine "airports"-Variable stammt aus einer .csv-Datei mit Points of Interest, die sich auf europäische Flughäfen bezieht, enthält aber ausser den Flughafenstandorten keine weiteren Informationen, so dass ich jedem Flughafen eine beliebige ID zuweise. Der als "df" zurückgegebene Datenrahmen nimmt aufgrund des Python-Konnektors eine bestimmte Form an; ich verwende .xs, um ihn so aufzubereiten, dass er mit dem Flughafendatensatz zusammengeführt werden kann; ich benenne auch den Flughafendatensatz entsprechend um, bevor ich die beiden zusammenführe, das Geometrieattribut definiere, einen GeoPandas GeoDataFrame erstelle und das Ergebnis in ein GeoJSON schreibe. Der resultierende GeoJSON sieht wie folgt aus:
Diese Daten sind nun so formatiert, dass sie in ArcGIS importiert werden können, wie unten dargestellt:
Automatisierung des Prozesses
Wir haben nun gesehen, wie wir eine API-Antwort so formatieren können, dass sie für die Verwendung in ArcGIS geeignet ist. Im letzten Schritt haben wir manuell eine ArcGIS-Karte geöffnet und die Daten hinzugefügt. Um eine regelmässige Aktualisierung der Daten einzurichten, ohne dass ein manuelles Drag-and-Drop erforderlich ist, müssen wir diesen Schritt zunächst automatisieren.
Um das Skript fertigzustellen, sind einige spezielle Python-Pakete erforderlich. Insbesondere müssen wir ArcPy verwenden, um einige GeoDataBases zu erstellen, und das ArcGIS-Paket, um die Features in der GDB zu aktualisieren.
Mein Code für die Automatisierung des Prozesses zum Ersetzen von Daten in ArcGIS mit neu erworbenen Daten aus der API kann auf den Meteomatics GitHub Seiten gefunden werden. Das Skript ist gut kommentiert, und Sie sollten in der Lage sein, die relevanten Abschnitte zu finden, die Sie für Ihre Bedürfnisse aktualisieren müssen.
Hier ist eine kurze Beschreibung der Schritte des Prozesses:
- Es werden zwei GeoDataBases definiert: die workGDB, die während des gesamten Skripts verwendet wird, um die Daten für den Upload in ArcGIS vorzubereiten, und die liveGDB, die die Daten enthält, die gerade in ArcGIS angezeigt werden, und die ganz am Ende des Prozesses überschrieben wird.
- Der Code von vorhin wird verwendet, um API-Daten für unsere Flughäfen zu holen und diese in ein GeoJSON zu schreiben. Das ArcPy-Modul wird verwendet, um diese entsprechend formatierten Daten in einen ArcGIS-Feature-Layer zu konvertieren.
- Die Deploy-Logic-Funktion wird aufgerufen, um die liveGDB durch die workGDB zu ersetzen.
Erstellen eines Batch-Prozesses
Das Skript im vorherigen Abschnitt kann Daten in einer ArcGIS-Karte durch Daten ersetzen, die während der Ausführung des Skripts heruntergeladen werden. Der letzte Schritt bei der Erstellung von automatisierten Aktualisierungen besteht darin, das Skript mehrmals auszuführen, ohne es manuell aufrufen zu müssen.
Eine einfache Möglichkeit, dies zu tun, wäre natürlich, eine "for"-Schleife im Python-Skript selbst zu erstellen. Der Nachteil dieser Methode ist, dass sie nur so lange funktioniert, wie das Python-Skript nicht unterbrochen wird, was leicht passieren kann, wenn Sie Ihren Computer ausschalten.
Eine Alternative zu dieser Methode besteht darin, einen .bat-Prozess oder ein Shell-Skript zu erstellen, das das Skript regelmässig aufruft. Dieses Verfahren werden wir heute erlernen.
Das erste, was wir tun müssen, um unser aktuelles Skript mit dieser Methode kompatibel zu machen, ist, es von der Kommandozeile aus aufrufbar zu machen, indem wir die
__name__ == '__main__'
Code am Anfang des Skripts. Wenn es Argumente gibt, die wir von der Kommandozeile an das Skript übergeben wollen, können wir auch das Modul "sys" importieren und diese Argumente innerhalb des Skripts mit sys.argv auspacken. Zum Beispiel, wenn Sie die Positionen Ihrer Points of Interest von einem externen Ort übergeben wollen, anstatt sie an einem festen Ort relativ zum Skript zu halten, wie ich es tue.
Um einen Stapelverarbeitungsprozess zu erstellen, müssen Sie im Grunde nur den Befehl, der regelmässig in der Befehlszeile ausgeführt werden soll, in eine Klartextdatei eingeben, wobei die Nicht-Python-Argumente jeweils in Anführungszeichen gesetzt werden, und die Datei dann mit der Erweiterung .bat speichern. Meine Datei sieht wie folgt aus:
"C:\path\my\python.exe" "C:\path\my\script.py"
Wenn ich dem Python-Skript irgendwelche Befehlszeilenargumente hinzufügen müsste, müssten diese nicht in "" eingeschlossen werden. Achten Sie beim Speichern der Datei darauf, dass Sie sie entweder als .bat-Datei speichern (falls dies in der Dropdown-Liste "Speichern unter..." verfügbar ist) oder die Erweiterung .bat selbst eingeben und in der Dropdown-Liste "Alle Dateien" auswählen.
Nun müssen wir diese Aufgabe nur noch mit dem Windows-Aufgabenplaner planen. Um dies zu tun:
- Öffnen Sie den Aufgabenplaner über das Windows-Menü
- Wählen Sie "Grundlegende Aufgabe erstellen" aus dem Menü "Aktionen"
- Geben Sie Ihrer Aufgabe einen Namen und eine Beschreibung
- Klicken Sie auf "Weiter" - dies bringt Sie zur Registerkarte "Aufgabenauslöser"
- Folgen Sie dem Assistenten, um die Aufgabe in der von Ihnen gewünschten Häufigkeit zu planen. Machen Sie sich keine Sorgen, wenn Sie eine Aufgabe mit einer höheren Frequenz im Sinn haben - wir können diese im nächsten Schritt bearbeiten
- Nachdem wir die Aufgabe erstellt haben, können wir sie im Aufgabenplaner sehen. Wenn Sie darauf klicken, öffnet sich das Kontextmenü "Ausgewähltes Element" unter "Aktionen". Wählen Sie von hier aus "Eigenschaften"
- Wechseln Sie im Popup-Fenster zur Registerkarte "Auslöser", wählen Sie den zuvor erstellten Auslöser aus und klicken Sie auf "Bearbeiten"
- Nun sollten Sie unter "Erweiterte Einstellungen" die Häufigkeit Ihrer geplanten Aufgabe erhöhen können
Ergebnisse
Das Schöne an der Einrichtung einer Echtzeit-Verbindung zur API ist, dass wir in ArcGIS Workflows auf die Daten anwenden können, die aktualisiert werden, wenn neue Daten eingehen, so dass wir Änderungen an den Daten schnell visualisieren können. Im folgenden Beispiel habe ich beispielsweise die Symbologie der Flughafenmerkmale aktualisiert, um einen grösseren Punkt mit einer rötlicheren Farbe für die höheren Windgeschwindigkeiten in unserem Datensatz zu erzeugen. Die maximale Windgeschwindigkeit, die zu diesem Zeitpunkt erreicht wurde - 8,9 m/s am Flughafen Ankara - ist wahrscheinlich nichts, worüber sich Flieger besonders Sorgen machen müssen, aber die allgemeine Idee liegt auf der Hand: Wenn wir die Symbologie von den Live-Daten abhängig machen würden, würden wir Live-Aktualisierungen der Symbole sehen und gewarnt werden, wenn wir etwas unternehmen müssen.
Dieses allgemeine Prinzip kann auf eine Vielzahl von GIS-Konzepten ausgedehnt werden. Wenn Sie einen Workflow entweder in ArcGIS Pro oder in der ArcGIS Python API definieren, können Sie diesen Workflow automatisch auf neue Daten anwenden und die Ergebnisse der Analyse in Echtzeit aktualisieren.
Zusammenfassung
In diesem Artikel haben wir einige der Vorteile der Verwendung von ArcGIS für raumbezogene Analysen sowie die Möglichkeiten der Kombination von Wetterdaten mit den in ArcGIS verfügbaren Geoverarbeitungswerkzeugen untersucht. Wir haben gelernt, wie ArcGIS Daten darstellt und wie man Meteomatics API-Daten verarbeitet, um sie mit ArcGIS kompatibel zu machen, und wie man die Verarbeitung von API-Daten automatisiert, damit eine ArcGIS-Karte aktualisiert werden kann, sobald neue Daten verfügbar sind.
Dies ist natürlich nicht das ganze Ausmass dessen, wofür ArcGIS verwendet werden kann. Weitere Artikel im Tech Blog werden in Kürze einige der Arbeitsabläufe aufzeigen, die Sie in ArcGIS mit Metetomatics-Daten implementieren können. Wenn Sie in der Zwischenzeit sowohl ein ArcGIS- als auch ein Meteomatics-Abonnement haben, warum nutzen Sie sie nicht zusammen und erkunden die Möglichkeiten selbst? Wenn Sie spannende Ideen haben, zögern Sie bitte nicht, sich mit uns in Verbindung zu setzen!
Expertengespräch buchen
Lassen Sie uns die perfekte Lösung für Ihr Problem finden. Sprechen Sie mit einem Experten.
Entdecken Sie unsere Dienstleistungen
Wir liefern die genauesten Wetterdaten für jeden Ort und zu jeder Zeit, um Ihr Geschäft zu verbessern.