geo_line_simplify()
適用対象: ✅Microsoft Fabric✅Azure データ エクスプローラー✅Azure Monitor✅Microsoft 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 |