山頭繪製程式 - 健行

Cara avatar
By Cara
at 2010-07-19T03:05

Table of Contents

2010/07/27更新:

新版程式更新如下:
http://byte.ec.kuas.edu.tw/~ychsin/DEM/DEM_v0.02.rar
增加距離/霧氣淡出功能, 並且增加介面可以調整繪圖色彩選項, 以及相
關的地理參數. 此外加上繪製天空的加速機制.



自製的山頭繪製程式, 起因是看到amjads大用程式跑出來的漂亮大圖, 很
想也自己寫一個來用, 另一方面自己是認山頭白痴, 有這樣的程式以後爬
山拍照認山頭就容易多了XD

程式執行畫面:
http://byte.ec.kuas.edu.tw/~ychsin/DEM/ScreenShot.PNG


I. 下載程式

請至以下網址下載程式:
http://byte.ec.kuas.edu.tw/~ychsin/DEM/DEM_v0.01.rar
並解開至硬碟.



II. 安裝方式

本程式不需要安裝, 直接執行DEM.exe即可. 如果只單純要開啟繪製好的
結果則可直接使用, 但是要繪製地形則會用到地形資料, 需參考III.另外
下載一些網路上的資料庫.


III. 下載地形資料庫

繪製地形所需用到的共有三個資料庫, 分別為:

1. Aster GDEM地形資料庫
由於版權問題, 以及檔案過大, 所以無法附在程式裡, 需從:
http://asterweb.jpl.nasa.gov/gdem.asp
下載DEM資料並放至DEM/目錄下. 要完整繪製台灣地區請至少下載以下區域:
ASTGTM_N21E120_dem.tif
ASTGTM_N21E121_dem.tif
ASTGTM_N22E120_dem.tif
ASTGTM_N22E121_dem.tif
ASTGTM_N23E119_dem.tif
ASTGTM_N23E120_dem.tif
ASTGTM_N23E121_dem.tif
ASTGTM_N24E119_dem.tif
ASTGTM_N24E120_dem.tif
ASTGTM_N24E121_dem.tif
ASTGTM_N25E121_dem.tif
ASTGTM_N25E123_dem.tif

2. 交通部運輸研究所的全臺(包含外島)河流圖層
同樣因為版權問題, 所以請至下列網址下載:
http://www.iot.gov.tw/ct.asp?xItem=154948&ctNode=1091
請下載Twd97經緯度 MIF格式的 全臺(包含外島)河流圖層,並將TWN_RIVER.mid
及TWN_RIVER.mif放至Shape/目錄下.

3. 山頭/基石資料
這是由登山補給站7777大所整理的基石資料庫:
http://www.keepon.com.tw/ActiveSite/Stone/Index.asp
這已經附在RAR裡不需另外下載了. 感謝7777大及網路上其他蒐集製作基石
資料庫的山友們.


IV. 瀏覽介面

程式介面很簡單, 首先可以開啟Sample/目錄下的範例輸出結果, 開啟完
成後程式右方的表格會列出圖中可見的山頭列表, 按一下所選的山頭會
在圖中以紅色小圈圈標示出來.

另外上方有三個游標模式:

1. Cursor Mode
可用十字游標在圖上移動, 程式下方的Status Bar會顯示出游標所在的
座標, 海拔高度及離觀測點的距離.

2. Marker/Label Mode
程式會以紅色圓圈標定離游標最近的山頭, 並且游標指到山頭的話會顯
示出山名及高度. 按下紅色圓圈則會在上方加上山頭標示, 並可以拖曳
標示文字, 移動其擺放的位置.

3. Render Range Selection
可以方框圈選畫面上的範圍, 作為下次繪製的繪圖範圍及觀測點參數.

V. 繪製地形

如果安裝完上述的資料庫後, 就可以設定好繪圖範圍及觀測點參數並按
下"繪製"按鈕進行繪製. 繪圖範圍設定是水平與垂直的視角範圍, 以及
輸出影像的大小; 觀測點可以設定畫面中央的方位角和仰角, 以及觀測
點的WGS84經緯度. 繪製完成後可以選擇Save Render Result將結果存
檔, 或是選擇Save As Bitmap File將結果輸出成BMP圖檔.


VI. 其他

本程式非常吃記憶體, 如果要進行地型繪製請準備至少200MB的RAM空間,
輸出圖的尺寸越大RAM吃越兇. CPU資源方面, 以Sample/東勢.rv這張2048x
737的圖來說, 我的Thinkpad X200 Dual Core P8600 (2.4GHz)大約要花
掉24分鐘運算. 建議可以先用小尺寸(圖寬1024)確認出圖範圍無誤後再進
行大尺寸的繪圖.

因為一開始只是自己寫好玩的, 所以程式的容錯性很差, 尤其是在UI上.
為了減少記憶體用量及運算量, 整個演算法用了很多偷吃步, 因此繪製
結果的準確性絕對比不上專業GIS軟體, 但是用來認山頭應該是夠用了.
最後, 因為自己不是地理相關背景出身的, 整個演算法都是從網路上找
資料跟自己亂想的, 所以如果有所錯誤也請不吝指教~~

另外, 由於程式的輸出是基於第三方的資料(Aster GDEM和交通部), 而
我並不清楚這樣使用在法律上的規範, 故為了避免困擾請勿做商業用途,
謝謝.

--
Tags: 健行

All Comments

Hardy avatar
By Hardy
at 2010-07-19T08:56
推一下山頭標示的介面,我的程式吃ram 1.6gb,CPU:Sempron1.6
Candice avatar
By Candice
at 2010-07-22T18:33
畫360度的跨海峽的圖平均大約在30分鐘左右,現在還在想用
OpenMP 會不會更快
Cara avatar
By Cara
at 2010-07-24T15:51
我覺得用這很適合平行處理,因為每一個pixel都是獨立的運算,
Bennie avatar
By Bennie
at 2010-07-26T19:31
透過適當的工作編排應該可以大幅提昇速度.應該找一台SMP的
機器來玩玩看XD
Anonymous avatar
By Anonymous
at 2010-07-31T05:13
這陣子想到應該可以安排飛行軌跡來製作一段飛覽台灣的動畫
Joe avatar
By Joe
at 2010-08-02T07:19
你的筆電不就是雙核? 光這個用執行緒就應該可以再減個 1/3
Audriana avatar
By Audriana
at 2010-08-03T18:22
的時間 (推估)
Emma avatar
By Emma
at 2010-08-04T02:38
推~ 感謝分享!!
Frederica avatar
By Frederica
at 2010-08-06T20:02
看樣子明年要買i5外加8GB的配備了。
Cara avatar
By Cara
at 2010-08-11T10:34
推一個~
Noah avatar
By Noah
at 2010-08-14T00:19
呵..沒在BCB上寫過MultiThread,研究中.原本打算直接改寫
Elvira avatar
By Elvira
at 2010-08-16T06:28
丟到UNIX Server上跑一連串的動畫XD
Jack avatar
By Jack
at 2010-08-17T20:59
推一個~ 我的程式是依照距離上色,但無法自動標示山頭
而且沒有把河流的部份寫進去..
Anonymous avatar
By Anonymous
at 2010-08-22T08:15
原來大家都在做一樣的事情XD 目前正將追跡演算法獨立寫成
Lauren avatar
By Lauren
at 2010-08-26T20:56
Render Engine,方便跨平台及進行跨分散式運算
Joe avatar
By Joe
at 2010-08-31T14:25
我是建議依照距離加上"霧氣"的效果或淡出,以免山脈太多排
顏色都差不多,會擁擠在一起分不清楚.
Odelette avatar
By Odelette
at 2010-09-04T04:15
請問本程式與Win7相容嗎?我執行時產生錯誤視窗
"Floating point division by zero"
Mason avatar
By Mason
at 2010-09-07T21:54
另外我無法讀取河流資料。
David avatar
By David
at 2010-09-13T00:01
簡單加上距離淡出效果. Win7的問題我要找平台來試一下,理論
上應該都可以相容才是.
Heather avatar
By Heather
at 2010-09-16T05:20
又找到一個bug: 當繪製到天空時會突然變慢約10倍.
Odelette avatar
By Odelette
at 2010-09-16T22:39
不是記憶體問題,因為我用小圖試過了,問題依然無法解決
Yuri avatar
By Yuri
at 2010-09-21T14:53
這個問題很奇怪,因為天空理論上無任何計算,卻反而變慢...
Kumar avatar
By Kumar
at 2010-09-25T07:41
天空是因為追跡沒有找到東西,所以會跑到超出設定的最大距離
Annie avatar
By Annie
at 2010-09-28T16:07
或是超過設定的海拔上限才會終止,所以才會這麼慢..
Bethany avatar
By Bethany
at 2010-10-01T06:26
我覺得可以稍微改寫成只要偵測到一行全為天空,以上的全部
Iris avatar
By Iris
at 2010-10-02T13:34
無條件填滿為天空,這樣可以節省不少運算時間~
更精確講,只要某像素為天空,該像素以上可直接填滿為天空
Adele avatar
By Adele
at 2010-10-02T21:59
因為山坡不會倒掛在天上,這樣計算不會有錯誤又可節省時間
Franklin avatar
By Franklin
at 2010-10-07T09:17
感謝evanzxcv的好方法,這部份已經改好了.待其他部份也完成
Kyle avatar
By Kyle
at 2010-10-12T00:06
後再更新一版上來~~
Tom avatar
By Tom
at 2010-10-12T01:58
evanzxcv大:我在Win7試過沒問題耶.不過有發現如果河流資料
Jake avatar
By Jake
at 2010-10-13T14:09
下載成TM2格式的會發生你所說的錯誤,不知道是不是這個原因

請問有山友撿到無線電嗎?

Genevieve avatar
By Genevieve
at 2010-07-19T01:23
※ 引述《msrx105 (小山貓)》之銘言: : 請問有山友最近在大霸撿到無線電嗎? : 7/16(五)弄丟的 : 在99山莊到大鹿林道管制處中間 : 範圍很大... : 我們一位隊員把它插在背包上,後來要找的時候就...不見了= = : 是一台舊式的無線電,上面有屏科大的財產標籤 : 雖然最近的午後大雷雨 ...

去中橫東段玩 有幾座山頭請問

Blanche avatar
By Blanche
at 2010-07-18T23:25
http://www.wretch.cc/album/show.php?i=SnoopyJETERandamp;b=221andamp;f=1788305746andamp;p=6 請問左邊光禿禿的是不是奇萊北壁 http://www.wretch.cc/album/show.php?i=SnoopyJE ...

請問有山有撿到無線電嗎?

Hardy avatar
By Hardy
at 2010-07-18T11:55
請問有山友最近在大霸撿到無線電嗎? 7/16(五)弄丟的 在99山莊到大鹿林道管制處中間 範圍很大... 我們一位隊員把它插在背包上,後來要找的時候就...不見了= = 是一台舊式的無線電,上面有屏科大的財產標籤 雖然最近的午後大雷雨,可能已經淋到壞掉了 但還是希望有山友發現的話,可以跟我連絡 也已經有跟 ...

請問這週六7/24有人要去爬山嗎?

Frederic avatar
By Frederic
at 2010-07-18T08:56
難得休假~~太久沒有往山裡跑了 請問這週六有人要去爬山嗎?可不可跟^^and#34; 好想念大自然喔~~ 我沒有什麼裝備~~只能當天來回的那種~~ 我只爬過馬拉邦山、北得拉曼andlt;這其中好像又可以連到其它的山路andgt; 如果有的話可以再回我信箱嗎^^ 好像沒有人這樣徵過厚~~ 這樣徵可以嗎atat ...

北部郊區十最?

Connor avatar
By Connor
at 2010-07-17T16:34
請問各位版友就經驗裡在北部郊區有哪些地方 是令你爬過印象深刻, 或許是由於風景壯麗、林相優美、秘境等等原因 我走過的地方不多,但目前覺得最讚的是 東北角山稜。 想將各位的意見列入之後出遊的目標。 - ...