• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于結(jié)點加密的邊線捕捉處理方法*

      2013-01-24 05:31:34張青年
      關(guān)鍵詞:鏈表邊線圖斑

      張青年

      (中山大學(xué)地理科學(xué)與規(guī)劃學(xué)院,廣東 廣州 510275)

      在地圖編輯和空間數(shù)據(jù)更新等工作中,需要對多個來源的空間數(shù)據(jù)進(jìn)行融合處理。但由于不同來源的空間數(shù)據(jù)采用的數(shù)據(jù)分類體系、位置精度和數(shù)據(jù)現(xiàn)勢性存在差異,同一地物在不同來源的地圖上的位置和形狀并不相同[1-4]。例如,我國地形圖與海圖不一致的問題普遍存在,海岸線在地形圖和海圖上的形狀和性質(zhì)都有差異[5],一般應(yīng)將地形圖上的海岸線調(diào)整到海圖上的參考海岸線圖形位置[6]。

      對象捕捉是一種基本的地圖編輯功能[7],用戶利用該功能可以迅速、準(zhǔn)確地將輸入圖形捕捉到線的結(jié)點、直線的交點和圓的圓心等參考圖形上的某些特殊點,從而能精確地繪制圖形。顯然,利用對象捕捉可以實現(xiàn)圖形數(shù)據(jù)整合處理。通過批量捕捉處理,將輸入圖形捕捉到容限距離內(nèi)的參考圖形位置,從而消除輸入圖形與參考圖形之間的不一致?,F(xiàn)有捕捉處理方法有兩種捕捉方式,都是通過移動圖形的結(jié)點來實現(xiàn)的。第一種捕捉方式僅移動輸入圖形的結(jié)點到參考圖形位置,而參考圖形的形狀和位置保持不變。第二種捕捉方式則同時移動輸入圖形和參考圖形,使兩者在新的中間位置上重合,是一種廣義的結(jié)點捕捉方式[8-9]。

      由于不同來源的圖形數(shù)據(jù)在位置精度和現(xiàn)勢性等方面存在差異,通常不宜采用廣義結(jié)點捕捉方式進(jìn)行圖形數(shù)據(jù)融合。在大多數(shù)情況下,需要以選定的參考圖形為準(zhǔn),將輸入圖形改正到參考圖形位置。例如,在土地利用變更調(diào)查等工作中,應(yīng)該以上一年度的土地利用現(xiàn)狀圖為參考圖,修改本年度的土地利用變更圖斑邊線,消除前后兩個年度的圖斑邊線在容限距離內(nèi)的不一致,以避免產(chǎn)生細(xì)小狹長的變更過程圖斑。目前,一些GIS軟件可自動將輸入圖層上的結(jié)點捕捉到參考圖層上的圖形,但并不能實現(xiàn)輸入邊與容限距離內(nèi)的參考邊完全一致。

      1 結(jié)點捕捉存在的問題

      在CAD和GIS等圖形處理軟件中,對象捕捉都是針對結(jié)點進(jìn)行處理的,其基本功能是將正在繪制的圖形結(jié)點抓取到已有參考圖形上的某個特殊點。如果對大量結(jié)點進(jìn)行批量捕捉處理,則發(fā)展成為一種圖形數(shù)據(jù)融合方法。例如,ArcGIS軟件的ArcToolBox模塊中提供了捕捉工具,它將輸入圖層中的邊線捕捉到參考圖層中的邊線上。實際上,它將輸入邊上所有在容限距離內(nèi)的結(jié)點捕捉到參考邊線上的垂足點或參考邊線結(jié)點。

      CAD和GIS等圖形處理軟件基于結(jié)點層次進(jìn)行圖形捕捉,并不能將輸入邊捕捉到與容限距離內(nèi)的參考邊完全重合的位置。如圖1所示,輸入邊在參考邊兩側(cè)小幅度擺動,其間距小于容限值。利用ArcGIS軟件進(jìn)行捕捉處理,將捕捉類型設(shè)置為Vertex,捕捉后的輸入邊有2處與參考邊不重合。如果將捕捉類型改為Edge,則捕捉后的結(jié)點與參考邊結(jié)點不重合。總之,捕捉處理過程中只移動了輸入邊的結(jié)點,沒有有效地調(diào)整輸入邊的形狀,因此不能與參考邊完全重合。

      圖1 將輸入邊的結(jié)點捕捉到參考邊Fig.1 Snap input edge to the location of reference edge

      顯然,必須在輸入邊上插入附加結(jié)點,通過捕捉移動附加結(jié)點來改變輸入邊的局部形狀,才能使輸入邊與容限距離內(nèi)的參考邊完全重合。如圖2所示,輸入邊到參考邊的結(jié)點q2的距離小于容限,但在不插入附加結(jié)點的情況下無法將輸入邊捕捉到q2位置。在輸入邊上按指定間距插入5個結(jié)點p3~p7,其中p5靠近q2,可以被捕捉到q2處。此外,通過插入附加結(jié)點,實際上對輸入邊進(jìn)行了分段,從而可對各段邊線分別進(jìn)行捕捉處理。例如,圖2中附加結(jié)點將輸入邊分為6段,其中結(jié)點p3~p7到參考邊的距離都小于容限,將被捕捉到參考邊上。于是輸入邊的p3-p7段被捕捉到參考邊,而p1-p3和p7-p2段不捕捉。

      圖2 基于插入的附加結(jié)點進(jìn)行捕捉Fig.2 Snap an edge with added nodes

      結(jié)點捕捉的另一個問題是捕捉后的邊線可能出現(xiàn)自相交錯誤。如圖3所示,輸入邊的結(jié)點v2、v3、v4和v5到參考邊的距離小于容限而被捕捉到參考邊,捕捉之后v'2v'3與v'3v'4、v'3v'4與v'4v'5之間存在自相交問題。本文通過引入附加的結(jié)點順序調(diào)整步驟來解決線自相交問題。

      圖3 輸入邊捕捉處理后的自相交問題Fig.3 The self-intersections on snapped edge

      2 基于結(jié)點加密的捕捉算法

      如前所述,結(jié)點層次的捕捉算法只能完成對原有結(jié)點的捕捉,并且結(jié)點捕捉之后存在自相交問題。本文針對結(jié)點捕捉算法的兩個局限,增設(shè)結(jié)點加密和結(jié)點順序調(diào)整兩個步驟,從而使結(jié)點和結(jié)點之間的線段都捕捉到與參考邊重合,即發(fā)展成一種邊線層次的捕捉算法。此外,針對現(xiàn)有算法將結(jié)點全部捕捉到垂足點或者全部捕捉到參考邊結(jié)點的僵化配置問題,本文算法依據(jù)具體條件靈活選取垂足點或參考邊結(jié)點作為目標(biāo)捕捉位置。即,輸入邊結(jié)點的容限距離內(nèi)有參考邊結(jié)點時以其為捕捉點;否則以該結(jié)點在參考邊上的垂足點為捕捉點。

      2.1 主要數(shù)據(jù)結(jié)構(gòu)

      主要數(shù)據(jù)結(jié)構(gòu)為邊線結(jié)點鏈表SnapList,其數(shù)據(jù)元素為結(jié)構(gòu)類型:

      社會主義核心價值觀如何培育與踐行?習(xí)近平總書記2014年5月中旬到上??疾鞎r指出,“培育和踐行社會主義核心價值觀,貴在堅持知行合一、堅持行勝于言,在落細(xì)、落小、落實上下功夫?!敝驹阜?wù)作為普通老百姓自覺的助人行為,充分體現(xiàn)了細(xì)、小、實的特點,是培育和踐行社會主義核心價值觀重要載體。筆者擬結(jié)合泉州志愿服務(wù)開展的現(xiàn)狀與特點,探討完善志愿服務(wù),培育與踐行社會主義價值觀的思路。

      struct SnapPoint

      {

      IPoint pt;∥坐標(biāo)點

      bool bIsAdded;∥是否附加結(jié)點

      bool bMoved;∥是否被捕捉

      int refGeomOID,refPartIndex,refSegmentIndex;∥參考幾何體OID,參考部件序號,參考線段序號

      IPoint refPoint;∥捕捉點

      double refDistance;∥到參考幾何體的距離

      double fromPointDistance;∥到參考線段起點的距離

      }

      2.2 算法步驟

      本算法通過結(jié)點加密、結(jié)點捕捉和結(jié)點順序調(diào)整等多個步驟對邊線進(jìn)行捕捉處理,主要步驟為:

      1)加密結(jié)點。依次讀入輸入邊ledit的各個結(jié)點,在相鄰兩個結(jié)點之間以容限d為間距插入附加結(jié)點。如圖4所示,空心點為插入的附加結(jié)點。為每個結(jié)點新建為一個SnapPoint元素,其中原有結(jié)點的 bIsAdded為 false,附加結(jié)點的 bIsAdded為Ture。將各個SnapPoint元素依次寫入SnapList鏈表。

      圖4 加密結(jié)點Fig.4 Insert nodes on the edited line

      2)查找最近的捕捉點。對于SnapList鏈表中的每個元素vi,查找在其容限d內(nèi)的參考邊并計算到該參考邊上的最近距離和最近距離點,將其記錄到 refGeomOID、 refPartIndex、 refSegmentIndex、refDistance和 refPoint字段,并將 bMoved賦值為True。

      若在結(jié)點vi的容限距離d內(nèi)找到多條參考邊,取refDistance最小者為捕捉目標(biāo),并更新refGeomOID、refPartIndex、refSegmentIndex和 refDistance和refPoint。如圖5所示,結(jié)點 vi到參考邊 lref和的距離都小于容限,取間距更小的參考邊為vi捕捉的目標(biāo)對象。

      圖5 將間距最小的參考邊作為捕捉目標(biāo)Fig.5 The nearest reference works as snapping target

      若在結(jié)點vi的容限距離d內(nèi)沒有任何參考邊,并且它是一個bIsAdded值為True的附加結(jié)點,將其從鏈表中刪除。

      3)調(diào)整捕捉點到參考邊結(jié)點。依據(jù)refGeomOID、refPartIndex、refSegmentIndex取得結(jié)點 vi的捕捉點所在的參考線段。若該結(jié)點到參考線段的某個端點uk的距離小于容限,則將其捕捉點改為端點uk。如圖6所示,v3到參考線段的端點u4的距離小于容限,將其捕捉點由垂足u3改為結(jié)點u4;v1和v2在參考邊上的捕捉點分別為結(jié)點u1和垂足點u2,保持不變。

      圖6 將捕捉點調(diào)整到參考線段的端點Fig.6 Adjust snapped points to segments'ends

      4)調(diào)整結(jié)點次序。遍歷SnapList鏈表,依據(jù)bMoved、refGeomOID和refPartIndex將其劃分成若干個子序列。同一個子序列中的各個結(jié)點全部未捕捉,或者全部被捕捉到同一條參考邊;不同的子序列中的結(jié)點被捕捉到不同的參考邊。同一個子序列中的各個結(jié)點的捕捉點所在的參考線段序號應(yīng)該是單調(diào)增加或單調(diào)減少的。如果某個子序列中起點和終點對應(yīng)的參考線段序號是增大的,但其內(nèi)部某些相鄰結(jié)點對應(yīng)的參考線段序號是減小的,則在這些參考線段序號減小的結(jié)點的捕捉點處發(fā)生了方向反轉(zhuǎn),引起自相交問題;反之,如果某個子序列中起點和終點對應(yīng)的參考線段序號是減小的,參考線段序號增大的結(jié)點的捕捉點處發(fā)生了方向反轉(zhuǎn)。具體檢測時,如果相鄰兩個捕捉點的refSegmentIndex相等,還需進(jìn)一步計算fromPointDistance來判斷結(jié)點前進(jìn)方向。

      若相鄰兩個捕捉點v'i到v'i+1存在方向上的反轉(zhuǎn),依次回退檢測v'i的前一個捕捉點v'i-1到v'i+1是否存在方向上的反轉(zhuǎn);若滿足反轉(zhuǎn)條件,繼續(xù)比較v'i-1的前一個捕捉點v'i-2,直到某個前驅(qū)捕捉點v'k到v'i+1不存在方向反轉(zhuǎn)為止。此時,將v'i+1從鏈表中刪除后重新插入到v'k之后的位置,從而消除v'i+1引起的反轉(zhuǎn)現(xiàn)象。依次處理該子序列中的反轉(zhuǎn)捕捉點,直到消除所有反轉(zhuǎn)現(xiàn)象。

      如圖7所示,輸入邊ledit上的5個原有結(jié)點v2、v3、v4、v5、v6和1個附加結(jié)點v8被捕捉到參考邊lref上。輸入邊捕捉處理后的結(jié)點序列為v'1、v'2、v'3、v'4、v'5、v'8、v'6、v'7。其中,v'2v'3與 v'3v'4、v'3v'4與 v'4v'5、v'3v'4與 v'5v'8之間存在自相交問題。經(jīng)過糾正處理后,結(jié)點序列將調(diào)整為v'1、v'4、v'2、v'5、v'8、v'3、v'6、v'7。

      圖7 處理捕捉點順序反轉(zhuǎn)引起的自相交問題Fig.7 Processing reversed snapped points

      (5)依據(jù)鏈表中保留的結(jié)點的捕捉點構(gòu)造一條新邊線。其中,某個結(jié)點無捕捉點時用原坐標(biāo)點代替。判斷邊線上相鄰的三個結(jié)點是否共線,刪除共線的多余的結(jié)點,得到最終的捕捉處理結(jié)果。

      3 實驗結(jié)果與分析

      在土地利用變更調(diào)查中,新調(diào)繪的本年度變更圖斑需要與上一年度的地類圖斑協(xié)調(diào)一致。如圖8(a)所示,分別以本年度的變更圖斑和上一年度的地類圖斑為輸入圖形和參考圖形,輸入邊與參考邊非常接近但又不完全重合。本次實驗中將捕捉容限設(shè)定為1 m,輸入邊上全部10個結(jié)點到參考邊的距離都小于容限,線段v9v10到結(jié)點h的距離大于容限。

      本文算法捕捉處理結(jié)果見圖8(b)。其中,輸入邊按間距1 m加密結(jié)點。分析捕捉線發(fā)現(xiàn),輸入邊上的全部結(jié)點都被捕捉到參考邊;而且除線段v8v9之外,其余組成線段與參考邊完全重合。實際上,除參考邊的結(jié)點h之外,輸入邊和參考邊相互之間的距離均小于容限,因此捕捉處理是完全的和準(zhǔn)確的。

      作為比較,我們給出了ArcGIS軟件捕捉處理的結(jié)果,其捕捉類型設(shè)為Edge和Vertex,分別見圖8(c)和圖8(d)。ArcGIS提供批量捕捉結(jié)點的功能,其捕捉結(jié)果有一定的代表性。在圖8(c)中,輸入邊上的線段 v1v2、v2v3、v3v4、v5v6和v8v9未被捕捉到與參考邊重合;線段v3v4與v4v5之間存在自相交問題。在圖8(d)中,結(jié)點v5和v7未被捕捉到參考邊,線段 v1v2、v6v7、v7v8和v8v9未被捕捉到與參考邊重合。這兩種捕捉結(jié)果都不符合要求,未實現(xiàn)有效的邊線捕捉。

      從結(jié)點捕捉的有效性看,本文算法將原結(jié)點捕捉和附加結(jié)點都捕捉到容限距離內(nèi)參考邊上正確的位置;而ArcGIS軟件計算的捕捉點偏離參考邊上對應(yīng)的結(jié)點,或者沒有捕捉到容限距離內(nèi)的參考邊。從結(jié)點之間的線段來看,本文算法將各條線段準(zhǔn)確捕捉到容限距離內(nèi)與參考邊重合的位置;而ArcGIS軟件捕捉處理后的線段并不與參考邊完全重合。從圖形的拓?fù)湔_性看,本文算法處理結(jié)果中不存在線自相交錯誤;而ArcGIS軟件處理結(jié)果不能排除自相交錯誤。這三個方面體現(xiàn)了本文算法的有效性和可靠性。

      4 結(jié)論

      根據(jù)以上研究和實驗,可以得到以下結(jié)論:

      1)通過調(diào)整捕捉點到容限距離內(nèi)的參考邊的結(jié)點,本文算法實現(xiàn)了輸入邊結(jié)點與參考邊結(jié)點的嚴(yán)密配準(zhǔn)。

      2)本文算法在邊線上插入附加結(jié)點,實現(xiàn)了邊線層次的配準(zhǔn)和捕捉處理。通過對附加結(jié)點的捕捉和移動,使一些直線段轉(zhuǎn)換為折線段,從而捕捉到與容限距離內(nèi)的參考邊完全重合的位置。

      3)結(jié)點捕捉改變了結(jié)點的相對位置,從而引起線自相交錯誤。本文算法引入的結(jié)點順序調(diào)整處理步驟有效地消除了結(jié)點次序反轉(zhuǎn)現(xiàn)象,解決了捕捉后的邊線的自相交問題。

      4)本文方法實現(xiàn)了線層次的圖形捕捉處理,相對于以ArcGIS為代表的結(jié)點捕捉算法而言能更有效地進(jìn)行圖形數(shù)據(jù)融合。

      [1]SAALFELD A.Conflation:automated map compilation[J].International Journal of Geographical Information Systems,1988,2(3),pp.217 -228.

      [2]SERVIGNE S,UBEDA T.A Methodology of Spatial Consistency Improvement of Geographic Databases [J].GeoInformatica,2000,4(1):7-34.

      [3]SAMAL A,SETH S,CUETO K.A feature-based approach to conflation of geospatial sources[J].International Journal of Geographical Information Science,2004,18(5),pp.459-489.

      [4]魯偉,謝順平,鄧 敏,周立國.多源空間數(shù)據(jù)間不一致性研究現(xiàn)狀及其進(jìn)展[J].測繪科學(xué),2009,34(4):57-60.

      [5]韓凌云,楊英力.地形圖與海圖拼接的矛盾問題及其處理[J].海洋測繪,2003,23(4):33-35.

      [6]呂蓬,張立朝,王耿峰.空間數(shù)據(jù)融合在海圖中的應(yīng)用[J].測繪通報,2007,(11):43-45,56.

      [7]吳磊,黃先鋒,舒寧.GIS大數(shù)據(jù)量編輯處理中快速捕捉的優(yōu)化策略[J].武漢理工大學(xué)學(xué)報:交通科學(xué)與工程版,2005,29(2):315-318.

      [8]劉文寶,夏宗國,崔先國.GIS結(jié)點捕捉的廣義算法及誤差傳播模型[J].測繪學(xué)報,2001,30(2):140-147.

      [9]鄧敏,劉文寶,馮學(xué)智.GIS中地理邊線不一致性的處理[J].遙感學(xué)報,2005,9(4):343-348.

      猜你喜歡
      鏈表邊線圖斑
      地理國情監(jiān)測中異形圖斑的處理方法
      北京測繪(2022年9期)2022-10-11 12:25:14
      海岸水邊線提取方法在GF-2衛(wèi)星影像中的適應(yīng)性研究
      海洋通報(2022年3期)2022-09-27 02:46:20
      基于C#編程的按位置及屬性值自動合并圖斑方法探究
      綠色科技(2021年5期)2021-11-28 14:57:37
      土地利用圖斑自動檢測算法研究
      基于二進(jìn)制鏈表的粗糙集屬性約簡
      跟麥咭學(xué)編程
      基于鏈表多分支路徑樹的云存儲數(shù)據(jù)完整性驗證機制
      認(rèn)識足球(六)
      突破矩形上邊線買入法(1)
      鏈表方式集中器抄表的設(shè)計
      電測與儀表(2014年1期)2014-04-04 12:00:22
      平武县| 安多县| 银川市| 冀州市| 拜城县| 体育| 会昌县| 临江市| 原平市| 盐边县| 穆棱市| 和田市| 凤台县| 永宁县| 玉溪市| 正定县| 屏南县| 黔西县| 庆阳市| 保定市| 诏安县| 神木县| 陈巴尔虎旗| 电白县| 泸水县| 加查县| 敦化市| 赣州市| 仪陇县| 象州县| 潢川县| 定州市| 固始县| 简阳市| 广宁县| 徐水县| 固原市| 安图县| 漳浦县| 连江县| 新巴尔虎右旗|