ArcGIS错误异常100问之005:ArcGIS字段计算器python中文编码问题解决

Posted 刘一哥GIS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ArcGIS错误异常100问之005:ArcGIS字段计算器python中文编码问题解决相关的知识,希望对你有一定的参考价值。

问题描述:

现因工作的需要,对照2017最新版:《土地利用现状分类》(GBT 21010-2017),需根据DLMC对DLBM进行批量修改,如旱地是0103,其他林地是0307等,共计19种用地类型。


问题解决:

由于python中中文编码的影响,字段计算器老是出现问题,后来终于找到了解决办法:
在中文编码后加.decode(‘utf-8’)进行编码转换。


完整代码为:

def fun(a):
    if a=='水浇地'.decode('utf-8'):
        return '0102'
    elif a=='旱地'.decode('utf-8'):
        return '0103'
    elif a=='有林地'.decode('utf-8'):
        return '0111'
    elif a=='灌木林地'.decode('utf-8'):
        return '0305'
    elif a=='其他林地'.decode('utf-8'):
        return '0307'
    elif a=='人工牧草地'.decode('utf-8'):
        return '0403'
    elif a=='其他草地'.decode('utf-8'):
        return '0404'
    elif a=='铁路用地'.decode('utf-8'):
        return '1001'
    elif a=='公路用地'.decode('utf-8'):
        return '1003'
    elif a=='水库水面'.decode('utf-8'):
        return '1103'
    elif a=='坑塘水面'.decode('utf-8'):
        return '1104'
    elif a=='内陆滩涂'.decode('utf-8'):
        return '1106'
    elif a=='水工建筑用地'.decode('utf-8'):
        return '1109'
    elif a=='设施农用地'.decode('utf-8'):
        return '1202'
    elif a=='城市'.decode('utf-8'):
        return '201'
    elif a=='建制镇'.decode('utf-8'):
        return '202'
    elif a=='村庄'.decode('utf-8'):
        return '203'
    elif a=='采矿用地'.decode('utf-8'):
        return '0602'
    elif a=='风景名胜及特殊用地'.decode('utf-8'):
        return '0906'
    else:
        return '0000'

使用以下方法,不尽如人意。

# -*- coding: utf-8 -*-

以上是关于ArcGIS错误异常100问之005:ArcGIS字段计算器python中文编码问题解决的主要内容,如果未能解决你的问题,请参考以下文章

ArcGIS错误异常100问之001:License服务无法启动权威解决办法

ArcGIS错误异常100问之003:属性表中文乱码解决办法总结

ArcGIS错误异常100问之002:Error 000735 简化容差:值是必需的(简化线简化面工具)

错误异常大全:ArcGIS version not specified. You must call RuntimeManager.Bind before creating any ArcGIS(代码

错误异常大全:ArcGIS version not specified. You must call RuntimeManager.Bind before creating any ArcGIS(代码

QGIS入门实战精品教程005:QGIS如何打开ArcGIS创建的文件数据库(GDB)?