查看: 1177|回复: 1

ArcGIS Engine Addin HRESULT:0x80040655

[复制链接]

176

主题

240

帖子

8310

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8310
发表于 2019-3-14 18:18:16 | 显示全部楼层 |阅读模式
最近在做ArcGIS的AddIn开发,遇到个奇怪的问题,有些shp创建字段的时候很正常,有一些总会报
HRESULT:0x80040655
The Field type is invalid or unsupported for the operation.
FIELD_INVALID_TYPE
这个错误,即使手工创建,也会出现这个错误
初步定义是字段长度超出目前的shp所允许的字段长度。找了些资料,觉得挺有道理。
1.png

1、中文系统一般采用GBK的编码方式,因此中文系统下,生成的shapefile文件都是以GBK来编码其中的字段属性的,如果dbf不是GBK编码就会出现乱码问题。解决方式如下:
http://www.cnblogs.com/liweis/p/4629265.html​

2、官方给的建议是:使用支持统一码(unicode)的文件地理数据库(file geodatabase)保存文件,这样就避免乱码,不用修改注册表了

其实解决方法很简单,在10.1之后arcmap会先读取.cpg文件来判断文件的编码,如果没有.cpg文件,10.1之前的版本就会把系统的默认编码当做文件编码来用,10.1之后的会用utf编码去读取,而多数dbf的编码都是gpk编码,所以就会有乱码。
        只需要增加一个.cpg文件就行了。文件里面就只定义了dbf所使用的编码格式,如:GBK,GB2312,UTF-8等,一般来说你只要在cpg文件里面写GBK或GB2312,然后再用arcmap打开就不会有乱码的

以为找到这些可以对应解决到问题,不过还是解决不到,我把输入的标题名字转GB2312,UTF-8,然并卵,没鸟用。

后来想到,是不是读取到GDB里,重写一次所有属性,并在GDB环境里操作就会好了呢,于是继续试验,创建GDB。


之后呢,我把shp加入到了gdb里,然后神奇的事情就发生了,居然能写入长字段了,以前报错都是超过3个汉字报错,现在可以了。不用启动编辑状态,直接添加即可。







0

主题

2

帖子

50

积分

注册会员

Rank: 2

积分
50
发表于 2019-4-26 12:38:35 | 显示全部楼层

ArcGIS Engine Addin HRESULT 0x80040655

Whether there are analogues?

___
XEvil 4.0: best captcha breaker, included ReCaptcha-2!

QQ|手机版|GIS3D 基地 ( 京ICP备16033688号

GMT+8, 2019-7-18 02:34 , Processed in 0.178967 second(s), 30 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表
 
Skyline中文社区-总群
帮主 gis3d 海洪