as.owin中的错误处理spatstat包R中的shape文件

问题描述 投票:0回答:2

我正在尝试按照教程"Handling shape files in the spatstat package" by Adrian Baddeley,其中SpatialPolygonsDataFrame的形状转换为owin的集合。

形状的关键属性总结如下,我的目标是测试点集合是否在多边形集合内。

摘要(形状)

Object of class SpatialPolygonsDataFrame
Coordinates:
        min       max
x -43.13679 -42.95351
y -22.98961 -22.85380
Is projected: FALSE 
proj4string : [+proj=longlat +ellps=GRS80 +no_defs]

这里有907个多边形是建议的转换

cp <- as(shape, "SpatialPolygons")
cregions <- slot(cp, "polygons")
cregions <- lapply(cregions, function(x) { SpatialPolygons(list(x)) })
cwindows <- lapply(cregions, as.owin)

但我得到了错误

Error in as.owin.default(X[[1L]], ...) : Can't interpret W as a window

有任何想法吗?谢谢

r shape point polygons spatstat
2个回答
0
投票

我收到了完全相同的错误消息:

class(cregions[[1]])

[1]“SpatialPolygons”attr(,“package”)[1]“sp”

我认为它与拓扑中的错误有关。我得到它与这个(abeit自制)功能:

fixholes = function(sp.obj) {
  require(rgeos)
  require(stringr)
  if(!inherits(sp.obj, "SpatialPolygons")) stop("Input object must be of class SpatialPolygons")
  pls = slot(sp.obj, "polygons")
  pls1 = lapply(pls, checkPolygonsHoles)
  slot(sp.obj, "polygons") = pls1
  return(sp.obj)
}

然后我创建了一个函数来使用Adrian Baddeley在“处理spatstat包中的形状文件”中详细介绍的例程:

spdf2owin = function(spdf) {
  cp <- as(spdf, "SpatialPolygons")
  cregions <- slot(cp, "polygons")
  cregions <- lapply(cregions, function(x) { fixholes(SpatialPolygons(list(x))) })
  cwindows <- lapply(cregions, as.owin)
  ch <- hyperframe(window=cwindows)
  ch <- cbind.hyperframe(ch, spdf@data)
  return(ch)
}

例如,

cregions = spdf2owin(columbus)

为我工作!


0
投票

必须加载包maptools才能将sp类转换为spatstat类。

as.owinspatstat中定义的泛型函数。 as.owin提供了spatstat的一些方法; maptools提供了其他方法。为了将SpatialPolygons转换为owin,必须使用as.owin.SpatialPolygons方法,这是由maptools提供的。如果未加载maptools,则调用as.owin将发送到as.owin.default并提供您收到的错误消息。

© www.soinside.com 2019 - 2024. All rights reserved.