0

SpatialPolygonsDataFrameとしての形状が owin のコレクションに変換される Adrian Baddeley によるチュートリアル「spatstat パッケージでの形状ファイルの処理」に従おうとしています。

形状の主要な属性を以下に要約します。私の目的は、ポイントのコレクションがポリゴンのコレクション内にあるかどうかをテストすることです。

まとめ(形)

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

何か案は?ありがとう

4

2 に答える 2

0

まったく同じエラーメッセージが表示されました:

class(cregions[[1]])

[1] "SpatialPolygons" attr(,"package") [1] "sp"

トポロジのエラーに関係していると思います。私はこの(自家製ではありますが)関数で動作するようにしました:

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)
}

次に、「spatstat パッケージでのシェープファイルの処理」で詳述されている Adrian Baddeley のルーチンを使用する関数を作成しました。

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)

私のために働いた!

于 2014-02-18T21:05:20.823 に答える