[分享] 山頭繪製程式

看板Hiking (登山)作者 (none)時間16年前 (2010/07/19 03:05), 編輯推噓7(7032)
留言39則, 6人參與, 最新討論串1/2 (看更多)
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和交通部), 而 我並不清楚這樣使用在法律上的規範, 故為了避免困擾請勿做商業用途, 謝謝. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.216.114.18

07/19 06:04, , 1F
推一下山頭標示的介面,我的程式吃ram 1.6gb,CPU:Sempron1.6
07/19 06:04, 1F

07/19 06:07, , 2F
畫360度的跨海峽的圖平均大約在30分鐘左右,現在還在想用
07/19 06:07, 2F

07/19 06:07, , 3F
OpenMP 會不會更快
07/19 06:07, 3F

07/19 13:47, , 4F
我覺得用這很適合平行處理,因為每一個pixel都是獨立的運算,
07/19 13:47, 4F

07/19 13:50, , 5F
透過適當的工作編排應該可以大幅提昇速度.應該找一台SMP的
07/19 13:50, 5F

07/19 13:50, , 6F
機器來玩玩看XD
07/19 13:50, 6F

07/19 13:52, , 7F
這陣子想到應該可以安排飛行軌跡來製作一段飛覽台灣的動畫
07/19 13:52, 7F

07/19 18:19, , 8F
你的筆電不就是雙核? 光這個用執行緒就應該可以再減個 1/3
07/19 18:19, 8F

07/19 18:22, , 9F
的時間 (推估)
07/19 18:22, 9F

07/19 20:57, , 10F
推~ 感謝分享!!
07/19 20:57, 10F

07/19 21:27, , 11F
看樣子明年要買i5外加8GB的配備了。
07/19 21:27, 11F

07/19 23:42, , 12F
推一個~
07/19 23:42, 12F

07/20 00:11, , 13F
呵..沒在BCB上寫過MultiThread,研究中.原本打算直接改寫
07/20 00:11, 13F

07/20 00:12, , 14F
丟到UNIX Server上跑一連串的動畫XD
07/20 00:12, 14F

07/20 21:23, , 15F
推一個~ 我的程式是依照距離上色,但無法自動標示山頭
07/20 21:23, 15F

07/20 21:23, , 16F
而且沒有把河流的部份寫進去..
07/20 21:23, 16F

07/21 00:44, , 17F
原來大家都在做一樣的事情XD 目前正將追跡演算法獨立寫成
07/21 00:44, 17F

07/21 00:45, , 18F
Render Engine,方便跨平台及進行跨分散式運算
07/21 00:45, 18F

07/21 01:35, , 19F
我是建議依照距離加上"霧氣"的效果或淡出,以免山脈太多排
07/21 01:35, 19F

07/21 01:35, , 20F
顏色都差不多,會擁擠在一起分不清楚.
07/21 01:35, 20F

07/21 01:40, , 21F
請問本程式與Win7相容嗎?我執行時產生錯誤視窗
07/21 01:40, 21F

07/21 01:40, , 22F
"Floating point division by zero"
07/21 01:40, 22F

07/21 01:50, , 23F
另外我無法讀取河流資料。
07/21 01:50, 23F

07/22 00:15, , 25F
簡單加上距離淡出效果. Win7的問題我要找平台來試一下,理論
07/22 00:15, 25F

07/22 00:15, , 26F
上應該都可以相容才是.
07/22 00:15, 26F

07/22 04:36, , 27F
又找到一個bug: 當繪製到天空時會突然變慢約10倍.
07/22 04:36, 27F

07/22 04:37, , 28F
不是記憶體問題,因為我用小圖試過了,問題依然無法解決
07/22 04:37, 28F

07/22 04:40, , 29F
這個問題很奇怪,因為天空理論上無任何計算,卻反而變慢...
07/22 04:40, 29F

07/22 10:00, , 30F
天空是因為追跡沒有找到東西,所以會跑到超出設定的最大距離
07/22 10:00, 30F

07/22 10:01, , 31F
或是超過設定的海拔上限才會終止,所以才會這麼慢..
07/22 10:01, 31F

07/22 20:50, , 32F
我覺得可以稍微改寫成只要偵測到一行全為天空,以上的全部
07/22 20:50, 32F

07/22 20:51, , 33F
無條件填滿為天空,這樣可以節省不少運算時間~
07/22 20:51, 33F

07/22 20:51, , 34F
更精確講,只要某像素為天空,該像素以上可直接填滿為天空
07/22 20:51, 34F

07/22 20:52, , 35F
因為山坡不會倒掛在天上,這樣計算不會有錯誤又可節省時間
07/22 20:52, 35F

07/22 22:46, , 36F
感謝evanzxcv的好方法,這部份已經改好了.待其他部份也完成
07/22 22:46, 36F

07/22 22:47, , 37F
後再更新一版上來~~
07/22 22:47, 37F
※ 編輯: ychsin 來自: 61.216.114.226 (07/27 23:02)

07/27 23:03, , 38F
evanzxcv大:我在Win7試過沒問題耶.不過有發現如果河流資料
07/27 23:03, 38F

07/27 23:04, , 39F
下載成TM2格式的會發生你所說的錯誤,不知道是不是這個原因
07/27 23:04, 39F
※ 編輯: ychsin 來自: 61.216.114.226 (07/27 23:05)
文章代碼(AID): #1CGr22fc (Hiking)
討論串 (同標題文章)
文章代碼(AID): #1CGr22fc (Hiking)