Stream Analytics 지리 공간적 함수 소개

Azure Stream Analytics의 지리 공간적 함수를 사용하여 지리 공간적 함수 데이터 스트리밍 시 실시간으로 분석할 수 있습니다. 몇 개의 코드 줄만으로, 복잡한 시나리오에 대한 프로덕션급 솔루션을 개발할 수 있습니다. 이러한 함수는 모든 WKT 형식과 GeoJSON Point, Polygon 및 LineString을 지원합니다.

지리 공간적 함수를 활용할 수 있는 시나리오의 예는 다음과 같습니다.

  • 카풀
  • 차량 관리
  • 자산 추적
  • 지오-펜싱
  • 셀 사이트 간 전화 추적

Stream Analytics 쿼리 언어는 7개의 기본 제공 지리 공간적 함수인 CreateLineString, CreatePoint, CreatePolygon, ST_DISTANCE, ST_OVERLAPS, ST_INTERSECTS, ST_WITHIN을 제공합니다.

CreateLineString

CreateLineString 함수는 점을 수락한 후 지도에서 선으로 그릴 수 있는 GeoJSON LineString을 반환합니다. LineString 만들려면 2개 이상의 점이 있어야 합니다. LineString 점은 순서대로 연결됩니다.

다음 쿼리에서는 CreateLineString을 사용하여 3개 점으로 LineString을 만듭니다. 첫 번째 점은 입력 데이터를 스트리밍하여 생성되지만 다른 2개 점은 수동으로 생성됩니다.

SELECT  
     CreateLineString(CreatePoint(input.latitude, input.longitude), CreatePoint(10.0, 10.0), CreatePoint(10.5, 10.5))  
FROM input  

입력 예제

latitude longitude
3.0 -10.2
-87.33 20.2321

출력 예제

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

자세한 내용은 CreateLineString 참조를 참조하세요.

CreatePoint

CreatePoint 함수는 위도 및 경도를 수락하고, 지도에 그려질 수 있는 GeoJSON 점을 반환합니다. 위도 및 경도는 float 데이터 형식이어야 합니다.

다음 예제 쿼리는 CreatePoint를 사용하여 입력 데이터 를 스트리밍하여 얻은 위도 및 경도로 점을 만듭니다.

SELECT  
     CreatePoint(input.latitude, input.longitude)  
FROM input 

입력 예제

latitude longitude
3.0 -10.2
-87.33 20.2321

출력 예제

{"type" : "Point", "coordinates" : [-10.2, 3.0]}

{"type" : "Point", "coordinates" : [20.2321, -87.33]}

자세한 내용은 CreatePoint 참조를 참조하세요.

CreatePolygon

CreatePolygon 함수는 점을 수락하고 GeoJSON 다각형 레코드를 반환합니다. 점 순서는 오른쪽 링 방향 또는 시계 반대 방향을 따라야 합니다. 선언된 순서대로 한 점에서 다른 점으로 이동한다고 상상해보세요. 다각형의 중심은 항상 왼쪽에 오게 됩니다.

다음 예제 쿼리는 CreatePolygon을 사용하여 3개 점에서 다각형을 만듭니다. 처음 2개 점이 수동으로 생성된 후 마지막 점이 입력 데이터에서 생성됩니다.

SELECT  
     CreatePolygon(CreatePoint(input.latitude, input.longitude), CreatePoint(10.0, 10.0), CreatePoint(10.5, 10.5), CreatePoint(input.latitude, input.longitude))  
FROM input  

입력 예제

latitude longitude
3.0 -10.2
-87.33 20.2321

출력 예제

{"type" : "Polygon", "coordinates" : [[ [-10.2, 3.0], [10.0, 10.0], [10.5, 10.5], [-10.2, 3.0] ]]}

{"type" : "Polygon", "coordinates" : [[ [20.2321, -87.33], [10.0, 10.0], [10.5, 10.5], [20.2321, -87.33] ]]}

자세한 내용은 CreatePolygon 참조를 참조하세요.

ST_DISTANCE

ST_DISTANCE 함수는 두 기하 도형 사이의 거리(미터)를 반환합니다.

다음 쿼리는 ST_DISTANCE를 사용하여 주유소가 자동차로부터 10km 이내 거리에 있을 때 이벤트를 생성합니다.

SELECT Cars.Location, Station.Location 
FROM Cars c  
JOIN Station s ON ST_DISTANCE(c.Location, s.Location) < 10 * 1000

자세한 내용은 ST_DISTANCE 참조를 참조하세요.

ST_OVERLAPS

ST_OVERLAPS 함수는 두 기하 도형을 비교합니다. 기하 도형이 겹치면 이 함수는 1을 반환합니다. 기하 도형이 겹치지 않으면 함수는 0을 반환합니다.

다음 쿼리는 ST_OVERLAPS를 사용하여 건물이 홍수 범람 가능 구역 내에 있을 때 이벤트를 생성합니다.

SELECT Building.Polygon, Building.Polygon 
FROM Building b 
JOIN Flooding f ON ST_OVERLAPS(b.Polygon, b.Polygon) 

다음 예제 쿼리는 폭우가 자동차를 향할 때 이벤트를 생성합니다.

SELECT Cars.Location, Storm.Course
FROM Cars c, Storm s
JOIN Storm s ON ST_OVERLAPS(c.Location, s.Course)

자세한 내용은 ST_OVERLAPS 참조를 참조하세요.

ST_INTERSECTS

ST_INTERSECTS 함수는 두 기하 도형을 비교합니다. 기하 도형이 교차하면 함수는 1을 반환합니다. 기하 도형이 서로 교차하지 않으면 함수는 0을 반환합니다.

다음 예제 쿼리를 ST_INTERSECTS를 사용하여 포장된 도로가 비포장 도로와 교차하는지를 확인합니다.

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

입력 예제

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

출력 예제

1

0

자세한 내용은 ST_INTERSECTS 참조를 참조하세요.

ST_WITHIN

ST_WITHIN 함수는 기하 도형이 다른 기하 도형 내에 있는지 여부를 판단합니다. 첫 번째가 마지막에 포함된 경우 함수는 1을 반환합니다. 첫 번째 기하 도형이 마지막 기하 도형 내에 없는 경우 함수는 0을 반환합니다.

다음 예제 쿼리는 ST_WITHIN을 사용하여 배송 목적지가 지정된 창고 다각형 내에 있는지 여부를 확인합니다.

SELECT  
     ST_WITHIN(input.deliveryDestination, input.warehouse)  
FROM input 

입력 예제

deliveryDestination warehouse
{"type":"Point", "coordinates": [76.6, 10.1]} {"type":"Polygon", "coordinates": [ [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", "coordinates": [ [10.0, 10.0], [20.0, 10.0], [20.0, 20.0], [10.0, 20.0], [10.0, 10.0] ]}

출력 예제

0

1

자세한 내용은 ST_WITHIN 참조를 참조하세요.

다음 단계