簡體   English   中英

用已知坐標和半徑在柵格上繪制圓

[英]Plot Circle on Raster with Known Coordinates and Radius

我正在嘗試將具有定義半徑的圓繪制到光柵圖像上。 我已經成功繪制了柵格並將點放在圖像上:

# 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 ),但是如果我更改圖像的大小或裁剪柵格,則圓不再是正確的大小。 有沒有辦法使用柵格中定義的單位在地圖上放置圓?

謝謝!

您可以嘗試以下方法:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM