国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ArcEngine的圖幅批量自動接邊檢查工具實現(xiàn)

2023-09-06 01:05胡菲菲李小梅
資源導(dǎo)刊(信息化測繪) 2023年7期
關(guān)鍵詞:圖幅邊線緩沖區(qū)

胡菲菲 李小梅

(廣東省國土資源測繪院,廣東 廣州 510500)

1 引言

測繪地理信息數(shù)據(jù)生產(chǎn)過程中通常采用分塊或分幅的作業(yè)模式,由于各類地理要素的屬性項較多、數(shù)據(jù)結(jié)構(gòu)復(fù)雜,在分幅采集過程中極易造成地理目標實體被分割,且在圖幅邊沿產(chǎn)生空間錯位等問題[1],因此,匯交成果前需將所有數(shù)據(jù)層要素進行圖幅的理論圖廓線相接,然后按規(guī)定進行圖幅之間的接邊,保證跨圖幅要素幾何位置的連續(xù)與屬性邏輯的一致性[2]。圖幅接邊檢查工作通常采用人工方式,不僅費時費力,效率低下,還難以保證接邊精度,遺漏問題也相對較多。而現(xiàn)有的接邊程序只能在兩個覆蓋面之間進行,且接邊時只考慮圖形約束條件,忽略了屬性約束條件[3]。針對以上問題,本文設(shè)計了圖幅自動接邊算法,基于ArcEngine 實現(xiàn)了圖幅批量自動接邊工具,提高了接邊檢查的準確性和效率,具有一定的實用價值。

2 ArcEngine 二次開發(fā)技術(shù)

ArcEngine 是一套用于構(gòu)建定制應(yīng)用的完整的嵌入式GIS 組件庫,建立在ArcObjects 之上,ArcObjects 是整個ArcGIS 軟件的核心功能庫[4]。ArcEngine 通過對底層的算法進行封裝,提供了強大的空間查詢、空間分析功能等類庫,支持面向?qū)ο蟮男问竭M行開發(fā)。因此,基于ArcEngine 對空間數(shù)據(jù)操作的優(yōu)勢和程序開發(fā)的靈活性,本文采用該技術(shù)開發(fā)接邊檢查工具。

3 數(shù)據(jù)庫結(jié)構(gòu)

3.1 圖幅目錄組織

基礎(chǔ)測繪數(shù)據(jù)以.mdb 格式存儲,所有圖幅的數(shù)據(jù)庫均以圖幅號命名,并存儲在一個文件夾下。

3.2 圖層結(jié)構(gòu)定義

基礎(chǔ)測繪中要素主要分為定位基礎(chǔ)、水系、居民地及設(shè)施、交通、管線、境界與政區(qū)、地貌、植被與土質(zhì)等幾大類[5],具體又分為23 個圖層,圖層結(jié)構(gòu)定義如表1 所示。

表1 圖層結(jié)構(gòu)定義

4 整體設(shè)計思路

4.1 接邊檢查內(nèi)容及原則

接邊檢查是檢查相鄰圖幅中同一要素在共同邊界處的幾何位置以及屬性內(nèi)容的一致性。具體包括:相接要素的位置是否連續(xù),要素是否遺漏;相接要素在各自所屬數(shù)據(jù)中所有的屬性內(nèi)容是否相同[6]。

4.1.1 幾何圖形方面

(1)點狀地物無需檢查接邊;

(2)線狀地物在接邊線附近的端點應(yīng)與鄰接圖幅線狀地物的端點距離在預(yù)定閾值內(nèi),且與接邊線咬合;

(3)面狀地物在接邊線附近的邊的兩端點應(yīng)與鄰接圖幅面狀地物的邊在預(yù)定閾值內(nèi)重合,且與接邊線咬合。

4.1.2 屬性方面

相鄰圖幅接邊的兩個地物要素屬性應(yīng)確保一致。

4.2 總體思路

依次遍歷所有圖幅,對每一個圖幅進行接邊時,分別計算出東南西北四個方向的鄰接圖幅號,循環(huán)分別與四個方向鄰接圖幅進行接邊檢查,并對當前方向上兩側(cè)圖幅的每個要素圖層進行接邊檢查,總體技術(shù)流程如圖1 所示。

圖1 總體技術(shù)流程

5 程序設(shè)計及實現(xiàn)

系統(tǒng)采用C# 語言WINFORM 框架,基于ArcGIS 10.2 平臺和.net framework 4.0 開發(fā)。

5.1 接邊圖幅的查找

根據(jù)當前圖幅的圖號,依次計算東南西北四個方向鄰接圖幅的圖幅號。根據(jù)計算得到的鄰接圖幅的圖幅號,依次查找鄰接圖幅數(shù)據(jù)庫,分別進行接邊操作。

5.2 接邊要素查找

由于數(shù)據(jù)庫存儲的要素較多,沒有必要對所有要素都進行接邊檢查,在接邊時只需檢查接邊線附近的要素,而遠離接邊線的要素則可以忽略。因此,為提高檢查效率,減少不必要的開銷,本文利用接邊線生成緩沖區(qū),通過緩沖區(qū)獲取所有與之相交的要素。

5.2.1 生成緩沖區(qū)

通過調(diào)用ITopologicalOperator 接口的Buffer方法,可以按照一定距離對圖廓邊線生成緩沖區(qū)。

ITopologicalOperator topolOperator = geo as ITopologicalOperator;

IGeometry bufferGeometry = topolOperator.Buffer(dis);

5.2.2 獲取與緩沖區(qū)相交的所有要素

本文通過ArcGIS 提供的ISpatialFilter 接口的空間查詢功能來獲取與緩沖區(qū)相交的所有要素。ISpatialFilter 接口包含空間和屬性限制,可對要素類中的要素按設(shè)定條件進行過濾,最后獲取所需要素。使用Spatial Filter 執(zhí)行空間查詢時,需用到Geometry、GeometryField 和SpatialRel 屬性。Geometry是源圖形,根據(jù)與該圖形的空間關(guān)系執(zhí)行選擇。GeometryField 是圖形字段名,將其中的圖形與源圖形比較。SpatialRel 屬性將一個esriSpatialRelEnum傳入來指定空間關(guān)系,由于此處需用到空間相交,所以枚舉類型變量為esriSpatialRelIntersects。最后將接邊兩側(cè)圖幅中與緩沖區(qū)相交的所有要素分別存儲到對應(yīng)的要素集合,在執(zhí)行接邊檢查時只需檢查兩個集合中的要素。與緩沖區(qū)相交的要素選取如圖2 所示。

圖2 選取與緩沖區(qū)相交的要素

5.3 幾何接邊

從所有要素圖層的幾何特征來看,可以將圖層大致分為點、線、面三類,由于點類型不存在接邊問題,因此自動接邊只需要考慮線和面圖層。

5.3.1 線要素接邊

在檢查線要素接邊時,由于線要素的幾何圖形為多段線,因此只需要對線要素的兩個端點進行判斷。首先依次遍歷鄰接圖幅的要素集合中所有的線要素,并計算接邊兩側(cè)線要素的端點距離,如果此距離小于設(shè)定的閾值,則代表兩個要素為接邊要素[7],同時需要檢查接邊的當前端點與接邊線是否咬合,如果是,則代表兩個要素能夠在接邊線上幾何接邊,否則代表不接邊,需要添加到錯誤檢查記錄;如果查找不到兩個端點距離小于閾值的對應(yīng)接邊要素,則代表當前要素可能存在接邊錯誤,同樣添加到錯誤檢查記錄,3種情況如圖3 所示。

圖3 線要素接邊檢查情況

獲取多段線的端點可以通過IPolyline 接口調(diào)用FromPoint 和ToPoint 兩個變量,分別為多段線的起點和終點。在計算端點距離時,ArcGIS 提供了IProximityOperator 接口,主要用于獲取兩個幾何圖形的距離,以及給定一個Point,求另一個幾何圖形上離給定點最近的點[8],本文使用了ReturnDistance方法,用于返回兩個端點間的距離。

5.3.2 面要素接邊

在檢查面要素接邊時,由于面可以轉(zhuǎn)為多段線,而面的每一條邊均為線段,因此只需要依次對面上的每一條邊與鄰接圖幅要素集合中所有面要素的每一條邊進行匹配。具體流程如下:首先判斷當前邊的兩個端點是否在接邊線附近,如果不在,則開始下一條邊的判斷;如果在接邊線附近,則在鄰接圖幅的要素集合中查找能夠與之幾何匹配的面要素,如果當前邊與鄰接圖幅面要素的邊只有一個端點距離小于設(shè)定閾值,那么代表兩個面要素的這兩條邊不接邊,需要添加到錯誤檢查記錄;如果兩個端點距離均小于設(shè)定閾值,并且兩個端點能夠與接邊線咬合,那么代表這兩條邊能夠在接邊線上幾何接邊,否則代表當前要素可能存在接邊錯誤,需要添加到錯誤檢查記錄。重復(fù)以上過程,直至所有邊均遍歷完成,如果當前面要素沒有一條邊接邊,則代表當前要素可能存在接邊錯誤,需要添加到錯誤檢查記錄,3 種情況如圖4 所示。

圖4 面要素接邊檢查情況

為了獲取面要素上的所有邊,可以將面圖形轉(zhuǎn)為Segment 對象集合,通過ISegmentCollection 接口遍歷獲取每一個元素,然后將當前元素轉(zhuǎn)為線類型。

5.4 屬性匹配

在幾何圖形接邊檢查完成后,還需檢查屬性是否匹配。由于每個要素圖層的屬性字段各不相同,因此考慮到開發(fā)工作量,提高靈活度,采用順序遍歷屬性字段依次進行屬性值比對,OBJECTID、SHAPE、SHAPE_Length、SHAPE_Area 等幾個固定字段除外。如果任意一項屬性字段的屬性值不一致則記錄到檢查結(jié)果中。

5.5 系統(tǒng)運行效果

本文利用基礎(chǔ)測繪數(shù)據(jù)對系統(tǒng)功能進行測試。首先設(shè)置圖幅數(shù)據(jù)庫的存儲路徑,將所有圖幅數(shù)據(jù)庫批量導(dǎo)入,檢查后會分別生成線要素和面要素接邊檢查結(jié)果,線要素接邊檢查結(jié)果為點類型,用于顯示線不接邊的端點具體位置,而面要素接邊檢查結(jié)果為線類型,用于顯示面不接邊的邊線所在位置,接邊檢查結(jié)果如圖5 和圖6 所示。

圖5 線要素接邊檢查結(jié)果

圖6 面要素接邊檢查結(jié)果

6 結(jié)束語

本文研究了測繪地理信息數(shù)據(jù)圖幅接邊檢查算法,基于ArcEngine 開發(fā)了圖幅批量自動接邊檢查工具,工具功能緊貼實際,省去了人工接邊的繁重勞動,提高了接邊檢查的自動化水平,減少了接邊差錯和遺漏現(xiàn)象,下一步將針對復(fù)雜圖形進一步優(yōu)化接邊算法。

猜你喜歡
圖幅邊線緩沖區(qū)
海岸水邊線提取方法在GF-2衛(wèi)星影像中的適應(yīng)性研究
嫩江重要省界緩沖區(qū)水質(zhì)單因子評價法研究
認識足球(六)
突破矩形上邊線買入法(1)
基于EXCEL的地形圖圖幅號轉(zhuǎn)換查詢方法
關(guān)鍵鏈技術(shù)緩沖區(qū)的確定方法研究
基于ArcMap的圖幅接合表快速生成方法研究
地形圖圖幅編號規(guī)則及實現(xiàn)
基于Bing Maps的地形圖圖幅編號的網(wǎng)絡(luò)可視化查詢
地理信息系統(tǒng)繪圖緩沖區(qū)技術(shù)設(shè)計與實現(xiàn)