从SpatialPolygonsDataFrame创建镶嵌吗?

时间:2020-08-24 03:32:46

标签: r shapefile tessellation

此处的新手R程序员...正在寻找有关在SpatialPolygonsDataFrame中的多边形之外构建测试的指导。

我正在对州边界内的点调用quadracount。我想使用自定义多边形来定义四边形,而不是使用默认的网格。具体来说,就是我用shapefile格式创建的县多边形。

我从文档中认为可以从“ owin”对象列表中创建所需的镶嵌。我遇到麻烦的地方是使用SpatialPolygonsDataFrame生成该列表。

我确认可以正确读取多边形:

counties <- readOGR('/path/to/counties.shp', layer = "CountyBoundaries", GDAL1_integer64_policy = FALSE)
for(i in 1:nrow(counties)) { 
    plot(counties[i,])
}

这将生成一系列地块,每个县一个。当然,这仅对知道我的数据没有损坏并且可以遍历多边形有用。我需要做的是从SpatialPolygonsDataFrame中的每个多边形中提取一个owin,并将其附加到tess(tiles=myList)的myList中。在这种方法上没有太大的成功。

我强烈怀疑有一种更简单的方法...

非常感谢,

-gt

1 个答案:

答案 0 :(得分:0)

结果是,我的问题是无法完全理解R中如何对列表进行索引。以下代码给了我想要的结果。

毫无疑问,有更好的矢量化方法可以做到这一点。但与此同时:

# The point events are in a PPP: StateCrimes_ppp
counties <- readOGR('/path/to/counties.shp', layer = "CountyBoundaries", GDAL1_integer64_policy = FALSE)
tlist <- list()
for(i in 1:nrow(counties)) { 
    tlist[[i]] <-  as(counties[i,], 'owin')
}
QuadCount <- quadratcount(
    StateCrimes_ppp, 
    tess=tess(tiles=tlist)
)

plot(QuadCount, main=NULL)
plot(intensity(QuadCount, image=TRUE), main=NULL, las=1) 

如果有人看到我为解决一个简单的问题而花了很长时间的艰苦努力,那么我很想知道一种更好,更简单,更优雅或更像R的方式来实现这一目标。

再次感谢

-gt