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
- Wprowadzenie do usługi Azure Stream Analytics
- Get started using Azure Stream Analytics (Rozpoczynanie pracy z usługą Azure Stream Analytics)
- Scale Azure Stream Analytics jobs (Skalowanie zadań usługi Azure Stream Analytics)
- Azure Stream Analytics Query Language Reference (Dokumentacja dotycząca języka zapytań usługi Azure Stream Analytics)
- Azure Stream Analytics Management REST API Reference (Dokumentacja interfejsu API REST zarządzania usługą Azure Stream Analytics)