適用対象: ✅Microsoft Fabric✅Azure データ エクスプローラー✅Azure Monitor✅Microsoft Sentinel
地球の特定のポイントに最も近い多角形またはマルチポリゴン上の点を計算します。
構文
geo_closest_point_on_polygon(
経度,
latitude,
多角形)
パラメーター
名前 | タイプ | 必須 | 説明 |
---|---|---|---|
経度 | real |
✔️ | 地理空間座標、経度値 (度)。 有効な値は実数で、[-180, +180] の範囲内です。 |
緯度 | real |
✔️ | 地理空間座標、緯度の値 (度)。 有効な値は実数で、[-90, +90] の範囲内です。 |
ポリゴン | dynamic |
✔️ | GeoJSON 形式の多角形またはマルチポリゴン。 |
返品ポリシー
GeoJSON 形式のポイントと、地球上の特定のポイントに最も近い多角形またはマルチポリゴン上の動的データ型。 多角形に入力ポイントが含まれている場合、結果は同じポイントになります。 座標または多角形が無効な場合、クエリによって null 結果が生成されます。
注
- 地理空間座標は 、WGS-84 座標参照システムによって表されるものとして解釈されます。
- 地球の測定に使用される 測地基準系 は球です。 多角形のエッジは、球上 の測地線 です。
- 入力ポリゴン エッジが直線デカルト線の場合は、 geo_polygon_densify() を使用して平面エッジを測地線に変換することを検討してください。
- ポリゴン上の最も近いポイントまたは特定のポイントに対するマルチポリゴン間の距離を計算するには、geo_distance_point_to_polygon() を使用します。
多角形の定義と制約
dynamic({"type": "Polygon","coordinates": [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N]})
dynamic({"type": "MultiPolygon","coordinates": [[LinearRingShell, LinearRingHole_1,..., LinearRingHole_N],..., [LinearRingShell, LinearRingHole_1,..., LinearRingHole_M]})
- LinearRingShell は必須であり、座標 [[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]] の
counterclockwise
順序付けられた配列として定義されます。 シェルは 1 つだけ存在できます。 - LinearRingHole は省略可能であり、座標 [[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]] の
clockwise
順序付けられた配列として定義されます。 内部リングと穴はいくつでもかまいません。 - LinearRing 頂点は、少なくとも 3 つの座標と異なる必要があります。 最初の座標は、最後の座標と等しい必要があります。 少なくとも 4 つのエントリが必要です。
- 座標 [経度,緯度] が有効である必要があります。 経度は範囲 [-180, +180] の実数で、緯度は [-90, +90] の範囲の実数である必要があります。
- LinearRingShell は、球の最大半分を囲みます。 LinearRing は、球を 2 つの領域に分割します。 2 つのリージョンのうち小さい方が選択されます。
- LinearRing エッジの長さは 180 度未満にする必要があります。 2 つの頂点間の最短エッジが選択されます。
- LinearRings は交差せず、エッジを共有してはなりません。 LinearRings は頂点を共有できます。
- 多角形には必ずしも頂点が含まれているとは限りません。
ヒント
- リテラル ポリゴンを使用すると、パフォーマンスが向上する可能性があります。
例示
次の例では、特定のポイントに最も近いセントラル パーク内の位置を計算します。
let central_park = dynamic({"type":"Polygon","coordinates":[[[-73.9495,40.7969],[-73.95807266235352,40.80068603561921],[-73.98201942443848,40.76825672305777],[-73.97317886352539,40.76455136505513],[-73.9495,40.7969]]]});
print geo_closest_point_on_polygon(-73.9839, 40.7705, central_park)
出力
print_0 |
---|
{"type": "Point","coordinates": [-73.981205580153926, 40.76935945284321] } |
次の例では、無効な座標入力が原因で null 結果が返されます。
print result = isnull(geo_closest_point_on_polygon(500,1,dynamic({"type": "Polygon","coordinates": [[[0,0],[10,10],[10,1],[0,0]]]})))
出力
結果 |
---|
ほんとう |
次の例では、ポリゴン入力が無効なため、null 結果が返されます。
print result = isnull(geo_closest_point_on_polygon(1,1,dynamic({"type": "Polygon","coordinates": [[[0,0],[10,10],[10,10],[0,0]]]})))
出力
結果 |
---|
ほんとう |