查看原文
其他

GIS基础之GIS属性表操作

走天涯徐小洋 走天涯徐小洋地理数据科学 2023-10-24

GIS属性表操作

对于数据量大的情况,QGIS由于是64位软件,且可以选择文本数据编码,对于大数据量的CSV数据处理我建议优先选择QGIS。下面以中国地面气候资料日值数据集(V3.0)逐日气温数据为例,介绍一下GIS属性数据的处理。

下面以QGIS和ArcGIS这两种最常用的GIS软件平台分别进行介绍。

文本数据导入

数据为文本型,用空格分隔,根据数据文档我们得知13个字段分别为:

  1. 区站号
  2. 纬度(度、分)
  3. 经度(度、分)
  4. 观测场海拔高度(0.1m)
  5. 平均气温(0.1℃)
  6. 日最高气温
  7. 日最低气温
  8. 平均气温质量控制码
  9. 日最高气温质量控制码
  10. 日最低气温质量控制码
导入文本数据

QGIS属性计算

QGIS字段计算器使用的是Python语言,在这里我们需要使用python的函数进行计算。我们以下面几个例子进行介绍:

经纬度计算

原始数据中经纬度是以度、分的形式存储的,后两位是分,前面是度。由于中国疆域广阔,东西跨度大,所以经度的度有2位,也有3位,这个时候就不适合通过位数来进行分割。那么应该用什么方法计算呢?我是使用了整除100的方式进行划分:

  • 度分整除100,商整数部分作为经纬度的度
  • 度分整除100,余数即为分,由于GIS经纬度需要为小数点,余数处理60化为小数制
  • 度+余数/60即为小数的经纬度

具体计算过程和代码如下,注意一下这个数据纬度字段在前(field2),经度字段在后(field3):

经纬度度、分计算
建立一个新的字段,双精度格式,输入python函数计算
 "field_2" //100+ ("field_2" %100)/60

Table转点

计算完经纬度后,我们可以把属性表空间化,转为SHP,QGIS中可以使用Create Points layer from table

Create Points layer from table
属性表转点完成

获取独立的测站点

上面转点完成后,是2019年全年的测站监测逐日数据,里面有大量的重复测站点,这个时候想把测站点单独提取出来该如何呢?

可以使用QGIS的Delete duplicate geometries工具,将重复的点删除,这样就可以获取独立的测站点矢量。

Delete duplicate geometries

ArcGIS中的属性处理

属性数据导入

在ArcGIS中,可以直接读取xls、csv格式的属性数据。EXCEL2010以上的xlsx格式属性数据需要使用Excel to Table工具进行读取。

对于使用空格分隔的TXT文件,ArcGIS的支持不好,导入会出现串行情况,还是建议使用QGIS进行读取。或者使用EXCEL转换后再导入ArcGIS。

ArcGIS对空格分隔的TXT支持较差,建议使用EXCEL对文本进行转换分隔
空格分隔

接下来就可以用ArcGIS来读取EXCEL数据。需要提前建一个GDB,强烈建议使用ArcGIS的同学在进行GIS数据处理前先建一个File Geodatabase,使用ArcGIS平台进行数据分析GDB数据存储有很大的优势:

  • GDB支持所有的ArcGIS数据存储;
  • GDB空间分析可以避免一些9999奇怪错误;
  • GDB能自动规范数据命名,保证数据命名符合ArcGIS规则(不符合英文_数字命名规则的会自动纠正或报错提醒);
  • 总而言之ArcGIS数据存储一定要用GDB
Excel to Table

新建字段

在ArcGIS中进行字段计算前需要先新建字段,新建字段要指定字段名和字段类型,字段名称要符合ArcGIS命名规则,字段类型要根据将要填充的属性来选择。详情请阅读往期文章:GIS基础教程之属性表的处理(2021-01-23更新)

Add Field

字段计算器

ArcGIS字段计算器支持VB和Python两种语言,其中Python使用的是Python2,和现在最新的Python3有所不同,使用过程中要注意语法差别。

ArcGIS字段计算器
!纬度! //100+(float(!纬度!%100) /60)

SHP乱码怎么办?

ArcGIS中SHP文件有时会出现乱码情况,这是由于SHP文件的属性表汉字编码不识别所致。

StName字段乱码

这个时候就需要我们新建一个.cpg文件来说明编码是什么。先在QGIS里可以选择不同的编码,查看真实的编码是什么。这个时候我们发现,TEP SHP文件使用的是system系统编码,一般情况下是“ANSI”编码。

在QGIS里面看看用的是什么编码

这样我们在SHP文件里面加一个.cpg文件,说明编码信息,在这里是“ANSI”,使用文本文件创建,后缀名改.cpg即可。这样就能修复ArcGIS打开SHP文件的乱码问题。

ANSI编码

参考文献

  1. https://docs.qgis.org/3.16/en/docs/user_manual/working_with_vector/attribute_table.html?highlight=field%20calculator#using-the-field-calculator
  2. https://blog.csdn.net/u012626619/article/details/80671233
  3. GIS基础教程之属性表的处理(2021-01-23更新)


点击阅读原文即可跳转培训班课程

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存