ArcGis或MapGis中浏览数据乱码问题

技术文章3年前 (2021-05-07)4400

工作中经常需要使用ArcGis或MapGis的数据,但经常会出现收集来的数据或者汇交的数据是乱码,通常我们会认为可能是软件在不同格式转换过程中因为不兼容等问题导致的,但经过长时间的实践发现,数据本身没有问题的情况也是很普遍的。

 



  这种情况有一个比较明显的特点就是,在有的电脑上是乱码,但在另外的电脑上就没有乱码,一般都是将数据拿到其他的电脑上进行处理,所以我们推测产生这种问题的原因应该是同软件的版本或者软件的运行环境有关。经过多次调试,发现此问题应是ArcGis和MapGis的默认编码不同造成的。其中MapGIS,默认使用CP936(GBK)编码存储,无论是你使用何种系统,系统的默认语言都是使用GBK编码;而ArcGis的编码系统则根据安装软件时发生变化,当你安装的系统的原始版本并不是简体中文,那么这个就会发生变化(尤其是盗版系统,经常可能是英文版或者俄文版改写的),所以ArcGis的默认编码就会相对比较多。同时如果收集的资料来源并非国内,这样出现乱码的可能性就会更大了。


  所以,这个问题的根本原因就是读取文件使用的编码类型和文件实际存储的编码类型不一致。


  Shapefile文件的头文件(dBase Header)中,一般会包含shapefile使用的编码类型的信息,这个信息成为 LDID ( Language Driver ID),这样在使用应用程序打开 shapefile 的时候,应用程序就知道用何种编码类型去正确读取它,而不会发生乱码。 在 ArcGIS Desktop 生产的 shapefile 数据中通常会包含这项信息。在Shapefile的子文件中,有时我们还会发现同名 *.cpg 文件,文件中也存储了编码信息,用记事本打开,看到例如 utf-8。


  二者被ArcGIS 识别的优先顺序是,LDID 优先于 CPG文件。也就是如果头文件中没有约定读shapefile的编码类型时,如果这时刚好有个CPG文件,那么ArcGIS就会使用这里的编码类型读取。


  我们知道 shapefile 是个开放格式,只要你了解了数据规范,完全可以脱离ArcGIS自己生产出来。在Windows中文语言设置下,假设你自己写代码或者使用第三方的程序生产了shapefile。如果是 ArcGIS 10.2 和之前的版本,那么在本机上读取一般是没问题,ArcGIS 默认编码是按照本机默认编码,没有乱码。


  可是拿到 ArcGIS 10.2.1 以后的版本中发现乱!码!了!在缺失 LDID 和 CPG时,这几个版本默认使用 UTF-8 来读取 shapefile,这样必然乱码了。

 



  解决方法就是使用记事本工具打开,修改同名的CPG文件,文本内容oem或者936,如果部分第三方软件没有该文件,只需要新建同名的CPG文件,文本内容同上。


  此外,我们需要了解的是中文系统一般采用GBK的编码方式,因此中文系统下,生成的shapefile文件都是以GBK来编码其中的字段属性的,如果dbf不是GBK编码就会出现乱码问题。此外常用的编码类型如下,这种问题同我们下载的字幕出现乱码的原理是一样的。



相关文章

关于ArcGIS Engine符号库的讨论

关于ArcGIS Engine符号库的讨论

符号化是GIS应用开发中重要的功能或者是处理,由于程序中每次调入一个图层的图层的符号都是随机的,动态变化的,所以不利于图层的美观。还有一点就是符号有增加电子地图可读性的功能。符号的来源有以下几种:1、...

ArcGIS实用制图技巧——如何制作“光照”效果的水体多边形

ArcGIS实用制图技巧——如何制作“光照”效果的水体多边形

通过对地图中的水体要素添加光照效果,能够使地图更具真实感。这里,就来介绍一下如何使用ArcMap来实现为水体表面添加光照效果。         &nb...

ArcGIS使用字体文件制作符号库

ArcGIS使用字体文件制作符号库

ArcGIS制作的符号库有多种,刚刚毕业进入公司,接触到符号库的制作,在前人的脚步之下,本人整理通过字体符号(Character Marker Symbol)制作符号库的步骤。重要方法:对于大量制造符...

如何实现ArcGIS符号库的合并以及延伸问题

如何实现ArcGIS符号库的合并以及延伸问题

如何实现ArcGIS符号库的合并?有时候我们会需要将一个符号库中的部分符号添加到另一个符号库中,有时候则是两个或多个符号库整体合并到一起,如何操作可以实现呢?这里提供两个解决思路一)在ArcMap的符...

ArcGIS地图通用线符号的制作

ArcGIS地图通用线符号的制作

ArcGIS地图中有一些线性数据,如交通网络,应用的领域非常广泛,其符号表达已逐渐被大众所认识和熟知。这类线符号的制作,虽没达到约定俗成的程度,但已具有一定的通用性,值得制图员去学习和掌握。所以本文将...

ArcGIS地质填充符号的制作

ArcGIS地质填充符号的制作

地质制图中,面符号的制作复杂度最高,存在规则和不规则的样式,通常由底色和图案组成,表示岩性和年代,是极具代表性的符号种类。ArcGIS提供了3种实现地质面符号的方法:基于矢量、基于图片和基于制图表达技...