Compartir vía


Introducción a las funciones geoespaciales de Stream Analytics

Las funciones geoespaciales de Azure Stream Analytics permiten el análisis en tiempo real en datos geoespaciales de streaming. Con solo unas pocas líneas de código, puede desarrollar una solución de grado de producción para escenarios complejos. Estas funciones admiten todos los tipos WKT y GeoJSON Point, Polygon y LineString.

Entre los ejemplos de escenarios que pueden beneficiarse de las funciones geoespaciales se incluyen:

  • Servicio de transporte compartido
  • Administración de flotas
  • Seguimiento de recursos
  • Barrera geográfica
  • Seguimiento de teléfonos a través de sitios celulares

El lenguaje de consulta de Stream Analytics tiene siete funciones geoespaciales integradas: CreateLineString, CreatePoint, CreatePolygon, ST_DISTANCE, ST_OVERLAPS, ST_INTERSECTS y ST_WITHIN.

CreateLineString

La CreateLineString función acepta puntos y devuelve un LineString GeoJSON, que se puede trazar como una línea en un mapa. Debe tener al menos dos puntos para crear una lineString. Los puntos LineString se conectarán en orden.

La consulta siguiente usa CreateLineString para crear una lineString mediante tres puntos. El primer punto se crea a partir de datos de entrada de streaming, mientras que los otros dos se crean manualmente.

SELECT  
     CreateLineString(CreatePoint(input.latitude, input.longitude), CreatePoint(10.0, 10.0), CreatePoint(10.5, 10.5))  
FROM input  

Ejemplo de entrada

latitud longitude
3.0 -10.2
-87.33 20.2321

Ejemplo de salida

{"type" : "LineString", "coordinates" : [ [-10.2, 3.0], [10.0, 10.0], [10.5, 10.5] ]}

{"type" : "LineString", "coordinates" : [ [20.2321, -87.33], [10.0, 10.0], [10.5, 10.5] ]}

Para más información, visite la referencia createLineString .

CreatePoint

La CreatePoint función acepta una latitud y longitud y devuelve un punto GeoJSON, que se puede trazar en un mapa. Las latitudes y longitudes deben tener un tipo de dato float.

En la consulta de ejemplo siguiente se usa CreatePoint para crear un punto mediante latitudes y longitudes a partir de datos de entrada de streaming.

SELECT  
     CreatePoint(input.latitude, input.longitude)  
FROM input 

Ejemplo de entrada

latitud longitude
3.0 -10.2
-87.33 20.2321

Ejemplo de salida

{"type" : "Point", "coordinates" : [-10.2, 3.0]}

{"type" : "Point", "coordinates" : [20.2321, -87.33]}

Para obtener más información, visite la referencia de CreatePoint .

CreatePolygon

La CreatePolygon función acepta puntos y devuelve un registro de polígono GeoJSON. El orden de los puntos debe seguir la orientación del anillo derecho o en sentido contrario a las agujas del reloj. Imagine caminar de un punto a otro en el orden en que se declararon. El centro del polígono estaría todo el tiempo a su izquierda.

En la consulta de ejemplo siguiente se usa CreatePolygon para crear un polígono a partir de tres puntos. Los dos primeros puntos se crean manualmente y el último punto se crea a partir de los datos de entrada.

SELECT  
     CreatePolygon(CreatePoint(input.latitude, input.longitude), CreatePoint(10.0, 10.0), CreatePoint(10.5, 10.5), CreatePoint(input.latitude, input.longitude))  
FROM input  

Ejemplo de entrada

latitud longitude
3.0 -10.2
-87.33 20.2321

Ejemplo de salida

{"type" : "Polygon", "coordinates" : [[ [-10.2, 3.0], [10.0, 10.0], [10.5, 10.5], [-10.2, 3.0] ]]}

{"type" : "Polygon", "coordinates" : [[ [20.2321, -87.33], [10.0, 10.0], [10.5, 10.5], [20.2321, -87.33] ]]}

Para más información, visite la referencia de CreatePolygon .

ST_DISTANCE

La ST_DISTANCE función devuelve la distancia entre dos geometrías en metros.

La consulta siguiente utiliza ST_DISTANCE para generar un evento cuando una estación de gas está a menos de 10 km del coche.

SELECT Cars.Location, Station.Location 
FROM Cars c  
JOIN Station s ON ST_DISTANCE(c.Location, s.Location) < 10 * 1000

Para obtener más información, visite la referencia de ST_DISTANCE .

ST_OVERLAPS

La ST_OVERLAPS función compara dos geometrías. Si las geometrías se superponen, la función devuelve 1. La función devuelve 0 si las geometrías no se superponen.

La consulta siguiente usa ST_OVERLAPS para generar un evento cuando un edificio se encuentra dentro de una posible zona de inundación.

SELECT Building.Polygon, Building.Polygon 
FROM Building b 
JOIN Flooding f ON ST_OVERLAPS(b.Polygon, b.Polygon) 

La consulta de ejemplo siguiente genera un evento cuando una tormenta se dirige hacia un automóvil.

SELECT Cars.Location, Storm.Course
FROM Cars c, Storm s
JOIN Storm s ON ST_OVERLAPS(c.Location, s.Course)

Para más información, visite la referencia ST_OVERLAPS.

ST_INTERSECTS

La ST_INTERSECTS función compara dos geometrías. Si las geometrías se intersecan, la función devuelve 1. La función devuelve 0 si las geometrías no se intersecan entre sí.

En la consulta de ejemplo siguiente se usa ST_INTERSECTS para determinar si una carretera asfaltada interseca una carretera de tierra.

SELECT  
     ST_INTERSECTS(input.pavedRoad, input.dirtRoad)  
FROM input  

Ejemplo de entrada

área del centro de datos stormArea
{"type":"LineString", "coordinates": [ [-10.0, 0.0], [0.0, 0.0], [10.0, 0.0] ]} {"type":"LineString", "coordinates": [ [0.0, 10.0], [0.0, 0.0], [0.0, -10.0] ]}
{"type":"LineString", "coordinates": [ [-10.0, 0.0], [0.0, 0.0], [10.0, 0.0] ]} {"type":"LineString", "coordinates": [ [-10.0, 10.0], [0.0, 10.0], [10.0, 10.0] ]}

Ejemplo de salida

1

0

Para obtener más información, visite la guía de referencia ST_INTERSECTS.

ST_WITHIN

La ST_WITHIN función determina si una geometría está dentro de otra geometría. Si la primera está contenida en la última, la función devolverá 1. La función devolverá 0 si la primera geometría no se encuentra dentro de la última.

En la consulta de ejemplo siguiente se usa ST_WITHIN para determinar si el punto de destino de entrega está dentro del polígono de almacenamiento especificado.

SELECT  
     ST_WITHIN(input.deliveryDestination, input.warehouse)  
FROM input 

Ejemplo de entrada

destinoDeLaEntrega warehouse
{"type":"Point", "coordinates": [76.6, 10.1]} {"type":"Polygon", "coordinates": [ [0.0, 0.0], [10.0, 0.0], [10.0, 10.0], [0.0, 10.0], [0.0, 0.0] ]}
{"type":"Point", "coordinates": [15.0, 15.0]} {"type":"Polygon", "coordinates": [ [10.0, 10.0], [20.0, 10.0], [20.0, 20.0], [10.0, 20.0], [10.0, 10.0] ]}

Ejemplo de salida

0

1

Para obtener más información, visite la referencia ST_WITHIN.

Pasos siguientes