前一段时间遇到一个客户需要在ArcMap中批量的通过等高线图生成DEM,但是等高线图中的高程字段名称全部是中文,大家都知道Python遇到中文就会出现各种诡异状况,于是我被用户找去解决问题。
先看看Python的版本,是2.6.5,比用户的2.5.1要高,不知道这个问题能不能在自己电脑上重现。
好了,创建一个ChineseTest.py,内容如下:
测试一下,结果:
好吧,悲剧了,自己电脑上的版本比用户高,没法重现这个错误,只能到现场去解决了。
到用户现场,用上面的同样方式输出“中文”两个字,出现问题:
嗯,先把编码方式换成Utf-8尝试下:
错误依旧……
既然它提供了网址,那就看看吧。简单地浏览一下,终于知道如果文件里有非ASCII字符,需要在第一行或第二行指定编码声明。把ChineseTest.py文件的编码重新改为ANSI,并加上编码声明:
实验结果出来了:
很好,成果喜人,接着就是用这个方式来代替我们在高程字段中使用的中文字符。
结果依然悲剧,报取不到这个字段(因为没有用户数据,无法在这里给大家截图看了)。
鼓捣了好长时间,依旧是这个问题,没有任何进展。我只能建议用户先把字段中的中文,改成英文别名,这样就OK了,理论上确实可行,但是用户有9000多个shp文件,改完都成仙了~~
继续研究,终于发现最终的解决办法需要先修改编码方式,再将中文字段转换成unicode就可以识别了。
总结一下,解决方法是:
开头加上
#coding = gbk
之后将需要读取的中文字段名称转换为unicode,转换方法为:
s = “ 中文”
st = unicode(s,"gb2312")
这样就能安全的使用这些字段名了。
分享到:
相关推荐
ArcMap中使用 Python及高级模型构建器进行地理处理,这个python资料对学习python很有帮助。
在ArcMap中绘制连接线用来连接两段不同的线 代码及动图演示可见 https://tology.blog.csdn.net/article/details/122362630 工具在ArcMap10.8可用,其他版本可以参考代码自己制作工具
ARCGIS中Python实现按属性字段批量掩膜提取,保存数据集名称为字段中的属性值。
这是ArcMap10的中文使用手册,大家可以通过此手册掌握ArcMap的使用
主要介绍了在arcgis使用python脚本进行字段计算时是如何解决中文问题的,需要的朋友可以参考下
ArcMap10.61 中文补丁包
在ArcMap中用工具依次点击小班进行编号。 动图演示可见 https://tology.blog.csdn.net/article/details/121995036 点击启用工具,在下拉列表中选好要编号的图层和字段,输入起始编号后回车就可以点击编号工具开始...
介绍ArcMap中Buffer的创建及使用,并且附图说明。
在ArcMap中使用VBA宏命令 pdf文档
Arcmap中打开互联网地图中的地图数据,如影像数据、基础地图数据等,经过简单研究目前总结了四种方法。
在ArcMap中进行数据的拓扑错误检查
ArcMap中,快捷键ArcMap中,快捷键ArcMap中,快捷键
使用 ArcMap 10 中文教程 ArcMap 10 是 Esri 公司开发的一款功能强大的 GIS 软件,广泛应用于制图、空间分析、数据可视化等领域。以下是使用 ArcMap 10 的详细教程,旨在帮助用户快速掌握 ArcMap 10 的使用。 1. ...
arcmap——数据处理工具shp按字段批量导出dwg.tbx
然而,在使用ArcMap时,有时会遇到“ActiveX部件不能创建对象”错误,导致软件无法启动或出现其他问题。下面就来详细分析和解决这个问题。 问题分析: “ActiveX部件不能创建对象”错误是指ActiveX控件在注册时出现...
how to edit in arcmap
Esri的ArcMap官方指导说明中文版
ArcMap使用手册
ArcGIS中文使用手册之ArcMap使用手册2