次の方法で共有


geo_intersection_2lines()

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

2 つの線または複数線の交差を計算します。

構文

geo_intersection_2lines(lineString1,lineString2)

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

パラメーター

件名 タイプ Required 説明
lineString1 dynamic ✔️ GeoJSON 形式の行または複数行
lineString2 dynamic ✔️ GeoJSON 形式の行または複数行

返品

GeoJSON 形式および dynamic データ型の積集合。 LineString または MultiLineString が無効な場合、クエリによって 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 つの頂点間の最短のエッジが選択されます。

ヒント

パフォーマンスを向上させるには、リテラル LineString または MultiLineString を使用します。

次の例では、2 本の線の交差部分を計算します。 この場合、結果はポイントです。

let lineString1 = dynamic({"type":"LineString","coordinates":[[-73.978929,40.785155],[-73.980903,40.782621]]});
let lineString2 = dynamic({"type":"LineString","coordinates":[[-73.985195,40.788275],[-73.974552,40.779761]]});
print intersection = geo_intersection_2lines(lineString1, lineString2)

出力

intersection
{"type": "Point","coordinates": [-73.979837116670978,40.783989289772165]}

次の例では、2 本の線の交差部分を計算します。 この場合、結果は行になります。

let line = dynamic({"type":"LineString","coordinates":[[-73.978929,40.785155],[-73.980903,40.782621]]});
print intersection = geo_intersection_2lines(line, line)

出力

intersection
{"type": "LineString","coordinates": [[ -73.978929, 40.785155],[ -73.980903, 40.782621]]}

次の 2 つの線は交差しません。

let lineString1 = dynamic({"type":"LineString","coordinates":[[1, 1],[2, 2]]});
let lineString2 = dynamic({"type":"LineString","coordinates":[[3, 3],[4, 4]]});
print intersection = geo_intersection_2lines(lineString1, lineString2)

出力

intersection
{"type": "GeometryCollection", "geometries": []}

次の例では、行の 1 つが無効であるため、null の結果が返されます。

let lineString1 = dynamic({"type":"LineString","coordinates":[[1, 1],[2, 2]]});
let lineString2 = dynamic({"type":"LineString","coordinates":[[3, 3]]});
print invalid = isnull(geo_intersection_2lines(lineString1, lineString2))

出力

無効
1