Sdílet prostřednictvím


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

Další kroky