郭立超 魏薇
【摘 要】 在土地報批發(fā)證業(yè)務中,需要向有關部門提供大量圖幅資料,為加快工作效率,降低人為因素導致的錯誤,本文提出了一種基于ArcEngine的土地報批出圖方式,設計了一種自動分幅的算法,并采用VB.NET進行編程。結果表明:與傳統(tǒng)人工方式相比,采用該方式可將整圖分幅出圖效時間縮短80%以上,并將人為影響因素降至最低。本文的研究成果可正常應用于日常工作中,并為其它ArcGis項目提供了編程解決方式的程序參考。
【關鍵詞】 土地報批;圖幅繪制; ArcGis;ArcEngine;VB.NET
[Abstract] In order to speed up the work efficiency and reduce the errors caused by human factors, this paper puts forward a kind of plotting method based on ArcEngine for land approval, and designs an automatic plotting algorithm based on VB.NET programming. The results show that compared with the traditional manual method, this method can shorten the effect time of the whole map by 80%, and minimize the human influence factors. The results of this paper can be applied to daily work, and provide programming reference solution for other ArcGis projects.
[Keywords] land approval, drawing plotting, ArcGis,ArcEngine,VB.NET
我國是土地大國,但并不是人均耕地面積大國,因此國家制定了18億畝耕地紅線政策,但社會發(fā)展離不開建設,因此使用土地就必須要有嚴格的規(guī)范手續(xù)。土地報批就指通過一些手續(xù),流程,讓土地性質改變,主要有集體土地變?yōu)閲型恋?,農(nóng)用地變?yōu)榻ㄔO用地。在土地報批業(yè)務中,為了可以順利通過政府有關部門審查,各類資料準備不能出現(xiàn)任何差錯,對于大型用地項目、歷史遺留土地性質改變問題等來說,文字、圖幅資料數(shù)量龐大,而申報時間緊、任務急,一般需要抽調(diào)大量人手進行資料準備工作,為防止出現(xiàn)錯誤,還需設置檢查機制,工作量巨大。
圖幅資料的準備工作分為信息收集、范圍圈定、屬性修改、圖幅分幅、出圖打印幾個部分,一般采用業(yè)界通用的地理信息系統(tǒng)ArcGis進行處理。其中出圖打印這部分由于地塊分散,大小不一,為了保證一幅圖中的地塊完整性,通常采用人工判別處理的方式。由于ArcGis程序基礎基于可開發(fā)平臺ArcEngine,可供有一定編程基礎的人員進行二次開發(fā)。因此提出了一種基于ArcEngine的土地報批出土方式,本文將從設想、算法、存在問題三個方面進行系統(tǒng)論述。
1 技術背景
油氣井用地報批業(yè)務由于其行業(yè)特點存在特殊性,不同于一般的鐵路用地報批、工業(yè)建設用地報批、地籍調(diào)查等業(yè)務,其地塊數(shù)量多、總量大,但單塊地塊面積小、地塊之間距離大且存在跨村跨鄉(xiāng)問題。通用的批量生成方法使用起來局限較大,僅能靠人工按照地塊順序依次處理,一名熟練員工一天僅能處理約不足100幅圖。處理過程繁瑣、耗時,但流程清晰,工作內(nèi)容固定,工作方式簡單,因此考慮采用編程的方法,以計算機程序替代人工完成的重復性勞動。
2 開發(fā)環(huán)境介紹
2.1 NET Framework與VS平臺
而Microsoft .NET Framework是由美國微軟公司開發(fā)的用于Windows的新托管代碼編程模型。它包含強大的功能與新技術,用戶可以自由構建多平臺上引人注目的用戶體驗的應用程序,實現(xiàn)跨技術邊界的無縫通信,并且能支持各種業(yè)務流程。Microsoft Visual Studio(簡稱VS)是美國微軟公司為.NET提供的通用集成開發(fā)平臺(IDE),為.NET提供了良好的支持。VS2015于2014年11月發(fā)布,新增了代碼指示器、內(nèi)存轉儲分析、UML工具等先進功能。
2.2 ArcEngine
ArcGis是Esri公司的產(chǎn)品總稱,是世界上市場占有率最高的地理信息系統(tǒng)平臺(Gis)軟件,土地工程行業(yè)內(nèi)普遍使用的ArcGIS Desktop是ArcGis產(chǎn)品線中的一員。ArcObject是編程用的對象,由ArcGis提供,是編程開發(fā)接口;ArcEngine是地圖引擎,是ArcGis的核心,將地圖數(shù)據(jù)和地理信息數(shù)據(jù)渲染后輸出為圖像,程序通過ArcObject來操作ArcEngine。本文采用ArcEngine9.0版本進行開發(fā),對于ArcGIs Desktop常用的shp文件均能形成良好的支持。
3 問題分析及算法設計
3.1 問題分析
在油氣井用地報批業(yè)務中,時常存在地塊數(shù)量多,總面積大,但單塊地塊面積小且地塊之間距離大的情況,以某石油公司某批次進行的陜西省榆林市神木縣用地報批項目中為例,在近1000平方公里的面積內(nèi)散布著100余地塊,傳統(tǒng)處理方法需要人工依次出圖處理,需要1至2個工作日才能完成。而擁有上萬地塊的大型項目,人工處理的成本就會變的極大。
人工處理包含如下幾個步驟:
1) 載入處理完畢的包含地塊地理信息的數(shù)據(jù)文件;
2) 設計圖幅大小、標題、比例尺等參數(shù)用以顯示地塊;
3) 根據(jù)地塊相對位置確定顯示輸出方式,并修改說明文字;
4) 生成格式符合要求的可打印圖幅后。
上述流程中,主要耗時步驟在第3步、第4步,需要操作人員使用pan命令將地塊置中,然后切換到布局視圖,進行說明文字的修改,最后選擇直接打印或打印到文件。可見,出圖工作因量大而繁瑣,但并不復雜且流程清晰,步驟明確,采用電腦編程,模擬人工操作方式來處理這一問題明顯具有巨大優(yōu)勢。下面依次提出每一步驟的程序解決方案:
1) 測繪行業(yè)一般采用ArcGis系統(tǒng)儲存地塊的地理信息數(shù)據(jù),本文程序基于ArcEngine,可實現(xiàn)完美支持,于程序內(nèi)部開辟大小可變的儲存空間,利用ArcEngine提供的數(shù)據(jù)接口來讀取并儲存地塊的相對位置、大小、形狀、地類等信息以備調(diào)用;
2) 根據(jù)相關規(guī)范與項目要求,在ArcGis Desktop中進行圖幅設計,隨后仍然利用ArcEngine提供的操作接口讀取相關參數(shù),并應用于程序之中;
3) 設計算法并編寫為程序,為全部地塊進行編號排序,確定其在圖幅中的顯示位置(3.2節(jié)將詳述這部分內(nèi)容);
4) 調(diào)用ArcEngine提供的輸出接口,將圖幅導出至程序中,隨后利用vb.net中提供的函數(shù)進行圖幅修正,添加諸如頁碼、標題等內(nèi)容,隨后輸出jpg格式文件至指定文件夾。
3.2 算法設計
算法是本文的核心內(nèi)容,設計的算法是否能夠合適的將地塊進行判斷、區(qū)分將直接影像圖幅輸出的質量和效率。
在程序角度,地塊是2D平面上的封閉圖形,由若干首尾相接的直線段組成。根據(jù)國家相關規(guī)范,圖幅采用正南正北方向,在此基礎上,對地塊生成最小外接矩形,同時計算該外接矩形的中心。
設構成該地塊的直線段的集合為L,共包含n條線段兩點坐標分別為(Lx1(i),Ly1(i)),(Lx2(i),Ly2(i)),該外接矩形左下角(西南)坐標為(x1(i),y1(i)),右上角(東北)坐標為(x2(i),y2(i)),中心點坐標為(x(i),y(i)),中心點距離左邊線與上邊線的距離分別為為w(i),h(i)。打印圖幅長寬分別為W、H。如圖所示,圖中青色為地塊,黑框范圍為外接矩形。
為保證顯示效果,地塊圖片必須置于圖幅中央。但存在如下問題:
1)個體過大現(xiàn)象:
即地塊大小超出了圖幅大小,因此數(shù)據(jù)處理第一步需要對所有地塊進行大小判定,超出圖幅范圍的根據(jù)項目要求或國家規(guī)范進行比例尺縮放或采用更大圖幅進行輸出;
2)重復輸出與壓蓋現(xiàn)象:
當兩塊小型地塊距離相近時產(chǎn)生,當輸出地塊a時,地塊a處于圖幅中央,地塊b被同時顯示,而輸出地塊b時地塊a同樣出現(xiàn),則產(chǎn)生了重復輸出,且兩張圖中地塊位置略有差異,而當?shù)貕Kb距離地塊a為某個特定距離或地塊b過大時,會產(chǎn)生壓蓋現(xiàn)象,即地塊b部分出現(xiàn)在輸出地塊a的圖中,如下圖所示:
為解決這兩項問題,需要對地塊進行壓蓋判斷:
圖幅右上側的其他地塊影響了整體的顯示。
判別地塊a的圖幅外框是否與地塊b的外接矩形存在重疊即可判定是否存在壓蓋現(xiàn)象,同時也可作為判定重復輸出的依據(jù)。
在找出會兩兩產(chǎn)生壓蓋現(xiàn)象的地塊后,計算該兩地塊的幾何中心,據(jù)此判斷是否產(chǎn)生地塊部分顯示不全問題,若不存在,則將兩地塊合并為一個集合,看作一塊地塊,兩地塊的幾何中心為該集合的中心,兩地塊的外接矩形為該集合外接矩形,重新參加計算。
設地塊a、地塊b為待判別地塊,圖幅參數(shù)為W,H則判斷過程為:
算法流程圖如下:
4 實例驗證
陜西省榆林市神木縣在某次報批中,122塊地塊分布在約1000平方公里的范圍內(nèi),經(jīng)程序處理,花費15分鐘共將118塊地塊處理完畢,并生成jpg格式圖片110張,110張圖片均正確,批量打印耗時45分鐘;4塊地塊中由于1塊地塊面積過大被標記,另3塊地塊合并集合處理失敗。人工對其進行了處理并打印,耗時30分鐘。
陜西省榆林市榆陽區(qū)在某次報批中,26塊地塊分布在約300平方公里的范圍內(nèi),經(jīng)程序處理,花費5分鐘共將25塊地塊處理完畢,并生成jpg格式圖片24張,24張圖片均正確,批量打印耗時15分鐘;1塊地塊中由于其面積過大被標記。人工對其進行了處理并打印,耗時5分鐘。
5 結論
該算法在處理具有特殊性的油氣井用地項目時有較好效果,可以正確、迅速的區(qū)分地塊并根據(jù)設定的參數(shù)輸出圖幅文件,可較大降低人力成本。但當?shù)貕K數(shù)量上升時處理速度會有不同程度的降低,無法處理超出圖幅范圍的地塊;當多個小地塊距離相近時算法會反復將合并后的集合加入計算,無法取舍導致計算量急劇增加,只能添加跳出判斷,人工處理這些地塊。這也將作為下個階段的研究內(nèi)容。
參考文獻:
[1] 韓霽昌.土地工程概論[M].北京:科學出版社,2013:6-7.
[2] 地籍管理文件匯編,內(nèi)部資料.
[3] Microsoft MSDN Library.
[4] ArcObjects For .Net.