Compartir a través de


Tutorial: Análisis de los datos de viaje mediante Acoplar a carretera en el cuaderno de Microsoft Fabric

Ajustar a carretera es un servicio de Azure Maps que procesa un conjunto de puntos GPS recopilados a lo largo de una ruta y los ajusta a las carreteras más probables que viajó el vehículo. Esta característica es útil para determinar la ruta exacta seguida de un vehículo, incluso cuando los datos GPS recopilados están apagados ligeramente.

En este tutorial se explica cómo usar la API de Azure Maps Ajustar a carretera con Microsoft Fabric para analizar los datos GPS de los recursos móviles, incluso cuando los datos son inexactos o incompletos debido a la pérdida de señal. Le guía a través de la realización de llamadas a la API de Azure Maps Ajustar a carretera desde un cuaderno de Microsoft Fabric para ajustar los puntos GPS a la carretera más cercana, rellenar los puntos que faltan mediante puntos de datos interpolados y mejorarlos con atributos adicionales, como nombres de carretera y límites de velocidad.

En este tutorial, aprenderá lo siguiente:

Requisitos previos

Nota:

Para más información sobre la autenticación en Azure Maps, consulte Administración de la autenticación en Azure Maps.

Creación de un cuaderno y una instancia de almacén de lago de datos de Microsoft Fabric

Siga estos pasos para crear un cuaderno de Microsoft Fabric:

  1. Vaya a la Mi área de trabajo y seleccione Nuevo elemento.

    Captura de pantalla de la página Mi área de trabajo en Microsoft Fabric con el botón nuevo elemento resaltado.

  2. Cuando aparezca la pantalla Nuevo elemento, desplácese hacia abajo y seleccione Cuaderno.

    Captura de pantalla que muestra la opción cuaderno en la pantalla de nuevo elemento de Microsoft Fabric.

  3. En la pantalla del cuaderno Explorador, seleccione la flecha Almacenes de lago de datos>.

    Captura de pantalla que muestra la flecha seleccionar almacén de lago de datos.

  4. Selecciona el botón Agregar.

    Captura de pantalla que muestra el botón Agregar almacén de lago de datos.

  5. En el cuadro de diálogo Agregar almacén de lago de datos, seleccione Nuevo almacén de lago de datos después el botón Agregar.

  6. En el cuadro de diálogo Nuevo almacén de lago de datos, introduzca un nombre «Azure_Maps_Data» y seleccione el botón Crear.

Adición de un archivo de datos al almacén de lago de datos

Ajustar a carretera toma datos de punto GPS (lat, lon) y devuelve una lista de objetos que forman una ruta acoplada a las carreteras en un mapa. Se puede agregar un archivo de datos que contenga los datos GPS necesarios como un archivo al almacén de lago de datos y al que hace referencia el código de Python en el cuaderno.

Descargar archivo de datos

Descargue los datos de ejemplo (mockData_20240919.csv) de GitHub al dispositivo de almacenamiento local para cargarlos en el almacén de lago de datos en la sección siguiente. Este archivo contiene una matriz de coordenadas GPS que el servicio Ajustar a carretera modifica según sea necesario para asegurarse de que cada coordenada apunta a una carretera válida.

  1. Abra el archivo mockData_20240919.csv en GitHub.

  2. Seleccione el botón Descargar archivo sin procesar en la esquina superior derecha de la pantalla y guardar el archivo localmente.

    Captura de pantalla que muestra cómo descargar el archivo de datos denominado mockData_20240919.csv desde el repositorio de GitHub.

Carga del archivo de datos en el almacén de lago de datos

En los pasos siguientes se explica cómo agregar un origen de datos al almacén de lago de datos.

  1. En la carpeta Archivos del almacén de lago de datos, seleccione Subir > Cargar archivos.

    Captura de pantalla que muestra la opción de menú cargar archivos.

  2. Abra el cuadro de diálogo abrir archivo seleccionando el icono carpeta. Seleccione el archivo mockData_20240919.csv que descargó en la sección anterior después el botón Abrir. Una vez que se cierre el cuadro de diálogo abrir archivo y el nombre de archivo correcto aparezca en el control Cargar archivos, seleccione el botón Cargar para cargar el archivo en el almacén de lago de datos.

    Captura de pantalla que muestra el panel cargar archivos.

Agregar el código al cuaderno

Debe agregar y ejecutar cuatro celdas de código en el cuaderno para realizar el escenario de Ajustar a carreteras. Las secciones siguientes le guiarán a través de esto.

Instalar paquetes

Primero debe cargar los paquetes necesarios:

!pip install geopandas
!pip install geojson

Escriba las instrucciones de instalación de PIP en la primera celda del cuaderno y, a continuación, ejecute las instrucciones seleccionando la flecha de ejecución.

Captura de pantalla que muestra el código de instalación de paquetes en una celda del cuaderno.

Cargar datos

A continuación, cargue los datos de ejemplo que cargados anteriormente en el almacén de lago de datos.

  1. Mantenga el puntero justo debajo de la celda usada para instalar los paquetes. Las opciones aparecen para agregar código o markdown. Seleccione código para agregar otra celda de código al cuaderno.

    Captura de pantalla que muestra el vínculo Agregar código en el cuaderno.

  2. Una vez creada la nueva celda, agregue el código siguiente.

    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()
    
  3. Ejecute el código seleccionando la flecha de ejecución. Esto carga los datos de ejemplo.

Mejora con Ajustar a carretera

El código de esta celda del cuaderno lee los datos GPS sin procesar del archivo de datos del almacén de lago de datos y los pasa a la API Ajustar a carretera de Azure Maps. Con la interpolación habilitada, la API agrega puntos entre ubicaciones GPS para completar la ruta a lo largo de la carretera. También proporciona atributos como nombres de carretera y límites de velocidad cuando están disponibles.

  1. Mantenga el puntero justo debajo de la celda usada para instalar los paquetes en el paso anterior. Las opciones aparecen para agregar código o markdown. Seleccione código para agregar otra celda de código al cuaderno.

  2. Una vez creada la nueva celda, agregue el código siguiente. Asegúrese de agregar la clave de suscripción.

    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.')
    
  3. Ejecute el código seleccionando la flecha de ejecución.

Creación de un archivo con datos mejorados

El código siguiente toma la salida creada en la celda de código anterior y crea un nuevo archivo CSV en el almacén de lago de datos denominado SnapRoadResponses.csv. Este nuevo archivo de datos contiene coordenadas GPS actualizadas que se alinean con la carretera adecuada, también incluye nombres de calle y límites de velocidad cuando están disponibles. SnapRoadResponses.csv se importará en un centro de eventos y se usará para crear un objeto visual de mapa más adelante en este tutorial.

  1. Mantenga el puntero justo debajo de la celda usada para Mejorar con Ajustar a carretera en el paso anterior. Las opciones aparecen para agregar código o markdown. Seleccione código para agregar otra celda de código al cuaderno.

  2. Una vez creada la nueva celda, agregue el código siguiente.

    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)
    
  3. Ejecute el código seleccionando la flecha de ejecución. Esto guarda SnapRoadResponses.csv con coordenadas GPS actualizadas en el almacén de lago de datos.

Sugerencia

Si el nuevo archivo no aparece después de ejecutar el código del cuaderno, es posible que tenga que actualizar el explorador.

Copiar ruta del archivo

La ruta de acceso ABFS a SnapRoadResponses.csv es necesaria más adelante en este tutorial al crear el centro de eventos. Para obtener la ruta de acceso de ABFS a este archivo, seleccione el botón de puntos suspensivos (...) situado junto al archivo y, a continuación, en el menú emergente, seleccione Copiar ruta de acceso ABFS. Una vez copiado, guárdelo para más adelante.

Captura de pantalla que muestra cómo copiar una ruta de acceso de ABFS al archivo de datos almacenado en el almacén de lago de datos.

Cree un centro de eventos para administrar los datos de telemetría de su flota o mover recursos. Una base de datos KQL se crea automáticamente de forma predeterminada. En este tutorial, importará los datos acoplados del almacén de lago de datos en la base de datos KQL. Para el análisis en tiempo real, agregue datos de streaming. Una vez cargados los datos, puede consultar los datos mediante el lenguaje de consulta Kusto en un conjunto de consultas KQL.

  1. Vaya a la Mi área de trabajo y seleccione Nuevo elemento.

  2. Cuando aparezca la pantalla Nuevo elemento, desplácese hacia abajo y seleccione Eventhouse.

  3. En la pantalla Nuevo Eventhouse, escriba un nombre para el nuevo centro de eventos, como SnapToRoadDemo.

    A continuación, vincule la instancia del almacén de lago de datos que creó anteriormente a su nuevo centro de eventos.

  4. Seleccione el botón de puntos suspensivos junto al nuevo centro de eventos y, a continuación, Obtener datos > OneLake en el menú emergente.

    Captura de pantalla que muestra OneLake en el menú emergente.

  5. Seleccione Nueva tabla, nómbrela GPSData y, a continuación, seleccione Siguiente.

    Captura de pantalla que muestra la nueva opción de tabla.

  6. Introduzca la ruta ABFS al archivo de datos del almacén de lago de datos (SnapRoadResponses.csv) en el control Archivo OneLake que guardó anteriormente y, a continuación, seleccione el signo más (+) para agregarlo a la lista.

    Captura de pantalla que muestra cómo escribir un nombre de archivo de OneLake con el botón siguiente resaltado.

  7. Seleccione Siguiente.

  8. Después de comprobar los datos en la pantalla de Inspeccionar los datos, seleccione Finalizar.

    Captura de pantalla que muestra la pantalla inspeccionar los datos.

  9. Seleccione Cerrar para cerrar la página Resumen.

    Captura de pantalla que muestra la pantalla obtener resumen de datos.

El centro de eventos debe crearse y contener los datos GPS.

Captura de pantalla que muestra el centro de eventos con los datos GPS.

Creación de un panel en tiempo real

Se puede crear un panel en tiempo real para conectarse al conjunto de datos en el centro de eventos. La entrada de este tutorial es datos estáticos, no una secuencia en tiempo real, pero los iconos del panel, como el objeto visual de Azure Maps, se pueden usar para la representación y el análisis visuales.

Agregar origen de datos

  1. Vaya a la Mi área de trabajo y seleccione Nuevo elemento.

  2. Cuando aparezca la pantalla Nuevo elemento, busque o desplácese hacia abajo y seleccione Panel en tiempo real.

  3. En la pantalla Nuevo panel de control en tiempo real, introduzca el nombre SnapToRoadDashboard y seleccione Crear.

  4. En la nueva pantalla Panel en tiempo real, seleccione Nuevo origen de datos.

  5. Seleccione el botón Agregar y, a continuación, seleccione Centro de datos OneLake.

    Una captura de pantalla que muestra la pantalla de agregar origen de datos del Panel en tiempo real.

  6. Seleccione el origen de datos y, después, Conectar.

    Captura de pantalla que muestra el archivo de datos seleccionado con el botón conectar resaltado.

  7. Escriba un Nombre para mostrar y, a continuación, seleccione Agregar.

    Captura de pantalla que muestra la pantalla crear un nuevo origen de datos con el botón agregar resaltado.

  8. Cierre el panel Orígenes de datos.

Ahora que ha agregado el origen de datos para el panel en tiempo real, puede agregar una consulta y un objeto visual de mapa.

Adición de un objeto visual de consulta y asignación

  1. Seleccione Agregar icono.

    Captura de pantalla que muestra el botón Agregar icono resaltado.

  2. Escriba GPSData en la consulta y seleccione Ejecutar. Una vez que haya comprobado que la consulta funciona, seleccione Agregar objeto visual.

    Captura de pantalla que muestra los resultados en la pantalla de ejecución de la consulta.

  3. En el panel Formato visual, seleccione Mapa del desplegable Tipo de objeto visual.

  4. A continuación, establezca los valores en la sección Datos:

    Configuración de datos valor
    Definir por ubicación Latitud y longitud
    Columna de latitud Latitud (número real)
    Columna de longitud Longitud (número real)
  5. Actualice la tarjeta de información del mapa seleccionando un valor del desplegable Columna de etiqueta. Seleccione SpeedLimitInKilometersPerHour.

  6. Seleccione Aplicar cambios.

Aparece el objeto visual de mapa. Puede seleccionar cualquier punto del mapa para obtener las coordenadas y Límite de velocidad en kilómetros por hora de esa ubicación.

Captura de pantalla que muestra el objeto visual de mapa completado con una tarjeta de información que muestra el límite de velocidad en kilómetros por hora.

Pasos siguientes

Para más información sobre los cuadernos de Microsoft Fabric:

En este tutorial se creó un panel para el análisis de rutas posteriores al viaje. Para obtener una guía paso a paso para crear paneles en tiempo real en Microsoft Fabric: