構(gòu)TIN實驗報告_第1頁
構(gòu)TIN實驗報告_第2頁
構(gòu)TIN實驗報告_第3頁
構(gòu)TIN實驗報告_第4頁
構(gòu)TIN實驗報告_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、地球科學(xué)與環(huán)境工程學(xué)院2014-2015學(xué)年第2學(xué)期基于離散點的構(gòu)TIN算法數(shù)字高程模型學(xué) 號 20123184 姓 名 饒菁 指導(dǎo)教師 齊華 班 級 測繪工程一班 目錄一、實驗任務(wù)及成果3二、實驗流程3(1)主要步驟:3(2)詳細步驟:4三、實驗主要步驟及運行界面5(一)界面設(shè)計5(二)展點及三角網(wǎng)繪制6(三)構(gòu)TIN7四、實驗創(chuàng)新點9五、實驗總結(jié)10(1)、問題及解決方案10(2)、實驗心得12一、實驗任務(wù)及成果(1)、實驗任務(wù):利用離散點三維坐標構(gòu)建三角網(wǎng),源數(shù)據(jù)展示:(源數(shù)據(jù)各點間用換行區(qū)分,每點各坐標間用空格分隔。)Figure 1 源數(shù)據(jù)格式(2)、實驗成果:計算所得三角網(wǎng)如圖:F

2、igure 2 成果展示二、實驗流程(1)主要步驟:1、首先,找出離散點中相距最近的兩點,連接兩點形成TIN的初始基線;2、然后,找出第三個點構(gòu)成首三角形,尋找第三點可按Delaunay三角形的判斷法則尋找,也可按距離基線中點最近的原則尋找。3、連接新點和兩個基線端點形成首三角形,以兩條新邊為基線,重復(fù)以上過程,直至兩條新邊擴展完成;4、重復(fù)以上過程,直至不再擴展三角形,此時TIN構(gòu)建完成。(2)詳細步驟:1、確定首三角形選擇位于所有離散點中間的點作為首三角形的第一個頂點,記錄在t11中;找出離該點最近的點作為首三角形的第二個頂點,記錄在t21中;之后尋找與前兩個頂點連線中點最近,且不與兩頂點

3、共線的點(本實驗中以斜率相同來判別),作為首三角形的第三個頂點,記錄在t31中;用變量L記錄已經(jīng)形成的三角形數(shù),則此時L=1。2、擴展三角形從K號三角形的第一條邊開始擴展(此時K=1);判斷該條邊是否已經(jīng)被擴展過(本實驗中將已擴展的邊存放在一數(shù)組中,以便進行后續(xù)判斷),如果沒有被擴展,將該邊兩頂點進行標記,執(zhí)行以下步驟,否則轉(zhuǎn)向下一條邊。尋找可能的擴展點依次判斷所有點,選取與K號三角形另一個點異側(cè)的點作為候選擴充點,在其中尋找擴張邊張角最大的點(利用余弦定理)作為要擴充的點。A、利用直線判別公式排除與K號三角形另一個點同側(cè)的點,如下所示:式中:任一點代入直線判別式,若,則P位于該邊的正區(qū);若,

4、則P位于該邊上;若,則P位于該邊的負區(qū);B、余弦定理。尋找最大之,由于,即cos最小。 添加選出的頂點,在要繪出的編數(shù)組中加入該點到線段兩端點的邊。當K號三角形的三條邊都擴展完成后,K=K+1,轉(zhuǎn)向下一個三角形擴展。3、迭代重復(fù)以上步驟,直至所有三角形擴展完畢,此時滿足K=L。三、實驗主要步驟及運行界面(一)界面設(shè)計1、在本實驗中使用AE,以便進行三角網(wǎng)的繪制與查看。主界面設(shè)計如下:Figure 3 界面設(shè)計Figure 4 計算結(jié)果界面2、菜單項:未錄入數(shù)據(jù)時,計算項不可用Figure 5 菜單欄3、工具欄:僅添加對圖層進行查看的工具。Figure 6 工具條4、狀態(tài)欄:未打開數(shù)據(jù)時,狀態(tài)欄

5、顯示就緒:打開點數(shù)據(jù)后,更具鼠標的移動,顯示坐標值:計算時顯示進度條:(二)展點及三角網(wǎng)繪制本實驗中采取“新建圖層將實體對象添加到圖層”的方法:1、 新建圖層:由于出了點數(shù)據(jù)以外,還要加載線數(shù)據(jù),所以函數(shù)中的參數(shù)包括esriGeometryType,用于加入相應(yīng)的幾何屬性2、 將實體對象添加到圖層:存在圖層的情況下,利用空間編輯來插入新的實體對象。3、 坐標點展示圖:Figure 7 展坐標點(三)構(gòu)TIN1、主要函數(shù)包括:計算距離直線中點最近點、計算最近點、判斷邊是否經(jīng)過擴展、三角網(wǎng)計算函數(shù)等。具體代碼在程序中可以詳細看到,此處不再贅述。2、計算最初幾個離散點:可以看出,計算結(jié)果正確。Fig

6、ure 8 少部分點的計算3、最終成果:Figure 9 三角網(wǎng)放大后效果:Figure 10 放大后效果四、實驗創(chuàng)新點1、展離散點時,展出要素而非元素IPolyline ply1 = polyline as IPolyline; addFeature("polyline", ply1);2、計算時將坐標十萬位或百萬位減去,簡便計算for (int i = 0; i < points_number; i+) pointsi, 0 = points_oldi, 0 - 500000; pointsi, 1 = points_oldi, 1 - 1125000; poin

7、tsi, 2 = points_oldi, 2; pointsi, 3 = 0; 3、 將已擴展邊放入數(shù)組中,以便判斷4、 可將圖層保存為shapfile文件,導(dǎo)入到arcgis中Figure 11 導(dǎo)出shapefile文件Figure 12 Arcmap中三角網(wǎng)展示5、鼠標移動,顯示地圖中坐標Figure 13 坐標值顯示五、實驗總結(jié)(1)、問題及解決方案Question1:離散點無法展在地圖中運行后,程序不報錯,但無顯示。Solution:最初采取展元素的方法,但由于shapfile文件的范圍過大,且不好確定,顯示效果不佳。最終采用展要素點的方法。Question2:不進入擴展階段循環(huán)最

8、初K=1,L=1,使用while不進入循環(huán)。Solution:將循環(huán)方法改為do-while方法。Question3:擴展點選出共線點在沒有修改前,算法中選出了cos最大處點。Solution:程序所需為角度最大角,由于,即cos最小。Question4:三角形邊出現(xiàn)交叉點數(shù)稍多后,開始出現(xiàn)交叉。Solution:為判斷每條邊是否已被利用過兩回,或該邊已被擴展過。前者的判斷比較困難,因此利用后者進行判斷。public int judge(int a, int b) int c = 0; for (int i = 0; i < kuozhan_number; i+) if (kuozhan

9、biani, 0 = a && kuozhanbiani, 1 = b) c+; if (kuozhanbiani, 1 = a && kuozhanbiani, 0 = b) c+; return c; Question5:未顯示最后一條,最后一個點無論參與計算的點個數(shù),都不顯示最后一條邊或點。Solution:循環(huán)展線時忽略了數(shù)組從零開始,展邊時少展了一條。讀取點數(shù)據(jù)時,未讀入最后一行數(shù)據(jù)。Question6:從K=1102開始,出現(xiàn)交叉現(xiàn)象在K=1102前,程序輸出結(jié)果均正常,1102開始出現(xiàn)很長的交叉線。Figure 14 異常結(jié)果Solution:從A

10、B邊擴展三角形時,雖然排除了AB點,但在頂點中添加了AB點作為頂點,第三點為0。解決方法是調(diào)整用于判斷的參數(shù)的位置。if (f * f_unknown < 0 && f != (-1) * f_unknown) / temp2 = 1;a = distance(j, t1L); b = distance(j, t2L); c = distance(t1L, t2L); if (a = 0 | b = 0) continue; temp2 = 1; /調(diào)整此句代碼位置if (temp2 = 0)/若無可擴展點,則三角形數(shù)不增加 L - = 1;(2)、實驗心得我在完成本次實

11、驗的過程中使用了較長的時間,主要過程可以分為三個部分:完成前的理論知識儲備、坐標點及三角網(wǎng)圖形的顯示、三角網(wǎng)計算。首先是完成實驗前的準備工作,在這一階段,我仔細閱讀了老師分發(fā)的資料,將思路理清晰,思考最基本的變量存儲方式等內(nèi)容,并標注容易出現(xiàn)錯誤的點。在基本理清思路后,我就開始編寫讀取txt文本格式坐標點的代碼,由于本次程序中坐標點數(shù)據(jù)各個點間均有換行,且每個坐標間用空格隔開,因此讀取工作較為簡單。其次就是坐標點及三角網(wǎng)線的顯示階段??紤]到本次實驗如果不輸出圖像很難判斷出三角網(wǎng)的正確與否,且調(diào)試程序時需要直觀的顯示。所以我在編寫計算的相關(guān)算法前,先編寫了展點,展線的程序。這學(xué)期正在學(xué)期GIS應(yīng)用開發(fā)的相關(guān)內(nèi)容,且本次試驗中需要顯示較多的點和線,所以選擇了使用AE來顯示圖形要素。由于對AE的掌握程度不高,所以這一階段使用的時間很長,并且咨詢了很多老師和學(xué)長學(xué)姐。最后程序在這一部分的結(jié)果較好,這點還是讓我很欣慰的。在所有的準備工作做好后,我就開始了計算部分的編寫,這一部分需要一個連貫的思維,所以我盡量選擇了整塊的時間來編寫。編寫的過程雖然不長,但調(diào)試的過程卻比較漫長。編寫的程序中會存在很多的小問題,直接讀是很難發(fā)現(xiàn)的,我使用了相當長的時間來調(diào)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論