計算多邊形之間的距離

QGIS 內建的「距離矩陣(Distance Matrix)」工具主要適用於點圖層,無法直接以多邊形邊界計算距離。若要計算多邊形彼此之間的距離,可以採用以下兩種常見且可靠的方法。

方法一:使用多邊形重心

  1. 將多邊形轉換為點資料:
    前往 向量(Vector) > 研究工具(Research Tools) > 多邊形重心(Polygon Centroids)
  2. 開啟 處理工具箱(Processing Toolbox),快捷鍵為 Ctrl + Alt + T
  3. 搜尋並開啟 距離矩陣(Distance Matrix) 工具。
  4. 分別設定:
    • 輸入點圖層(Input Point Layer)
    • 目標點圖層(Target Point Layer)
    • 唯一識別碼欄位(Unique ID Field)
  5. 執行後,即可產生各多邊形重心之間距離的距離矩陣表格。

方法二:使用「依最近距離連接屬性」

  1. 開啟 處理工具箱(Processing Toolbox)
  2. 搜尋並選擇 依最近距離連接屬性(Join Attributes by Nearest)
  3. 將兩個多邊形圖層分別設定為:
    • 輸入圖層(Input Layer)
    • 輸入圖層 2(Input Layer 2)
  4. 設定要尋找的最大鄰近圖徵數量(Maximum number of nearest neighbors)
  5. 執行工具後,QGIS 會產生新的多邊形圖層,除了加入最近圖徵的屬性資料外,也會新增一個距離欄位,記錄兩個圖徵之間的最近距離。

簡單來說,若要比較多邊形的「中心位置距離」,可使用多邊形轉換成重心+距離矩陣;若要計算兩個多邊形實際上「彼此最近有多遠」,則使用依最近距離連接屬性較為合適。

舉一個實際應用情境:利用政府資料開放平臺提供的「各級學校範圍圖_121分帶」,找出校園範圍彼此距離最近的兩所國民小學。以下說明操作步驟。

1. 篩選國民小學圖徵

由於「各級學校範圍圖」包含大專校院、高中職、國中及國小等不同類型學校,因此先利用圖層的 Filter(Query Builder) 功能,依學校類型欄位篩選出「國民小學」,作為後續距離分析的對象。

2. 使用「依最近距離連接屬性」功能

開啟 依最近距離連接屬性(Join Attributes by Nearest) 工具,並進行以下設定:

  • 輸入圖層(Input Layer)各級學校範圍圖_121.shp
  • 輸入圖層 2(Input Layer 2)各級學校範圍圖_121.shp
  • 最大鄰近圖徵數量(Maximum number of nearest neighbors):設為 1

這裡將兩個輸入圖層都設定為同一個學校範圍圖層,目的在於計算同一圖層內各學校多邊形彼此之間的最近距離

3. 依距離欄位排序找出最近的學校

完成 Join Attributes by Nearest 後,開啟輸出圖層的屬性資料表,針對其中的 distance 欄位進行由小到大排序,即可快速找出彼此距離最近的國民小學。其中 distance 欄位代表兩個學校範圍多邊形之間的最近距離;數值越小,表示兩校校園範圍越接近。

需要注意的是,部分學校可能具有一處以上的校地,因此在圖層中會以多個多邊形呈現。進行最近距離分析時,這些多邊形可能會被判定為彼此距離最近的圖徵,但實際上仍屬於同一所學校。因此,完成距離排序後,仍需進一步檢查學校名稱或識別欄位,人工剔除同一學校不同校地之間的配對結果,才能正確找出兩所不同學校之間的最近距離。

以下是臺灣本島校園彼此距離十分相近(兩校距離少於25公尺)的國民小學。

A.宜蘭縣宜蘭市中山國小與宜蘭國小:校園緊鄰在一起。

B.臺北市萬華區東園國小與萬大國小:校園緊鄰在一起。

C.基隆市仁愛區仁愛國小與信義國小:相隔仁二路137巷

D.彰化縣鹿港鎮文開國小與洛津國小:相隔文開路

E.新北市永和區頂溪國小與私立及人國小:相隔文化路

F.臺北市大同區永樂國小與太平國小:相隔延平北路二段

G.高雄市三民區鼎金國小與莊敬國小:相隔大昌一路