PostGIS
切換暗/亮/自動模式 - PostGIS 空間資料庫 切換暗/亮/自動模式 - PostGIS 空間資料庫 切換暗/亮/自動模式 - PostGIS 空間資料庫 返回首頁 - PostGIS 空間資料庫

地理相交功能錯在哪?

首先,那不是錯誤!但我們常常收到以下形式的疑問:「地理相交測試表示這個點位於這個方框內,但顯然不是,這是為什麼?」

舉例如下

WITH wkt AS (
  SELECT
    'POLYGON((0 0, 80 0, 80 10, 0 10, 0 0))' AS box,
    'POINT(40 10.1)' AS pt
)
SELECT
  ST_Intersects(wkt.box::geography, wkt.pt::geography) AS intersects_geog,
  ST_Intersects(wkt.box::geometry, wkt.pt::geometry) AS intersects_geom
FROM wkt;

同一個方框,同一個點,但評估結果(以幾何或地理評估)不同。為什麼?

 intersects_geog | intersects_geom
-----------------+-----------------
 t               | f

答案在於這兩種類型工作的空間不同

  • geometry 是放置在笛卡爾平面(或是體積,若您加入第三個維度)上的形狀,且兩點之間最短路徑是直線
  • geography 是放置在地球表面上的形狀,且兩點之間最短路徑是大圓

在我們的範例中,方框的北緣將會是 LINESTRING(0 10, 80 10),在幾何中這是水平的直線,但在地理中這是大圓,它會向北微幅彎曲,因此會通過我們測試的「POINT(40 10.1)」北方。

在論及地理時,永遠要記得邊界是大圓這點很重要。赤道以北的東/西路線會微幅向北彎曲,赤道以南的會微幅向南彎曲。