陳 磊 朱永華
(1、陜西聚信規(guī)劃設(shè)計(jì)咨詢有限公司,陜西 西安710018 2、西安華泰測(cè)繪工程有限公司,陜西 西安710054)
通常在城鄉(xiāng)建設(shè)用地增減掛鉤項(xiàng)目實(shí)施方案編制過程中,地塊信息入庫(kù)均在ArcGIS 環(huán)境下完成。由于部分項(xiàng)目區(qū)拆舊地塊面積較小,地塊數(shù)量較多,導(dǎo)致地塊入庫(kù)編號(hào)困難,具體表現(xiàn)為三種情況:一是地塊數(shù)量大,手動(dòng)輸入編碼工作量巨大;二是增減地塊導(dǎo)致已編號(hào)出現(xiàn)“斷號(hào)”、“跳號(hào)”、“重號(hào)”,二次手動(dòng)編號(hào)困難;三是檢查工作量巨大,易發(fā)生錯(cuò)誤。為提高工作效率,大幅降低編號(hào)錯(cuò)誤率,采用計(jì)算機(jī)自動(dòng)生成編號(hào)是增減掛鉤工作發(fā)展趨勢(shì)。
一般情況某一增減掛鉤項(xiàng)目區(qū)內(nèi)安置地塊及留用地塊數(shù)量相對(duì)較少,本次編號(hào)以拆舊地塊為例。
根據(jù)陜西省自然資源廳的要求,拆舊地塊編號(hào)為CJXXXXXXYY-QQ(NN),其中XXXXXX 為試點(diǎn)項(xiàng)目區(qū)所在地行政區(qū)劃代碼、YY 為項(xiàng)目區(qū)流水編號(hào)、QQ 為該項(xiàng)目區(qū)內(nèi)的拆舊塊流水號(hào)、NN 為項(xiàng)目實(shí)施年份。由編號(hào)規(guī)則可知,在某一個(gè)增減掛鉤項(xiàng)目區(qū)內(nèi),地塊實(shí)施類型、項(xiàng)目區(qū)所在地行政區(qū)劃代碼及項(xiàng)目區(qū)流水號(hào)為定量,變量為拆舊塊流水號(hào)和實(shí)施年份。
本次編號(hào)思路為“先拆分,后合并”,即拆分地塊編號(hào)為定量和變量?jī)刹糠郑鸱肿兞繛樽兞? 和變量2 兩個(gè)子單元,待變量單元屬性值賦值完成后,合并相關(guān)屬性值得到完整編號(hào)。
基于ArcGIS 建立拆舊地塊shp,設(shè)拆舊地塊數(shù)據(jù)表名為CJDK,根據(jù)編號(hào)規(guī)則,建立地塊類型(定量)、行政區(qū)劃代碼(定量)、項(xiàng)目區(qū)流水編號(hào)(定量)、塊流水號(hào)(變量1)、實(shí)施年份(變量2)、地塊編號(hào)等字段(詳見表1),完成定量和變量賦值。
對(duì)于拆舊地塊,需要確定拆舊實(shí)施年份。一般情況下,同一實(shí)施年份地塊相對(duì)集中,可批量賦值,且拆舊年份排序優(yōu)先級(jí)最高。在不考慮拆舊年份的情況下,塊流水號(hào)賦值需遵守兩個(gè)規(guī)則:一是應(yīng)按照鄉(xiāng)(街、鎮(zhèn))、村兩級(jí)轄區(qū)排序,即升序塊流水號(hào)后不應(yīng)出現(xiàn)鄉(xiāng)鎮(zhèn)、行政村亂序;二是按照自上而下、從左向右的位置順序編號(hào)??傮w排序優(yōu)先級(jí)為鄉(xiāng)鎮(zhèn)>行政村>地塊位置。經(jīng)過轄區(qū)排序、位置排序后,將排序的順序號(hào)轉(zhuǎn)換為塊流水號(hào)即可。
表1 字段結(jié)構(gòu)表
坐標(biāo)值排序不可采用鄉(xiāng)鎮(zhèn)區(qū)域多邊形質(zhì)心坐標(biāo)值。當(dāng)某一行政區(qū)劃多邊形為狹長(zhǎng)形,雖其位置處于左上,應(yīng)優(yōu)先排序,但其質(zhì)心坐標(biāo)靠右下導(dǎo)致排序靠后。本次采用多邊形最小外接矩形的最小橫坐標(biāo)(左)和最大縱坐標(biāo)(上)排序。
在鄉(xiāng)鎮(zhèn)多邊形屬性表中添加數(shù)據(jù)類型均為浮點(diǎn)的xmin(最小橫坐標(biāo))和ymax(最大縱坐標(biāo))字段,使用python 對(duì)xmin 字段進(jìn)行xmin=!shape.extent.XMin! 運(yùn)算,對(duì)ymax 字段進(jìn)行ymax=!shape.extent.YMax!運(yùn)算,得到多邊形最小外接矩形的最小橫坐標(biāo)和最大縱坐標(biāo),以sort 工具按照ymax 降序(DESCENDING)、xmin 升序(ASCENDING)排序得到順序值。
由于一個(gè)增減掛鉤項(xiàng)目涉及鄉(xiāng)鎮(zhèn)一般不會(huì)超過十個(gè),在涉及鄉(xiāng)鎮(zhèn)數(shù)量較少的情況下也可手動(dòng)排序。
行政村排序方法類似于鄉(xiāng)鎮(zhèn)排序,此處不再贅述。
優(yōu)先行政區(qū)劃排序的目的是保證行政區(qū)劃范圍內(nèi)地塊完整性。即某一鄉(xiāng)鎮(zhèn)內(nèi)某一行政村內(nèi)的地塊全部排序后再進(jìn)行本鄉(xiāng)鎮(zhèn)下一行政村地塊排序,同時(shí)行政村排序同樣遵守自上而下、從左向右的順序。待某一鄉(xiāng)鎮(zhèn)內(nèi)所有行政區(qū)內(nèi)的所有地塊排序完成后轉(zhuǎn)至下一鄉(xiāng)鎮(zhèn),確保塊流水號(hào)在同一行政轄區(qū)的連續(xù)性。
地塊位置排序類似于鄉(xiāng)鎮(zhèn)排序。
得到全部順序號(hào)后,使用sort 工具按照鄉(xiāng)鎮(zhèn)>行政村>地塊位置的優(yōu)先級(jí)排序。塊流水號(hào)經(jīng)鄉(xiāng)鎮(zhèn)、行政村、地塊位置三級(jí)屬性排序后,可將排序的順序號(hào)轉(zhuǎn)換為塊流水號(hào)。即使排序工作完成后添加或者減少地塊,由于涉及鄉(xiāng)鎮(zhèn)及行政村位置固定、行政區(qū)代碼固定,運(yùn)行上述運(yùn)算后依然可迅速得到完整、連續(xù)、準(zhǔn)確的塊流水號(hào)。
EXCEL 編號(hào)是導(dǎo)出拆舊地塊屬性表,借助EXCEL 軟件按照編碼規(guī)則合并相關(guān)列達(dá)到修改拆舊地塊數(shù)據(jù)表dbf 文件的目的,可采用代碼完成。完成列合并后一是采用另存替換的方法,二是ArcGIS 中運(yùn)用Joins and Relates 功能關(guān)聯(lián)屬性即可完成編號(hào)工作。
若以geodatabase 模型管理拆舊地塊數(shù)據(jù)表,可借助ACCESS 設(shè)計(jì)SQL 更新完成編號(hào)。字段類型一致是字段合并的必要條件,需轉(zhuǎn)換Longint 和Int 型字段為char 型。設(shè)計(jì)SQL 部分更新代碼為:
Update CJDK set DKBH = DKLX +CStr (right(100+XMQLSH,2))+'-' +CStr(right(1000+KLSH,3))+'('+CStr(CJNF)+')'。
由于ACCESS 暫不支持SQL 中的cast()函數(shù),此處以CStr()函數(shù)代替。使用right()函數(shù)的目的是補(bǔ)齊虛位。
ArcGIS 屬性表的字段計(jì)算器功能非常強(qiáng)大,借助此功能可輕松完成編號(hào)生成。ArcGIS 字段計(jì)算器提供兩種解析程序,分別是VBScript 和python。
(1)VBScript 編號(hào)。
VBScript 編號(hào)與SQL 更新運(yùn)算方式相似,且都采用right()函數(shù)補(bǔ)齊虛位。與SQL 不同的是,由于VBScript 不允許顯式聲明任何數(shù)據(jù)類型,所有變量均屬于隱式變量,可不用函數(shù)轉(zhuǎn)換數(shù)據(jù)類型。
設(shè)計(jì)VBScript 部分更新代碼為:
DKBH=[DKLX]&[XZQDM]&right(100+[XMQLSH],2)&"-"&right(1000+[KLSH],3)& "(" &[CJNF] & ")"
(2)Python 編號(hào)。
Python 是ArcGIS 建議使用的腳本語言。與SQL 類似,"+"運(yùn)算符兩邊的數(shù)據(jù)需要類型一致,因此在字符串中使用整數(shù)時(shí),需要顯式地將整數(shù)用作字符串,使其與兩側(cè)的字符串?dāng)?shù)據(jù)類型保持一致,即調(diào)用str()函數(shù)。虛位補(bǔ)齊可直接使用zfill()方法右端補(bǔ)齊。
設(shè)計(jì)python 部分更新代碼為:
DKBH=!DKLX!+str (!XZQHDM!)+str (!XMQLSH!).zfill(2)+"-"+str(!KLSH!).zfill(3)+"("+str(!CJNF!)+")"
EXCEL 合并、ACCESS SQL 更新、ArcGIS 字段計(jì)算器都可以快速地完成編號(hào)。一般情況下,增減掛鉤項(xiàng)目范圍區(qū)劃定、地類統(tǒng)計(jì)、規(guī)劃復(fù)核、耕地等別判定等均在ArcGIS 環(huán)境下完成。使用ArcGIS 字段計(jì)算器編號(hào)不需要借助其他軟件,避免操作環(huán)境切換和數(shù)據(jù)的轉(zhuǎn)換,工作環(huán)節(jié)的減少可大幅提高工作效率。再者,拆舊地塊的確定并非一次完成,需要經(jīng)過多次論證及討論,以致編號(hào)工作需反復(fù)多次。ArcGIS 環(huán)境下直接使用字段計(jì)算器編號(hào)不需要數(shù)據(jù)轉(zhuǎn)換,可降低編號(hào)錯(cuò)誤率。
按照增減掛鉤實(shí)施規(guī)劃數(shù)據(jù)審核要求,建立的六個(gè)字段中僅需要地塊編號(hào)一個(gè)字段信息,其余字段數(shù)據(jù)皆為過程數(shù)據(jù)。根據(jù)增減掛鉤相關(guān)文件政策及地塊最小圖斑面積的要求,同一增減掛鉤項(xiàng)目區(qū)內(nèi)拆舊地塊數(shù)量不會(huì)超過999 個(gè)。其冗余數(shù)據(jù)量非常小,幾可忽略。
屬性值虛位僅出現(xiàn)于兩處,一是項(xiàng)目區(qū)流水號(hào),二是塊流水號(hào)。項(xiàng)目區(qū)流水號(hào)固定位數(shù)為二位,且此字段可批量賦值,此處不討論。當(dāng)少于10 個(gè)地塊時(shí)和10-99 個(gè)地塊時(shí),其數(shù)值位數(shù)都固定為2 位,僅當(dāng)?shù)貕K數(shù)量大于100 時(shí)需補(bǔ)三位位數(shù),故塊流水號(hào)位數(shù)僅可能為2 或3。自動(dòng)識(shí)別并自動(dòng)更新虛位位數(shù),進(jìn)一步完善更新代碼是下一步研究方向。