把地圖數位化

警告

A new version of this tutorial is available at Digitizing Map Data (QGIS3)

數位化操作是 GIS 專家最常進行的工作之一。把影像資料數位化、轉成向量圖層常常會花費許多的 GIS 操作時間。不過在 QGIS 中,有著強大的數位化螢幕編修功能,我們將會本教學中做個簡介。

內容說明

我們要把一張地形圖的圖檔轉化成數個向量圖層,內容包括地圖中一個公園附近的一些地理標記。

你還會學到這些

  • 為大尺寸影像建立快取金字塔,增快瀏覽地圖的速度

  • Spatialite 資料庫的操作

取得資料

我們要使用 Land Information New Zealand (LINZ) 提供的 1:50,000 地形圖,包括紐西蘭本土與查塔姆群島(Chatham Islands)。

Christchurch Topo50 map download page 下載 GeoTIFF 影像

為了方便起見,你也可以直接用下面的連結下載(裁切過的版本):

BX24_GeoTifv1-02-clip.tif

資料來源 [LINZ]

操作流程

  1. 選擇 圖層 ‣ 加入影像圖層,選擇剛才下載的 BX24_GeoTifv1-02.tif ,然後按 開啟

../_images/1190.png
  1. 這是張相當大的影像,當我們要拖曳或是縮放地圖時,都要花上一點時間讓程式調整影像的解析尺寸。QGIS 提供了簡單的解決方法來增進這些動作的速度,稱之為「影像金字塔」。這種方法其實就是預先產生不同解析度的相同影像,在地圖操作時,可以直接使用而不用再從全尺寸的影像做處理,加快瀏覽速度。請在 BX24_GeoTifv1-02 圖層上按右鍵選擇 屬性

../_images/2154.png
  1. 切換到 影像金字塔 分頁,在 解析度 欄位中把所有解析度都選取,其他選項使用預設值,然後按 建立快取金字塔。程式執行完畢後,按下 確定

../_images/394.png
  1. 回到 QGIS 主視窗,使用 放大 鈕搜尋基督城的 Hagley Park,這就是等一下要數位化的區域。

../_images/460.png
  1. 在開始之前,先來調整預設的 數位化選項。選擇 設定 ‣ 選項…

../_images/553.png
  1. 選項 頁面中切換到 數位化 分頁,預設接合模式 選擇 自動接合 轉折點與線段。這個選項可以使相近的轉折點與線段黏在一起。筆者個人也偏好把 預設接合容許範圍編輯轉控點的搜尋半徑 設成以像素為單位,而非以地圖單位為單位,這樣在不同的縮放尺度下,自動接合的距離會保持一樣。接著你可以依照你螢幕的解析度選擇適合的值,最後按下 確定

../_images/651.png
  1. 現在可以開始數位化了!我們先來做個道路的圖層,然後把公園附近的道路數位化到此圖層上。選擇 圖層 ‣ 新增圖層 ‣ 「新增 Spatialite 圖層…」或「新增 Shape 檔圖層」,看你喜歡哪個都可以。Spatialite 是和 ESRI 的地理資料庫(包含 Shapefile)格式相似的開放資料庫,它的特點是可以在一個檔案內塞進不同種類的空間資料 (點、線、多邊形) 與其他種類的圖層,所以在複製或移動檔案時,不用像 shapefiles 那樣每次都得移動一堆檔案。本教學中,我們會建立數個多邊形和一個線圖層,所以 Spatialite 會比較適合我們。你當然也可以在讀取 Spatialite 檔案後,另存成 shapefile 或其他類型的檔案格式。

../_images/751.png
  1. 新增 Spatilaite 圖層 視窗中,按下 鈕,把圖層存成新的名為 nztopo.sqlite 的資料庫。在 圖層名稱 中輸入 Roads,然後在 類別 中選擇 。我們的地形底圖使用的 CRS 是 EPSG:2193 - NZGD 2000,所以這邊就選個跟底圖一樣的 CRS 即可。請勾選 建立自動遞增的主鍵,這個功能會在屬性表格中新增一個叫做 pkuid 的欄位,程式會自動為每個圖徵指定獨特的數值到此欄位中。因為這是個道路圖層,我們應還需要 2 個基本屬性:道路名和道路種類。所以請在 新增屬性 欄位中加入 Name,然後按下 加入屬性列表

../_images/850.png
  1. 以同樣的方法建立新屬性 Class,類別選 文字資料。建立好後按下 確定

../_images/951.png
  1. 圖層載入後,按一下 切換編輯狀態 以進入圖層編輯模式。

../_images/1058.png
  1. 按下 加入圖徵 按鈕,然後在地圖上按滑鼠,就可以加入線段端點。沿著道路加入新的端點,直到全部的路都繞過後,按下右鍵結束圖徵的編輯。

備註

滑動滑鼠的滾輪鍵可以用來放大或縮小地圖,按住滾輪鍵則可以拖曳地圖。

../_images/1191.png
  1. 按下右鍵之後,會有一個視窗跳出,你可以在其中為剛剛創造的圖徵輸入屬性。因為 pkuid 已經被自動指定了,所以只有它是不能手動設定的。輸入在地圖中的道路名字,以及道路的種類,當然你也可以都不輸入就是了。完成後,按下 確定

../_images/1260.png
  1. 線圖層的預設樣式是非常細的線,我們要把它改粗一點,以方便在地圖上瀏覽。在 Roads 圖層上按右鍵選擇 屬性

../_images/1358.png
  1. 圖層屬性 視窗中切換到 樣式 分頁,再從樣式庫中選擇一個較粗的樣式,像是 Primary。最後按下 確定

../_images/1454.png
  1. 現在就很容易在地圖上找到此圖徵了。按下 儲存圖層編輯,就可以把剛才的更動寫到檔案內。

../_images/1548.png
  1. 在把其他道路數位化之前,有些設定還需要更新,才能保證接下來創造圖層時不會發生錯誤。選擇 選項 ‣ 自動接合選項

../_images/1645.png
  1. 自動接合選項 視窗中,勾選 使用拓撲(topological)編輯,這個選項可以確保圖徵共同的邊界可以在多邊形圖層中正確的調整。再來,勾選 開啟在相交處使用自動接合,此選項可以自動連接圖徵的截切點,例如底圖的道路轉角。

../_images/1743.png
  1. 接下來就繼續使用 加入圖徵 鈕,加入其他環繞公園的道路吧。記得每一次加入新圖徵後,都要按下 儲存圖層編輯 才會儲存起來。有一個稱為 節點工具 的功能也非常的方便,我們就來試試看。請按下 節點工具 鈕。

../_images/1839.png
  1. 節點工具啟用後,點選任一個圖徵,節點就會顯現出來。點選任一節點後,它的顏色會改變,以表示這個節點已經被選取了,這時就可以使用滑鼠拖曳此節點。此操作對修改已有的圖層非常的方便,如果我們要刪掉選取的節點,只要按下 Delete 鍵即可。(Mac 上是 Option+Delete 鍵)

../_images/1930.png
  1. 所有的道路都數位化了之後,按一下 切換編輯狀態 關閉圖層編輯模式。

../_images/2026.png
  1. 接下來我們要製作的是公園邊界的多邊形圖層。選擇 圖層 ‣ 新增圖層 ‣ 新增 Spatialite 圖層,資料庫要從下拉選單中選擇剛才的 nztopo.sqlite,新的圖層命名為 Parks類別 選擇 多邊形。另外,新增一個稱為 Name 的屬性,最後按下 確定

../_images/2155.png
  1. 按下 加入圖徵 鈕,然後在地圖上點出多邊形的頂點。這些頂點圈住的多邊形,就是以數位化方式呈現的公園邊界。在用右鍵完成多邊形之前,請再次確認你有開啟自動接合選項,這樣公園多邊形和道路的線條中間就不會有任何空隙。

../_images/2227.png
  1. 在跳出的 圖徵屬性 視窗中,輸入公園名字。

../_images/2324.png
  1. 我們還可以為多邊形圖層選擇一個很有用的設定,稱為 避免相交。再次進入 選項 ‣ 自動接合選項,然後把 Parks 圖層後方的 避免相交 欄勾選起來,最後按下 確定

../_images/2424.png
  1. 接著使用 加入圖徵 再加入另一個多邊形。當 避免相交 功能啟用時,我們就可以快速地創造另一個圖徵,不用擔心它跟先前的圖徵的接合點是否在正確的位置上。

../_images/2522.png
  1. 按下右鍵完成此多邊形,然後輸入屬性的內容。新的多邊形會與鄰接的多邊形完美的接在一起!這功能對比較複雜的邊界非常有用,我們在設定邊界時可以不需要非常的精確,就可以製作已校正的多邊形。最後,再次按下 切換編輯狀態,結束 Parks 圖層的編輯。

../_images/2619.png
  1. 是時候來數位化地圖上的建築了。這次我們選擇 圖層 ‣ 新增圖層 ‣ 新增 Spatialite 圖層,建立一個新的多邊形圖層,稱為 Buildings

../_images/2719.png
  1. Buildings 圖層加入後,關掉 ParksRoads 圖層,讓底下的地圖顯現出來,然後選擇 Buildings 圖層,再按下 切換編輯狀態

../_images/2619.png
  1. 建築的數位化通常是件繁瑣的任務,而且有個困難點是要手動設定垂直的節點以形成長方形的多邊形。這裡我們要使用一個稱為 Rectangles Ovals Digitizing 的附加元件來幫助我們數位化。關於如何搜尋和安裝附加元件,請參考 使用附加元件。當 Rectangles Ovals Digitizing 安裝完成後,會看到一個新的工具列出現在畫布上方區塊。

../_images/2917.png
  1. 放大到有建築的地方,然後按下 Rectangle by Extent 鈕,然後用滑鼠按下並拖曳出長方形。用類似的方法完成其餘的建築多邊形。

../_images/3015.png
  1. 你會看到有些建築不是垂直的,這些形狀大概是傾斜成某種角度的多邊形。按下 Rectangle from center

../_images/3118.png
  1. 在建築物的中心按一下,用滑鼠拖曳出一個垂直的長方形。

../_images/3215.png
  1. 接下來我們要旋轉此長方形,讓它符合地圖上的形狀。旋轉工具是放在 Advanced Digitizing 工具列中,在工具列上空白的地方按下右鍵,然後勾選 :guilabel:`Advanced Digitizing**,就可以讓它呈現在工具列上。

../_images/3313.png
  1. 按下 旋轉(多個)圖徵 鈕,

../_images/3411.png
  1. 使用 選擇單一圖徵 工具選擇你要旋轉的圖徵。在 旋轉(多個)圖徵 工具啟用的狀況下,被選取的圖徵中心會出現一個準心,點選此準心然後移動滑鼠,就會看到旋轉圖徵的預覽結果。在適當的角度按下滑鼠按鈕,讓多邊形對齊房屋的底座邊界。

../_images/3510.png
  1. 儲存編輯的結果,全部完成後再次按下 切換編輯狀態。現在你可以拖曳調整圖層的顯示順序。

../_images/3610.png
  1. 數位化的工作到此告一段落,接下來你可以在圖層屬性中調整標籤與樣式,利用你剛剛創造的資料製作一幅好看的地圖。

../_images/3710.png

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