Úvod do geoprostorových funkcí Stream Analytics
Geoprostorové funkce v Azure Stream Analytics umožňují analýzu streamovaných geoprostorových dat v reálném čase. S pouhými několika řádky kódu můžete vyvinout řešení na produkční úrovni pro složité scénáře. Tyto funkce podporují všechny typy WKT a GeoJSON Point, Polygon a LineString.
Mezi příklady scénářů, které můžou geoprostorové funkce využívat, patří:
- Sdílení jízdy
- Správa vozového parku
- Sledování prostředků
- Geografické ohraničení
- Sledování telefonů mezi mobilními weby
Dotazovací jazyk Stream Analytics obsahuje sedm předdefinovaných geoprostorových funkcí: CreateLineString, CreatePoint, CreatePolygon, ST_DISTANCE, ST_OVERLAPS, ST_INTERSECTS a ST_WITHIN.
CreateLineString
Funkce CreateLineString
přijímá body a vrací řetězec čáry GeoJSON, který se dá vykreslit jako čára na mapě. K vytvoření řetězce linestring musíte mít alespoň dva body. Body čar budou propojeny v příslušném pořadí.
Následující dotaz používá CreateLineString
k vytvoření řetězce linestring se třemi body. První bod se vytvoří ze streamování vstupních dat, zatímco další dva se vytvoří ručně.
SELECT
CreateLineString(CreatePoint(input.latitude, input.longitude), CreatePoint(10.0, 10.0), CreatePoint(10.5, 10.5))
FROM input
Příklad vstupu
zeměpisná šířka | Délky |
---|---|
3.0 | -10.2 |
-87.33 | 20.2321 |
Příklad výstupu
{"type" : "LineString", "coordinates" : [ [-10.2, 3.0], [10.0, 10.0], [10.5, 10.5] ]}
{"type" : "LineString", "coordinates" : [ [20.2321, -87.33], [10.0, 10.0], [10.5, 10.5] ]}
Další informace najdete v referenčních informacích k createLineString .
CreatePoint
Funkce CreatePoint
přijímá zeměpisnou šířku a délku a vrací bod GeoJSON, který se dá vykreslit na mapě. Zeměpisné šířky a délky musí být datový typ float .
Následující příklad dotazu používá CreatePoint
k vytvoření bodu pomocí zeměpisných šířek a délek ze streamovaných vstupních dat.
SELECT
CreatePoint(input.latitude, input.longitude)
FROM input
Příklad vstupu
zeměpisná šířka | Délky |
---|---|
3.0 | -10.2 |
-87.33 | 20.2321 |
Příklad výstupu
{"type" : "Point", "coordinates" : [-10.2, 3.0]}
{"type" : "Point", "souřadnice" : [20,2321, -87,33]}
Další informace najdete v referenčních informacích k createpointu .
CreatePolygon
Funkce CreatePolygon
přijímá body a vrací záznam mnohoúhelníku GeoJSON. Pořadí bodů musí odpovídat orientaci pravého kruhu nebo proti směru hodinových ručiček. Představte si, že jdete od jednoho bodu k druhému v pořadí, v jakém byly deklarovány. Střed mnohoúhelníku by byl po celou dobu nalevo.
Následující příklad dotazu používá CreatePolygon
k vytvoření mnohoúhelníku ze tří bodů. První dva body se vytvoří ručně a poslední bod se vytvoří ze vstupních dat.
SELECT
CreatePolygon(CreatePoint(input.latitude, input.longitude), CreatePoint(10.0, 10.0), CreatePoint(10.5, 10.5), CreatePoint(input.latitude, input.longitude))
FROM input
Příklad vstupu
zeměpisná šířka | Délky |
---|---|
3.0 | -10.2 |
-87.33 | 20.2321 |
Příklad výstupu
{"type" : "Mnohoúhelník", "souřadnice" : [[ [-10.2, 3.0], [10.0, 10.0], [10.5, 10.5], [-10.2, 3.0] ]]}
{"type" : "Mnohoúhelník", "souřadnice" : [[ [20.2321, -87.33], [10.0, 10.0], [10.5, 10.5], [20.2321, -87.33] ]]}
Další informace najdete v referenčních informacích k createpolygonu .
ST_DISTANCE
Funkce ST_DISTANCE
vrátí vzdálenost mezi dvěma geometriemi v metrech.
Následující dotaz používá ST_DISTANCE
k vygenerování události, když je čerpací stanice méně než 10 km od auta.
SELECT Cars.Location, Station.Location
FROM Cars c
JOIN Station s ON ST_DISTANCE(c.Location, s.Location) < 10 * 1000
Další informace najdete v referenčních informacích k ST_DISTANCE .
ST_OVERLAPS
Funkce ST_OVERLAPS
porovnává dvě geometrie. Pokud se geometrie překrývají, vrátí funkce hodnotu 1. Pokud se geometrie nepřekrývají, vrátí funkce hodnotu 0.
Následující dotaz používá ST_OVERLAPS
k vygenerování události, když se budova nachází v možné zóně zaplavení.
SELECT Building.Polygon, Building.Polygon
FROM Building b
JOIN Flooding f ON ST_OVERLAPS(b.Polygon, b.Polygon)
Následující příklad dotazu vygeneruje událost, když bouře míří do auta.
SELECT Cars.Location, Storm.Course
FROM Cars c, Storm s
JOIN Storm s ON ST_OVERLAPS(c.Location, s.Course)
Další informace najdete v referenčních informacích k ST_OVERLAPS .
ST_INTERSECTS
Funkce ST_INTERSECTS
porovnává dvě geometrie. Pokud se geometrie protínají, vrátí funkce hodnotu 1. Funkce vrátí hodnotu 0, pokud se geometrie vzájemně neprotínají.
Následující příklad dotazu používá ST_INTERSECTS
k určení, jestli zpevněná cesta protíná polní cestu.
SELECT
ST_INTERSECTS(input.pavedRoad, input.dirtRoad)
FROM input
Příklad vstupu
datacenterArea | stormArea |
---|---|
{"type":"LineString", "coordinates": [ [-10.0, 0.0], [0.0, 0.0], [10.0, 0.0] ]} | {"type":"LineString", "coordinates": [ [0.0, 10.0], [0.0, 0.0], [0.0, -10.0] ]} |
{"type":"LineString", "coordinates": [ [-10.0, 0.0], [0.0, 0.0], [10.0, 0.0] ]} | {"type":"LineString", "coordinates": [ [-10.0, 10.0], [0.0, 10.0], [10.0, 10.0] ]} |
Příklad výstupu
1
0
Další informace najdete v referenčních informacích k ST_INTERSECTS .
ST_WITHIN
Funkce ST_WITHIN
určuje, zda se geometrie nachází v jiné geometrii. Pokud je první obsažena v posledním, vrátí funkce hodnotu 1. Funkce vrátí hodnotu 0, pokud se první geometrie nenachází v poslední geometrii.
Následující příklad dotazu používá ST_WITHIN
k určení, zda se cílový bod doručení nachází v rámci daného mnohoúhelníku skladu.
SELECT
ST_WITHIN(input.deliveryDestination, input.warehouse)
FROM input
Příklad vstupu
deliveryDestination | Skladu |
---|---|
{"type":"Point", "coordinates": [76.6, 10.1]} | {"type":"Polygon", "souřadnice": [ [0.0, 0.0], [10.0, 0.0], [10.0, 10.0], [0.0, 10.0], [0.0, 0.0] ]} |
{"type":"Point", "coordinates": [15.0, 15.0]} | {"type":"Polygon", "souřadnice": [ [10.0, 10.0], [20.0, 10.0], [20.0, 20.0], [10.0, 20.0], [10.0, 10.0] ]} |
Příklad výstupu
0
1
Další informace najdete v referenčních informacích k ST_WITHIN .