次の方法で共有


geo_line_buffer()

適用対象: ✅Microsoft FabricAzure データ エクスプローラーAzure MonitorMicrosoft Sentinel

入力ラインまたは地球上の複数行の指定された半径内のすべてのポイントを含む多角形またはマルチポリゴンを計算します。

構文

geo_line_buffer(lineString, radius, tolerance)

構文規則について詳しく知る。

パラメーター

件名 タイプ Required 説明
lineString dynamic ✔️ GeoJSON 形式の LineString または MultiLineString
半径 real ✔️ バッファーの半径 (メートル単位)。 有効な値は正の整数で指定する必要があります。
tolerance real ポリゴンが理想的な半径からどの程度逸脱できるかを決定する許容範囲をメートル単位で定義します。 指定されない場合は、既定値の 10 が使用されます。 許容範囲は半径の 0.0001% 以下にする必要があります。 半径より大きい許容値を指定すると、許容差が半径より小さい最大の値に下がります。

返品

入力 LineString または MultiLineString の周囲の多角形または MultiPolygon。 座標または半径または許容値が無効な場合、クエリは null 結果を生成します。

Note

  • 地理空間座標は、WGS-84 座標参照系によって表されるものとして解釈されます。
  • 地球上での距離の測定に使う測地原点は、球体となっています。
  • 入力線のエッジが直交直線の場合は、geo_line_densify () を使用して平面のエッジを測地線に変換することを検討してください。
  • ラインのエンドキャップは丸い。
  • 行の両側がバッファーされます。

LineStringの定義と制約

dynamic({"type": "LineString","coordinates": [[lng_1,lat_1], [lng_2,lat_2], ..., [lng_N,lat_N]]})

dynamic({"type": "MultiLineString","coordinates": [[line_1, line_2, ..., line_N]]})

  • LineString 座標配列には、少なくとも 2 つのエントリが含まれている必要があります。
  • 座標 [経度,緯度] は有効である必要があります。経度は範囲 [-180, +180] の実数で、緯度は範囲 [-90, +90] の実数です。
  • エッジの長さは 180 度未満でなければなりません。 2 つの頂点間の最短のエッジが選択されます。

次のクエリでは、4 メートルと 0.1 メートルの許容範囲の半径で、線の周りの多角形を計算します。

let line = dynamic({"type":"LineString","coordinates":[[-80.66634997047466,24.894526340592122],[-80.67373241820246,24.890808090321286]]});
print buffer = geo_line_buffer(line, 4, 0.1)
buffer
{"type": "Polygon", "coordinates": [ ... ]}

次のクエリは、各行の周囲のバッファーを計算し、結果を統一します

datatable(line:dynamic)
[
    dynamic({"type":"LineString","coordinates":[[14.429214068940496,50.10043066548272],[14.431184174126173,50.10046525983731]]}),
    dynamic({"type":"LineString","coordinates":[[14.43030222687753,50.100780677801936],[14.4303847111523,50.10020274910934]]})
]
| project buffer = geo_line_buffer(line, 2, 0.1)
| summarize polygons = make_list(buffer)
| project result = geo_union_polygons_array(polygons)
結果
{"type": "Polygon","coordinates": [ ... ]}

次の例では、無効な行が原因で true が返されます。

print buffer = isnull(geo_line_buffer(dynamic({"type":"LineString"}), 5))
buffer
True

次の例では、半径が無効なため true を返します。

print buffer = isnull(geo_line_buffer(dynamic({"type":"LineString","coordinates":[[0,0],[1,1]]}), 0))
buffer
True