geo_distance_2points()

計算地球兩個地理空間座標之間的最短距離。

語法

geo_distance_2points(p1_longitude,p1_latitude,p2_longitude,p2_latitude)

深入瞭解 語法慣例

參數

名稱 類型 必要 Description
p1_longitude real ✔️ 第一個地理空間座標的經度值,以度為單位。 有效值位於範圍 [-180, +180]。
p1_latitude real ✔️ 第一個地理空間座標的緯度值。 有效值位於範圍 [-90, +90]。
p2_longitude real ✔️ 以第二個地理空間座標度為單位的經度值。 有效值位於範圍 [-180, +180]。
p2_latitude real ✔️ 第二個地理空間座標的緯度值。 有效值位於範圍 [-90, +90]。

傳回

地球上兩個地理位置之間的最短距離 (以公尺為單位)。 如果座標無效,查詢會產生 Null 結果。

注意

  • 地理空間座標會以 WGS-84 座標參考系統的表示來解讀。
  • 用來測量地球距離的測量基準是球體。

範例

下列範例會尋找西雅圖與洛杉磯之間的最短距離。

西雅圖與洛杉磯之間的距離。

print distance_in_meters = geo_distance_2points(-122.407628, 47.578557, -118.275287, 34.019056)

輸出

distance_in_meters
1546754.35197381

下列範例會尋找從西雅圖到倫敦最短路徑的近似值。 此行由沿著 LineString 與其 500 公尺內的座標所組成。

range i from 1 to 1000000 step 1
| project lng = rand() * real(-122), lat = rand() * 90
| where lng between(real(-122) .. 0) and lat between(47 .. 90)
| where geo_distance_point_to_line(lng,lat,dynamic({"type":"LineString","coordinates":[[-122,47],[0,51]]})) < 500
| render scatterchart with (kind=map)

輸出

西雅圖到倫敦LineString的螢幕快照。

下列範例會尋找兩個座標之間的最短距離介於一公尺到11公尺之間的所有數據列。

StormEvents
| extend distance_1_to_11m = geo_distance_2points(BeginLon, BeginLat, EndLon, EndLat)
| where distance_1_to_11m between (1 .. 11)
| project distance_1_to_11m

輸出

distance_1_to_11m
10.5723100154958
7.92153588248414

因為座標輸入無效,所以下列範例會傳回 Null 結果。

print distance = geo_distance_2points(300,1,1,1)

輸出

distance