日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

ArcGIS字段計(jì)算器(Python篇)——字段查重等問(wèn)題匯總

 書(shū)山之客 2020-03-22

作為近年Esri支持得最好的腳本語(yǔ)言,Python能夠在字段計(jì)算器中解決不少簡(jiǎn)單的屬性問(wèn)題(如編號(hào)、截位等)。ArcPy則是直接能夠進(jìn)行ArcGis二次開(kāi)發(fā)。系統(tǒng)性文章目標(biāo)太大,目前我會(huì)把之前問(wèn)的字段計(jì)算器問(wèn)題以及ArcPy問(wèn)題匯總。

另注:python是對(duì)代碼縮進(jìn)要求很?chē)?yán)格的編程語(yǔ)言。本博客統(tǒng)一采用4個(gè)空格作為縮進(jìn)。

python很少使用分號(hào),逗號(hào)一定使用英文半角。(同學(xué)們請(qǐng)注意)

問(wèn)題一:多字段的最大、最小值

python的基礎(chǔ)函數(shù)中有求數(shù)值的求和、最大、最小值函數(shù),所以我們也可以直接使用的。

舉例:假設(shè)有三個(gè)字段,NumA,NumB,NumC三個(gè)字段都是數(shù)值型的字段,我們需要求三個(gè)字段的最大值,并寫(xiě)入到MaxNum字段中。

只需在表達(dá)式中輸入 max([NumA,NumB,NumC])即可。

最大值函數(shù):max([NumA,NumB,NumC])

最小值函數(shù):min([NumA,NumB,NumC])

多字段求和函數(shù):sum([NumA,NumB,NumC])

 最大值使用截圖如下:

問(wèn)題二:流水號(hào)編碼

舉例1:舉例描述:已有宗地圖層,包含字段“地籍子區(qū)”、“特征碼”、“宗地編碼”按照 宗地統(tǒng)一編碼 規(guī)則給圖層內(nèi)的宗地編碼。

宗地統(tǒng)一編碼規(guī)則:宗地編碼 = '地籍子區(qū)' '特征碼' 5位自然數(shù)流水號(hào)。

原始屬性表截圖:

字段計(jì)算器使用截圖:

處理結(jié)果截圖:

代碼塊如下:

dict={}

def funZdbm(fldVal,tzm):

    if fldVal == None:

        return None

    if tzm == None:

        return None

    temp = 0

    key = fldVal tzm

    if dict.has_key(key) == True:

        temp = dict[key]

        strVal = key str(temp 1).zfill(5)

        dict[key] = temp 1

        return strVal

    else :

        dict[key] = 1

        strVal = key str(temp 1).zfill(5)

        return strVal

舉例2:描述:有文本型字段流水號(hào),其中有兩行記錄已編號(hào),需要續(xù)編其他記錄,并在前面補(bǔ)零。保證流水號(hào)為6位數(shù)

原始屬性表截圖:

字段計(jì)算器使用截圖:

處理結(jié)果截圖:

 代碼塊:

max = 504

def funLsh(fldVal): 

    global max

    fldVal = fldVal.strip()

    if fldVal == None or fldVal == '':

        max = max 1

        return str(max).zfill(6)

    else:

        return fldVal

問(wèn)題三:文本型字段查重

描述:檢查宗地圖層,將“宗地代碼”字段有重復(fù)記錄的內(nèi)容標(biāo)記出來(lái),并將檢查結(jié)果賦給'檢查結(jié)果'字段。

原始屬性表截圖:

字段計(jì)算器使用截圖:

處理結(jié)果截圖:

代碼塊:(此代碼在數(shù)據(jù)量太大的情況下慎用,估計(jì)會(huì)比較卡,預(yù)計(jì)十萬(wàn)以內(nèi)還是可以承受)

dict={}

def adjRepeat(fldVal,id):

    if fldVal == None:

        return None

    temp = 0

    strVal = ''

    if dict.has_key(fldVal) == True:

        temp = dict[fldVal]

        strVal = '宗地代碼字段和FID為' str(temp) '的圖元重復(fù)'

        return strVal

    else :

        dict[fldVal] = id

        return ''

文章轉(zhuǎn)載于CSDN,作者藍(lán)胖子-chinagj07

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多