為空照圖進行空間對位

警告

本教學已經過時,如需閱讀新的版本請前往 為空照圖進行空間對位 (QGIS3)

為紙本地圖進行空間對位教學中,我們介紹了一種 QGIS 中進行空間對位的方法。這種方法可運用在掃描版地圖上,我們可以尋找地圖上的座標點當作控制點。但有的時候,地圖上會沒有這種網格點,又或是你要為影像進行空間對位,這方法也行不通。在這種情況下,我們可以使用其他的空間對位資料來源來當作輸入。本教學中,我們會學習如何在空間對位的操作中使用這些開放的資料來源。

內容說明

我們要使用高解析度的氣球影像(Balloon-imagery),以 OpenStreetMap 的參考座標進行空間對位。

你還會學到這些

  • 下載超高解析度的公領域影像資料

  • 在 QGIS 中使用 OpenLayers 附加元件

  • 使用 cs2cs 指令工具在不同的投影系統之間轉換坐標

  • 使用手邊已經過空間對位的圖層,提供空間對位時的控制點座標資訊

  • 為某圖層自訂「無資料值」(No-data Value)

取得資料

本教學中,我們要使用 The Public Laboratory 收集的一系列絕美的氣球、風箏空拍影像。他們其實也有釋出空間對位過的版本,不過為了練習,我們在這裡要下載的是未經空間對位的 JPG 檔,然後再於 QGIS 中進行空間對位。如果你喜歡他們提供的影像,可以在 Google Earth 中進一步探索。

下載紐約市 Washington Square Park 的 JPG 影像。你可以直接在 JPG 的按鈕上按右鍵然後選 Save link as…

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

UNTRANSLATED STRING newyorkcity-washingtonsquarepark.jpg

操作流程

  1. 本教學會使用開放街圖來當作參考圖層。請到 附加元件 ‣ 管理與安裝附加元件 中安裝 OpenLayers Plugin。有關在 QGIS 中如何使用附加元件,可參考 使用附加元件

../_images/1160.png
  1. 安裝後,就可選擇 :menuselection:`附加元件(或網路) --> OpenLayers plugin --> Add OpenStreetMap layer`_,如此一來 QGIS 會載入 OpenStreetMap預先處理好的資料塊。

../_images/2133.png
  1. 現在開放街圖的資料已經讀到 QGIS 中了。注意此圖層的座標參考系統 (CRS) 是 EPSG 3857 - 偽麥卡托投影(Pseudo Mercator),我們接下來在此圖層中使用的座標都會是這個 CRS,所以值得在此一提。

../_images/375.png
  1. 下一件事是尋找我們要進行空間對位的地區。開放街圖的圖層可以自由縮放尋找地點,不過這裏我們來用另外一種未來可能會有用的工具進行搜尋。我們知道剛剛下載的圖片是位在紐約的 Washington Square Park,如果你把這個地點丟到網路上搜尋,就可以在維基百科的頁面中找到此條目,內容還包括公園的座標。

../_images/443.png
  1. 你會發現這裡的座標是經緯度,以度/分/秒的方式顯現,但我們的圖層是麥卡托投影,需要把它轉換成麥卡托直角坐標才能定位。因此,我們要使用一個方便的指令叫做 cs2cs 來幫我們這個忙。一般來說,在 Windows 安裝 QGIS 時,應該會把一個稱為 OSGEO4W 的套件也一併安裝,而在 Linux 和 Mac 上亦然。在後兩個作業系統上,可以進入終端機,輸入 cs2cs 查看此程式是否存在,而 Windows 使用者可以去 開始(所有程式) ‣ OSGeo4W ‣ MSYS 啟動終端機(譯按:或是 開始(所有程式) ‣ QGIS ‣ OSGeo4W Shell。)

備註

Mac 的使用者可以在此找到 cs2cs 工具: /Library/Frameworks/PROJ.Framework/Programs/cs2cs

../_images/537.png
  1. 確定 cs2cs 指令有安裝在系統中後,就可以著手來把經緯度座標轉換成麥卡托座標。使用這個工具時,必須要指定初始目標的 CRS,指定的方法可以為 PROJ4 字串或是 EPSG 代碼。因為我們已經知道目標圖層的 CRS,所以直接使用後者即可。此指令最簡單的使用方法是直接在命令列中輸入座標,這個指令讀入座標的順序是 X Y,所以我們要輸入的是「經度 緯度」。輸入如下所示的指令並按下 Enter 鍵(指令中的反斜線 () 是雙引號 (」) 的逃脫字符。在某些終端機版本中,不用加上逃脫字符和字串前後的雙引號)。完成之後,可以看到螢幕上會顯示 EPSG 3857 座標系統的 X Y 座標。

echo "-73d59'51\" 40d43'51\"" | cs2cs +init=EPSG:4326 +to +init=EPSG:3857

-8237364.02 4972720.34 0.00

如果以上的指令沒有用,可以試試看以下的不同版本

echo -73d59'51 40d43'51 | cs2cs +init=EPSG:4326 +to +init=EPSG:3857
../_images/636.png
  1. 複製輸出的座標,然後在 QGIS 視窗最下端的坐標欄位中,把剛才複製的坐標貼上,記得格是要符合 X,Y 的樣子。按下 Enter 鍵之後,可以看到地圖有稍微平移但沒有放大,我們必須要自己調整右側的比例選單,例如調到 1:2500 後再按下 Enter(譯按:如果地圖空白一片,請試試 1:5000。)

../_images/736.png
  1. 太棒了,Washington Square Park 出現在畫面中了!總算可以開始來進行空間對位,請選擇 影像 ‣ 空間對位 ‣ 空間對位,如果你找不到此選項的話,要到 附加元件 ‣ 管理與安裝附加元件 ‣ 已安裝 的分頁中啟用 空間對位 GDAL 這個附加元件。

../_images/835.png
  1. 空間對位 視窗中選擇 檔案 ‣ Open raster,選擇剛下載的 JPG 檔,然後按 開啟

../_images/936.png
  1. 選擇座標參考系統 視窗中,選擇 EPSG:3857 Pseudo Mercator

../_images/1043.png
  1. 接下來按下在工具列上的 Add Point 鈕,然後選擇幾個比較容易定位的特徵點,例如轉角、十字路口、雕像等等,這些點稍後要拿來當作控制點。

../_images/1161.png
  1. 當你在圖上按下點位時,會有個視窗跳出來要求輸入地圖坐標。選擇 從地圖畫面取得坐標

../_images/1246.png
  1. 在我們用來當作參考圖層的開放街圖上找到相同的位置點一下,地圖上的坐標就會自動被使用為控制點坐標。使用同樣的方法選擇並記錄至少 4 個點位的坐標。

../_images/1344.png
  1. 接下來選擇 設定 ‣ Transformation settings

../_images/1441.png
  1. 輸入如圖所示的參數設定,記得勾選回到 處理完畢後載入 QGIS 中。按下確定鈕回到 空間對位 的視窗中,點選 檔案 ‣ Start georeferencing,程式就會開始使用控制點轉換產生新影像。

../_images/1537.png
  1. 處理程式結束後,已經過空間對位修正的圖層會被載入到 QGIS 中。沒意外的話,你會看到新影像與開放街圖的圖層疊合得相當不錯。

../_images/1635.png
  1. 如要讓它看起來更順眼,得要移除掉影像周圍的黑色和白色無資料值。在這個圖層上按右鍵,選擇 屬性

../_images/1734.png
  1. 切到 透明度 分頁,我們要把黑色和白色的像素通通指定為無資料值,就可以讓他們都變透明。在 附加無資料值 中輸入 0,接著在下方的 自訂透明度選項中,按下 + 按鈕然後在每個波段中都輸入 255,透明百分比則輸入 100,最後按下 確定

../_images/1830.png
  1. 現在,影像看起來就很漂亮的疊在地圖上了。

../_images/1923.png

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