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 참조를 참조하세요.