Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Snap to road to usługa Azure Maps, która przetwarza zestaw punktów GPS zebranych wzdłuż trasy i przyciąga je do najbardziej prawdopodobnych dróg, które podróżował pojazd. Ta funkcja jest przydatna w określaniu dokładnej ścieżki, po której następuje pojazd, nawet jeśli zebrane dane GPS są nieznacznie wyłączone.
W tym samouczku wyjaśniono, jak używać interfejsu API przyciągania usługi Azure Maps do dróg w usłudze Microsoft Fabric do analizowania danych GPS z przenoszenia zasobów, nawet jeśli dane są niedokładne lub niekompletne z powodu utraty sygnału. Przeprowadzi Cię przez wykonywanie wywołań do interfejsu API przyciągania usługi Azure Maps do dróg z notesu usługi Microsoft Fabric w celu przyciągania punktów GPS do najbliższej drogi, wypełniania brakujących punktów danych przy użyciu punktów danych interpolowanych i ulepszania ich dodatkowymi atrybutami, takimi jak nazwy dróg i ograniczenia prędkości.
Ten samouczek obejmuje następujące kroki:
- Utwórz usługę Microsoft Fabric Lakehouse i zaimportuj do niej nieprzetworzone dane GPS z vechicle.
- Utwórz notes usługi Microsoft Fabric, który pobiera nieprzetworzone dane GPS i zwraca żądane informacje o współrzędnych przy użyciu interfejsu API przyciągania usługi Azure Maps do dróg.
- Utwórz bazę danych eventhouse i KQL i zaimportuj do niej przycięte dane GPS.
- Utwórz pulpit nawigacyjny w czasie rzeczywistym przy użyciu przyciągniętych danych GPS w bazie danych Kusto.
- Wykonywanie zapytań dotyczących danych KQL i wyświetlanie przyciągniętych danych GPS w wizualizacji mapy.
Wymagania wstępne
- Konto usługi Azure Maps
- Klucz subskrypcji
- Konto usługi Microsoft Fabric
- Podstawowa wiedza na temat usługi Microsoft Fabric.
Uwaga
Aby uzyskać więcej informacji na temat uwierzytelniania w usłudze Azure Maps, zobacz Zarządzanie uwierzytelnianiem w usłudze Azure Maps.
Tworzenie notesu usługi Microsoft Fabric i usługi Lakehouse
Wykonaj następujące kroki, aby utworzyć notes usługi Microsoft Fabric:
Przejdź do obszaru Mój obszar roboczy i wybierz pozycję Nowy element.
Po wyświetleniu ekranu Nowy element przewiń w dół i wybierz pozycję Notes.
Na ekranie Eksploratora notesów wybierz .
Kliknij przycisk Dodaj.
W oknie dialogowym Dodawanie usługi Lakehouse wybierz pozycję New Lakehouse, a następnie przycisk Dodaj.
W oknie dialogowym New lakehouse wprowadź nazwę "Azure_Maps_Data", a następnie wybierz przycisk Utwórz.
Dodawanie pliku danych do lakehouse
Przyciąganie do dróg pobiera dane punktów GPS (lat, lon) i zwraca listę obiektów, które tworzą trasę przyciąganą do dróg na mapie. Plik danych zawierający wymagane dane GPS można dodać jako plik do lakehouse i przywoływany przez kod języka Python w notesie.
Pobieranie pliku danych
Pobierz przykładowe dane (mockData_20240919.csv) z usługi GitHub do lokalnego urządzenia magazynu, aby przekazać je do usługi Lakehouse w następnej sekcji. Ten plik zawiera tablicę współrzędnych GPS, które usługa Snap to Roads modyfikuje zgodnie z potrzebami, aby zapewnić, że każda współrzędna wskazuje prawidłową drogę.
Otwórz plik mockData_20240919.csv w usłudze GitHub.
Wybierz przycisk Pobierz nieprzetworzonego pliku w prawym górnym rogu ekranu i zapisz plik lokalnie.
Przekazywanie pliku danych do usługi Lakehouse
W poniższych krokach wyjaśniono, jak dodać źródło danych do usługi Lakehouse.
W folderze Files in lakehouse wybierz pozycję Przekaż > pliki.
Wyświetl okno dialogowe otwierania pliku, wybierając ikonę folderu . Wybierz plik mockData_20240919.csv pobrany w poprzedniej sekcji , a następnie przycisk Otwórz . Po zamknięciu okna dialogowego otwierania pliku i wyświetleniu poprawnej nazwy pliku w kontrolce Przekazywanie plików wybierz przycisk Przekaż , aby przekazać plik do usługi Lakehouse.
Dodawanie kodu do notesu
Aby wykonać scenariusz Przyciąganie do dróg, musisz dodać i wykonać cztery komórki kodu w notesie. W poniższych sekcjach opisano to.
Instalowanie pakietów
Najpierw należy załadować wymagane pakiety:
!pip install geopandas
!pip install geojson
Wprowadź instrukcje install w pierwszej komórce notesu, a następnie wykonaj instrukcje, wybierając strzałkę uruchamiania.
Ładowanie danych
Następnie załaduj przykładowe dane, które zostały wcześniej przekazane do usługi Lakehouse.
Umieść wskaźnik tuż pod komórką użytą do zainstalowania pakietów. Opcje są wyświetlane w celu dodania kodu lub znacznika markdown. Wybierz pozycję Kod , aby dodać kolejną komórkę kodu do notesu.
Po utworzeniu nowej komórki dodaj następujący kod.
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()Wykonaj kod, wybierając strzałkę przebiegu. Spowoduje to załadowanie przykładowych danych.
Ulepszanie za pomocą przyciągania do dróg
Kod w tej komórce notesu odczytuje nieprzetworzone dane GPS z pliku danych w lakehouse i przekazuje je do interfejsu API road przystawki usługi Azure Maps. Po włączeniu interpolacji interfejs API dodaje punkty między lokalizacjami GPS, aby ukończyć ścieżkę trasy wzdłuż drogi. Udostępnia również atrybuty, takie jak nazwy dróg i limity prędkości, gdy są dostępne.
Umieść wskaźnik tuż pod komórką użytą do zainstalowania pakietów w poprzednim kroku. Opcje są wyświetlane w celu dodania kodu lub znacznika markdown. Wybierz pozycję Kod , aby dodać kolejną komórkę kodu do notesu.
Po utworzeniu nowej komórki dodaj następujący kod. Upewnij się, że dodano klucz subskrypcji.
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.')Wykonaj kod, wybierając strzałkę przebiegu.
Tworzenie pliku z rozszerzonymi danymi
Poniższy kod pobiera dane wyjściowe utworzone w poprzedniej komórce kodu i tworzy nowy plik CSV w usłudze Lakehouse o nazwie SnapRoadResponses.csv. Ten nowy plik danych zawiera zaktualizowane współrzędne GPS, które są dopasowane do odpowiedniej drogi, zawiera również nazwy ulic i ograniczenia prędkości, gdy są dostępne. SnapRoadResponses.csv zostaną zaimportowane do magazynu zdarzeń i użyte do utworzenia wizualizacji mapy w dalszej części tego samouczka.
Umieść wskaźnik tuż pod komórką użytą do ulepszenia za pomocą przyciągania do dróg w poprzednim kroku. Opcje są wyświetlane w celu dodania kodu lub znacznika markdown. Wybierz pozycję Kod , aby dodać kolejną komórkę kodu do notesu.
Po utworzeniu nowej komórki dodaj następujący kod.
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)Wykonaj kod, wybierając strzałkę przebiegu. Pozwala to zaoszczędzić SnapRoadResponses.csv z zaktualizowanymi współrzędnymi GPS do jeziora.
Napiwek
Jeśli nowy plik nie zostanie wyświetlony po uruchomieniu kodu notesu, może być konieczne odświeżenie przeglądarki.
Kopiowanie ścieżki pliku
Ścieżka ABFS do SnapRoadResponses.csv jest wymagana w dalszej części tego samouczka podczas tworzenia magazynu zdarzeń. Aby uzyskać ścieżkę ABFS do tego pliku, wybierz wielokropek (...) obok pliku, a następnie z menu podręcznego wybierz pozycję Kopiuj ścieżkę ABFS. Po skopiowaniu zapisz go później.
Tworzenie magazynu zdarzeń i łączenie z danymi w usłudze Lakehouse
Utwórz magazyn zdarzeń, aby zarządzać danymi telemetrii dla floty lub przenoszeniem zasobów. Baza danych KQL jest tworzona automatycznie. W tym samouczku zaimportujesz przyciągane dane z magazynu lake house do bazy danych KQL. W przypadku analizy w czasie rzeczywistym dodaj dane przesyłane strumieniowo. Po przekazaniu danych można wykonywać zapytania dotyczące danych przy użyciu język zapytań Kusto w zestawie zapytań KQL.
Przejdź do obszaru Mój obszar roboczy i wybierz pozycję Nowy element.
Po wyświetleniu ekranu Nowy element przewiń w dół i wybierz pozycję Eventhouse.
Na ekranie Nowy magazyn zdarzeń wprowadź nazwę nowego magazynu zdarzeń , na przykład SnapToRoadDemo.
Następnie połącz utworzoną wcześniej usługę Lakehouse z nowym magazynem zdarzeń.
Wybierz wielokropek obok nowego magazynu zdarzeń, a następnie pozycję Pobierz dane > OneLake z menu podręcznego.
Wybierz pozycję Nowa tabela, nadaj jej nazwę GPSData , a następnie wybierz pozycję Dalej.
Wprowadź ścieżkę ABFS do pliku danych usługi Lakehouse (SnapRoadResponses.csv) w zapisanej wcześniej kontrolce pliku OneLake, a następnie wybierz znak plus (+), aby dodać go do listy.
Wybierz Dalej.
Po zweryfikowaniu danych na ekranie Inspekcja danych wybierz pozycję Zakończ.
Wybierz pozycję Zamknij , aby zamknąć stronę Podsumowanie .
Magazyn zdarzeń powinien zostać utworzony i zawierać dane GPS.
Tworzenie pulpitu nawigacyjnego w czasie rzeczywistym
Pulpit nawigacyjny w czasie rzeczywistym można utworzyć w celu nawiązania połączenia z zestawem danych w centrum zdarzeń. Dane wejściowe w tym samouczku to dane statyczne, a nie strumień w czasie rzeczywistym, ale kafelki na pulpicie nawigacyjnym, takie jak wizualizacja usługi Azure Maps, mogą służyć do wizualnej reprezentacji i analizy.
Dodaj źródło danych
Przejdź do obszaru Mój obszar roboczy i wybierz pozycję Nowy element.
Gdy pojawi się ekran Nowy element, wyszukaj lub przewiń w dół i wybierz pozycję Pulpit nawigacyjny w czasie rzeczywistym.
Na ekranie Nowy pulpit nawigacyjny w czasie rzeczywistym wprowadź nazwę SnapToRoadDashboard, a następnie wybierz pozycję Utwórz.
Na nowym ekranie Pulpit nawigacyjny w czasie rzeczywistym wybierz pozycję Nowe źródło danych.
Wybierz przycisk Dodaj, a następnie wybierz pozycję OneLake Data Hub.
Wybierz źródło danych, a następnie pozycję Połącz.
Wprowadź nazwę wyświetlaną, a następnie wybierz pozycję Dodaj.
Zamknij panel Źródła danych.
Po dodaniu źródła danych dla pulpitu nawigacyjnego w czasie rzeczywistym możesz dodać wizualizację zapytania i mapy.
Dodawanie wizualizacji zapytania i mapy
Wybierz pozycję Dodaj kafelek.
Wprowadź
GPSDataw zapytaniu, a następnie wybierz pozycję Uruchom. Po sprawdzeniu, czy zapytanie działa, wybierz pozycję Dodaj wizualizację.Na panelu Formatowanie wizualizacji wybierz pozycję Mapa z listy rozwijanej Typ wizualizacji.
Następnie ustaw wartości w sekcji Dane :
Ustawienie danych wartość Definiowanie według lokalizacji Długość i szerokość geograficzna Kolumna szerokości geograficznej szerokość geograficzna (rzeczywista) Kolumna długości geograficznej długość geograficzna (rzeczywista) Zaktualizuj kartę informacji o mapie, wybierając wartość z listy rozwijanej Etykieta kolumny . Wybierz pozycję SpeedLimitInKilometersPerHour.
Wybierz pozycję Zastosuj zmiany
Wizualizacja mapy jest wyświetlana. Możesz wybrać dowolny punkt na mapie, aby uzyskać współrzędne i limit prędkości w kilometrach na godzinę dla tej lokalizacji.
Następne kroki
Aby dowiedzieć się więcej o notesach usługi Microsoft Fabric:
W tym samouczku utworzono pulpit nawigacyjny do analizy tras po podróży. Aby uzyskać szczegółowy przewodnik po tworzeniu pulpitów nawigacyjnych w czasie rzeczywistym w usłudze Microsoft Fabric: