廣西南寧林業(yè)勘測設(shè)計院,廣西 南寧 530001
小班編號一直都是林地征占領(lǐng)域研究的熱點問題之一。傳統(tǒng)的小班編號方式遵循從北向南、從西向東的原則或者從上到下、從左到右的原則進行編號,其人工參與度高,存在較強的主觀性,工作效率低下,且容易發(fā)生錯誤[1]。而且針對線型小班,采用傳統(tǒng)的編號規(guī)則并不能滿足實際需要[2]。因此,如何提高小班自動編號的效率和準確度,是當前亟待解決的問題。
王曉龍等[3]提出了一種基于模型構(gòu)建器的圖斑編號方法,能夠?qū)崿F(xiàn)宗地批量自動化編號,并具有可移植性和自定義性。宋鵬陽等[4]通過編寫Python腳本,自動識別小班,并通過計算小班質(zhì)心坐標,實現(xiàn)了對小班的自動排序編號。答星等[5]基于空間聚集原理,利用Python語言和ArcPy站點包,進行ArcGIS二次開發(fā),解決了離散型圖斑在利用坐標位置進行自動編號時容易出現(xiàn)的混亂無序的問題。曹明蘭等[6]基于ArcGIS Model Builder在不破壞原圖層結(jié)構(gòu)屬性的情況下實現(xiàn)了小班自動排序編號的功能,較好地解決了南北狹長、面積參差不齊的小班編號在視覺上的跳躍問題以及島洞型小班的編號重復(fù)問題等。宋鵬陽[7]通過調(diào)用Arcpy自動識別林地小班,并基于林班賦值小班號實現(xiàn)小班自動編號功能。李天塍等[8]深入探討了MapGIS小班自動編號方法,并將其應(yīng)用于損毀土地的外業(yè)調(diào)查工作中。李斌[9]巧妙利用ArcGIS10.0的開發(fā)優(yōu)勢與Excel2007的便捷操作,較好地實現(xiàn)了林業(yè)小班自動化編號。郭小波等[10]通過C#及ArcEngine組件庫開發(fā)了以圖幅為單位圖斑自動編號的程序。鄭宇志等[11]提出了簡化MBR編號法、改進錐形編號法以及遞歸分解編號法三種編號方法。楊全等[12]提出按帶狀法進行小班編號,真正意義上實現(xiàn)了從上到下、從左到右的小班編號。
文章針對小班編號的問題,提出了三種常用的自動編號方法,并基于.Net平臺,結(jié)合VS2012開發(fā)框架,采用ArcGIS Add-In對ArcGIS進行了二次開發(fā),設(shè)計了小班自動編號工具可視化界面。最后,結(jié)合具體的實驗數(shù)據(jù)進行了驗證,并針對程序運行的結(jié)果,與人工小班編號方式進行對比分析,探討該工具的準確性和高效性。
ArcGIS Add-In技術(shù)作為一種新推出的開發(fā)技術(shù),具有容易創(chuàng)建、便于共享、易于安裝、方便卸載、技術(shù)安全等特性,使用該技術(shù)可以極大程度上降低開發(fā)人員的學(xué)習(xí)成本。相較于Python Add-In技術(shù),面向.NET及Java高級編程語言的開發(fā)方式可支持更多可擴展元素。C#作為一門專為.NET Framework設(shè)計的面向?qū)ο蟮母呒壘幊陶Z言,其語言簡潔、兼容性強、與Web緊密結(jié)合,更受開發(fā)者的青睞。利用.NET平臺配合ArcGIS的SDK開發(fā)包,可實現(xiàn)細粒度的控制ArcGIS,完成各類復(fù)雜的二次開發(fā)操作[13]。
由于傳統(tǒng)的小班自動編號工具極大部分是根據(jù)具體的編號規(guī)則進行二次開發(fā),要么程序可視化界面不夠靈活,要么程序自動化程度不夠高,不能根據(jù)用戶的實際需要選擇定制,存在一定局限性?;诖耍恼绿岢龅男“嘧詣泳幪柟ぞ咴诒WC編號準確性的前提下,根據(jù)待排序圖層要素的對應(yīng)字段與線性圖層要素的對應(yīng)字段分別進行排序,并根據(jù)分類字段進行歸一化處理,通過查詢計算每個小班圖斑點距離線要素起點的距離,然后按照該要素至線要素起點距離進行排序即可。根據(jù)具體實踐,實現(xiàn)了往返法、順序法、Z形法三種編號方式,在最大程度上實現(xiàn)了編號的自動化與多功能化。程序界面如圖1所示。
圖1 程序設(shè)計界面圖
(1)往返法。首先確定河流、道路等線要素的起點和終點,選擇線要素的右邊為起始邊,計算小班幾何中心到線要素起點的距離,根據(jù)距離的遠近依次進行編號,直至線要素的終點,然后以終點為起點,首末置換,同理根據(jù)距離的遠近依次進行編號。
(2)順序法。確定線要素的起點和終點,選擇線要素的右邊為起始邊,計算小班幾何中心到線要素起點的距離,根據(jù)距離的遠近依次進行編號,直至線要素的終點;然后從線要素的起點出發(fā),以線要素的左邊為起始邊,同理,根據(jù)距離遠近依次進行編號。
(3)Z形法。確定線要素的起點和終點,不分線要素起始邊,直接計算小班幾何中心到線要素起點的距離,根據(jù)距離的遠近依次進行編號,直至線要素的終點。
根據(jù)線型小班自動編號工具的設(shè)計原理,在.NET3.5的平臺上,結(jié)合VS2012開發(fā)框架,基于ArcGIS10.2的版本進行Add-In的線型小班自動編號工具開發(fā)。該工具可根據(jù)用戶的具體需求,通過可視化界面的圖層選擇、對應(yīng)字段、分類字段、排序類型、編號字段等參數(shù)選項卡來進行具體的設(shè)置和選擇,以制定符合實際用戶要求的編號規(guī)則,最終實現(xiàn)線型小班自動編號的過程。其具體的實現(xiàn)流程如圖2所示。
圖2 線型小班自動編號工具實現(xiàn)流程圖
實驗選取了廣西某地區(qū)林地變更整合項目的部分數(shù)據(jù),數(shù)據(jù)投影坐標系采用3度分帶,中央經(jīng)線108°,地理坐標系為GCS_China_Geodetic_Coordinate_System_2000。數(shù)據(jù)存儲在個人地理數(shù)據(jù)庫中,數(shù)據(jù)庫格式為GDB格式,內(nèi)含一個面圖層AS和一個線圖層XTC。其中,面圖層AS共計圖斑34個,包含OBJECTID、SHAPE、編號、線屬性、BH、FL、面積、長度這8個字段,圖斑面積合計30935.8m2,最小圖斑面積為358.7m2,最大圖斑面積為2258.9m2;線圖層XTC共計2個要素,包含OBJECTID、SHAPE、線屬性、SHAPE_Length這4個字段,要素1長度為7295.1m,要素2長度為2853.9m。具體實驗數(shù)據(jù)概況如圖3所示。
圖3 實驗數(shù)據(jù)概況圖
(1)程序參數(shù)設(shè)置。在Arcmap中啟動插件程序,彈出線型小班自動編號程序可視化界面。根據(jù)用戶的實際項目需求,在待排序圖層選項參數(shù)下,圖層選項卡中,選擇面圖層AS,這里程序?qū)⑻幚砻鎴D層中所有的小班;對應(yīng)字段選擇面圖層AS中的線屬性字段,該字段的字段值為程序排序的參考初始值;分類字段選擇面圖層AS中的FL字段,該字段的字段值與線圖層XTC中的要素值相對應(yīng);選擇排序類型選項卡有順序法、往返法和Z形法三種,可根據(jù)實際需要進行選擇;編號字段選擇面圖層AS中的BH字段,該字段值用來存儲程序自動編號后的值。在線性圖層參數(shù)選項下,選擇線性圖層XTC,對應(yīng)字段選擇線性圖層XTC中的線屬性字段。點擊“確定”按鈕,執(zhí)行線型小班自動編號操作。
(2)程序運行結(jié)果。選擇往返法進行線型小班自動編號,設(shè)置好其他程序參數(shù)后,運行程序。根據(jù)程序運行結(jié)果,該實驗共處理了34個小班。程序運行成功后,會彈出處理完成的對話窗,并將排序結(jié)果自動保存在面圖層AS中的BH字段中。關(guān)閉對話窗,檢查程序執(zhí)行后小班的編號情況,確認執(zhí)行是否成功。往返法線型小班自動編號結(jié)果如圖4所示。
圖4 往返法線型小班自動編號示意圖
選擇順序法進行線型小班自動編號,其他程序參數(shù)保持不變,運行程序。程序處理完34個小班后,會彈出處理完成的對話框,并將排序結(jié)果自動保存在面圖層AS中的BH字段中。順序法線型小班自動編號結(jié)果如圖5所示。
圖5 順序法線型小班自動編號示意圖
選擇Z形法進行線型小班自動編號,其他程序參數(shù)保持不變,運行程序。待程序處理完畢,檢查自動編號成功后,關(guān)閉程序。Z形法線型小班自動編號結(jié)果如圖6所示。
圖6 Z形法線型小班自動編號示意圖
結(jié)合圖4、圖5和圖6的結(jié)果可知,基于該線型小班自動編號工具可以準確地完成該項目的小班編號工作。為驗證其科學(xué)可靠性和高效準確性,采用人工方式進行編號,并與程序運行的結(jié)果進行對比。以往返法編號的方式為方案一,以順序法編號的方式為方案二,以Z形法編號的方式為方案三,對三種方案完成這34個小班編號工作所耗費的時間、編號準確度等指標進行分析,得到三種編號方法的結(jié)果對比分析如表1所示。
表1 編號結(jié)果對比分析表
由表1可知,采用往返法進行線型小班編號時,工具耗時2s,人工耗時58s;采用順序法進行線型小班編號時,工具耗時2s,人工耗時66s;采用Z形法進行線型小班編號時,工具耗時3s,人工耗時128s。而且這三種編號方法的編號準確度均為100。由此可知,采用文章提出的方法進行線型小班自動編號,可以高效準確地完成線型小班編號工作,極大地節(jié)約了勞動成本,提高了生產(chǎn)效率。
文章基于.NET平臺和VS2012開發(fā)框架,設(shè)計并實現(xiàn)了基于ArcGIS Add-In的線型小班自動編號工具,并結(jié)合實踐數(shù)據(jù)進行分析驗證。實驗結(jié)果表明,采用文章提出的線型小班自動編號工具,極大地節(jié)約了勞動成本,保證了編號的準確性,大幅度提高了生產(chǎn)效率。而且針對項目的實際需要,程序設(shè)計了往返法、順序法、Z形法三種編號方法,用戶可以根據(jù)自己的需求選擇合適的編號方法完成線型小班的自動編號。但文章的實驗主要針對項目的部分數(shù)據(jù)而進行,且樣本數(shù)據(jù)只有34個小班,如果要推廣至相關(guān)行業(yè)的實際生產(chǎn)應(yīng)用中,還需進行更多的實驗,來驗證該工具的可靠性和實用性。