計算線段的長度和統計資訊

警告

This tutorial is now obsolete. A new and updated version is available at Calculating Line Lengths and Statistics (QGIS3)

(Unfinished) QGIS 內建的功能可以計算圖徵的幾何性質,像是長度、面積、周長等等。

內容說明

使用北美鐵路網的線段式 shapefile 來計算美國的鐵道總長度。

你還會學到這些

  • 使用表達式選擇圖徵。

  • 把圖層重新投影到專案的座標參考系統 (CRS) 上。

  • 查閱某圖層中某個屬性的統計資訊。

取得資料

Natural Earth 上有屬於公領域資料的 鐵路 資料庫,北美的部分 也在此提供下載。

為了方便起見,你也可以直接用下面的連結下載:

ne_10m_railroads_north_america..zip

資料來源 [NATURALEARTH]

操作流程

  1. 選擇 圖層 ‣ 加入向量圖層

../_images/1170.png
  1. 選擇 ne_10m_railroads_north_america.zip 並按下 確定

../_images/2140.png
  1. 選擇加入的圖層… 對話框中,選擇 ne_10m_railroads_north_america.shp。(譯註:較新的 QGIS 版本不會出現這個步驟)

../_images/380.png
  1. 圖層載入後,會顯示所有北美的鐵道線段。我們的目標是只計算美國的鐵路長度,所以必須要先選擇那些位於美國境內的鐵路才行。以右鍵點選此圖層,然後 開啟屬性表格

../_images/448.png
  1. 這個圖層含有一個叫做 sov_a3 的屬性,其值使用三個英文字母來代表這段圖徵位在哪個城市。我們要利用這個屬性來選擇位於美國境內的鐵路。

../_images/542.png
  1. 屬性表格 視窗中按下 使用表示式選取圖徵 的按鈕。

../_images/641.png
  1. 以表示式選取圖徵 的視窗出現後,在 函數列表 中的 欄位與值 的分類中找到 sov_a3 屬性,然後按兩下以加入到 表示式 區中,補完這個表達式 "sov_a3" = 'USA',好了以後按下 選取 然後 關閉

../_images/741.png
  1. 回到 QGIS 主視窗,現在在美國境內的線段都被選取,並標為黃色了。

../_images/840.png
  1. 現在來把選取區域另存新檔吧。在 ne_10m_railroads_north_america 圖層上按右鍵然後選擇 儲存選取區域為… (或是 存檔為…),

../_images/941.png
  1. 選擇 瀏覽 然後把輸出檔命名為 usa_railroads.shp。這裡我們順便轉換一下圖層的 CRS,請按下在 CRS 旁邊的 瀏覽 圖示。

備註

QGIS 的內建函數是使用圖層的座標參考系統 (CRS) 的預設單位來計算線段長度。因為 EPSG:4326 這個 CRS 使用角度當作單位,計算線段或面積的結果也會是角度或是平方度,以此作單位的數值其實並不實用。所以這裡必須要使用以公尺作為單位的專案座標參考系統來做計算。

../_images/1048.png
  1. 因為我們是要計算長度,這裡來選一個等距離投影試試。在 過濾條件 欄位輸入 north america equ 後,底下的結果就會出現 North_America_Equidistant_Conic EPSG:102010,選擇它作為新的 CRS 之後,按下 確定

../_images/1171.png
  1. 回到剛才的 儲存向量圖層為… 視窗,勾選 加入儲存檔案至地圖中`(譯註:如果有 :guilabel:`儲存僅選取的圖徵,也應一併勾選),最後按下 確定

../_images/1251.png
  1. 操作完成後,QGIS 中會出現叫做 usa_railroads 的新圖層。現在已經用不到舊圖層,可以取消 ne_10m_railroads_north_america 的勾選,把它隱藏起來了。

../_images/1349.png
  1. usa_railroads 圖層上按右鍵,選擇 開啟屬性表格

../_images/1446.png
  1. 接下來就來為所有圖徵新增一個長度的屬性看看。按下 切換編輯模式 鈕以進入編輯模式,在此模式中,按下 開啟欄位計算 鈕。

../_images/1542.png
  1. 欄位計算器 中,先勾選 建立新欄位,在 輸出欄位名稱 中輸入 length_km,在 輸出欄位類別 中選擇 十進位數(實數)精確度 調到 2,然後在底下的 函數列表 框中,找出位於 幾何欄位 分類中的 $length,並且點兩下以加入 表達式 區塊。因為我們想要以公里為單位但圖層的 CRS 使用公尺為單位,所以這裡公式要改成:$length / 1000。最後按下 確定

../_images/1640.png
  1. 回到 屬性表格,新的 length_km 屬性就會出現。再次按下 切換編輯模式 以儲存剛才所做的修改。

../_images/1738.png
  1. 現在每個線段都有自己個長度了,我們只需簡單的加總,就能知道全線段總長。選擇 向量 ‣ 分析工具 ‣ 基本統計

../_images/1835.png
  1. 然後在 輸入向量圖層 中選擇 usa_railroads,在 目標欄位 中選擇 length_km。按下 確定 後,就可以看到許多的統計資訊出現,其中的 總和 數值就是我們這次要找的鐵道總長度。

備註

鐵道總長度在不同的投影下會有些微的不同。實務上,線段、道路等長度一般會在製作資料庫時一併測量,並作為圖徵的其中一個屬性。本教學介紹的方法可以當作真實線段長度的近似估計,使用在那些沒有這個屬性的圖徵上。

../_images/1926.png

If you want to give feedback or share your experience with this tutorial, please comment below. (requires GitHub account)