淺談測(cè)繪內(nèi)業(yè)中的等高線批量自動(dòng)連接處理_第1頁(yè)
淺談測(cè)繪內(nèi)業(yè)中的等高線批量自動(dòng)連接處理_第2頁(yè)
淺談測(cè)繪內(nèi)業(yè)中的等高線批量自動(dòng)連接處理_第3頁(yè)
淺談測(cè)繪內(nèi)業(yè)中的等高線批量自動(dòng)連接處理_第4頁(yè)
淺談測(cè)繪內(nèi)業(yè)中的等高線批量自動(dòng)連接處理_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

淺談測(cè)繪內(nèi)業(yè)中的等高線批量自動(dòng)連接處理摘要:針對(duì)AAutoCAAD環(huán)境下,測(cè)繪內(nèi)業(yè)工工作中等高線線在遇到高程程注記、沖溝溝、陡坎等地地貌符號(hào)時(shí)產(chǎn)產(chǎn)生的斷裂問(wèn)問(wèn)題,利用VBA編制宏命令,以一種人機(jī)機(jī)交互的方式式實(shí)現(xiàn)斷裂等等高線的批量量自動(dòng)連接處處理,極大地提高高了工作效率率。關(guān)鍵詞:等高線線;連接;VBA在測(cè)繪內(nèi)業(yè)的工工作中,需要對(duì)地圖圖中的地理要要素如:高程注記、獨(dú)獨(dú)立房屋、等等高線等進(jìn)行行處理和提取取,而等高線在在地圖中占有有非常重要的的位置,是對(duì)地形進(jìn)進(jìn)行分析的關(guān)關(guān)鍵,故對(duì)等高線線的處理是測(cè)測(cè)繪內(nèi)業(yè)工作作的首要任務(wù)務(wù)。理想的等等高線應(yīng)該是是完整的閉合合曲線,但是為了出出圖的需要,等高線在遇遇到高程注記記、沖溝、陡陡坎等地貌符符號(hào)時(shí)會(huì)產(chǎn)生生斷裂(如圖1所示)。為了得到到完整的等高高線,必須將這些些被打斷的各各個(gè)部分連接接起來(lái),以便之后生生成圖形的數(shù)數(shù)字高程模型型(DEM)并進(jìn)行各種種分析操作。目目前斷點(diǎn)的處處理方法主要要有基于形態(tài)態(tài)變換的斷線線連接、顧及及拓?fù)潢P(guān)系的的連接方法,基于先驗(yàn)知知識(shí)的解決方方法等,對(duì)于不同的的斷裂原因采采用不同的方方法進(jìn)行處理理,更具有針對(duì)對(duì)性。根據(jù)本本次作業(yè)處理理的實(shí)際情況況,提出了選取取兩組等高線線自動(dòng)進(jìn)行批批量連接的方方法,不僅針對(duì)性性強(qiáng)而且方便便可行,高效地處理理了工作中所所遇到的問(wèn)題題。1、程序設(shè)計(jì)思思路正常情況下等高高線是有高程程的,這種情況處處理起來(lái)比較較簡(jiǎn)單,以高程為依依據(jù)把高程相相等的等高線線進(jìn)行連接就就可以了,程序的實(shí)現(xiàn)現(xiàn)也簡(jiǎn)單易行行。但在實(shí)際際工作中有時(shí)時(shí)由于只注意意等高線的平平面位置,忽視高程的的存在,造成了一些些圖中等高線線沒(méi)有高程或或者高程都為為零的現(xiàn)象,這樣處理起起來(lái)就比較復(fù)復(fù)雜。本次設(shè)設(shè)計(jì)針對(duì)這種種情況進(jìn)行處處理。(1)畫兩條輔輔助線用欄選選方式找到與與這兩條輔助助線相交的兩兩組需要連接接的等高線,對(duì)每組等高高線根據(jù)其交交點(diǎn)與輔助線線起點(diǎn)的距離離確定兩組等等高線中應(yīng)互互相連接的兩兩條線;(2)對(duì)這兩條條線根據(jù)它們們端點(diǎn)的遠(yuǎn)近近距離進(jìn)行判判斷,把距離最近近的兩點(diǎn)進(jìn)行行連接(如圖2所示)。采用這種種判斷依據(jù)的的原因是:處理的斷裂裂等高線中,并不都是頭頭尾相連的,有些是頭頭頭相連或尾尾尾相連的,只能根據(jù)端端點(diǎn)距離的遠(yuǎn)遠(yuǎn)近確定要連連接的兩點(diǎn)。在本次程序設(shè)計(jì)計(jì)中需要處理理的等高線有有兩種線型,分別是2維多段線LWPOLLYLINEE和3維多段線POLY--LINE,,處理方法大大致相同,下面分別進(jìn)進(jìn)行介紹。2、等高線的連連接處理AutoCADD圖形中每個(gè)個(gè)圖元實(shí)體都都有一個(gè)屬性性集,用于記錄該該圖元實(shí)體的的各種屬性。修修改圖形中的的文字屬性,如圖層、樣樣式、顏色等等,實(shí)際上是改改變文字圖元元實(shí)體的屬性性集。要改變變圖元實(shí)體,首先要選擇擇圖元實(shí)體,形成圖元實(shí)實(shí)體選擇集。提示用戶在圖形形窗口中選擇擇實(shí)體,用Utiliity對(duì)象的GetPooint方法獲取鼠鼠標(biāo)按下的兩兩點(diǎn),并通過(guò)這兩兩點(diǎn)畫一條輔輔助線line11:p11=TThisDrrawingg.Utillity.GGetPoiint(,"輸入第一條條線的第一點(diǎn)點(diǎn):")p12=TThisDrrawingg.Utillity.GGetPoiint(p11,"輸入第一條條線的第二點(diǎn)點(diǎn):")Setlinne1=ThisDDrawinng.ModdelSpaace.AAddLinne(p111,p12))用同樣的方法畫畫第二條輔助助線line2確定其兩個(gè)個(gè)端點(diǎn)p21、p22,分別創(chuàng)建建兩個(gè)選擇集集:SetssettObj1==ThissDrawiing.SSelecttionSeets.Addd("sss1")SetsseetObj22=ThhisDraawing..SeleectionnSets..Add("sss2")由于地圖中不僅僅僅只包括等等高線還有很很多其他的地地理要素,如鐵路、房房屋等,在畫輔助線線的過(guò)程中可可能會(huì)包含別別的地理要素素和要處理的的等高線無(wú)關(guān)關(guān),所以要對(duì)選擇擇集進(jìn)行過(guò)濾濾處理,將符合條件件的等高線放放置到創(chuàng)建的的結(jié)果集中,代碼如下:gpCode((0)=0dataVallue(0))="LLWPOLYYLINE""'確定等高線線的線型gpCode((1)=8dataVallue(1))="EE"'確定等高線線所在的圖層層gpCode((2)=62dataVallue(2))=7'確定繪制的的等高線顏色色groupCoode=gpCoddedataCodde=ddataVaaluemode=acSellectioonSetFFence'確定選擇方方式為欄選把符合條件的線線加入到選擇擇集中,其中pointts為數(shù)組,分分別存放了p11、p12點(diǎn)的坐標(biāo)及p21、p22點(diǎn)的坐標(biāo):ssetObjj1.SeelectBByPolyygonmmode,pointts,grroupCoode,daataCoddessetObjj2.SeelectBByPolyygonmmode,pointts,grroupCoode,daataCodde將已選中的等高高線高亮顯示示并刷新:ssetObjj1.HigghlighhtTrueessetObjj1.Upddate在人為選擇的過(guò)過(guò)程中可能出出現(xiàn)兩個(gè)選擇擇集中的等高高線數(shù)量不一一致,遇到這種情情況以數(shù)量少少的為準(zhǔn)進(jìn)行行連接:IfssettObj1..Countt>sseetObj22.CounntThenniCount==ssettObj2..CounttElseiCount==ssettObj1..CounttEndIf兩個(gè)選擇集中分分別存放有很很多條等高線線,按照等高線線在選擇集中中的存放次序序分別找到互互相匹配的兩兩條線。每條條等高線都有有兩個(gè)端點(diǎn),不僅要確定定哪兩條線是是需要連接的的,還要確定這這兩條線的哪哪兩個(gè)點(diǎn)需要要連接,具體辦法是是用兩點(diǎn)間的的距離公式求求出與距離最最近的點(diǎn),這兩個(gè)點(diǎn)就就是要連接的的點(diǎn)?;谏仙鲜鏊枷?首先找到兩兩條等高線的的4個(gè)端點(diǎn):ps1=pplineLLW1.Cooordinnate(00)pe1=pplineLLW1.Cooordinnate(nn1-11)ps2=pplineLLW2.Cooordinnate(00)pe2=pplineLLW2.Cooordinnate(nn2-11)計(jì)算距離:dist1=Sqr(((ps1(00)-ppe2(0)))^22+(pps1(1))-pe22(1))^2)dist2=Sqr(((ps1(00)-pps2(0)))^22+(pps1(1))-ps22(1))^2)dist3==Sqr(((pe1((0)-ps2(00))^22+(ppe1(1))-ps22(1))^2)dist4==Sqr(((pe1((0)-pe2(00))^22+(ppe1(1))-pe22(1))^2)找到四個(gè)距離的的最小值,每一段最小小距離代表了了圖中4種不同的情情況:當(dāng)dist1為為最小時(shí),說(shuō)明第一條條等高線應(yīng)接接于第二條等等高線之后,用AddVeertex方法插入節(jié)節(jié)點(diǎn),在plineeLW2的末端點(diǎn)后后增加一個(gè)節(jié)節(jié)點(diǎn)將plineeLW1上的節(jié)點(diǎn)逐逐一插入進(jìn)來(lái)來(lái),這樣就實(shí)現(xiàn)現(xiàn)了plineeLW2與plineeLW1的連接,實(shí)際是從增增加的節(jié)點(diǎn)開開始按照plineeLW1各節(jié)點(diǎn)所在在的位置將plineeLW1重新畫了一一遍。畫好后后改變一下顏顏色,并將原來(lái)被被重畫的線刪刪除。具體代代碼如下:Fork=00Tonn1-11index==(UBoound(pplineLLW2.Cooordinnates))+1))/2plineLWW2.AdddVerteexinddex,pplineLLW1.Cooordinnate(kk)Next其中,n1是pplineLLW1上節(jié)點(diǎn)的個(gè)個(gè)數(shù),indeex是plineeLW2上節(jié)點(diǎn)的個(gè)個(gè)數(shù)。UBounnd確定數(shù)組的的最大下標(biāo),由于是2維多段線,數(shù)組的坐標(biāo)標(biāo)又是從零開開始計(jì)算的,故要得到等等高線上節(jié)點(diǎn)點(diǎn)的個(gè)數(shù)n,需要將UBounnd取得的數(shù)值值加1并除以2。當(dāng)dist2為為最小時(shí),說(shuō)明兩條等等高線的起點(diǎn)點(diǎn)相距最近,由于AddVeertex方法不能在在起點(diǎn)插入節(jié)節(jié)點(diǎn),故需要將其其中一條線按按照反方向重重畫一遍,然后將另一一條線的各節(jié)節(jié)點(diǎn)插入到這這條新畫的線線中,改變新畫線線的顏色,并將原來(lái)被被重畫的兩條條線都刪除掉掉。j=0Fork=n11-1To0Step-1p=pliineLW11.Coorrdinatte(k)point(jj*2)=p(00):pooint(jj*2++1)==p(1))j=j+1NextSetplLLW1=ThhisDraawing..ModellSpacee.AddLLight--WeighhtPolyyline((pointt)plLW1.layerr="EE"……當(dāng)dist3為為最小時(shí),說(shuō)明第二條條等高線應(yīng)接接于第一條等等高線之后,這種情況可可以從plineeLW1末端點(diǎn)開始始逐一將plineeLW2上各節(jié)點(diǎn)插插入進(jìn)來(lái)。最最后將plineeLW2刪除。當(dāng)dist4為為最小時(shí),兩條等高線線的末端點(diǎn)相相距最近,這時(shí)可將第第二條等高線線接于第一條條等高線之后后,也可將第一一條等高線接接于第二條等等高線之后。AddVeertex方法在加節(jié)節(jié)點(diǎn)的過(guò)程中中對(duì)節(jié)點(diǎn)的添添加順序沒(méi)有有要求,也就是說(shuō)先先加被連接等等高線的起點(diǎn)點(diǎn)與先加被連連接等高線的的末端點(diǎn)可以以達(dá)到相同的的效果。最后后將被連接的的那條等高線線刪除。在做完前面4種種情況的處理理后,便完成了2維等高線的的連接,連接后的效效果如圖3所示。圖3連接處理理后的等高線線圖需要說(shuō)明的是::在計(jì)算機(jī)屏屏幕上看到的的只是一個(gè)圖圖幅的某一部部分,所以在地圖圖中屏幕可見(jiàn)見(jiàn)的區(qū)域里選選擇等高線的的時(shí)候,在地圖中屏屏幕不可見(jiàn)的的區(qū)域里可能能會(huì)有距離更更近的兩點(diǎn)存存在,如圖4-1所示。假設(shè)設(shè)圖中框內(nèi)為為不可見(jiàn)區(qū)域域,那么在可見(jiàn)見(jiàn)區(qū)域選擇兩兩條需要連接接的等高線時(shí)時(shí),會(huì)發(fā)現(xiàn)連連接后的效果果如圖4-2所示。本程程序自動(dòng)找到到兩條等高線線距離最近的的兩個(gè)端點(diǎn),使它們即使使在不可見(jiàn)的的區(qū)域也同樣樣被連接起來(lái)來(lái),這樣省去了了調(diào)整地圖屏屏幕可見(jiàn)區(qū)域域范圍的麻煩煩。再一次運(yùn)運(yùn)行程序就會(huì)會(huì)將可見(jiàn)區(qū)域域未連接的等等高線連起來(lái)來(lái)。以上處理的是圖圖幅內(nèi)不閉合合等高線的情情況,如果是處理理圖幅內(nèi)閉合合的等高線,那么兩個(gè)選選擇集所選擇擇的就是同一一條或同一組組等高線。由由于同一條等等高線具有相相同的句柄,可以以句柄柄屬性作為判判斷條件,再把它們的的起點(diǎn)用AddVeertex方法插入到到末端點(diǎn)處,用plineeLW1.AAddVerr-texindexx,pliineLW22.Coorrdinatte(0)來(lái)完成等高高線的閉合。圖4-1處理理前效果圖圖4-2處理后效效果圖3、多段線的連連接處理以上詳細(xì)介紹了了2維多段線的的處理方法,3維多段線和2維多段線在在處理方式上上有很多相同同點(diǎn),但也有部分分區(qū)別。首先先,在做過(guò)濾的的時(shí)候需要確確定為3維多段線的的線型。其次次,Polyyline上的每個(gè)節(jié)節(jié)點(diǎn)都有x、y、z三個(gè)方向的的坐標(biāo),而LWPollylinee上的每個(gè)節(jié)節(jié)點(diǎn)只有x、y兩個(gè)方向坐坐標(biāo)。故在處處理Polylline線型的等高高線時(shí)要將Ubounnd取得的數(shù)值值加1上并除以3。n=(UUBoundd(plinne3d.Coorddi-nattes)++1)//3。最后需要要說(shuō)明的是3維多段線沒(méi)沒(méi)有ad-dVVertexx方法,取而代之的的是AppenndVertte

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論