geo_intersects_2lines()
適用対象: ✅Microsoft Fabric✅Azure データ エクスプローラー✅Azure Monitor✅Microsoft Sentinel
2 本の線または複数の線が交差するかどうかを計算します。
構文
geo_intersects_2lines(
lineString1,
lineString2)
構文規則について詳しく知る。
パラメーター
件名 | タイプ | Required | 説明 |
---|---|---|---|
lineString1 | dynamic |
✔️ | GeoJSON 形式の行または複数行。 |
lineString2 | dynamic |
✔️ | GeoJSON 形式の行または複数行。 |
返品
2 本の線または複数の線が交差するかどうかを示します。 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 intersects = geo_intersects_2lines(lineString1, lineString2)
出力
交差する |
---|
True |
次の例では、NYC GeoJSON 道路テーブル内の、関心のある線と交差するすべての道路を検索します。
let my_road = dynamic({"type":"LineString","coordinates":[[-73.97892951965332,40.78515573551921],[-73.98090362548828,40.78262115769851]]});
NY_Manhattan_Roads
| project name = features.properties.Label, road = features.geometry
| where geo_intersects_2lines(road, my_road)
| project name
出力
name |
---|
ブロードウェイ |
西 78 St |
西 79 St |
西 80 St |
西 81 St |
次の例では、行の 1 つが無効であるため、null の結果が返されます。
let lineString1 = dynamic({"type":"LineString","coordinates":[[-73.978929,40.785155],[-73.980903,40.782621]]});
let lineString2 = dynamic({"type":"LineString","coordinates":[[-73.985195,40.788275]]});
print isnull(geo_intersects_2lines(lineString1, lineString2))
出力
print_0 |
---|
True |