Úvod do Stream Analytics geoprostorové funkce
Geoprostorové funkce v Azure Stream Analytics umožňují analýzu dat v reálném čase streamování geoprostorového obsahu. Pouze pár řádků kódu, můžete vyvíjet řešení produkčních stupňů pro složité scénáře. Tyto funkce podporují všechny typy Well a třídy injson, mnohoúhelník a LineString.
Mezi příklady scénářů, které můžou využívat geoprostorové funkce, patří:
- Jízdní sdílení
- Správa loďstva
- Sledování prostředků
- Geografické oplocení
- Sledování telefonů napříč weby s buňkami
Jazyk Stream Analytics dotazů má sedm integrovaných geoprostorovéch funkcí: CreateLineString, CreatePoint, CreatePolygon, ST_DISTANCE, ST_OVERLAPS, ST_INTERSECTS a ST_WITHIN.
CreateLineString
CreateLineStringFunkce akceptuje body a vrátí LineString pro inline JSON, který lze vykreslit jako čáru na mapě. Abyste mohli vytvořit LineString, musíte mít aspoň dva body. Body LineString budou připojené v daném pořadí.
Následující dotaz slouží CreateLineString k vytvoření LineString pomocí tří bodů. První bod je vytvořen ze streamování vstupních dat, zatímco ostatní dva jsou vytvořeny 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 | bodu |
|---|---|
| 3.0 | -10,2 |
| -87,33 | 20,2321 |
Příklad výstupu
{"Type": "LineString"; "souřadnice": [[-10,2, 3,0], [10,0, 10,0], [10,5, 10,5]]}
{"Type": "LineString"; "souřadnice": [[20,2321,-87,33], [10,0, 10,0], [10,5, 10,5]]}
Další informace najdete v referenčních informacích k CreateLineString .
CreatePoint
CreatePointFunkce přijímá zeměpisnou šířku a délku a vrací bodový bod JSON, který lze vykreslit na mapě. Vaše Latitudes a zeměpisná délka musí být typu float .
Následující příklad dotazu používá CreatePoint k vytvoření bodu pomocí Latitudes a délky ze streamování vstupních dat.
SELECT
CreatePoint(input.latitude, input.longitude)
FROM input
Příklad vstupu
| zeměpisná šířka | bodu |
|---|---|
| 3.0 | -10,2 |
| -87,33 | 20,2321 |
Příklad výstupu
{"Type": "Point", "souřadnice": [-10,2, 3,0]}
{"Type": "Point"; "souřadnice": [20,2321,-87,33]}
Další informace najdete v referenčních informacích k CreatePoint .
CreatePolygon
CreatePolygonFunkce akceptuje body a vrátí záznam mnohoúhelníku pro injson. Pořadí bodů musí následovat po orientaci na pravé straně nebo proti směru hodinových ručiček. Představte si procházení od jednoho bodu k druhému v pořadí, ve kterém byly deklarovány. Střed mnohoúhelníku by byl pro celý čas.
Následující příklad dotazu používá CreatePolygon k vytvoření mnohoúhelníku ze tří bodů. První dva body jsou vytvořeny ručně a poslední bod je vytvořen 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 | bodu |
|---|---|
| 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 CreatePolygon .
ST_DISTANCE
ST_DISTANCEFunkce vrátí vzdálenost mezi dvěma geometrií v metrech.
Následující dotaz ST_DISTANCE vygeneruje událost, když je čerpací stanice menší 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
ST_OVERLAPSFunkce porovná dvě geometrií. Pokud se geometrií překrývá, funkce vrátí hodnotu 1. Funkce vrátí hodnotu 0, pokud se geometrií nepřekrývá.
Následující dotaz ST_OVERLAPS vygeneruje událost, když je budova v rámci možné zóny zahlcení.
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, pokud je v názvu objektu auto.
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
ST_INTERSECTSFunkce porovná dvě geometrií. Pokud se geometrií protínají, funkce vrátí hodnotu 1. Funkce vrátí hodnotu 0, pokud se geometrií vzájemně neprotínají.
Následující příklad dotazu používá ST_INTERSECTS k určení, jestli se pavedá cesta překládá na nečistotě.
SELECT
ST_INTERSECTS(input.pavedRoad, input.dirtRoad)
FROM input
Příklad vstupu
| datacenterArea | stormArea |
|---|---|
| {"Type": "LineString"; "souřadnice": [[-10,0, 0,0], [0,0, 0,0], [10,0, 0,0]]} | {"Type": "LineString"; "souřadnice": [[0,0, 10,0], [0,0, 0,0], [0,0,-10,0]]} |
| {"Type": "LineString"; "souřadnice": [[-10,0, 0,0], [0,0, 0,0], [10,0, 0,0]]} | {"Type": "LineString"; "souřadnice": [[-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
ST_WITHINFunkce určuje, zda je geometrie v jiné geometrii. Pokud je první součástí v posledních, funkce vrátí hodnotu 1. Funkce vrátí hodnotu 0, pokud první geometrie není umístěna v rámci poslední.
Následující příklad dotazu používá ST_WITHIN k určení, zda je cílový bod doručení v rámci daného mnohoúhelníku datového skladu.
SELECT
ST_WITHIN(input.deliveryDestination, input.warehouse)
FROM input
Příklad vstupu
| deliveryDestination | skladu |
|---|---|
| {"Type": "Point", "souřadnice": [76,6, 10,1]} | {"Type": "mnohoúhelník"; "souřadnice": [[0,0, 0,0], [10,0, 0,0], [10,0, 10,0], [0,0, 10,0], [0,0, 0,0]]} |
| {"Type": "Point", "souřadnice": [15,0, 15,0]} | {"Type": "mnohoúhelník"; "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 .