Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Snap-to-Roads ist ein Azure Maps-Dienst, der eine Reihe von GPS-Punkten verarbeitet, die entlang einer Route gesammelt werden und sie an den wahrscheinlichsten Straßen andockt, die das Fahrzeug befahren hat. Diese Funktion ist hilfreich bei der Bestimmung des genauen Pfads, dem ein Fahrzeug gefolgt ist, auch wenn die gesammelten GPS-Daten leicht abweichend sind.
In diesem Tutorial wird erläutert, wie Sie die Azure Maps Snap-to-Roads-API mit Microsoft Fabric verwenden, um GPS-Daten aus dem Verschieben von Ressourcen zu analysieren, auch wenn die Daten aufgrund von Signalverlusten ungenau oder unvollständig sind. Es führt Sie durch Aufrufe der Snap-to-Roads-API von Azure Maps aus einem Microsoft Fabric-Notebook, um die GPS-Punkte an die nächste Straße anzudocken, fehlende Punkte mit interpolierten Datenpunkten zu füllen und sie mit zusätzlichen Attributen wie Straßennamen und Geschwindigkeitsbegrenzungen zu verbessern.
In diesem Lernprogramm lernen Sie Folgendes:
- Erstellen Sie ein Microsoft Fabric Lakehouse und importieren Sie die rohen GPS-Daten eines Fahrzeugs hinein.
- Erstellen Sie ein Microsoft Fabric-Notebook, das unformatierte GPS-Daten verwendet, und die angeforderten angedockten Koordinateninformationen mithilfe der Azure Maps Snap-to-Roads-API zurückgibt.
- Erstellen Sie ein Eventhouse und eine KQL-Datenbank und importieren Sie die angedockten GPS-Daten darin.
- Erstellen Sie ein Echtzeitdashboard mithilfe der angedockten GPS-Daten in der Kusto-Datenbank.
- Abfragen von KQL-Daten und Anzeigen der angedockten GPS-Daten in einer Kartenvisualisierung.
Voraussetzungen
- Ein Azure Maps-Konto
- Ein Abonnementschlüssel
- Ein Microsoft Fabric-Konto
- Grundlegendes Verständnis von Microsoft Fabric.
Hinweis
Weitere Informationen zur Authentifizierung in Azure Maps finden Sie unter Verwalten der Authentifizierung in Azure Maps.
Erstellen eines Microsoft Fabric-Notebooks und eines Lakehouse
Führen Sie die folgenden Schritte aus, um ein Microsoft Fabric-Notebook zu erstellen:
Wechseln Sie zu Ihrem My Workspace und wählen Sie Neues Element aus.
Wenn die Anzeige Neues Element erscheint, scrollen Sie nach unten und wählen Sie Notebook aus.
Wählen Sie in der Notebook-Anzeige Explorer den Lakehouses-Pfeil > aus.
Wählen Sie die Schaltfläche Hinzufügen aus.
Wählen Sie im Dialogfeld Lakehouse hinzufügenNeues Lakehouse und dann die Schaltfläche Hinzufügen aus.
Geben Sie im Dialogfeld Neues Lakehouse den Namen „Azure_Maps_Data“ ein, und wählen Sie dann die Schaltfläche Erstellen aus.
Hinzufügen einer Datendatei zum Lakehouse
Snap-to-Roads akzeptiert GPS-Punktdaten (lat, lon) und gibt eine Liste von Objekten zurück, die eine Route bilden, die an den Straßen auf einer Karte angedockt ist. Eine Datendatei mit den erforderlichen GPS-Daten kann dem Lakehouse als Datei hinzugefügt und vom Python-Code in Ihrem Notebook referenziert werden.
Datendatei herunterladen
Laden Sie die Beispieldaten (mockData_20240919.csv) von GitHub auf Ihr lokales Speichergerät herunter, um sie im nächsten Abschnitt in Lakehouse hochzuladen. Diese Datei enthält ein Array von GPS-Koordinaten, die der Dienst „Snap-to-Roads“ nach Bedarf ändert, um sicherzustellen, dass jede Koordinate auf eine gültige Straße verweist.
Öffnen Sie die Datei mockData_20240919.csv in GitHub.
Wählen Sie auf dem Bildschirm oben rechts die Schaltfläche Rohdatei herunterladen aus und speichern Sie die Datei lokal.
Hochladen der Datendatei in Lakehouse
In den folgenden Schritten wird erläutert, wie Sie eine Datenquelle in Lakehouse hinzufügen.
Wählen Sie im Ordner Dateien in Lakehouse Hochladen > Dateien hochladen aus.
Öffnen Sie das Dialogfeld „Datei öffnen“, indem Sie das Symbol Ordner auswählen. Wählen Sie die Datei mockData_20240919.csv aus, die Sie im vorherigen Abschnitt heruntergeladen haben, und klicken Sie dann auf die Schaltfläche Öffnen. Sobald das Dialogfeld „Datei öffnen“ geschlossen wird und der richtige Dateiname im Steuerelement Datei hochladen angezeigt wird, wählen Sie die Schaltfläche Hochladen, um die Datei in Lakehouse hochzuladen.
Hinzufügen von Code zum Notebook
Sie müssen ihrem Notebook vier Codezellen hinzufügen und sie ausführen, um das Szenario Snap-to-Roads auszuführen. In den folgenden Abschnitten wird dieser Prozess Schritt für Schritt beschrieben.
Installieren von Paketen
Sie müssen zuerst die erforderlichen Pakete laden:
!pip install geopandas
!pip install geojson
Geben Sie die Pip-Installationsanweisungen in die erste Zelle Ihres Notebooks ein und führen Sie dann die Anweisungen aus, indem Sie den Ausführungspfeil auswählen.
Laden der Daten
Laden Sie als Nächstes die Beispieldaten, die Sie zuvor in Ihr Lakehouse hochgeladen haben.
Zeigen Sie mit dem Mauszeiger direkt unterhalb der Zelle, die zum Installieren der Pakete verwendet wird. Es erscheinen Optionen, um Code oder Markdown hinzuzufügen. Wählen Sie Code aus, um Ihrem Notebook eine weitere Codezelle hinzuzufügen.
Nachdem die neue Zelle erstellt wurde, fügen Sie den folgenden Code hinzu.
import geopandas as gpd import pandas as pd lakehouseFilePath = "/lakehouse/default/Files/" mockdata_df = gpd.read_file(lakehouseFilePath + "mockData_20240919.csv") mockdata_df = gpd.GeoDataFrame( mockdata_df, geometry=gpd.points_from_xy(mockdata_df.longitude, mockdata_df.latitude), crs="EPSG:4326" ) mockdata_df.head() mockdata_df.tripID.unique()Führen Sie den Code aus, indem Sie den Ausführungspfeil auswählen. Dadurch werden die Beispieldaten geladen.
Verbessern mit Snap-to-Roads
Der Code in dieser Notebookzelle liest unformatierte GPS-Daten aus der Datendatei in Lakehouse und übergibt sie an die Snap-to-Roads-API von Azure Maps. Mit aktivierter Interpolation fügt die API Punkte zwischen GPS-Standorten hinzu, um den Routenpfad entlang der Straße zu vervollständigen. Es stellt auch, wenn verfügbar, Attribute wie Straßennamen und Geschwindigkeitsbeschränkungen bereit.
Zeigen Sie mit dem Mauszeiger direkt unterhalb der Zelle, die zum Installieren der Pakete im vorherigen Schritt verwendet wird. Es erscheinen Optionen, um Code oder Markdown hinzuzufügen. Wählen Sie Code aus, um Ihrem Notebook eine weitere Codezelle hinzuzufügen.
Nachdem die neue Zelle erstellt wurde, fügen Sie den folgenden Code hinzu. Stellen Sie sicher, dass Sie Ihren Abonnementschlüssel hinzufügen.
import requests import json az_maps_subkey = "" az_maps_snaproads_url = "https://atlas.microsoft.com/route/snapToRoads?api-version=2025-01-01&subscription-key=" + az_maps_subkey # Function to process snap to road for each given trip def process_route(df, outputFilePath): # List to store successful responses successful_responses = [] # Function to send a chunk of features def send_chunk_snaproads(chunk): geojson_data = chunk.to_json() # Convert the JSON string to a Python dictionary geojson_dict = json.loads(geojson_data) # Add the new fields at the end of the dictionary geojson_dict['includeSpeedLimit'] = True geojson_dict['interpolate'] = True geojson_dict['travelMode'] = "driving" # Convert the dictionary back to a JSON string updated_geojson_data = json.dumps(geojson_dict) response = requests.post( az_maps_snaproads_url, headers={'Content-Type': 'application/json'}, data=updated_geojson_data ) if response.status_code == 200: print('Chunk request was successful...') successful_responses.append(response.json()) else: print(f'Failed to send request. Status code: {response.status_code}') print('Response body:', response.text) # Loop over the GeoDataFrame in chunks of 100 chunk_size = 100 for start in range(0, len(df), chunk_size): end = start + chunk_size chunk = df.iloc[start:end] send_chunk_snaproads(chunk) # Extract features with geometry from successful responses features_with_geometry = [] for response in successful_responses: if 'features' in response: for feature in response['features']: if 'geometry' in feature: longitude = feature['geometry']['coordinates'][0] latitude = feature['geometry']['coordinates'][1] feature['properties']['latitude'] = latitude feature['properties']['longitude'] = longitude features_with_geometry.append(feature) # Convert the list of features with geometry to a GeoDataFrame if features_with_geometry: responses_gdf = gpd.GeoDataFrame.from_features(features_with_geometry) # Write successful responses to a cvs file #responses_gdf.to_file(outputFilePath, driver='GeoJSON') responses_gdf.to_csv(outputFilePath, encoding='utf-8', index=False) print(f'Successful responses written to {outputFilePath}') else: print('No valid features with geometry found in the responses.')Führen Sie den Code aus, indem Sie den Ausführungspfeil auswählen.
Erstellen einer Datei mit erweiterten Daten
Der folgende Code verwendet die in der vorherigen Codezelle erstellte Ausgabe und erstellt eine neue CSV-Datei im Lakehouse namens SnapRoadResponses.csv. Diese neue Datendatei enthält aktualisierte GPS-Koordinaten, die an der entsprechenden Straße ausgerichtet sind. Sie enthält auch Straßennamen und Geschwindigkeitslimits, wenn verfügbar. SnapRoadResponses.csv werden in ein Eventhouse importiert und verwendet, um später in diesem Tutorial eine Kartenvisualisierung zu erstellen.
Zeigen Sie mit dem Mauszeiger direkt unterhalb der Zelle, die zum Verbessern mit „Snap-to-Roads“ im vorherigen Schritt verwendet wird. Es erscheinen Optionen, um Code oder Markdown hinzuzufügen. Wählen Sie Code aus, um Ihrem Notebook eine weitere Codezelle hinzuzufügen.
Nachdem die neue Zelle erstellt wurde, fügen Sie den folgenden Code hinzu.
lakehouseFilePath = "/lakehouse/default/Files/" #execute snap to road outputFilePath = lakehouseFilePath + "SnapRoadResponses" + ".csv" df = mockdata_df.sort_values(by='timeStamp').reset_index(drop=True) process_route(df, outputFilePath)Führen Sie den Code aus, indem Sie den Ausführungspfeil auswählen. Dies speichert SnapRoadResponses.csv mit aktualisierten GPS-Koordinaten im Lakehouse.
Tipp
Wenn die neue Datei nach dem Ausführen des Notebook-Codes nicht angezeigt wird, müssen Sie ihren Browser möglicherweise aktualisieren.
Dateipfad kopieren
Der ABFS-Pfad zu SnapRoadResponses.csv ist später in diesem Tutorial erforderlich, wenn Sie das Eventhouse erstellen. Um den ABFS-Pfad zu dieser Datei abzurufen, wählen Sie die Auslassungspunkte (...) neben der Datei aus, und wählen Sie dann im Popupmenü ABFS-Pfad kopieren aus. Nachdem sie kopiert wurde, speichern Sie sie für später.
Erstellen von Eventhouse und Verknüpfung mit Daten im Lakehouse
Erstellen Sie ein Eventhouse, um die Telemetriedaten für Ihre Flotte oder das Verschieben von Ressourcen zu verwalten. Standardmäßig wird automatisch eine KQL-Datenbank erstellt. In diesem Tutorial importieren Sie die angedockten Daten aus dem Lakehouse in die KQL-Datenbank. Fügen Sie für Echtzeitanalysen Streamingdaten hinzu. Nachdem die Daten hochgeladen wurden, können Sie Ihre Daten mithilfe der Kusto-Abfragesprache in einem KQL-Abfrageset abfragen.
Wechseln Sie zu Ihrem My Workspace und wählen Sie Neues Element aus.
Wenn die Anzeige Neues Element angezeigt wird, scrollen Sie nach unten und wählen Sie Eventhouse aus.
Geben Sie im Bildschirm Neues Eventhouse einen Namen für Ihr neues Eventhouse ein, z. B. SnapToRoadDemo.
Verknüpfen Sie als Nächstes das Lakehouse, das Sie zuvor erstellt haben, mit Ihrem neuen Eventhouse.
Wählen Sie die Auslassungspunkte neben Ihrem neuen Eventhouse aus, und dann Daten abrufen > OneLake im Popupmenü.
Wählen Sie Neue Tabelle aus, nennen Sie sie GPSData und wählen Sie dann Next aus.
Geben Sie den ABFS-Pfad zur Lakehouse-Datendatei (SnapRoadResponses.csv) in dem Steuerelement OneLake-Datei ein, das Sie zuvor gespeichert haben, und wählen Sie dann das Pluszeichen (+) aus, um es der Liste hinzuzufügen.
Wählen Sie Weiter aus.
Nachdem Sie die Daten in der Anzeige Überprüfen der Daten überprüft haben, wählen Sie Fertigstellen aus.
Wählen Sie Schließen aus, um die Zusammenfassungsseite zu schließen.
Das Eventhouse sollte nun erstellt und die GPS-Daten enthalten sein.
Erstellen Sie Echtzeitdashboards
Ein Echtzeitdashboard kann erstellt werden, um eine Verbindung mit Ihrem Dataset im Eventhouse herzustellen. Die Eingabe in diesem Tutorial sind statische Daten, kein Echtzeitdatenstrom, aber die Kacheln im Dashboard, z. B. Azure Maps Visual, können für visuelle Darstellung und Analyse verwendet werden.
Datenquelle hinzufügen
Wechseln Sie zu Ihrem My Workspace und wählen Sie Neues Element aus.
Wenn die Anzeige Neues Element angezeigt wird, suchen oder scrollen Sie nach unten, und wählen Sie Echtzeitdashboard aus.
Geben Sie im Bildschirm Neues Echtzeitdashboard den Namen SnapToRoadDashboard ein und wählen Sie dann Erstellen aus.
Wählen Sie in der neuen Anzeige EchtzeitdashboardNeue Datenquelle aus.
Wählen Sie die Schaltfläche Hinzufügen und dann OneLake-Datenhub aus.
Wählen Sie Ihre Datenquelle aus, und stellen Sie dann eine Verbindung her.
Geben Sie einen Anzeigenamen ein, wählen Sie dann Hinzufügen aus.
Schließen Sie den Bereich Datenquellen.
Nachdem Sie die Datenquelle für Ihr Echtzeitdashboard hinzugefügt haben, können Sie eine Abfrage und visuelle Zuordnung hinzufügen.
Hinzufügen visueller Abfragen und Karten
Wählen Sie Kachel hinzufügen aus.
Geben Sie
GPSDatain die Abfrage ein und wählen Sie dann Ausführen aus. Nachdem Sie überprüft haben, ob die Abfrage funktioniert, wählen Sie Visual hinzufügen aus.Wählen Sie im Bereich Formatierung des Visual aus der Dropdownliste Zuordnung des Visual-Typs aus.
Legen Sie als Nächstes Ihre Werte im Abschnitt Daten fest:
Dateneinstellung Wert Nach Speicherort definieren Breiten- und Längengrad Breitengradspalte Breitengrad (real) Längengradspalte Längengrad (real) Aktualisieren Sie die Karteninfokarte, indem Sie einen Wert aus dem Dropdownmenü Spalte beschriften auswählen. Wählen Sie SpeedLimitInKilometersPerHour aus.
Wählen Sie Änderungen übernehmen aus.
Ihre Kartenvisualisierung wird angezeigt. Sie können einen beliebigen Punkt auf der Karte auswählen, um die Koordinaten und Geschwindigkeitsbegrenzung in Kilometern pro Stunde für diesen Standort zu erhalten.
Nächste Schritte
Weitere Informationen zu Microsoft Fabric-Notebooks:
In diesem Tutorial wurde ein Dashboard für die Analyse der Route nach der Reise erstellt. Eine schrittweise Anleitung zum Erstellen von Echtzeitdashboards in Microsoft Fabric: