Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Geoprostorové funkce v Azure Stream Analytics umožňují analytiku v reálném čase na streamování geoprostorových dat pro scénáře jako sdílená jízda, správa flotily, sledování majetku, geo-fence a sledování telefonních hovorů napříč mobilními stanicemi. Pomocí několika řádků kódu dotazu můžete vytvářet řešení, která využívají sedm vestavěných funkcí jazyka Stream Analytics Query Language (CreateLineString, CreatePolygon, CreatePoint, ST_DISTANCE, ST_OVERLAPS, ST_INTERSECTS a ST_WITHIN), které podporují všechny typy WKT a typy GeoJSON point, polygon a LineString. Tento článek popisuje každou funkci a ukazuje ukázkové dotazy, abyste je mohli aplikovat na svá vlastní streamovaná data.
Typy geometrie a pořadí souřadnic
Geoprostorové funkce pracují se třemi typy geometrie GeoJSON. Bod je jedno místo definované délkou a šířkou. LineString je uspořádaná množina dvou nebo více bodů, která tvoří souvislou linii, například trasu nebo silnici. Mnohoúhelník je uzavřený tvar, jehož hranice se uzavírá v počátečním bodě, například půdorys budovy nebo geografická hranice.
Funkce se dělí do dvou skupin. Konstruktorové funkce (CreatePoint, CreateLineString, a ) CreatePolygonvytvářejí geometrie z hodnot souřadnic ve vašich datech událostí. Relační funkce (ST_DISTANCE, ST_OVERLAPS, ST_INTERSECTS, a ST_WITHIN) porovnávají dvě geometrie a popisují, jak spolu souvisejí v prostoru.
V GeoJSONu jsou souřadnice uspořádány tak, že nejprve je uvedena zeměpisná délka a poté zeměpisná šířka, takže vstupní zeměpisná šířka a délka jsou ve výsledné geometrii uvedeny v opačném pořadí. Pochopení tohoto uspořádání spolu s orientací kruhu proti směru hodinových ručiček, kterou polygony vyžadují, vám pomůže předpovědět výstup každé funkce.
CreateLineString
CreateLineString je konstruktorová funkce, která vrací GeoJSON LineString, geometrii, která reprezentuje souvislou řadu bodů jako přímku na mapě. Přijímá dva nebo více bodů a spojuje je v pořadí, v jakém je uvádíte, což z něj činí přirozený způsob modelování tras, cest a úseků silnic ze streamovaných dat.
Následující příklad ilustruje toto chování kombinací tří bodů do LineStringu. První bod vychází ze streamování vstupních dat a ty ostatní dva definujete 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 | zeměpisná délka |
|---|---|
| 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 naleznete v referenčních informacích k CreateLineString.
CreatePoint
CreatePoint je konstruktorová funkce, která vrací bod GeoJSON z zeměpisné šířky a délky. Bod je nejzákladnější geometrie a představuje jedno místo na mapě, například aktuální polohu vozidla nebo majetku. Hodnoty zeměpisné šířky a délky musí být float datovým typem.
Následující příklad ilustruje toto chování vytvořením bodu z hodnot zeměpisné šířky a délky ve streamovaných vstupních datech.
SELECT
CreatePoint(input.latitude, input.longitude)
FROM input
Příklad vstupu
| zeměpisná šířka | zeměpisná délka |
|---|---|
| 3.0 | -10.2 |
| -87.33 | 20,2321 |
Příklad výstupu
{"type" : "Point", "coordinates" : [-10.2, 3.0]}
{"type" : "Point", "coordinates" : [20.2321, -87.33]}
Pro více informací viz odkaz na CreatePoint .
CreatePolygon
CreatePolygon je konstruktorová funkce, která vrací GeoJSON polygon z množiny bodů. Polygon znázorňuje uzavřenou oblast na mapě, například půdorys budovy, obrys skladu nebo geografickou zónu. Pořadí bodů odpovídá pravotočivé orientaci kruhu, tedy proti směru hodinových ručiček: pokud si představíte, že přecházíte z jednoho bodu do druhého v pořadí, v jakém jste je deklarovali, střed mnohoúhelníku zůstává po celou dobu vlevo.
Následující příklad ilustruje toto chování vytvořením mnohoúhelníku ze tří bodů. První dva body definujete ručně a poslední bod vychází 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 | zeměpisná délka |
|---|---|
| 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 referenci CreatePolygon.
ST_DISTANCE
ST_DISTANCE je relační funkce, která vrací vzdálenost mezi dvěma geometriemi v metrech. Pomáhá vám pochopit, jak blízko nebo daleko jsou dvě místa, což je užitečné pro situace blízkosti, jako jsou upozornění na blízká vozidla a výpočty servisní oblasti.
Následující příklad ukazuje, jak tuto funkci použít k identifikaci, 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
Pro více informací viz odkaz ST_DISTANCE .
ST_OVERLAPS
ST_OVERLAPS je relační funkce, která porovnává dvě geometrie a uvádí, zda sdílejí společnou oblast. Vrátí 1, když se geometrie překrývají, a 0, když se nepřekrývají. Tato funkce je užitečná pro detekci prostorových konfliktů, například když se nebezpečná zóna dotýká oblasti zájmu.
Následující příklad ukazuje, jak tuto funkci použít k identifikaci, kdy se budova nachází v možné zóně zaplavení.
SELECT Building.Polygon, Flooding.Polygon
FROM Building b
JOIN Flooding f ON ST_OVERLAPS(b.Polygon, f.Polygon)
Další příklad také používá ST_OVERLAPS k detekci, kdy bouře míří k autu.
SELECT Cars.Location, Storm.Course
FROM Cars c
JOIN Storm s ON ST_OVERLAPS(c.Location, s.Course)
Pro více informací viz odkaz ST_OVERLAPS .
ST_INTERSECTS
ST_INTERSECTS je relační funkce, která porovnává dvě geometrie a hlásí, zda se kříží nebo dotýkají. Vrátí 1, když se geometrie protínají, a 0, když se neprotínají. Tato funkce vám pomáhá zjistit, kde se cesty nebo oblasti setkávají.
Následující příklad ukazuje, jak tuto funkci použít k určení, zda asfaltová cesta protíná šotolinovou cestu.
SELECT
ST_INTERSECTS(input.pavedRoad, input.dirtRoad)
FROM input
Příklad vstupu
| zpevněná silnice | DirtRoad |
|---|---|
| {"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 ST_INTERSECTS referenčních informacích.
ST_WITHIN
ST_WITHIN je relační funkce, která hlásí, zda je jedna geometrie plně obsažena v jiné. Vrací hodnotu 1, když se první geometrie nachází uvnitř druhé, a 0, když tomu tak není, což tvoří základ pro scénáře určování, zda se objekt nachází uvnitř oblasti, například pro geofencing a ověřování doručovacích zón.
Následující příklad ilustruje toto chování tím, že určuje, zda se cílový bod doručení nachází uvnitř daného skladového polygonu.
SELECT
ST_WITHIN(input.deliveryDestination, input.warehouse)
FROM input
Příklad vstupu
| cíl doručení | warehouse |
|---|---|
| {"type":"Point", "coordinates": [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", "coordinates": [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 ST_WITHIN referenčních informacích.