我在完全理解 terra:extract 时遇到问题。我希望提取管理 GADM 多边形的平均栅格值。我的栅格每个国家/地区只有一个值。我希望特定国家/地区内的每个行政多边形都具有相同的值,并且某些包含某些国家/地区边界的多边形会分配面积加权平均值。不幸的是,我当前的脚本并非如此。raster::extract 似乎给出了合理的结果,但不是 terra:extract (请参阅下面的示例代码 - 提供具有不同值的输出)。有人可以根据下面的代码解释一下为什么吗?非常感谢。
## libraries
library(terra)
library(raster)
#===============================================
## sample example - provides results as expected (1.333, that is (2*0.5+1*1)/1.5)
# sample raster and SpatialPolygons
r <- raster(ncol=2, nrow=3, xmn= 0, ymn= 0, xmx = 30,ymx = 30)
r[] <- c(2, 2, 2, 1, NA, NA)
cds <- rbind(c(7.5,0), c(7.5,20), c(30, 20),c(30,10))
library(sp)
p = Polygon(cds)
ps = Polygons(list(p),1)
sps = SpatialPolygons(list(ps))
plot(r)
plot(sps, add=T)
Run Code Online (Sandbox Code Playgroud)
# test raster package
test1 <- raster::extract(r , …Run Code Online (Sandbox Code Playgroud) 我在我的ggplots中使用wrld_simpl作为背景,并希望删除Antarctica.不知道如何做到这一点.谢谢您的帮助!
library(maptools)
data("wrld_simpl")
plot(wrld_simpl)
wrld_simpl[wrld_simpl@data$ISO3 != "ATA"]
Run Code Online (Sandbox Code Playgroud)
脚本示例:
library(ggplot2)
p <- ggplot() +
geom_polygon(data = wrld_simpl, aes(x = long, y = lat, group = group), colour = "black", fill = "grey")
p <- p + geom_raster(data = df , aes(x = x, y = y, fill = layer))
p <- p + coord_equal() + theme_bw() + labs(x="", y="")
p <- p + scale_fill_gradientn(colours = rev(terrain.colors(10)))
p <- p + labs(list(title = ""))
p
Run Code Online (Sandbox Code Playgroud) 我一直试图在下面的代码中将海洋涂成白色或透明,但到目前为止都没有成功。我在 Stack 上看到了其他帖子,但无法将它们应用到我的示例中(例如,我如何在美国地图中为海洋着色?)。我欢迎建议。非常感谢!
library(raster)
library(ggplot2)
library(maptools)
data("wrld_simpl")
#sample raster
r <- raster(ncol=10, nrow=20)
r[] <- 1:ncell(r)
extent(r) <- extent(c(-20, 20, -20, 20))
#plotting
var_df <- as.data.frame(rasterToPoints(r))
p <- ggplot() +
geom_polygon(data = wrld_simpl[wrld_simpl@data$UN!="10",],
aes(x = long, y = lat, group = group),
colour = "black", fill = "grey") # does the fortification automatically
p <- p + geom_raster(data = var_df, aes(x = x, y = y, fill = layer))
p <- p + coord_equal() + theme_bw() +labs(x="", y="") …Run Code Online (Sandbox Code Playgroud)