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