2

半径が定義された円をラスター イメージにプロットしようとしています。ラスターを正常にプロットし、画像にポイントを配置しました。

# open image to save    
png("RasterImage.png",
        width=10, height=10, units="in", res=144)

# plot raster
    plot(VI.SOS.mean, main="VI Mean SOS",
         col=terrain.colors(length(seq(100,220,20))-1), axes=F, breaks=seq(100,200,20))

# add points
    points(sensors$X, sensors$Y)

# close png file
    dev.off()

結果の画像は次のようになります。

ラスター イメージ

ラスターのピクセルは 30 m です。

class       : RasterLayer 
dimensions  : 2871, 3205, 9201555  (nrow, ncol, ncell)
resolution  : 30, 30  (x, y)
extent      : 254265, 350415, 4731885, 4818015  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=16 +datum=WGS84 +units=m +no_defs 
data source : in memory
names       : layer 
values      : 38.6, 309  (min, max)

私がやりたいことは、各ポイントに半径 x (たとえば、300 m) の円を配置することです。ポイントのサイズをいじることで手動でこれを行うことができますが (cexたとえば、を使用)、画像の寸法を変更したり、ラスターをトリミングしたりすると、円は正しいサイズではなくなります。ラスターで定義された単位を使用して地図上に円を配置する方法はありますか?

ありがとう!

4

1 に答える 1

3

これを試すことができます:

library(dismo)
cs <- circles(sensors[, c('X','Y')], d=150)
plot(VI.SOS.mean)
plot(polygons(cs), add=TRUE)

重なっている円が結合されます。それを望まない場合は、内部関数 dismo:::.generateCircles を使用できます。

pls <- dismo:::.generateCircles(sensors[, c('X','Y')], d=150, lonlat=FALSE, crs=NA)
plot(pls, add=TRUE)
于 2015-05-21T22:49:59.207 に答える