r - 根据@data 插槽中的字段合并空间多边形数据框中的多边形

标签 r spatial sp

我不是 R 专家,也不是空间分析专家。我正在寻找一种基于@data 插槽中的字段将多边形组合到空间多边形数据框中的方法:相当于 dplyr 的“group_by”用于 spdf。

我不确定 merge、join 或 combine 是否是正确的词,但我希望我在寻找什么很清楚。

library(sp)

#coordinates:
xy1 = cbind(c(1,2,2,1),c(1,1,2,2))
xy2 = cbind(c(2,3,3,2),c(1,1,2,2))
xy3 = cbind(c(1,2,2,1),c(2,2,3,3))
xy4 = cbind(c(2,3,3,2),c(2,2,3,3))

#polygons:
p1 = Polygon(xy1)
ps1 = Polygons(list(p1),ID = "a")
p2 = Polygon(xy2)
ps2 = Polygons(list(p2),ID = "b")
p3 = Polygon(xy3)
ps3 = Polygons(list(p3),ID = "c")
p4 = Polygon(xy4)
ps4 = Polygons(list(p4),ID = "d")

#spatial polygons:
sps_m = SpatialPolygons(list(ps1,ps2,ps3,ps4))

#dataframe:
data_m = data.frame(dt = c("Group A","Group B","Group A","Group C"),row.names = c("a","b","c","d"))

#spatial polygons dataframe:
spdf_m = SpatialPolygonsDataFrame(sps_m,data_m)

#plot spdf:
plot(spdf_m)

最佳答案

描述连接、组合、统一或合并(从多个中取一个)多边形的行为的正确术语似乎是溶解或聚集。

对我有用的函数是 raster 包中的 aggregate()。

library(sp)
library(raster)

#coordinates:
xy1 = cbind(c(1,2,2,1),c(1,1,2,2))
xy2 = cbind(c(2,3,3,2),c(1,1,2,2))
xy3 = cbind(c(1,2,2,1),c(2,2,3,3))
xy4 = cbind(c(2,3,3,2),c(2,2,3,3))

#polygons:
p1 = Polygon(xy1)
ps1 = Polygons(list(p1),ID = "a")
p2 = Polygon(xy2)
ps2 = Polygons(list(p2),ID = "b")
p3 = Polygon(xy3)
ps3 = Polygons(list(p3),ID = "c")
p4 = Polygon(xy4)
ps4 = Polygons(list(p4),ID = "d")

#spatial polygons:
sps_m = SpatialPolygons(list(ps1,ps2,ps3,ps4))

#dataframe:
data_m = data.frame(dt = c("Group A","Group B","Group A","Group C"),row.names = c("a","b","c","d"))

#spatial polygons dataframe:
spdf_m = SpatialPolygonsDataFrame(sps_m,data_m)

groups = aggregate(spdf_m, by = "dt")

#plot spdf:
plot(spdf_m)
plot(groups)

关于r - 根据@data 插槽中的字段合并空间多边形数据框中的多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49259960/

相关文章:

r - 在 R 或 Grass GIS 中填充栅格孔

r - 如何在 R 中基于 SpatialPolygons 裁剪栅格

r - 在 R 中使用 data.table 进行顺序过滤

r - 通过嵌套函数传递同名参数

sql-server - 在 Reporting Service 中可视化空间数据

r - 计算两个以上数据点之间的方位

r - 图例范围和颜色分布的 spplot 问题

r - 在 data.table 中合并因子与非因子会导致意外结果

r - 如何使输出的txt文件看起来更好

opencv - 如何计算新的相机在3d空间中的位置和旋转,以在移动3d对象后获得完全相同的 View ?