如何在地图上创建多边形并计算圆内的海洋面积

时间:2015-09-29 19:59:44

标签: r geospatial

我有一张地图,周围有一个圆圈。圆圈的一部分覆盖陆地,部分覆盖海洋。我想计算圆圈内的海洋面积,但我不知道如何创建该多边形。带圆圈的地图代码是

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}功能,但我认为在我的情况下它不会起作用,因为我只想掩盖圈内的土地,而不是整个地图。或者我不需要掩盖它,但创建多边形,边界是圆的周长和海岸线。 谢谢你的任何建议!

1 个答案:

答案 0 :(得分:3)

这应该有效:

library(rgdal)

# US States outlines
URL <- "http://eric.clst.org/wupl/Stuff/gz_2010_us_040_00_500k.json"
fil <- basename(URL)
if (!file.exists(fil)) download.file(URL, fil)

# extract Louisiana
us <- readOGR(fil, "OGRGeoJSON")
la <- subset(us, NAME=="Louisiana")

# have to re-project d_mrc_bff or la, I chose the former

plot(gDifference(spTransform(d_mrc_bff, proj4string(la)), la), col="steelblue")

enter image description here 您可以使用gArea来获取该区域。

如果您需要更好的边界以提高您所在地区的精确度,您可以使用更高分辨率的源形状文件。

希望Josh O&#39; Brien使用gIntersection vs gDifference