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 usłudze Azure Stream Analytics umożliwiają analizowanie danych geoprzestrzennych w czasie rzeczywistym. Za pomocą zaledwie kilku wierszy kodu można opracować rozwiązanie klasy produkcyjnej dla złożonych scenariuszy. Funkcje te obsługują wszystkie typy WKT oraz GeoJSON typu Point, Polygon i LineString.
Przykłady scenariuszy, które mogą korzystać z funkcji geoprzestrzennych, to:
- Współdzielenie przejazdów
- Zarządzanie flotą
- Śledzenie zasobów
- Geofencing
- Śledzenie telefonu w różnych stacjach bazowych.
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 element LineString GeoJSON, który można wykreślić jako linię na mapie. Aby utworzyć ciąg LineString, musisz mieć co najmniej dwa punkty. Punkty LineString będą połączone w kolejności.
Poniższe zapytanie używa CreateLineString do utworzenia obiektu LineString przy użyciu trzech punktów. Pierwszy punkt jest tworzony na bazie danych przesyłanych strumieniowo, a pozostałe dwa punkty 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
| 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, 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. Typ danych szerokości i długości geograficznej musi być zmiennoprzecinkowy.
Poniższe przykładowe zapytanie używa CreatePoint do utworzenia punktu przy użyciu szerokości i długości geograficznej na podstawie danych wejściowych przesyłania strumieniowego.
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" : "Point", "coordinates" : [-10.2, 3.0]}
{"type" : "Point", "coordinates" : [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 prawostronną orientacją pierścienia lub zgodna z ruchem przeciwnym do ruchu wskazówek zegara. Wyobraź sobie, że chodzisz od jednego punktu do drugiego w kolejności, w której zostały zadeklarowane. Środek wielokąta będzie cały czas po lewej stronie od ciebie.
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
| 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
Funkcja ST_DISTANCE zwraca odległość między dwiema geometriami w metrach.
Poniższe zapytanie używa ST_DISTANCE do wygenerowania zdarzenia, gdy stacja benzynowa znajduje się w odległości mniejszej 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ź odnośnik 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 do wygenerowania zdarzenia, gdy budynek znajduje się w możliwej strefie powodzi.
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ę ze sobą.
Poniższe przykładowe zapytanie używa ST_INTERSECTS do określenia, czy asfaltowa droga przecina drogę nieutwardzoną.
SELECT
ST_INTERSECTS(input.pavedRoad, input.dirtRoad)
FROM input
Przykład danych wejściowych
| obszarCentrumDanych | 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 0, jeśli pierwsza geometria nie znajduje się w obrębie ostatniej.
Poniższe przykładowe zapytanie używa ST_WITHIN funkcji w celu określenia, czy punkt docelowy dostawy znajduje się wewnątrz określonego obszaru magazynu.
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.
Następne kroki
- Wprowadzenie do usługi Azure Stream Analytics
- Rozpocznij korzystanie z Azure Stream Analytics
- Skalowanie zadań Azure Stream Analytics
- Referencja języka zapytań Azure Stream Analytics
- Azure Stream Analytics Management REST API Reference (Dokumentacja interfejsu API REST zarządzania usługą Azure Stream Analytics)