用 QGIS 計算"點對線"最近距離的幾種方式
上一篇教學中,流浪貓介紹各位使用 Network Analysis 與 Least Cost Path來分析向量與點陣圖層的最短路徑,但這個方法只能計算『點對點』的距離,如果今天是要分析『公車路線與便利商店的距離』,該如何處理這種點對鄰近線的課題呢?
雖然我們可以將路線轉換成點 (Points along geometry) 來分析公車路線與商店最短距離,不過這個方法會產生相當大量的點圖徵,對電腦而言是不小的負擔。因此以下將介紹各位更有效率的方案來解決這個問題。
用 overlay_nearest 函數計算
這個是 QGIS 3.16 後新增的好東西,可以直接在符號學 (Symbology) 內產生與目標線圖層鄰近的線段。但這個方法只限於展示線段,無法產生實體線條,也不能用來運算。翠近維尼
進入點圖層的 Properties 後,開啟符號學設定:
Symbology > Add > Symbol layer type: Geometry Generator
make_line (
$geometry,
closest_point (
overlay_nearest ('線圖層名稱', $geometry)[0],
$geometry
)
)
用 NNJoin 計算點對線的最近距離
相當簡單易用的工具,運算完成後會重製點圖層並紀錄與線的距離。圖層的 CRS 要選擇麥卡托平面投影 (EPSG:3826 或 3857),如果用球體座標系 EPSG: 4326 的話會無法運作。
Input vector layer: 選擇點圖層
Join vector layer: 選擇線圖層
用 Closest Points 於線段上產出鄰近點
同樣也是簡單易用的工具,會在線段上產生距離最近的點圖徵,並紀錄距離。
Layer to calculate closest points from: 點圖層
Layer to calculate closest points to: 線圖層
以 Distance to nearest hub 連接點圖徵
用 Closest Points 於線段上產生點圖徵之後,我們就可以用 Distance to nearest hub (line to hub) 將最鄰近的兩點連成線了。
Source point layer: 原始點圖層
Destination hubs layer: 線段上產生的點圖層
延伸閱讀
Nearest distance between point and line layers in QGIS
Connecting points by lines using QGIS?
留言
張貼留言
由於廣告留言太多,因此改採審核發佈,請耐心等候。
無法留言?請點我