為紙本地圖進行空間對位 (QGIS3)

大部分的 GIS 專案都會需要對某些影像進行「 空間對位 (Georeferencing) 」,也就是說要為影像的每個像素指定它在世界上的地理空間座標。在許多的情況下,這些座標是透過野外調查收集而來,例如說用 GPS 裝置定位那些易於辨識的地標。但有的時候,例如說如果你要使用的是某地圖的數位化掃描檔,你也可以藉由地圖上的一些標記來蒐集空間座標。一旦我們有了這些採樣的座標點或地面控制點 (Ground Control Points),這些影像就可以用給定的座標系統來投影繪製。在本章節中,我們會討論相關的概念、作法與 QGIS 提供的工具,以達成高準確度空間對位的目標。

本教學的目標是為一張具有座標資訊 (例如有座標標切的經緯度網格) 的地圖影像進行空間對位。如果你的來源影像沒有這類資訊,請參考在 為空照圖進行空間對位 (QGIS3) 中的說明。

內容說明

我們要為一份 1870 年的南印地圖掃描檔,以 QGIS 進行空間對位。

你還會學到這些

  • 如何判斷老地圖的大地座標(Datum)與座標系統(Coordinate System)。

取得資料

Hipkiss’s Scanned Old Maps 網站蒐集了不少版權過期的老地圖掃描檔,非常適合用在研究上。

這邊可以下載儲存 1870 年的南印度地圖 的 JPG 檔。

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

1870_southern_india.jpg

操作流程

1.Georeferencing in QGIS is done via the Georeferencer GDAL plugin. This is a core plugin - meaning it is already part of your QGIS installation. You just need to enable it. Go to Plugins ‣ Manage and Install Plugins and enable the Georeferencer GDAL plugin in the Installed tab. See 使用附加元件 for more details on how to work with plugins.

../../_images/119.png
  1. 附加元件會放到「影像」的選單內。開啟 影像 ‣ 空間對位

../../_images/218.png
  1. 此附加元件視窗有上下 2 個部分,上半部是影像顯示區,下半部則會以表格方式呈現所有的地面控制點。

../../_images/316.png
  1. 現在就來開啟我們的 JPG 影像。選擇 檔案 ‣ Open Raster,然後找到剛才下載的地圖掃描檔,按下 開啟舊檔

../../_images/45.png
  1. 接下來,程式會要你選擇參考座標系統 (CRS)。我們的來源影像是 JPEG 檔,並沒有包含任何參考座標系統的資訊,所以你可以點選 Cancel

../../_images/56.png
  1. 現在影像已經被載到螢幕上半部了。可以使用工具列的放大/平移功能觀察一下地圖的細節。

../../_images/66.png
  1. 現在我們要為圖上的某些點指定座標了。仔細觀察後,可以發現本地圖具有標示經緯度的格線。

../../_images/76.png
  1. 在開啟加入地面控制點 (Ground Control Points, GCP) 之前,必須先填寫空間對位的設定。按下 設定 -> Transformation settings

../../_images/86.png
  1. Transformation settings 視窗中,轉換類型 選擇 二階多項式。關於不同轉換類型的細節,請參考 QGIS Documentation。按下 目標空間參照系 旁邊的 選取 CRS 按鈕。

../../_images/96.png
  1. 在本例的情況下,CRS 資訊可以直接在地圖影像掃描檔上取得。我們先端詳一下地圖,可發現本地圖的座標是經緯度,不過並沒有標示任何的大地座標系統資訊,所以我們得自己假設一個才行。因為此地圖是年代久遠的印度地圖,我們可以猜測它是使用 Everest 1830 大地座標系統,這應該會有不錯的結果。搜尋 everest 然後選擇最老的 Everest 大地基準的 CRS (EPSG:4042),然後按下 OK

../../_images/106.png

註解

Survey of India Topo Sheets created between the year 1960 and 2000 use the Everest 1956 spheroid and India_nepal datum. If you are georeferencing SOI Topo Sheets, , you can define a Custom CRS in QGIS with the following paramters and use it in this step. This definition includes a delta_x, delta_y and delta_z parameters for transforming this datum to WGS84. See this page for more information on the Indian Grid System.

+proj=longlat +a=6377301.243 +b=6356100.2284 +towgs84=295,736,257,0,0,0,0 +no_defs

註解

Most maps are created using a Projected CRS. If the map you are trying to georeference uses a projected CRS that you know of, but the graticules labels are in a Geographic CRS (latitude/longitude), you may use an alternate workflow to minimize distortion. Instead of using a Geographic CRS like we are using here, you can create a vector grid in QGIS and transform it to the projected CRS to be used as a reference for accurate coordinate capture. See this page for more details.

  1. Name your output raster as 1870_southern_india_modified.tif. Choose LZW as the Compression. Make sure the Load in QGIS when done option is checked. CLick OK.
../../_images/1110.png

註解

Uncompressed GeoTIFF files can be very large in size. So compressing them is always a good idea. You can learn more about different TIFF compression options (LZW, PACKBITS or DEFLATE) in this article.

  1. Now we can start adding the Ground Control Points (GCP). The intersections of the grid lines will serve as the ground-truth in our case. As the grid lines are labeled, we can determine the X and Y coordinates of the points using them. Click Add Point.
../../_images/126.png

在跳出的視窗中輸入此點的座標,記得 X 是經度,Y 是緯度。完成後按下 確定

../../_images/136.png
  1. 這下子,下半部的地面控制點表格會新增一欄你剛剛選的地面控制點。

../../_images/145.png
  1. Similarly, add at least more GCPs covering the entire image. The more points you have, the more accurate your image is registered to the target coordinates. The Polynomial 2 transform requires at least 6 GCPs.
../../_images/155.png
  1. Once you have added the minimum number of points required for the transform, you will notice that the GCPs now have a non-zero dX, dY and Residual error values. If a particular GCP has unusually high error values, that usually means a human-error in entering the coordinate values. So you can delete that GCP and capture it again. You can also edit the coordinate values in the GCP Table by clicking the cell in either Dest. X or Dest. Y columns. Once you are satisfied with the GCPs, go to File ‣ Start georeferencing. This will start the process of warping the image using the GCPs and creating the target raster.
../../_images/164.png
  1. 處理程式結束後,已經過空間對位修正的圖層會被載入到 QGIS 中,空間對位的操作就此完成。

../../_images/175.png

註解

The GCPs will also be displayed in the main QGIS Canvas. If you wish to remove them, you can switch to the Georeferencer window, and choose File ‣ Reset Georeferencer.

  1. 驗證做過的事永遠是件好習慣,現在就讓我們好好檢查一下本操作是否準確。請試著從可信的來源(例如 Natural Earth 資料庫)尋找並讀取含有國家邊界的 shapefile,然後跟我們的結果比對一下。你可以看到,他們基本上對應得相當良好,不過仍然有一點小誤差。如要減少這些誤差,可以增加更多控制點、修改空間對位的參數,或是換另一個猜測的大地座標系統來試試。

../../_images/185.png
comments powered by Disqus

This work is licensed under a Creative Commons Attribution 4.0 International License