arcgis字段计算器实例

用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!)

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值