999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于ObjectARX的地形圖自動(dòng)接邊方法

2009-04-29 00:00:00
電腦知識(shí)與技術(shù) 2009年36期

摘要:該文介紹了一種地形圖自動(dòng)接邊的方法,分析了地形圖自動(dòng)接邊中的關(guān)鍵技術(shù),并在VS2002平臺(tái)下利用ObjectARX開發(fā)包進(jìn)行二次開發(fā),實(shí)現(xiàn)了同比例尺地形圖的自動(dòng)接邊。

關(guān)鍵詞:地形圖;自動(dòng)接邊;ObjectARX

中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2009)36-10318-03

An Automatic Edge-matching Method for Topographic Maps Based on ObjectARX

ZHOU Zui1,2

(1.Tongji University College of Civil Engineering, Shanghai 200092, China; 2.Suzhou Surveying and Mapping Institute CO.LTD, Suzhou 215006, China)

Abstract: This paper introduces an automatic topographic map edge-matching method, analyzes the key technology of automatic edge matching of topographic map, works on secondary development in VS2002 platform by using ObjectARX, and achieves automatic edge matching of same scale topographic map.

Key words: topographic map; automatic edge matching; ObjectARX

由于各種地形圖采用分幅管理,造成各種地理要素被分割。在圖形數(shù)字化過程中,地理要素有可能發(fā)生空間錯(cuò)位或者屬性錯(cuò)填漏填。當(dāng)導(dǎo)入多幅圖幅時(shí),就可看到在一些圖幅邊緣處產(chǎn)生明顯的“斷裂帶”。而目前地形圖接邊工作大部分采用人工接邊,工作量大且易出錯(cuò)。為提高接邊效率,本文提出了一種地形圖的接邊方法,采用ObjectARX開發(fā)包進(jìn)行二次開發(fā),實(shí)現(xiàn)了同比例尺地形圖的自動(dòng)接邊。

1 同比例尺地形圖自動(dòng)接邊的流程

1.1 自動(dòng)接邊的原則

自動(dòng)接邊遵循如下原則:

1) 同一種類的地理實(shí)體;

2) 錯(cuò)位的距離在規(guī)定的容差范圍內(nèi);

3) 指定的屬性能夠完全匹配。

1.2 自動(dòng)接邊的總體思路

1) 導(dǎo)入要進(jìn)行合并的圖幅;

2) 在圖幅間繪制一條分界線;

3) 選中此分界線,構(gòu)造緩沖區(qū)。利用acedSSGet(\"C\",pt1,pt2,NULL,ssname)在指定范圍內(nèi)構(gòu)造選擇集。緩沖區(qū)一邊的地理實(shí)體放入第一個(gè)選擇集 ,緩沖區(qū)另一邊的地理實(shí)體放入第二個(gè)選擇集。

4) 遍歷第一個(gè)選擇集,得到的第一個(gè)實(shí)體與第二個(gè)選擇集中的所有實(shí)體進(jìn)行匹配,如果符合自動(dòng)接邊的原則,將兩個(gè)地理實(shí)體自動(dòng)拼接并實(shí)現(xiàn)屬性數(shù)據(jù)的更新。

2 同比例尺地形圖自動(dòng)接邊的關(guān)鍵技術(shù)

2.1 線狀實(shí)體自動(dòng)接邊關(guān)鍵技術(shù)

2.1.1 線狀實(shí)體自動(dòng)接邊的思路

線狀實(shí)體的合并是利用一個(gè)實(shí)體的屬性找到與其屬性相互匹配的另一個(gè)實(shí)體,然后判斷兩個(gè)線狀實(shí)體的合并點(diǎn)距離是否在容差范圍內(nèi),如果這個(gè)距離在容差范圍內(nèi)就進(jìn)行拼接,最后處理拼接處的重疊點(diǎn)。

2.1.2 線狀實(shí)體自動(dòng)接邊的方法

1) 構(gòu)造結(jié)構(gòu)體

struct buf {

AcGePoint3d Point;//存放多段線節(jié)點(diǎn)的坐標(biāo)值

struct buf*rbprevious;//存放上一個(gè)結(jié)點(diǎn)的地址

struct buf*rbnext;//存放下一個(gè)結(jié)點(diǎn)的地址}

2) 構(gòu)造鏈表

對多段線進(jìn)行鏈表的構(gòu)造是從多段線的起始點(diǎn)開始遍歷整條多段線從而構(gòu)造鏈表,見圖1。鏈表中的每個(gè)結(jié)點(diǎn)存放三個(gè)數(shù)據(jù):上一個(gè)結(jié)點(diǎn)的地址,下一個(gè)結(jié)點(diǎn)的地址,本結(jié)點(diǎn)所對應(yīng)的多段線節(jié)點(diǎn)的坐標(biāo)值。

構(gòu)造多段線鏈表的關(guān)鍵代碼如下:

if(pEnt->isKindOf(AcDbPolyline::desc())){

AcDbPolyline *pPoly = AcDbPolyline::cast(pEnt);

linetype = pPoly->linetype();

layer = pPoly->layer();

pPoly->getConstantWidth(width);

for(int i = 0;inumVerts();i++){

pPoly->getPointAt(i,pt);

pWalk->Point = pt;

p2 = pWalk;

if(i==0){

pRblianbiao = pWalk;

pWalk->rbprevious = NULL;

p1 = new buf;

pWalk->rbnext =p1;

pWalk = p1;

pWalk->rbprevious =p2;}

else{

p1 = new buf;

pWalk->rbnext =p1;

pWalk = p1;

pWalk->rbprevious =p2;}}}

p2->rbnext = NULL;

pWalk = p2;

3) 合并鏈表

從邏輯上講,距離最近的兩個(gè)點(diǎn)會(huì)合并在一起。因此首先要判斷多段線的端點(diǎn)之間哪兩個(gè)點(diǎn)距離最近,然后將距離最近的兩個(gè)點(diǎn)合并起來。

要拼接兩條多段線有以下四種情況(如圖2):頭尾-頭尾合并,頭尾-尾頭合并,尾頭-尾頭合并,尾頭-頭尾合并。然而,如果只是將兩條鏈表尾頭拼接的話,會(huì)出現(xiàn)如圖2所示的拼接情況。

如何解決呢?頭尾-頭尾這種情況可以直接將鏈表合并,頭尾-尾頭這種情況先將尾頭反向?yàn)轭^尾然后再合并。尾頭反向就是將每個(gè)結(jié)點(diǎn)中存放的上結(jié)點(diǎn)地址與下結(jié)點(diǎn)地址進(jìn)行交換。尾頭-尾頭這種情況將兩條鏈表都進(jìn)行反向。尾頭-頭尾這種情況將第一條鏈表反向。頭尾反向的關(guān)鍵代碼如下:

for(pRbChange ; pRbChange != NULL;pRbChange = pRbChange->rbprevious){

pWap=pRbChange;

p = pWap->rbnext;

pWap->rbnext = pWap->rbprevious;

pWap->rbprevious = p;

pRbChange=pWap;}

合并鏈表的關(guān)鍵代碼如下:

while(pRbTempFirst->rbnext!=NULL){

pRbTempFirst = pRbTempFirst->rbnext;}

pRbTempFirst->rbnext = pRbSecond;

pRbSecond->rbprevious = pRbTempFirst;

鏈表合并之后重新繪制多段線。在有些情況下,由于兩條線合并處的點(diǎn)在同一位置,合并鏈表重繪多段線之后,該多段線會(huì)出現(xiàn)重疊點(diǎn)。因此,遍歷這條重新繪制的多段線,讀取每個(gè)節(jié)點(diǎn)的坐標(biāo),將其與上個(gè)節(jié)點(diǎn)的坐標(biāo)比較,如果坐標(biāo)值相同,刪除該節(jié)點(diǎn)。

2.2 面狀實(shí)體自動(dòng)接邊關(guān)鍵技術(shù)

其實(shí)面狀實(shí)體就是閉合的線狀實(shí)體。如下圖,將面狀實(shí)體進(jìn)行合并,需要考慮面狀實(shí)體中哪一邊為公共合并邊。從圖3上看,公共合并邊是p3p4與p7p8。從邏輯和經(jīng)驗(yàn)上講,距離最近點(diǎn)會(huì)合并在一起。而面狀實(shí)體的合并還需考慮次近距離點(diǎn)。

因此,首先算出面狀實(shí)體之間的最近距離點(diǎn)(p4、p8)和次近距離點(diǎn)(p3、p7),然后將p4與p8之間的連接斷開,將p3與p7之間的連接斷開,再將p4與p7設(shè)置為多段線的頭,p3和p8設(shè)置為多段線的尾,這樣就將面狀實(shí)體變?yōu)榫€狀實(shí)體。最后根據(jù)線狀實(shí)體自動(dòng)接邊技術(shù)重新構(gòu)造多段線,刪除重疊點(diǎn),將多段線閉合。

公共邊兩點(diǎn)之間斷開并獲取新的首節(jié)點(diǎn)和尾節(jié)點(diǎn)的關(guān)鍵代碼如下:

if(pTemp1->rbnext == pTemp2 || pTemp1->rbnext == NULL){

pTemp1->rbnext = NULL;

pTemp2->rbprevious = NULL;

firststart = pTemp2;

firstnewS = firststart;

firstnewE = pTemp1;}

2.3 屬性合并關(guān)鍵技術(shù)

在地形圖中涉及到屬性合并的地理實(shí)體包括等高線、建筑物、水系線等拓?fù)湫畔ⅰτ趯τ谶@類信息的屬性的合并,在拼接前將原實(shí)體上的屬性數(shù)據(jù)記錄在數(shù)據(jù)庫中,然后在新的合并后的實(shí)體生成后,再從數(shù)據(jù)庫中讀取相應(yīng)的數(shù)據(jù),并加載于實(shí)體的擴(kuò)展數(shù)據(jù)中,最后刪除原先的實(shí)體及實(shí)體所帶的個(gè)。

3 結(jié)論

本文所用的方法對于線狀實(shí)體和面狀實(shí)體的接邊是切實(shí)可行的,保證了地形圖在拼接過程中的準(zhǔn)確性和高效率性。

參考文獻(xiàn):

[1] 華慧,童小華.數(shù)字化地圖的自動(dòng)接邊及其精度[J].同濟(jì)大學(xué)學(xué)報(bào):自然科學(xué)版,2001(1).

[2] 秦洪現(xiàn),崔惠嵐,孫劍.Autodesk系列產(chǎn)品開發(fā)培訓(xùn)教程[M].北京:化學(xué)工業(yè)出版社,2008.

[3] Tickoo S.AutoCAD 2000 高級(jí)定制[M].北京:機(jī)械工業(yè)出版社,2001.

[4] Simon D.Visual C++6 編程寶典[M].北京:電子工業(yè)出版社,2006.

[5] 李長勛.AutoCAD ObjectARX 程序開發(fā)技術(shù)[M].北京:國防工業(yè)出版社,2005.

主站蜘蛛池模板: 国产日韩欧美精品区性色| 亚洲午夜天堂| 亚洲中文久久精品无玛| 色视频久久| 精品免费在线视频| www.精品视频| 67194成是人免费无码| 亚洲欧洲美色一区二区三区| 国产女人水多毛片18| 欧美午夜网| 91久久大香线蕉| 色综合久久无码网| 亚洲欧美另类日本| 一区二区三区四区精品视频| 国产精品手机视频一区二区| 国产精品视频观看裸模| 国产一级裸网站| 天堂在线亚洲| 91精品福利自产拍在线观看| 日韩精品专区免费无码aⅴ| 无码电影在线观看| www.av男人.com| 久久精品嫩草研究院| 欧亚日韩Av| 91精品国产综合久久香蕉922 | 国产精品黑色丝袜的老师| 自拍欧美亚洲| 91美女视频在线| 婷婷开心中文字幕| 亚洲精品制服丝袜二区| JIZZ亚洲国产| 91免费国产在线观看尤物| 国产成人精品18| 亚洲欧洲综合| 国产日韩精品一区在线不卡| 国产精品观看视频免费完整版| 欧美啪啪一区| 国产精品一区在线麻豆| 亚洲第一区欧美国产综合| 超清无码熟妇人妻AV在线绿巨人| 久久精品人人做人人爽97| www.亚洲一区| 国产性生交xxxxx免费| 67194亚洲无码| 99精品在线看| 欧美日韩综合网| 欧美在线综合视频| 国产白丝av| 国禁国产you女视频网站| 亚洲一级毛片| 五月婷婷中文字幕| 国产在线观看精品| 天天色天天综合网| 成人韩免费网站| 日韩在线观看网站| 毛片免费在线视频| 国国产a国产片免费麻豆| 亚洲愉拍一区二区精品| 99re视频在线| 香蕉视频在线观看www| 国产精品午夜福利麻豆| 精品一區二區久久久久久久網站| 无码区日韩专区免费系列 | 欧美笫一页| 亚洲区一区| 9啪在线视频| 黄色网站不卡无码| 噜噜噜久久| 国产区人妖精品人妖精品视频| 欧美一级专区免费大片| 伊人久久久大香线蕉综合直播| 国产精品一区在线观看你懂的| 青青草国产在线视频| 任我操在线视频| 精品三级网站| 久久久久久尹人网香蕉| 亚洲美女一级毛片| 亚洲天堂网视频| 欧美一级99在线观看国产| 99久久国产精品无码| 日本中文字幕久久网站| 亚洲综合专区|