Udostępnij za pośrednictwem


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 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