GIS基础之GIS属性表操作
GIS属性表操作
对于数据量大的情况,QGIS由于是64位软件,且可以选择文本数据编码,对于大数据量的CSV数据处理我建议优先选择QGIS。下面以中国地面气候资料日值数据集(V3.0)逐日气温数据为例,介绍一下GIS属性数据的处理。
下面以QGIS和ArcGIS这两种最常用的GIS软件平台分别进行介绍。
文本数据导入
数据为文本型,用空格分隔,根据数据文档我们得知13个字段分别为:
区站号 纬度(度、分) 经度(度、分) 观测场海拔高度(0.1m) 年 月 日 平均气温(0.1℃) 日最高气温 日最低气温 平均气温质量控制码 日最高气温质量控制码 日最低气温质量控制码
QGIS属性计算
QGIS字段计算器使用的是Python语言,在这里我们需要使用python的函数进行计算。我们以下面几个例子进行介绍:
经纬度计算
原始数据中经纬度是以度、分的形式存储的,后两位是分,前面是度。由于中国疆域广阔,东西跨度大,所以经度的度有2位,也有3位,这个时候就不适合通过位数来进行分割。那么应该用什么方法计算呢?我是使用了整除100的方式进行划分:
度分整除100,商整数部分作为经纬度的度 度分整除100,余数即为分,由于GIS经纬度需要为小数点,余数处理60化为小数制 度+余数/60即为小数的经纬度
具体计算过程和代码如下,注意一下这个数据纬度字段在前(field2),经度字段在后(field3):
"field_2" //100+ ("field_2" %100)/60
Table转点
计算完经纬度后,我们可以把属性表空间化,转为SHP,QGIS中可以使用Create Points layer from table
获取独立的测站点
上面转点完成后,是2019年全年的测站监测逐日数据,里面有大量的重复测站点,这个时候想把测站点单独提取出来该如何呢?
可以使用QGIS的Delete duplicate geometries工具,将重复的点删除,这样就可以获取独立的测站点矢量。
ArcGIS中的属性处理
属性数据导入
在ArcGIS中,可以直接读取xls、csv格式的属性数据。EXCEL2010以上的xlsx格式属性数据需要使用Excel to Table工具进行读取。
对于使用空格分隔的TXT文件,ArcGIS的支持不好,导入会出现串行情况,还是建议使用QGIS进行读取。或者使用EXCEL转换后再导入ArcGIS。
接下来就可以用ArcGIS来读取EXCEL数据。需要提前建一个GDB,强烈建议使用ArcGIS的同学在进行GIS数据处理前先建一个File Geodatabase,使用ArcGIS平台进行数据分析GDB数据存储有很大的优势:
GDB支持所有的ArcGIS数据存储; GDB空间分析可以避免一些9999奇怪错误; GDB能自动规范数据命名,保证数据命名符合ArcGIS规则(不符合英文_数字命名规则的会自动纠正或报错提醒); 总而言之ArcGIS数据存储一定要用GDB
新建字段
在ArcGIS中进行字段计算前需要先新建字段,新建字段要指定字段名和字段类型,字段名称要符合ArcGIS命名规则,字段类型要根据将要填充的属性来选择。详情请阅读往期文章:GIS基础教程之属性表的处理(2021-01-23更新)
字段计算器
ArcGIS字段计算器支持VB和Python两种语言,其中Python使用的是Python2,和现在最新的Python3有所不同,使用过程中要注意语法差别。
!纬度! //100+(float(!纬度!%100) /60)
SHP乱码怎么办?
ArcGIS中SHP文件有时会出现乱码情况,这是由于SHP文件的属性表汉字编码不识别所致。
这个时候就需要我们新建一个.cpg文件来说明编码是什么。先在QGIS里可以选择不同的编码,查看真实的编码是什么。这个时候我们发现,TEP SHP文件使用的是system系统编码,一般情况下是“ANSI”编码。
这样我们在SHP文件里面加一个.cpg文件,说明编码信息,在这里是“ANSI”,使用文本文件创建,后缀名改.cpg即可。这样就能修复ArcGIS打开SHP文件的乱码问题。
参考文献
https://docs.qgis.org/3.16/en/docs/user_manual/working_with_vector/attribute_table.html?highlight=field%20calculator#using-the-field-calculator https://blog.csdn.net/u012626619/article/details/80671233 GIS基础教程之属性表的处理(2021-01-23更新)
点击阅读原文即可跳转培训班课程