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.
Funkcje geoprzestrzenne w Azure Stream Analytics umożliwiają analizę strumieniowych danych geoprzestrzennych w czasie rzeczywistym w scenariuszach takich jak wspólne przejazdy, zarządzanie flotą, śledzenie zasobów, geofencing oraz śledzenie telefonów w obrębie stacji bazowych sieci komórkowej. Dysponując zaledwie kilkoma linijkami kodu zapytań, możesz zbudować rozwiązania wykorzystujące siedem wbudowanych funkcji w Stream Analytics Query Language (CreateLineString, , CreatePolygonCreatePoint, ST_DISTANCE, ST_OVERLAPS, ST_INTERSECTS, i ST_WITHIN), które obsługują wszystkie typy WKT oraz GeoJSON point, polygon, and LineString. Ten artykuł opisuje każdą funkcję i pokazuje przykładowe zapytania, abyś mógł je zastosować do własnych danych streamingowych.
Typy geometrii i kolejność współrzędnych
Funkcje geoprzestrzenne działają z trzema typami geometrii GeoJSON. Punkt to pojedyncza lokalizacja zdefiniowana przez długość i szerokość geograficzną. LineString to uporządkowany zbiór dwóch lub więcej punktów, które tworzą spójną linię, taką jak trasa lub droga. Wielokąt to zamknięty kształt, którego granica wraca do punktu początkowego, taki jak zarys budynku lub geo-ogrodzenie.
Funkcje dzielą się na dwie grupy. Funkcje konstruktora (CreatePoint, CreateLineString, i CreatePolygon) budują geometrie na podstawie wartości współrzędnych w danych zdarzeń. Funkcje relacji (ST_DISTANCE, ST_OVERLAPS, ST_INTERSECTS, i ST_WITHIN) porównują dwie geometrie i opisują, jak się ze sobą odnoszą w przestrzeni.
W formacie GeoJSON współrzędne są zapisywane najpierw jako długość geograficzna, a następnie szerokość geograficzna, więc wprowadzone wartości szerokości i długości geograficznej występują w wynikowej geometrii w odwrotnej kolejności. Zrozumienie tej kolejności, wraz z orientacją pierścienia przeciwnie do ruchu wskazówek zegara, wymaganą przez wielokąty, pomaga przewidzieć wynik działania każdej funkcji.
CreateLineString
CreateLineString jest funkcją konstruktora zwracającą GeoJSON LineString, czyli geometrię reprezentującą spójną serię punktów jako linię na mapie. Akceptuje dwa lub więcej punktów i łączy je w kolejności, w jakiej je wymieniasz, co sprawia, że jest naturalnym sposobem modelowania tras, ścieżek i odcinków dróg na podstawie danych strumieniowych.
Poniższy przykład ilustruje to zachowanie, łącząc trzy punkty w LineString. Pierwszy punkt wynika ze strumieniowania danych wejściowych, a pozostałe dwa definiujesz 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
| szerokość geograficzna | długość geograficzna |
|---|---|
| 3.0 | -10.2 |
| -87.33 | 20.2321 |
Przykład danych wyjściowych
{"type" : "LineString", "coordinates" : [ [-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, zobacz informacje o CreateLineString.
CreatePoint
CreatePoint jest funkcją konstruktora, która zwraca punkt GeoJSON z szerokości geograficznej i długości. Punkt to najbardziej podstawowa geometria i reprezentuje pojedynczą lokalizację na mapie, taką jak aktualna pozycja pojazdu lub zasobu. Wartości szerokości i długości muszą być typem float danych.
Poniższy przykład ilustruje to zachowanie, tworząc punkt na podstawie wartości szerokości i długości geograficznej w przesyłanych danych wejściowych.
SELECT
CreatePoint(input.latitude, input.longitude)
FROM input
Przykład danych wejściowych
| szerokość geograficzna | długość geograficzna |
|---|---|
| 3.0 | -10.2 |
| -87.33 | 20.2321 |
Przykład danych wyjściowych
{"type" : "Punkt", "współrzędne" : [-10.2, 3.0]}
{"type" : "Point", "coordinates" : [20.2321, -87.33]}
Aby dowiedzieć się więcej, zobacz dokumentację referencyjną CreatePoint.
CreatePolygon
CreatePolygon jest funkcją konstruktora, która zwraca wielokąt GeoJSON z zestawu punktów. Wielokąt reprezentuje na mapie zamknięty obszar, taki jak zarys budynku, granica magazynu lub geo-ogrodzenie. Kolejność punktów podąża za prawą orientacją pierścienia, czyli przeciwnie do ruchu wskazówek zegara: jeśli wyobrazisz sobie przejście z jednego punktu do drugiego w kolejności, w jakiej je deklarujesz, środek wielokąta pozostaje cały czas po twojej lewej stronie.
Poniższy przykład ilustruje to zachowanie, tworząc wielokąt z trzech punktów. Pierwsze dwa punkty definiujesz ręcznie, a ostatni punkt pochodzi z 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
| szerokość geograficzna | długość geograficzna |
|---|---|
| 3.0 | -10.2 |
| -87.33 | 20.2321 |
Przykład danych wyjściowych
{"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] ]]}
Aby dowiedzieć się więcej, przejdź do dokumentacji CreatePolygon.
ST_DISTANCE
ST_DISTANCE jest funkcją relacji zwracającą odległość między dwiema geometriami w metrach. Pomaga zrozumieć, jak blisko lub jak daleko znajdują się dwie lokalizacje, co jest przydatne w sytuacjach bliskości, takich jak powiadomienia o pobliskich pojazdach czy obliczenia obszaru obsługiwanego.
Poniższy przykład pokazuje, jak użyć tej funkcji do rozpoznania, kiedy stacja benzynowa znajduje się mniej 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, zobacz dokumentację ST_DISTANCE.
ST_OVERLAPS
ST_OVERLAPS jest funkcją relacji porównującą dwie geometrie i informującą, czy dzielą one wspólny obszar. Zwraca 1, gdy geometrie się nakładają, i 0, gdy się nie pokrywają. Funkcja ta jest przydatna do wykrywania konfliktów przestrzennych, takich jak strefa zagrożenia dotykająca obszaru zainteresowania.
Poniższy przykład pokazuje, jak użyć tej funkcji do identyfikacji, kiedy budynek znajduje się w strefie potencjalnej zalania.
SELECT Building.Polygon, Flooding.Polygon
FROM Building b
JOIN Flooding f ON ST_OVERLAPS(b.Polygon, f.Polygon)
Kolejny przykład również używa ST_OVERLAPS do wykrywania, kiedy burza zmierza w kierunku samochodu.
SELECT Cars.Location, Storm.Course
FROM Cars c
JOIN Storm s ON ST_OVERLAPS(c.Location, s.Course)
Aby dowiedzieć się więcej, zobacz informacje o elemencie ST_OVERLAPS.
ST_INTERSECTS
ST_INTERSECTS jest funkcją relacji porównującą dwie geometrie i informującą, czy się przecinają, czy stykają. Zwraca 1, gdy geometrie się przecinają, i 0, gdy się nie przecinają. Ta funkcja pomaga wykryć, gdzie spotykają się ścieżki lub regiony.
Poniższy przykład pokazuje, jak użyć tej funkcji do określenia, czy droga asfaltowa przecina drogę gruntową.
SELECT
ST_INTERSECTS(input.pavedRoad, input.dirtRoad)
FROM input
Przykład danych wejściowych
| pavedRoad | Droga gruntowa |
|---|---|
| {"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
ST_WITHIN jest funkcją relacji raportującą, czy jedna geometria jest w pełni zawarta w innej. Zwraca 1, gdy pierwsza geometria leży wewnątrz drugiej, i 0, gdy nie, co stanowi podstawę scenariuszy ograniczania, takich jak geo-fencing i kontrole stref dostaw.
Poniższy przykład ilustruje to zachowanie, określając, czy punkt docelowy dostawy znajduje się w obrębie danego wielokąta magazynowego.
SELECT
ST_WITHIN(input.deliveryDestination, input.warehouse)
FROM input
Przykład danych wejściowych
| miejsce dostawy | warehouse |
|---|---|
| {"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, odwiedź referencję ST_WITHIN.