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 はマップ上の線として描画できます。 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
関数では、2 つのジオメトリ間の距離がメートル単位で返されます。
次のクエリでは、ST_DISTANCE
を使用して、自動車からガソリン スタンドまでの距離が 10 km 未満になったときにイベントを生成します。
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
関数では、2 つのジオメトリが比較されます。 ジオメトリが重なっている場合、この関数では 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
関数では、2 つのジオメトリが比較されます。 ジオメトリが交差する場合、この関数では 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 のリファレンスをご覧ください。