2012-02-22 11 views
7

私は複数のポイントセットを持っています(別の年〜20年)Rパッケージを使用してポイントからポリゴンを作成する方法は?

私は、r個の空間パッケージを使用して各ポイントのセットに対してthiessenポリゴンを生成したいと思います。

私は、これはGISを使用して行うことができます知っているが、私はバッチ処理を必要とRの中で何かが

参考になります。

+2

'install.packagesは( "SOS")。ライブラリ( "sos"); findFn( "thiessen") ' –

+0

私はArcGISを同じものに使用しています... – user2760

答えて

16

あなたはデータにアクセスできませんでしたが、ここではCarson Farmerがhis blogに記載したアプローチを使用して、世界の都市を表すポイントの例です。うまくいけば、それはあなたが始めるよ...

# Carson's Voronoi polygons function 
voronoipolygons <- function(x) { 
    require(deldir) 
    require(sp) 
    if (.hasSlot(x, 'coords')) { 
    crds <- [email protected] 
    } else crds <- x 
    z <- deldir(crds[,1], crds[,2]) 
    w <- tile.list(z) 
    polys <- vector(mode='list', length=length(w)) 
    for (i in seq(along=polys)) { 
    pcrds <- cbind(w[[i]]$x, w[[i]]$y) 
    pcrds <- rbind(pcrds, pcrds[1,]) 
    polys[[i]] <- Polygons(list(Polygon(pcrds)), ID=as.character(i)) 
    } 
    SP <- SpatialPolygons(polys) 
    voronoi <- SpatialPolygonsDataFrame(SP, data=data.frame(x=crds[,1], 
    y=crds[,2], row.names=sapply(slot(SP, 'polygons'), 
    function(x) slot(x, 'ID')))) 
} 

例1:入力がSpatialPointsDataFrameです:

# Read in a point shapefile to be converted to a Voronoi diagram 
library(rgdal) 
dsn <- system.file("vectors", package = "rgdal")[1] 
cities <- readOGR(dsn=dsn, layer="cities") 

v <- voronoipolygons(cities) 

plot(v) 

Voronoi diagram of cities

例2:入力はxのベクトルで、Y座標:

dat <- data.frame(x=runif(100), y=runif(100)) 
v2 <- voronoipolygons(dat) 
plot(v2) 
jbaumsによって示されるように

Another voronoi diagram

+0

私は、(SpatialPointsDataFrameと同様に)座標ベクトル(x、yの順)を受け取れるように関数を修正しました。 – jbaums

+0

これは機能しました.TY! – user2760

+0

それを聞いてうれしいです。 – jbaums

1

同じ原理が、より簡単なコード:

library(dismo) 
library(rgdal) 
cities <- shapefile(file.path(system.file("vectors", package = "rgdal")[1], "cities")) 

v <- voronoi(cities) 
plot(v) 
関連する問題