【发布时间】:2015-09-29 19:59:44
【问题描述】:
我有一张围绕一个点画了一个圆圈的地图。圆圈的一部分覆盖陆地,一部分覆盖海洋。我想计算圆圈内的海洋面积,但我不知道如何创建那个多边形。带圆圈的地图代码是
library(dismo)
library(scales)
library(rgeos)
GI <- gmap("Grand Isle,Louisiana", zoom = 7, scale = 2)
d <- data.frame(lat = c(29.2278), lon = c(-90.0122))
coordinates(d) <- ~ lon + lat
projection(d) <- "+init=epsg:4326"
d_mrc <- spTransform(d, CRS = CRS(projection(GI)))
d_mrc_bff <- gBuffer(d_mrc, width = 100000)
plot(GI)
plot(d_mrc_bff, col = alpha("blue", .35), add = TRUE)
points(d_mrc, cex = 2, pch = 20)
我已经研究了 mask{raster} 和 landmask{GSIF} 函数,但我认为在我的情况下它不会起作用,因为我只想掩盖圆圈内的土地,而不是在整个地图上.或者我真的不需要掩盖它,而是创建边界为圆的周长和海岸线的多边形。
感谢您的任何建议!
【问题讨论】:
-
顺便说一句,如果你想要一个更“圆形”的圆圈,只需在对
gBuffer()的调用中增加quadsegs的值。而且,要了解属于该多边形的每种类型(包括海洋,此处编码为值 178)的像素数,您可以使用raster::extract(GI, d_mrc_bff)。 (每个像素的面积由prod(res(GI))返回。) -
太好了,感谢您的提示!我会试试看。
标签: r geospatial