<!--
title: "[老文] QGIS動手做-用套件Qgis2threejs畫3D地形圖"
date: 2017-03-27 00:00:00
summary: "繪製臺灣局部地區3D地形圖"
categories: "GIS"
tags: [QGIS,  GIS, 登山]
-->

- **花費時間** - 約20分鐘 (看下載速度)
- **達成目標** - 繪製臺灣局部地區3D地形圖(以內政部釋出之20公尺網格為材料)

![Mt.jade][]

## 前言

>3D地形圖? 這種東西用Google Eearth(簡稱**GE**)看不就好了?

各位看官，事情的確如此。若只是要看大範圍的地形起伏，這的確是最方便的作法。只需要透過簡單的下載與安裝步驟，GE這套軟體馬上就能將3D地形圖快速呈現在您眼前。只不過，在這邊推薦用QGIS安裝套件`Qgis2threejs`是有理由的:

1. GE的數值高程(DEM)資料來源有數種，美國地質勘探局(USGS)、使用太空梭雷達的SRTM、又或是美國國家海洋暨大氣總署(NOAA)的一公里網格，隨著時間推移，新的勘測方法(如光學雷達LiDAR)也不斷投入應用。  
   不過，雖然部分地區能夠呈現高精度的高程資訊，但GE並非在全球每一處都能做到盡善盡美的3D展示。以台灣來說，要展示各大山脈的起伏相當足夠，但一旦拉近到1Km見方左右的範圍，擅長讀圖的朋友馬上就會發現到-哇!怎麼和常用的經建三等高線圖差這麼多啊!?

2. 相對地，本次教學使用的圖資乃是內政部(簡稱**MOI**)去年開放的[20公尺網格DTM][]，俗話說靠人不如靠己，要做台灣的3D地形呈現當然還是要靠自家的資料啊!  
   更棒的是，一群有志的前輩們早就將這份釋出的圖資進行加值，應用於手機登山導航。而我們這次要利用的HGT檔格式，也是由其中一位前輩Rex所轉換的喔!

下面三張圖都標示同一區域(花蓮縣二子溪/初見溪匯流口)，分別是`經建三`、`GE`、以及本課會用到的`MOI.hgt`圖資。

可以發現到，GE的匯流口居然變成高聳的鞍部!而往西邊南二子山的方向也無法呈現等高線圖該有的尺度。比較一下GE和最下面的本課成果，有沒有動力想學了呀?

![contrast][]

<br>

## 步驟一 下載圖資

<br>下載Rex Tsai所轉換的各式圖資，本次教學使用HGT格式，所以請右鍵點選`HGT`這個資料夾，再點選`下載`。

[MOI圖資下載頁面][Rex Tsai Folder](約46MB)

由於是Google Drive會打包成zip格式的壓縮檔，下載完成後請記得解壓縮，並放到自己記得的路徑中。

![Rex Tsai Folder img](http://i.imgur.com/F019Chm.jpg)

<hr>

## 步驟二  將圖資加入QGIS

在QGIS中，是以`Raster Layer`的型式來加入剛剛下載的HGT檔喔! 有以下三種方法:

- 按下Ctrl + Shift + R
- 點選左方的方格圖示(Add Raster Layer)
  ![add_raster](http://i.imgur.com/Sr3r1L1.jpg)
- 在上面選單中依次選擇`Layer`->`Add Layer`->`Add Raster Layer...`

另外，你是不是也注意到解壓縮後有很多副檔名為`.hgt`的檔案呢?難道我們要把這些全部一起丟進QGIS嗎? 別急! 注意到這些HGT檔的檔名了嗎? 因為單一圖檔太大，所以它們是用經緯度來分割的，每個檔案橫跨一個經度和緯度，檔名的數字則是圖片左下角的座標喔，所以會是下面這樣子的分布:

![imgs_parts](http://i.imgur.com/pAnTGCY.jpg)

所以，端看你想描繪哪個地區的3D地形，再把對應的檔案加入QGIS就好，不用全部一起來啦。

<hr>

## 步驟三  調整座標系

選取右下角的`EPSG:XXXX(OTF)`，跳出畫面後，接著在`Filter`內鍵入`3857`，選取下方出現的`WGS 84 / Pseudo Mercator`，接著點選`套用`、`確定`即可。
   
![mark EPSG](http://i.imgur.com/IeeMlmJ.jpg)
![choose 3857](http://i.imgur.com/6dw9qRA.png)
其實也可以使用代碼3826的TWD97，一樣可以正確疊加圖層

上面的步驟是用來改變地圖介面的座標系的，為什麼要這樣做呢? 因為如果座標系使用預設的WGS84(代碼4326)。新加入的高程圖層將無法標示在正確的相對位置，用肉眼即可看到它和其它底圖有所偏差。這牽涉到WGS84(世界大地測量系統)本身定義以及Pseudo-Mercator(偽麥卡托投影)的設計。有興趣的朋友可以在下方參考資料中查看相關說明。

<hr>

## 步驟四  下載套件

看過前面[QGIS入門第三課-加入Google衛星影像][add Google map]的同學一定對新增套件不陌生! 在上方選單選擇`Plugin`->`Manage and Install Plugin...`，接著搜尋`Qgis2threejs`，再下載安裝即可。

![install plugin](http://i.imgur.com/6h33vqY.png)

<hr>

## 步驟五  使用Qgis2threejs

安裝完成後，應該會在工具列出現新的套件Icon供點選。或者也可以在上方選單`Web`->`Qgis2threejs`找到套件。請先將之前加入的HGT檔圖層取消勾選，使之不顯示在地圖上。因為我們產出的3D模型除了高程外，貼圖是使用目前地圖上所顯示的畫面喔! 所以端看你的3D模型想要呈現哪種底圖、航跡或其它哩哩扣扣，現在都把它們顯示在地圖上吧!

![tab 1](http://i.imgur.com/GynA27M.png)
進入`Qgis2threejs`的選單後，我們就先來作一些設定啦! 請先將選中左方列表的`World`，注意一下圖中1~5的項目。

1. **產出的格式**，使用預設的`3DView(dat-gui).html`即可。順便一提`File Export.html`可以將成果轉檔成各種類型，方便其它軟體進行呈現/修改(例如Win10內建的3D Builder)。

2. **地圖範圍**，也就是3D模型的邊界，使用目前地圖介面的呈現範圍。由於無法在這裡作出調整，所以請在打開`Qgis2threejs`之前先把尺度、位置在地圖介面調到你想要的範圍。

3. **模型尺度/位移**，
   *   Base size: 表示模型大小，由於精細度是由HGT高程檔和目前地圖介面的畫面所決定，選100就很足夠。
   *   Vertical exaggeration: 將高程誇張化，常用於起伏不明顯的區域，若要呈現實際比例就選1即可。
   *   Vertical shift: 調整高程，選0即可。

4. **模型座標系**，使用目前座標系或是標準的WGS84，產出的模型可以透過點選來顯示座標，所以這邊可以選擇`Latitude and longitude (WGS84)`。

5. **輸出檔案所在的路徑和檔名，由於輸出後不只一個檔案，所以建議多新增一個資料夾來容納。**。
   ![tab 2](http://i.imgur.com/P3W5Oxk.png)
   再來是左方列表的`DEM`設定

6. **選取數值高程(DEM)圖層**，也就是我們剛剛加入的HGT檔的圖層啦，要注意的是，若圖層範圍不在目前的地圖畫面中，那產出的模型就只是一張平面圖而已喔。

7. **調整DEM**，滑桿可調整解析度，請自行試驗其中差異。而若勾`Surroundings`，就代表要延伸目前的地圖範圍。
   `Size`有3、5、9可以選，也就是以目前地圖範圍為中心格子，再畫出9、25、81宮格的範圍啦! 既然描繪的範圍一下子大了這麼多倍，電腦也會花相應的時間來輸出喔!有沒有了解了呢?

   **由於圖磚服務在越大尺度下解析度越高，所以建議在作圖時將地圖畫面放大至較小範圍，再配合較大`Size`值來調整至想輸出的範圍，這樣比較可以兼顧貼圖清晰和較大的模型。** 

   至於`Roughening`則是調整貼圖的網格大小，數字越大網格越大，同時也會比較失真，當然輸出也會比較快喔。
   另外的`Advanced`選項可用於輸出複數解析度的3D模型(越接近中心解析度越高)，有興趣就自己玩玩看吧。

8. **貼圖來源**，預設的`Map canvas image`就是現在的地圖畫面，當然也可以選擇`Layer image`來只加入特定圖層。至於`Image file`則可以加入圖片檔，不過因為座標不容易對齊所以還是算了吧...

9. **模型邊界**，不影響產出結果，`Build sides`可在模型四邊的面加入不透明的貼圖，`Build frame`則是把模型邊線描黑而已。

10. 上面的步驟就是一些比較必要的設定了，完成之後按下`Run`，套件就會開始輸出成果。依據步驟7的設定有可能1、2秒就完成，也可能花費數分鐘，輸出檔案也從5MB到數百MB都有可能喔。

   一旦輸出完成，系統就會自動打開瀏覽器檢視成果。轉動3D模型的操作只需要使用滑鼠左右鍵和滾輪滑動而已，不需要特別教學啦。只要以左鍵點選地圖的任一處，也馬上就能顯示該點座標!

至此就算大功告成囉，輸出的檔案是html+javascript型式，所以很重要的一點：

<center><font size="10">只要瀏覽器就能看!!</font></center>

也就是說，產出的檔案還可以丟到其它人的電腦上給別人看喔，完全不需要使用QGIS來執行。
若能再搭配GPX檔的航跡圖層，能夠在簡報、行前審隊時更能讓人一目了然!

到此為止就下課解散囉! 另外若對`Qgis2threejs`這個套件有更多興趣，在下方的參考資料中可以找到官方說明文件。

<hr>

## 參考資料

[GE圖資來源說明](http://gis.stackexchange.com/questions/124084/what-is-googles-source-for-topographic-data)

[WGS84(世界大地測量系統)](https://en.wikipedia.org/wiki/World_Geodetic_System)

[Pseudo-Mercator](https://en.wikipedia.org/wiki/Web_Mercator)

[Qgis2threejs官方文件](http://qgis2threejs.readthedocs.io)

[Mt.jade]: https://i.imgur.com/ETPQPI8.png
[contrast]: http://i.imgur.com/pcEaMnk.jpg
[20公尺網格DTM]: https://data.gov.tw/dataset/35430
[Rex Tsai Folder]: https://drive.google.com/drive/folders/0B7mj_CQDLqFCUzdRazk5TFRNWDg
[add Google map]: ../2017-03-26-qgis-3/
