Wprowadzenie do funkcji geoprzestrzennych usługi Stream Analytics

Funkcje geoprzestrzenne w usłudze Azure Stream Analytics umożliwiają analizowanie danych geoprzestrzennych w czasie rzeczywistym. Za pomocą zaledwie kilku wierszy kodu można utworzyć rozwiązanie klasy produkcyjnej dla złożonych scenariuszy. Te funkcje obsługują wszystkie typy WKT i GeoJSON Point, Polygon i LineString.

Przykłady scenariuszy, które mogą korzystać z funkcji geoprzestrzennych, to:

  • Udostępnianie jazdy
  • Zarządzanie flotą
  • Śledzenie zasobów
  • Ogrodzenia geograficzne
  • Śledzenie telefonu między witrynami komórkowymi

Język zapytań usługi Stream Analytics ma siedem wbudowanych funkcji geoprzestrzennych: CreateLineString, CreatePoint, CreatePolygon, ST_DISTANCE, ST_OVERLAPS, ST_INTERSECTS i ST_WITHIN.

CreateLineString

Funkcja CreateLineString akceptuje punkty i zwraca ciąg LineString geoJSON, który można wykreślić jako linię na mapie. Aby utworzyć element LineString, musisz mieć co najmniej dwa punkty. Punkty LineString będą połączone w kolejności.

Poniższe zapytanie używa CreateLineString metody do utworzenia elementu LineString przy użyciu trzech punktów. Pierwszy punkt jest tworzony na podstawie danych wejściowych przesyłania strumieniowego, podczas gdy pozostałe dwa są tworzone ręcznie.

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

Przykład danych wejściowych

latitude Długość geograficzna
3.0 -10.2
-87.33 20.2321

Przykład danych wyjściowych

{"type" : "LineString", "współrzędne" : [ [-10.2, 3.0], [10.0, 10.0], [10.5, 10.5] ]}

{"type" : "LineString", "współrzędne": [ [20.2321, -87.33], [10.0, 10.0], [10.5, 10.5] ]}

Aby dowiedzieć się więcej, odwiedź dokumentację CreateLineString .

CreatePoint

Funkcja CreatePoint akceptuje szerokość geograficzną i długość geograficzną i zwraca punkt GeoJSON, który można wykreślić na mapie. Szerokość geograficzna i długość geograficzna muszą być zmiennoprzecinkowym typem danych.

Poniższe przykładowe zapytanie używa CreatePoint metody do utworzenia punktu przy użyciu szerokości geograficznych i długości geograficznych z danych wejściowych przesyłania strumieniowego.

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

Przykład danych wejściowych

latitude Długość geograficzna
3.0 -10.2
-87.33 20.2321

Przykład danych wyjściowych

{"type" : "Point", "współrzędne" : [-10.2, 3.0]}

{"type" : "Point", "współrzędne" : [20.2321, -87.33]}

Aby dowiedzieć się więcej, odwiedź dokumentację programu CreatePoint .

CreatePolygon

Funkcja CreatePolygon akceptuje punkty i zwraca rekord wielokątny GeoJSON. Kolejność punktów musi być zgodna z orientacją pierścienia po prawej stronie lub zgodnie z ruchem wskazówek zegara. Wyobraź sobie, że chodzenie od jednego punktu do drugiego w kolejności, w której zostały zadeklarowane. Środek wielokąta będzie po lewej stronie przez cały czas.

Poniższe przykładowe zapytanie używa CreatePolygon do utworzenia wielokąta z trzech punktów. Pierwsze dwa punkty są tworzone ręcznie, a ostatni punkt jest tworzony na podstawie danych wejściowych.

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

Przykład danych wejściowych

latitude Długość geograficzna
3.0 -10.2
-87.33 20.2321

Przykład danych wyjściowych

{"type" : "Polygon", "współrzędne" : [[ [-10.2, 3.0], [10.0, 10.0], [10.5, 10.5], [-10.2, 3.0] ]]}

{"type" : "Polygon", "współrzędne" : [[ [20.2321, -87.33], [10.0, 10.0], [10.5, 10.5], [20.2321, -87.33] ]]}

Aby dowiedzieć się więcej, odwiedź dokumentację CreatePolygon .

ST_DISTANCE

Funkcja ST_DISTANCE zwraca odległość między dwiema geometriami w metrach.

Poniższe zapytanie używa ST_DISTANCE metody do wygenerowania zdarzenia, gdy stacja benzynowa jest mniejsza niż 10 km od samochodu.

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

Aby dowiedzieć się więcej, odwiedź dokumentację ST_DISTANCE .

ST_OVERLAPS

Funkcja ST_OVERLAPS porównuje dwie geometrie. Jeśli geometrie nakładają się na siebie, funkcja zwraca wartość 1. Funkcja zwraca wartość 0, jeśli geometrie nie nakładają się na siebie.

Poniższe zapytanie używa ST_OVERLAPS metody do generowania zdarzenia, gdy budynek znajduje się w możliwej strefie powodziowej.

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

Poniższe przykładowe zapytanie generuje zdarzenie, gdy burza zmierza w kierunku samochodu.

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

Aby dowiedzieć się więcej, odwiedź dokumentację ST_OVERLAPS .

ST_INTERSECTS

Funkcja ST_INTERSECTS porównuje dwie geometrie. Jeśli geometrie przecinają się, funkcja zwraca wartość 1. Funkcja zwraca wartość 0, jeśli geometrie nie przecinają się nawzajem.

Poniższe przykładowe zapytanie używa ST_INTERSECTS do określenia, czy utorowana droga przecina drogę brudną.

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

Przykład danych wejściowych

datacenterArea stormArea
{"type":"LineString", "współrzędne": [ [-10.0, 0.0], [0.0, 0.0], [10.0, 0.0] ]} {"type":"LineString", "współrzędne": [ [0.0, 10.0], [0.0, 0.0], [0.0, -10.0] ]}
{"type":"LineString", "współrzędne": [ [-10.0, 0.0], [0.0, 0.0], [10.0, 0.0] ]} {"type":"LineString", "współrzędne": [ [-10.0, 10.0], [0.0, 10.0], [10.0, 10.0] ]}

Przykład danych wyjściowych

1

0

Aby dowiedzieć się więcej, odwiedź dokumentację ST_INTERSECTS .

ST_WITHIN

Funkcja ST_WITHIN określa, czy geometria znajduje się w innej geometrii. Jeśli pierwszy jest zawarty w ostatnim, funkcja zwróci wartość 1. Funkcja zwróci wartość 0, jeśli pierwsza geometria nie znajduje się w ciągu ostatniego.

Poniższe przykładowe zapytanie używa ST_WITHIN do określenia, czy punkt docelowy dostawy znajduje się w danym wielokącie magazynu.

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

Przykład danych wejściowych

deliveryDestination Magazynu
{"type":"Point", "współrzędne": [76.6, 10.1]} {"type":"Polygon", "współrzędne": [ [0.0, 0.0], [10.0, 0.0], [10.0, 10.0], [0.0, 10.0], [0.0, 0.0] ]}
{"type":"Point", "współrzędne": [15.0, 15.0]} {"type":"Polygon", "współrzędne": [ [10.0, 10.0], [20.0, 10.0], [20.0, 20.0], [10.0, 20.0], [10.0, 10.0] ]}

Przykład danych wyjściowych

0

1

Aby dowiedzieć się więcej, zapoznaj się z dokumentacją ST_WITHIN .

Następne kroki