Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Snap to Roads is een Azure Maps-service die een set GPS-punten verwerkt die langs een route zijn verzameld en deze uitlijnt op de meest waarschijnlijke wegen die het voertuig heeft afgelegd. Deze functie is handig bij het bepalen van het exacte pad gevolgd door een voertuig, zelfs wanneer de verzamelde GPS-gegevens enigszins zijn uitgeschakeld.
In deze zelfstudie wordt uitgelegd hoe u Azure Maps Snap to Roads API gebruikt met Microsoft Fabric om GPS-gegevens van bewegende assets te analyseren, zelfs als de gegevens onjuist of onvolledig zijn vanwege signaalverlies. U wordt begeleid bij het maken van aanroepen naar de Azure Maps Snap to Roads-API vanuit een Microsoft Fabric-notebook om de GPS-punten uit telijnen op de dichtstbijzijnde weg, ontbrekende punten op te vullen met behulp van geïnterpoleerde gegevenspunten en deze te verbeteren met extra kenmerken, zoals wegnamen en snelheidslimieten.
In deze zelfstudie leert u het volgende:
- Maak een Microsoft Fabric Lakehouse en importeer de onbewerkte GPS-gegevens van een vechicle erin.
- Maak een Microsoft Fabric-notebook met onbewerkte GPS-gegevens en retourneert de aangevraagde vastgemaakte coördinaatgegevens met behulp van de Azure Maps Snap to Roads-API .
- Maak een eventhouse - en KQL-database en importeer de vastgepakte GPS-gegevens erin.
- Maak een realtime dashboard met behulp van de vastgemaakte GPS-gegevens in de Kusto-database.
- Query's uitvoeren op KQL-gegevens en de vastgelijnde GPS-gegevens weergeven in een kaartvisual.
Vereisten
- Een Azure Maps-account
- Een abonnementssleutel
- Een Microsoft Fabric-account
- Basiskennis van Microsoft Fabric.
Notitie
Zie Verificatie beheren in Azure Maps voor meer informatie over verificatie in Azure Maps.
Een Microsoft Fabric-notebook en Lakehouse maken
Volg deze stappen om een Microsoft Fabric-notebook te maken:
Ga naar mijn werkruimte en selecteer Nieuw item.
Wanneer het scherm Nieuw item wordt weergegeven, schuift u omlaag en selecteert u Notitieblok.
Selecteer in het scherm Notebook Explorer de .
Selecteer de knop Toevoegen.
Selecteer New Lakehouse in het dialoogvenster Lakehouse toevoegen en vervolgens de knop Toevoegen.
Voer in het dialoogvenster New lakehouse een naam 'Azure_Maps_Data' in en selecteer vervolgens de knop Maken .
Een gegevensbestand toevoegen aan het lakehouse
Uitlijnen op wegen neemt GPS-puntgegevens (lat, lon) en retourneert een lijst met objecten die een route vormen die is vastgelijnd aan de wegen op een kaart. Een gegevensbestand met de vereiste GPS-gegevens kan worden toegevoegd als een bestand aan het lakehouse en waarnaar wordt verwezen door de Python-code in uw notebook.
Gegevensbestand downloaden
Download de voorbeeldgegevens (mockData_20240919.csv) van GitHub naar uw lokale opslagapparaat om in de volgende sectie te uploaden naar Lakehouse. Dit bestand bevat een matrix met GPS-coördinaten die de snap to Roads-service indien nodig wijzigt om ervoor te zorgen dat elke coördinaat verwijst naar een geldige weg.
Open het bestand mockData_20240919.csv in GitHub.
Selecteer de knop Onbewerkt bestand downloaden in de rechterbovenhoek van het scherm en sla het bestand lokaal op.
Gegevensbestand uploaden naar Lakehouse
In de volgende stappen wordt uitgelegd hoe u een gegevensbron toevoegt aan Lakehouse.
Selecteer Bestanden uploaden in de map Bestanden in Lakehouse.>
Open het dialoogvenster Bestand openen door het mappictogram te selecteren. Selecteer het mockData_20240919.csv bestand dat u in de vorige sectie hebt gedownload en klik vervolgens op de knop Openen . Zodra het dialoogvenster Bestand is geopend en de juiste bestandsnaam wordt weergegeven in het besturingselement Bestanden uploaden, selecteert u de knop Uploaden om het bestand te uploaden naar Lakehouse.
Code toevoegen aan notebook
U moet vier cellen met code toevoegen en uitvoeren in uw notebook om het scenario Uitlijnen op wegen uit te voeren. In de volgende secties wordt u stapsgewijs begeleid.
Pakketten installeren
U moet eerst de vereiste pakketten laden:
!pip install geopandas
!pip install geojson
Voer de pip-installatie-instructies in de eerste cel van uw notebook in en voer vervolgens de instructies uit door de uitvoeringspijl te selecteren.
Gegevens laden
Laad vervolgens de voorbeeldgegevens die u eerder hebt geüpload naar uw Lakehouse.
Plaats de aanwijzer net onder de cel die wordt gebruikt om de pakketten te installeren. Er worden opties weergegeven om code of markdown toe te voegen. Selecteer Code om een andere codecel toe te voegen aan uw notitieblok.
Zodra de nieuwe cel is gemaakt, voegt u de volgende code toe.
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()
Voer de code uit door de uitvoeringspijl te selecteren. Hiermee worden uw voorbeeldgegevens geladen.
Verbeteren met uitlijnen op wegen
De code in deze notebookcel leest onbewerkte GPS-gegevens uit het gegevensbestand in Lakehouse en geeft deze door aan de Azure Maps Snap to Road-API. Als interpolatie is ingeschakeld, voegt de API punten toe tussen GPS-locaties om het routepad langs de weg te voltooien. Het biedt ook kenmerken zoals wegnamen en snelheidslimieten, indien beschikbaar.
Plaats de aanwijzer net onder de cel die is gebruikt om de pakketten in de vorige stap te installeren. Er worden opties weergegeven om code of markdown toe te voegen. Selecteer Code om een andere codecel toe te voegen aan uw notitieblok.
Zodra de nieuwe cel is gemaakt, voegt u de volgende code toe. Zorg ervoor dat u uw abonnementssleutel toevoegt.
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.')
Voer de code uit door de uitvoeringspijl te selecteren.
Bestand maken met verbeterde gegevens
De volgende code gebruikt de uitvoer die is gemaakt in de vorige codecel en maakt een nieuw CSV-bestand in het lakehouse met de naam SnapRoadResponses.csv. Dit nieuwe gegevensbestand bevat bijgewerkte GPS-coördinaten die zijn afgestemd op de juiste weg, het bevat ook straatnamen en snelheidslimieten indien beschikbaar. SnapRoadResponses.csv worden geïmporteerd in een eventhouse en gebruikt om later in deze zelfstudie een kaartvisual te maken.
Plaats de aanwijzer net onder de cel die is gebruikt om uitlijnen op wegen in de vorige stap te verbeteren. Er worden opties weergegeven om code of markdown toe te voegen. Selecteer Code om een andere codecel toe te voegen aan uw notitieblok.
Zodra de nieuwe cel is gemaakt, voegt u de volgende code toe.
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)
Voer de code uit door de uitvoeringspijl te selecteren. Dit bespaart SnapRoadResponses.csv met bijgewerkte GPS-coördinaten naar het lakehouse.
Aanbeveling
Als het nieuwe bestand niet wordt weergegeven nadat u de notebookcode hebt uitgevoerd, moet u mogelijk uw browser vernieuwen.
Bestandspad kopiëren
Het ABFS-pad naar SnapRoadResponses.csv is verderop in deze zelfstudie vereist wanneer u het eventhouse maakt. Als u het ABFS-pad naar dit bestand wilt ophalen, selecteert u het beletselteken (...) naast het bestand en selecteert u vervolgens in het pop-upmenu ABFS-pad kopiëren. Sla deze op voor later nadat u het hebt gekopieerd.
Eventhouse maken en een koppeling maken naar gegevens in Lakehouse
Maak een eventhouse om de telemetriegegevens voor uw vloot te beheren of assets te verplaatsen. Er wordt automatisch een KQL-database gemaakt. In deze zelfstudie importeert u de vastgepakte gegevens uit het lake house in de KQL-database. Voor realtime analyses voegt u streaminggegevens toe. Zodra de gegevens zijn geüpload, kunt u een query uitvoeren op uw gegevens met behulp van Kusto-querytaal in een KQL-queryset.
Ga naar mijn werkruimte en selecteer Nieuw item.
Wanneer het scherm Nieuw item wordt weergegeven, schuift u omlaag en selecteert u Eventhouse.
Voer in het scherm New Eventhouse een naam in voor uw nieuwe eventhouse, zoals SnapToRoadDemo.
Koppel vervolgens het lakehouse dat u eerder hebt gemaakt aan uw nieuwe eventhouse.
Selecteer het beletselteken naast uw nieuwe eventhouse en haal vervolgens gegevens > op OneLake uit het pop-upmenu.
Selecteer Nieuwe tabel, noem deze GPSData en selecteer vervolgens Volgende.
Voer het ABFS-pad in naar het Lakehouse-gegevensbestand (SnapRoadResponses.csv) in het OneLake-bestand dat u eerder hebt opgeslagen en selecteer vervolgens het plusteken (+) om het toe te voegen aan de lijst.
Selecteer Volgende.
Nadat u de gegevens in het scherm Gegevens controleren hebt gecontroleerd, selecteert u Voltooien.
Selecteer Sluiten om de pagina Samenvatting te sluiten.
Het eventhouse moet nu worden gemaakt en de GPS-gegevens bevatten.
Realtime dashboard maken
Er kan een realtime dashboard worden gemaakt om verbinding te maken met uw gegevensset in het eventhouse. De invoer in deze zelfstudie is statische gegevens, geen realtime stream, maar de tegels in het dashboard, zoals Azure Maps Visual, kunnen worden gebruikt voor visuele weergave en analyse.
Gegevensbron toevoegen
Ga naar mijn werkruimte en selecteer Nieuw item.
Wanneer het scherm Nieuw item wordt weergegeven, zoekt of schuift u omlaag en selecteert u realtimedashboard.
Voer in het scherm Nieuw realtime dashboard de naam SnapToRoadDashboard in en selecteer Vervolgens Maken.
Selecteer nieuwe gegevensbron in het scherm Realtime dashboard.
Selecteer de knop Toevoegen en selecteer vervolgens OneLake-gegevenshub.
Selecteer uw gegevensbron en vervolgens Verbinding maken.
Voer een weergavenaam in en selecteer Vervolgens Toevoegen.
Sluit het deelvenster Gegevensbronnen .
Nu u de gegevensbron voor uw realtime dashboard hebt toegevoegd, kunt u een query en kaartvisual toevoegen.
Query- en kaartvisual toevoegen
Selecteer Tegel toevoegen.
Voer
GPSData
de query in en selecteer Uitvoeren. Nadat u hebt gecontroleerd of de query werkt, selecteert u Visual toevoegen.Selecteer In het deelvenster Visuele opmaak de optie Kaart in de vervolgkeuzelijst Visual-type .
Stel vervolgens uw waarden in de sectie Gegevens in:
Gegevensinstelling waarde Definiëren op locatie Breedtegraad en lengtegraad Breedtegraadkolom breedtegraad (reëel) Kolom Lengtegraad lengtegraad (reëel) Werk de kaart kaart met kaartgegevens bij door een waarde te selecteren in de vervolgkeuzelijst Labelkolom . Selecteer SpeedLimitInKilometersPerHour.
Wijzigingen toepassen selecteren
De kaartvisual wordt weergegeven. U kunt elk punt op de kaart selecteren om de coördinaten en snelheidslimiet in kilometers per uur voor die locatie op te halen.
Volgende stappen
Voor meer informatie over Microsoft Fabric-notebooks:
In deze zelfstudie hebt u een dashboard gemaakt voor analyse van route na rit. Voor een stapsgewijze handleiding voor het bouwen van realtime dashboards in Microsoft Fabric: