如何在R中比较并合并两个sf对象?以赫尔辛基蓝绿覆盖数据为例
赫尔辛基250m网格蓝绿覆盖数据对比与合并需求
我制作了芬兰赫尔辛基250m网格下的两类蓝绿覆盖百分比数据:
- 一类基于Corine土地覆盖数据(芬兰地区数据可从Syke获取)
- 另一类基于Open Street Map数据
预处理后的gpkg格式数据集可从GitHub仓库获取。
我希望对这两个版本的数据进行比较与合并(假设OSM在市中心区域的植被绿度和水域预测表现更优),想知道是否存在可用于比较两个不同sf对象的空间命令——类似raster包中overlay的功能。同时需要保留网格ID的关联,方便后续与社会经济数据关联。
数据导入与可视化代码
# 加载R包 #### library(sf) library(tmap) # 加载2014年数据 #### Corine.bg.2014 <- st_read("COR.2014.gpkg") OSM.bg.2014 <- st_read("OSM.2014.gpkg") # 绘制数据 #### tmap_mode("view") tm_shape(Corine.bg.2014) + tm_polygons("area.pct", palette="Greens") + tm_layout(title= "Corine 2014", legend.outside=TRUE) tm_shape(OSM.bg.2014) + tm_polygons("area.pct", palette="Greens") + tm_layout(title= "OSM 2014", legend.outside=TRUE)
可视化结果


当前尝试的合并与差值计算方法
# 提取OSM数据中用于关联的变量 #### library(tidyverse) tmp <- OSM.bg.2014 %>% dplyr::select(ID, area.OSM=area.pct) %>% as.tibble() # 将OSM数据关联到Corine表 #### test <- Corine.bg.2014 %>% left_join(tmp) # 计算Corine与OSM蓝绿覆盖百分比的差值 #### test$diff <- test$area.pct-test$area.OSM # 可视化差值结果 #### tm_shape(test) + tm_polygons("diff", palette="RdYlGn", style="fisher") + tm_layout(title= "difference 2014", legend.outside=TRUE)
差值可视化结果

内容的提问来源于stack exchange,提问作者Joanne Demmler
相关产品推荐
相关产品推荐

