TOPO.TW

[老文] QGIS動手做-用套件Qgis2threejs畫3D地形圖

  • 花費時間 - 約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


步驟一 下載圖資


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

MOI圖資下載頁面(約46MB)

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

Rex Tsai Folder img


步驟二 將圖資加入QGIS

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

  • 按下Ctrl + Shift + R
  • 點選左方的方格圖示(Add Raster Layer) add_raster
  • 在上面選單中依次選擇Layer->Add Layer->Add Raster Layer...

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

imgs_parts

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


步驟三 調整座標系

選取右下角的EPSG:XXXX(OTF),跳出畫面後,接著在Filter內鍵入3857,選取下方出現的WGS 84 / Pseudo Mercator,接著點選套用確定即可。

mark EPSG choose 3857 其實也可以使用代碼3826的TWD97,一樣可以正確疊加圖層

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


步驟四 下載套件

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

install plugin


步驟五 使用Qgis2threejs

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

tab 1 進入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 再來是左方列表的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型式,所以很重要的一點:

只要瀏覽器就能看!!

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

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


參考資料

GE圖資來源說明

WGS84(世界大地測量系統)

Pseudo-Mercator

Qgis2threejs官方文件