Sdílet prostřednictvím


Úvod do geoprostorových funkcí Stream Analytics

Geoprostorové funkce v Azure Stream Analytics umožňují analýzy v reálném čase na streamovaných geoprostorových datech. S pouhými několika řádky kódu můžete vyvíjet řešení na úrovni produkčního prostředí 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 těžit z geoprostorových funkcí, patří:

  • Sdílení jízdy
  • Správa vozového parku
  • Sledování majetku
  • Geografické ohraničení
  • Sledování telefonu napříč buněčnými sítěmi

Dotazovací jazyk Stream Analytics má sedm integrovaný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í geoJSON LineString, který lze vykreslit jako čáru na mapě. Abyste mohli vytvořit linestring, musíte mít aspoň dva body. Body linestringu budou propojeny v pořadí.

Následující dotaz používá CreateLineString k vytvoření řetězce LineString pomocí tří bodů. První bod se vytvoří ze streamovaných vstupních dat, zatímco ostatní 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 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 najdete v referenci CreateLineString.

CreatePoint

Funkce CreatePoint přijímá zeměpisnou šířku a délku a vrací bod GeoJSON, který lze vykreslit na mapě. Vaše zeměpisné šířky a délky musí být typu float.

Následující příklad dotazu používá CreatePoint k vytvoření bodu pomocí zeměpisné šířky a délky ze streamovaných vstupních dat.

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

Další informace najdete v referenčních informacích k CreatePoint.

CreatePolygon

Funkce CreatePolygon přijímá body a vrací mnohoúhelník GeoJSON. Pořadí bodů musí odpovídat orientaci pravého kroužku nebo proti směru hodinových ručiček. Představte si, že jde od jednoho bodu k druhému v pořadí, v jakém byly deklarovány. Střed mnohoúhelníku by byl nalevo od vás po celou dobu.

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

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 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 ST_DISTANCE referenčních informacích.

ST_OVERLAPS

Funkce ST_OVERLAPS porovnává dvě geometrie. Pokud se geometrie překrývají, vrátí funkce hodnotu 1. Funkce vrátí hodnotu 0, pokud se geometrie nepřekrývají.

Následující dotaz používá ST_OVERLAPS k vygenerování události v případě, že budova spadá do možné zahlcené zóny.

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 ST_OVERLAPS referenčních informacích.

ST_INTERSECTS

Funkce ST_INTERSECTS porovnává dvě geometrie. Pokud se geometrie protínají, funkce vrátí hodnotu 1. Funkce vrátí hodnotu 0, pokud se geometrie navzájem neprotínají.

Následující příklad dotazu používá ST_INTERSECTS k určení, zda zpevněná cesta protíná nezpevněnou cestu.

SELECT  
     ST_INTERSECTS(input.pavedRoad, input.dirtRoad)  
FROM input  

Příklad vstupu

oblast datového centra 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 ST_INTERSECTS referenčních informacích.

ST_WITHIN

Funkce ST_WITHIN určuje, zda je geometrie uvnitř jiné geometrie. Pokud je první obsažena v poslední, funkce vrátí hodnotu 1. Funkce vrátí hodnotu 0, pokud první geometrie není umístěná v poslední geometrii.

Následující příklad dotazu používá ST_WITHIN k určení, zda cílový bod doručení je v daném mnohoúhelníku skladu.

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.

Další kroky