我需要创建一个栅格,作为一个网格,用于海鸟跟踪数据的内核估计。栅格需要保持"1“值的栖息地(点在海上)和"0”的非生境(点在陆地上)。这是因为我不希望核密度估计跨越陆地。
我该怎么做?
我已经看过这个线程# https://stat.ethz.ch/pipermail/r-sig-geo/2011-June/012093.htm,但是没有能够成功地应用这个线程。
以下是我到目前为止的情况:
# Make raster layer of study area
ras = raster(ext=extent(-70, -55, -60, -38), res=c(0.01,0.01))
#give all ponints a "1"
ras[] <- 1
#project the grid
projection(ras) <- "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
# load land
library(rworldmap)
worldMap <- getMap(resolution = "high")
projection(worldMap) <- CRS(proj4string(ras))
#crop and mask raster by land
r2 <- crop(ras, worldMap)
r3 <- mask(r2, worldMap, inverse = T)
# none of the following work
r3.sg <- as(r3, 'SpatialGridDataFrame')
fullgrid(r3) <- TRUE
谢谢你的帮助
发布于 2022-05-07 07:07:49
掩码只应用NA
值,您想要1s。所以你可以:
r3@data@values[is.na(r3@data@values)] <- 0
r3@data@values <- 1 - r3@data@values
这在陆地上留下0,在海洋上留下1,我们可以用0作为绿色和1作为蓝色来表示:
plot(r3, col = c("#809020", "lightblue"))
https://stackoverflow.com/questions/72153096
复制相似问题