zl程序教程

您现在的位置是:首页 >  其他

当前栏目

为什么你的shp文件字段名那么短?

文件 为什么 那么 字段名 shp
2023-06-13 09:13:09 时间

内容介绍

经常会有朋友问:为什么自己的shp数据,字段名只能放三个汉字;而别人的shp数据,字段名能取四五个汉字?

为什么呢?同样都是shp,怎么还长短不一了呢? 本篇推送,将讲一讲:短的为什么短?长的为什么长?以及怎么把短的变长?

shp是个啥?

shp是一种最常见的地理数据格式,大多数人对这种格式都不陌生。

关于shp的详细介绍,可以自行前往这个地址去看。 https://qa.nsidc.org/sites/nsidc.org/files/files/noaa/iicwg/1999/shapefile.pdf

看英文不习惯的话,也可以看翻译好的中文版。 https://blog.csdn.net/qq_35732147/article/details/82380610

shp文件组织

从上面俩网址的内容中,我总结一下:

shp格式不是一个文件,是一组文件。shp是由多个文件组成的(这几个是必须的):

  • .shp – 主文件,存储几何实体;
  • .shx – 索引文件,存储几何实体索引;
  • .dbf – dBase数据库,存储属性信息。

除了以上三个文件,还可以有其它文件的支持(这些是可选的):

  • .sbn 和 .sbx–;
  • .cpg – 文件编码信息;
  • .prj – 坐标信息;
  • .shp.xml – 元数据;
  • ……

一份完整的shp数据,必须要包含shp、shx、dbf三种类型的数据。如果在工作中收到了少于3这三个文件的shp数据,直接把本文发给对方就行。如果少了坐标定义信息,直接把本文发给对方就行(少了prj文件)。如果shp数据打开乱码,直接把本文发给对方就行(可能是少了cpg文件,默系统默认编码跟文件编码不一致)。而有些shp数据的字段能放五个汉字,有些只能放三个,问题的关键就在这个cpg(文件编码类型里)。

编码

在国内,经常会用到的编码类型有这么两种种:utf8、gbk。

在前面的内容中介绍过:shp数据的属性是存在.dbf文件中的。dbf类型的文件字段名长度最长只能有10个字节。

utf8编码的话,一个字母占一个字节,一个汉字要占3个字节; gbk编码(也就是gb2312、cp936)的话,一个字母占一个字节,一个汉字要占2个字节。

经过上面的介绍,相信大家基本上就能明白:为什么有些shp字段名是中文,可以放五个汉字(gbk,五个汉字恰好10字节);有些shp字段名是中文,却只能放三个汉字(utf8,三个汉字占9字节)。真正的原因就是:编码不一样啊!

实操

说了这么多,来看看怎么来创建吧。以QGIS为例,我创建了不同编码的两个图层,具体如下面视频所示:

视频内容

友情提示,ArcGIS在创建shp的时候不支持设置编码。使用ArcGIS的话,可以百度下怎么修改默认编码(改注册表就行)。

总结

看到这里,相信聪明的你已经知道应该怎么做才能让shp的字段名变成五个汉字的长度。如果你觉得五个还不够,那可以用数据库,gdb的字段名可以很长很长,长到一定可以满足你的需求