arcgis欄位計算器例項

2021-08-01 08:44:34 字數 1748 閱讀 1993

用python來寫arcgis的字段計算器,根據行政區劃來給字段賦值,

python

要注意格式的問題,

1.python與其他語言最大的區別就是,python的**塊不使用大括號{}來控制類,函式以及其他邏輯判斷。python最具特色的就是用縮進來寫模組。 縮排的空白數量是可變的,但是所有**塊語句必須包含相同的縮排空白數量,這個必須嚴格執行。

2.python中預設的編碼格式是 ascii格式,在沒修改編碼格式時無法正確列印漢字,所以在讀取中文時會報錯。

解決方法為只要在檔案開頭加入 # -*- coding: utf-8 -*- 就行了。但是在arcgis裡的指令碼編輯域編碼格式是不可更改的,因此這句話沒效果。需要在字串前面加上u才行。

3.python的字串必須用雙引號擴起。

4.python

的變數必須用

!!擴起。

不多說了,不上**的技術博主都不是好大夫。

示例,根據北京市的行政區劃名稱來確定行政區劃編碼,abcd為引數名,可以自行更換。

**塊:

def reclass(abcd):

if (abcd == u"東城區"):

return 110101

elif (abcd == u"西城區"):

return 110102

elif (abcd == u"朝陽區"):

return 110105

elif (abcd == u"豐台區"):

return 110106

elif (abcd == u"石景山區"):

return 110107

elif (abcd == u"海淀區"):

return 110108

elif (abcd == u"門頭溝區"):

return 110109

elif (abcd == u"房山區"):

return 110111

elif (abcd == u"通州區"):

return 110112

elif (abcd == u"順義區"):

return 110113

elif (abcd == u"昌平區"):

return 110114

elif (abcd == u"大興區"):

return 110115

elif (abcd == u"懷柔區"):

return 110116

elif (abcd == u"平谷區"):

return 110117

elif (abcd == u"密雲區"):

return 110228

elif (abcd == u"密雲縣"):

return 110228

elif (abcd == u"延慶區"):

return 110229

elif (abcd == u"延慶縣"):

return 110229

elif (abcd == u"亦莊經濟開發區"):

return 110230

else :

return 110000

上面的**格式都是嚴格控制了,有類似需要的可以直接複製,改一改就能用了。

這裡要說明兩點:1.else是必不可少的。2.別忘了加冒號。

在下面你要賦值的字段處呼叫上面定義的函式,然後傳參就可以了,我這裡做個示例:

reclass(!name!)

ArcGIS中欄位計算器的問題

這幾天在給同門師兄處理乙個土地利用資料,需要將原先的分類轉換為另一種新的分類,其實就是根據乙個已經存在土地利用 生成新的字段,這個欄位是按照新的分類標準來組織,國內的的土地利用 有好幾套,比如二調的 體系和中科院的 體系,師兄由於研究的需要在此基礎還自己發展了一套新的地類編碼。所以有時候就需要在這幾...

ArcGIS 柵格計算器

規定 表示此為可選引數 用 標識 未完 示例函式名稱 例子con con elevation 2000,elevation elevation 2000保留原值,不滿足條件為nodata isnull isnull raster setnull setnull raster raster value...

ArcGIS柵格計算器

柵格計算器能用好的話真的也是很強大 一,arcgis中柵格計算常用表示式 我自己遇到的差不多就這些 1 將特定值 9999 賦值為0 con raster 9999,0,raster 2 將某一範圍內 如小於0 賦值為0 con raster 0,0,raster 3 將特定的柵格值 如1 賦值為空...