[老文] QGIS動手做-用套件Qgis2threejs畫3D地形圖
- 花費時間 - 約20分鐘 (看下載速度)
- 達成目標 - 繪製臺灣局部地區3D地形圖(以內政部釋出之20公尺網格為材料)
前言
3D地形圖? 這種東西用Google Eearth(簡稱GE)看不就好了?
各位看官,事情的確如此。若只是要看大範圍的地形起伏,這的確是最方便的作法。只需要透過簡單的下載與安裝步驟,GE這套軟體馬上就能將3D地形圖快速呈現在您眼前。只不過,在這邊推薦用QGIS安裝套件Qgis2threejs
是有理由的:
GE的數值高程(DEM)資料來源有數種,美國地質勘探局(USGS)、使用太空梭雷達的SRTM、又或是美國國家海洋暨大氣總署(NOAA)的一公里網格,隨著時間推移,新的勘測方法(如光學雷達LiDAR)也不斷投入應用。
不過,雖然部分地區能夠呈現高精度的高程資訊,但GE並非在全球每一處都能做到盡善盡美的3D展示。以台灣來說,要展示各大山脈的起伏相當足夠,但一旦拉近到1Km見方左右的範圍,擅長讀圖的朋友馬上就會發現到-哇!怎麼和常用的經建三等高線圖差這麼多啊!?相對地,本次教學使用的圖資乃是內政部(簡稱MOI)去年開放的20公尺網格DTM,俗話說靠人不如靠己,要做台灣的3D地形呈現當然還是要靠自家的資料啊!
更棒的是,一群有志的前輩們早就將這份釋出的圖資進行加值,應用於手機登山導航。而我們這次要利用的HGT檔格式,也是由其中一位前輩Rex所轉換的喔!
下面三張圖都標示同一區域(花蓮縣二子溪/初見溪匯流口),分別是經建三
、GE
、以及本課會用到的MOI.hgt
圖資。
可以發現到,GE的匯流口居然變成高聳的鞍部!而往西邊南二子山的方向也無法呈現等高線圖該有的尺度。比較一下GE和最下面的本課成果,有沒有動力想學了呀?
步驟一 下載圖資
下載Rex Tsai所轉換的各式圖資,本次教學使用HGT格式,所以請右鍵點選HGT
這個資料夾,再點選下載
。
MOI圖資下載頁面(約46MB)
由於是Google Drive會打包成zip格式的壓縮檔,下載完成後請記得解壓縮,並放到自己記得的路徑中。
步驟二 將圖資加入QGIS
在QGIS中,是以Raster Layer
的型式來加入剛剛下載的HGT檔喔! 有以下三種方法:
- 按下Ctrl + Shift + R
- 點選左方的方格圖示(Add Raster Layer)
- 在上面選單中依次選擇
Layer
->Add Layer
->Add Raster Layer...
另外,你是不是也注意到解壓縮後有很多副檔名為.hgt
的檔案呢?難道我們要把這些全部一起丟進QGIS嗎? 別急! 注意到這些HGT檔的檔名了嗎? 因為單一圖檔太大,所以它們是用經緯度來分割的,每個檔案橫跨一個經度和緯度,檔名的數字則是圖片左下角的座標喔,所以會是下面這樣子的分布:
所以,端看你想描繪哪個地區的3D地形,再把對應的檔案加入QGIS就好,不用全部一起來啦。
步驟三 調整座標系
選取右下角的EPSG:XXXX(OTF)
,跳出畫面後,接著在Filter
內鍵入3857
,選取下方出現的WGS 84 / Pseudo Mercator
,接著點選套用
、確定
即可。
其實也可以使用代碼3826的TWD97,一樣可以正確疊加圖層
上面的步驟是用來改變地圖介面的座標系的,為什麼要這樣做呢? 因為如果座標系使用預設的WGS84(代碼4326)。新加入的高程圖層將無法標示在正確的相對位置,用肉眼即可看到它和其它底圖有所偏差。這牽涉到WGS84(世界大地測量系統)本身定義以及Pseudo-Mercator(偽麥卡托投影)的設計。有興趣的朋友可以在下方參考資料中查看相關說明。
步驟四 下載套件
看過前面QGIS入門第三課-加入Google衛星影像的同學一定對新增套件不陌生! 在上方選單選擇Plugin
->Manage and Install Plugin...
,接著搜尋Qgis2threejs
,再下載安裝即可。
步驟五 使用Qgis2threejs
安裝完成後,應該會在工具列出現新的套件Icon供點選。或者也可以在上方選單Web
->Qgis2threejs
找到套件。請先將之前加入的HGT檔圖層取消勾選,使之不顯示在地圖上。因為我們產出的3D模型除了高程外,貼圖是使用目前地圖上所顯示的畫面喔! 所以端看你的3D模型想要呈現哪種底圖、航跡或其它哩哩扣扣,現在都把它們顯示在地圖上吧!
進入Qgis2threejs
的選單後,我們就先來作一些設定啦! 請先將選中左方列表的World
,注意一下圖中1~5的項目。
產出的格式,使用預設的
3DView(dat-gui).html
即可。順便一提File Export.html
可以將成果轉檔成各種類型,方便其它軟體進行呈現/修改(例如Win10內建的3D Builder)。地圖範圍,也就是3D模型的邊界,使用目前地圖介面的呈現範圍。由於無法在這裡作出調整,所以請在打開
Qgis2threejs
之前先把尺度、位置在地圖介面調到你想要的範圍。模型尺度/位移,
- Base size: 表示模型大小,由於精細度是由HGT高程檔和目前地圖介面的畫面所決定,選100就很足夠。
- Vertical exaggeration: 將高程誇張化,常用於起伏不明顯的區域,若要呈現實際比例就選1即可。
- Vertical shift: 調整高程,選0即可。
模型座標系,使用目前座標系或是標準的WGS84,產出的模型可以透過點選來顯示座標,所以這邊可以選擇
Latitude and longitude (WGS84)
。輸出檔案所在的路徑和檔名,由於輸出後不只一個檔案,所以建議多新增一個資料夾來容納。。 再來是左方列表的
DEM
設定選取數值高程(DEM)圖層,也就是我們剛剛加入的HGT檔的圖層啦,要注意的是,若圖層範圍不在目前的地圖畫面中,那產出的模型就只是一張平面圖而已喔。
調整DEM,滑桿可調整解析度,請自行試驗其中差異。而若勾
Surroundings
,就代表要延伸目前的地圖範圍。Size
有3、5、9可以選,也就是以目前地圖範圍為中心格子,再畫出9、25、81宮格的範圍啦! 既然描繪的範圍一下子大了這麼多倍,電腦也會花相應的時間來輸出喔!有沒有了解了呢?由於圖磚服務在越大尺度下解析度越高,所以建議在作圖時將地圖畫面放大至較小範圍,再配合較大
Size
值來調整至想輸出的範圍,這樣比較可以兼顧貼圖清晰和較大的模型。至於
Roughening
則是調整貼圖的網格大小,數字越大網格越大,同時也會比較失真,當然輸出也會比較快喔。 另外的Advanced
選項可用於輸出複數解析度的3D模型(越接近中心解析度越高),有興趣就自己玩玩看吧。貼圖來源,預設的
Map canvas image
就是現在的地圖畫面,當然也可以選擇Layer image
來只加入特定圖層。至於Image file
則可以加入圖片檔,不過因為座標不容易對齊所以還是算了吧…模型邊界,不影響產出結果,
Build sides
可在模型四邊的面加入不透明的貼圖,Build frame
則是把模型邊線描黑而已。上面的步驟就是一些比較必要的設定了,完成之後按下
Run
,套件就會開始輸出成果。依據步驟7的設定有可能1、2秒就完成,也可能花費數分鐘,輸出檔案也從5MB到數百MB都有可能喔。
一旦輸出完成,系統就會自動打開瀏覽器檢視成果。轉動3D模型的操作只需要使用滑鼠左右鍵和滾輪滑動而已,不需要特別教學啦。只要以左鍵點選地圖的任一處,也馬上就能顯示該點座標!
至此就算大功告成囉,輸出的檔案是html+javascript型式,所以很重要的一點:
也就是說,產出的檔案還可以丟到其它人的電腦上給別人看喔,完全不需要使用QGIS來執行。 若能再搭配GPX檔的航跡圖層,能夠在簡報、行前審隊時更能讓人一目了然!
到此為止就下課解散囉! 另外若對Qgis2threejs
這個套件有更多興趣,在下方的參考資料中可以找到官方說明文件。