空间多边形列表中的R-空间多边形数据帧 [英] R - SpatialPolygonsDataFrame from a list of SpatialPolygons

查看:22
本文介绍了空间多边形列表中的R-空间多边形数据帧的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找从SpatialPolygons列表创建SpatialPolygonsDataFrame的方法?

下面是一个多边形列表的示例,应从该列表创建包含该列表的所有多边形的SpatialPolygonsDataFrame。

编辑:SpatialPolygonsDataFrame必须从SpatialPolygons列表创建!因为我的原始数据不包含SpatialPolygons作为单独的值,而是包含SpatialPolygons的列表。 我接收此列表的方式与示例中的方式不同。我发布了该示例以显示该列表的数据结构。

取自https://stat.ethz.ch/pipermail/r-sig-geo/2013-January/017225.html的空间多边形列表示例:

library(sp)
grd <- GridTopology(c(0.5, 0.5), c(1, 1), c(6, 6))
Spol <- as(grd, "SpatialPolygons")
list_of_SPolsu <- lapply(slot(Spol, "polygons"), function(x)
   SpatialPolygons(list(x)))
list_of_SPols <- lapply(slot(Spol, "polygons"), function(x) {
   Pol <- x
   slot(Pol, "ID") <- "1"
   SpatialPolygons(list(Pol))
})

问候!

推荐答案

很简单...

试试:

#Creating a dataframe with Spol IDs
Spol_df<- as.data.frame(sapply(slot(Spol, "polygons"), function(x) slot(x, "ID")))

#Making the IDs row names 
row.names(Spol_df) <- sapply(slot(Spol, "polygons"), function(x) slot(x, "ID"))

# Making the spatial polygon data frame
Spol_SPDF <- SpatialPolygonsDataFrame(Spol, data =Spol_df)

让我知道它是否起作用

编辑:

只需根据问题中的编辑完成答案... 有关如何从多边形列表创建SpatialPolygon的解决方案来自提供的链接:

#Getting polygon IDs
IDs <- sapply(list_of_SPols, function(x)
  slot(slot(x, "polygons")[[1]], "ID"))

#Checking
length(unique(IDs)) == length(list_of_SPols)

#Making SpatialPolygons from list of polygons
Spol <- SpatialPolygons(lapply(list_of_SPols,
                                function(x) slot(x, "polygons")[[1]]))

这篇关于空间多边形列表中的R-空间多边形数据帧的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆