次の方法で共有


geo_line_simplify()

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

短いエッジのほぼ直線を地球上の単一の長いエッジに置き換えることで、線または複数線を簡略化します。

構文

geo_line_simplify(lineString, tolerance)

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

パラメーター

件名 タイプ Required 説明
lineString dynamic ✔️ GeoJSON 形式の LineString または MultiLineString
tolerance int、long、または real 任意の 2 つの頂点間の最小距離をメートル単位で定義します。 サポートされる値の範囲は [0, ~7,800,000 メートル] です。 指定されない場合は、既定値の 10 が使用されます。

返品

GeoJSON 形式の簡略化された線または複数行dynamic データ型で、距離が許容値より小さい 2 つの頂点がありません。 line または tolerance が無効な場合、クエリは 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 つの頂点間の最短のエッジが選択されます。

次の例では、互いに 10 メートルの距離内にある頂点を削除することで、線を簡略化します。

let line = dynamic({"type":"LineString","coordinates":[[-73.97033169865608,40.789063020152824],[-73.97039607167244,40.78897975920816],[-73.9704617857933,40.78888837512432],[-73.97052884101868,40.7887949601531],[-73.9706052839756,40.788698498903564],[-73.97065222263336,40.78862640672032],[-73.97072866559029,40.78852791445617],[-73.97079303860664,40.788434498977836]]});
print simplified = geo_line_simplify(line, 10)

出力

略式
{"type": "LineString", "coordinates": [[-73.97033169865608, 40.789063020152824], [-73.97079303860664, 40.78843498977836]}

次の例では、線を簡略化し、結果を GeoJSON ジオメトリ コレクションに結合します。

NY_Manhattan_Roads
| project road = features.geometry
| project road_simplified = geo_line_simplify(road, 100)
| summarize roads_lst = make_list(road_simplified)
| project geojson = bag_pack("type", "Feature","geometry", bag_pack("type", "GeometryCollection", "geometries", roads_lst), "properties", bag_pack("name", "roads"))

出力

geojson
{"type": "Feature", "geometry": {"type": "GeometryCollection", "geometries": [ ... ]}, "properties": {"name": "road"}}

次の例では、行を簡略化し、結果を統一します

NY_Manhattan_Roads
| project road = features.geometry
| project road_simplified = geo_line_simplify(road, 100)
| summarize roads_lst = make_list(road_simplified)
| project roads = geo_union_lines_array(roads_lst)

出力

道路
{"type": "MultiLineString", "coordinates": [ ... ]}

次の例では、無効な行が原因で True を返します。

print is_invalid_line = isnull(geo_line_simplify(dynamic({"type":"LineString","coordinates":[[1, 1]]})))

出力

is_invalid_line
True

次の例では、無効な許容範囲のため True を返します。

print is_invalid_line = isnull(geo_line_simplify(dynamic({"type":"LineString","coordinates":[[1, 1],[2,2]]}), -1))

出力

is_invalid_line
True

次の使用例は True を返します。許容度が高い場合、小さい線が消えます。

print is_invalid_line = isnull(geo_line_simplify(dynamic({"type":"LineString","coordinates":[[1.1, 1.1],[1.2,1.2]]}), 100000))

出力

is_invalid_line
True