属性数据操作

属性数据操作

这是《使用 R 语言进行地理计算》系列课程的第二讲,本次课的主要内容是介绍如何使用 tidyverse 系列的数据操作函数操作 sf 对象。

属性数据是指与地理(几何)数据相关联的非地理数据,例如公交站台的名称就是其属性,栅格数据中的特定网格像元中的高程值也是属性。

准备工作

首先我们导入我们需要的 R 包:

1
2
3
4
library(sf)
library(raster)
library(tidyverse)
library(tidyr)

还有就是我为大家准备的世界地图数据:

1
read_sf('world_high_resolution_mill.geo.json') -> world

这个地图数据是基于 mill 投影的,crs = 54003,如果大家的电脑提示不支持这个 crs,可以使用 proj4string:

1
2
st_crs(world)$proj4string
st_set_crs(world, "+proj=mill +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +R_A +datum=WGS84 +units=m +no_defs ") -> world

向量数据的属性操作

向量数据,也就是 sf 对象,很好的支持了数据框的各种操作。得益于此,你可以使用几乎所有的数据框操作来操作 sf 对象。运行下面的代码可以查看 sf 对象支持的各种函数:

1
methods(class = "sf")

例如查看数据框 world 的纬度:

1
2
3
dim(world)
nrow(world)
ncol(world)

可以使用 st_drop_geometry 删除 sf 对象中的 geometry 变量将 sf 对象退化为普通的数据框:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

矢量数据子集提取

我们可以使用基础 R 的数据操作方法:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

我们还可以给这个 sf 对象添加一个属性:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

筛选 pop < 50 的值:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

更多的时候我会使用 tidyverse 系列的操作:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

矢量数据的分组聚合:aggregate

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

通常我们可以把它转换为 sf 对象进行操作:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

我们再生成一个 raster 对象:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

和刚刚不一样的地方在于,这里的 grain 是基于因子向量生成的。同样逻辑变量也行,就不再演示了。

栅格数据子集操作

两个 raster 对象可以 stack 成一个:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

raster 对象可以向矩阵或者数据框一样操作:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

汇总

例如计算标准差:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

分布:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

案例

分析全球新冠疫情数据。

直播后补充代码~

作业

仿照全球新冠疫情数据的分析案例分析中国的新冠疫情数据。

知识星球附件链接:https://t.zsxq.com/UFIemUr

#

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×