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(代码