字段計算器介紹
按圖斑順序編號
最簡單的編號就是按圖斑順序依次編號,一種是可以借助現(xiàn)有的編號字段,比如FID進(jìn)行字段運(yùn)算獲得編號,另外一種便是通過編寫簡單代碼的方式進(jìn)行編號。先看第一種,我們添加一個BH字段,然后打開字段計算器,切換到Python語言,然后雙擊FID字段再加1(FID編號從0開始)。
計算完成后,BH字段里面就有了編號。
1rec=0
2def autoIncrement():
3 global rec
4 pStart = 1
5 pInterval = 1
6 if (rec == 0):
7 rec = pStart
8 else:
9 rec = rec + pInterval
10 return re
這樣我們便實(shí)現(xiàn)了簡單的順序編號,但有時候我們需要編號數(shù)字位數(shù)保持一致,例如:0001、0299這樣都是四位數(shù)。這就需要用到Python字符串函數(shù).zfill(n)。函數(shù)功能:返回長度為n的字符串,原字符串右對齊,前面填充0。
下面,我們以生成5位數(shù)編號舉例。在BH字段名稱上右擊打開字段計算器,切換到Python語言,先選擇并雙擊BH字段,再選擇并雙擊.zfill()函數(shù),輸入函數(shù)參數(shù)5,就形成!BH!.zfill(5)代碼,表示BH字段字符串向左保留為5位。
點(diǎn)擊確定,計算完成后生成的結(jié)果如下:
同樣的,如果需要在編號前面再加其他字母等信息,直接在編號前面添加即可。比如5位編號前面加“SM”,為“SM00001”,代碼為:'SM'+ !BH!,要注意為英文雙引號。另外,也可以通過修改上面編號函數(shù)代碼的方式實(shí)現(xiàn)。
按字段類型編號
有時候,我們在編號時需要按照圖層中某一字段屬性類型對要素進(jìn)行編號。比如在衛(wèi)片圖斑中,我們需要按鄉(xiāng)鎮(zhèn)對圖斑進(jìn)行編號,每個鄉(xiāng)鎮(zhèn)都從0開始編號。同樣可以在字段計算器中采取Python腳本的方式進(jìn)行實(shí)現(xiàn)。我們定義一個isDuplicateIndex(inValue)函數(shù),然后調(diào)用即可,同時讓編號按3位數(shù)對齊。
完整Python代碼:
1UniqueDict = {}
2def isDuplicateIndex(inValue):
3 UniqueDict.setdefault(inValue,0)
4 UniqueDict[inValue] += 1
5 return UniqueDict[inValue]
按圖斑四至編號
有時候,為了工作方便我們需要按照圖斑四至位置,按照從左到右、從上到下的順序給圖斑進(jìn)行編號。按照四至位置編號,首先需要按照上述排序方式對圖斑進(jìn)行重新排序,然后依次編號即可。
首先,需要給大家簡單介紹一下幾個字段計算器中常用的Python語法:
1!shape.area!:圖斑要素面積;
2!shape.length!:圖斑要素周長。
3!shape.extent.Xmin!:圖斑要素最小外包矩形的左上角X坐標(biāo);
4!shape.extent.XMax!:圖斑要素最小外包矩形的右下角X坐標(biāo);
5!shape.extent.Ymax!:圖斑要素最小外包矩形的左上角Y坐標(biāo);
6!shape.extent.YMin!:圖斑要素最小外包矩形的右下角Y坐標(biāo);
具體操作步驟如下:
第二步:在【數(shù)據(jù)管理】模塊下的【常規(guī)】工具集中找到【排序】工具進(jìn)行圖斑排序。
第三步:排序后會生成一個新的要素圖層,給新圖層添加編號字段,然后運(yùn)用上面順序編號的代碼給圖斑依次編號就可了。
計算完成后我們要的四至編號就成功實(shí)現(xiàn)了,如下圖所示:
圖斑分級別號
我們以面積大小為例,采取自定義Python函數(shù)的方式演示一下如何進(jìn)行分級編號。自定義編號函數(shù):按照要素面積大小,將面積小于2000平方米的圖斑編號為1,大于2000小于3000平方米的為2,以此類推。
完整的函數(shù)代碼如下:
1def bianhao(value):
2 bh = ''
3 if value <= 2000:
4 bh = 1
5 elif 2000 < value <= 3000:
6 bh = 2
7 elif 3000 < value <= 4000:
8 bh = 3
9 elif 4000 < value <= 5000:
10 bh = 4
11 else:
12 bh = 5
13 return str(bh).zfill(3)
函數(shù)調(diào)用字段為面積字段,計算后結(jié)果如下,圖斑已經(jīng)按照面積大小進(jìn)行了編號。
聯(lián)系客服