Vector 如何以平方公里为单位计算R中随机选择的网格单元内的属性面积

Vector 如何以平方公里为单位计算R中随机选择的网格单元内的属性面积,vector,extract,overlay,raster,spatial,Vector,Extract,Overlay,Raster,Spatial,我已将洪都拉斯的国家边界加载到R中,并在其中创建了一个2km x 2km的网格。 然后,我从网格中随机选择了13个单元格 然后我加载了一个矢量层(即WWF生态区域边界),覆盖了洪都拉斯地区。在该矢量中有一个称为“生物群落”的属性,该属性描述了矢量层多边形中存在的生物群落类型(例如草地或森林) 我已确保两层具有相同的投影 我现在要做的是在我创建的网格内的13个随机选择的单元格中提取属性Biomeralm的面积(以平方公里为单位)。我的理想输出是: 生物矿物:NT14-面积-5km2

我已将洪都拉斯的国家边界加载到R中,并在其中创建了一个2km x 2km的网格。 然后,我从网格中随机选择了13个单元格

然后我加载了一个矢量层(即WWF生态区域边界),覆盖了洪都拉斯地区。在该矢量中有一个称为“生物群落”的属性,该属性描述了矢量层多边形中存在的生物群落类型(例如草地或森林)

我已确保两层具有相同的投影

我现在要做的是在我创建的网格内的13个随机选择的单元格中提取属性Biomeralm的面积(以平方公里为单位)。我的理想输出是:

生物矿物:NT14-面积-5km2

        NT7 - Area -7km2
我该怎么做

到目前为止,我的代码是:

library(raster)
library(rgdal)
加载一个管理包

shp <- getData(country = "HND", level = 0)
plot(shp)

shp你的问题不是很清楚。也许有一种更好更直接的方式来了解你真正想要的东西。所以你可能想澄清一下。但下面是如何选择13个随机单元并与多边形相交

如果您打算在洪都拉斯使用UTM,那么您需要选择正确的区域(16)

库(光栅)
v
cs <- c(3.28084, 3.28084)*2000   #cell size of 2km by 2km (1 ft = 3.28084 m)
grdpts <- makegrid(shp, cellsize = cs)
spgrd <- SpatialPoints(grdpts, proj4string = CRS(proj4string(shp)))
spgrdWithin <- SpatialPixels(spgrd[shp,])
plot(spgrdWithin, add = T)
spgrdWithin <- as(spgrdWithin, "SpatialGrid")
s <- spsample(spgrdWithin, 13, "random")
plot(s)
HNDWWF <- readOGR('.','HONDURAS_WWF')
plot(HNDWWF)
HNDWWFTRANS <- spTransform(HNDWWF, CRSobj = "+proj=utm +zone=32 +datum=WGS84 +units=m 
+no_defs +ellps=WGS84 +towgs84=0,0,0")
plot(HNDWWFTRANS)
library(raster)
v <- getData(country = "HND", level = 0)
crs <- "+proj=utm +zone=16 +datum=WGS84 +units=m"   
v <- spTransform(v, CRSobj = crs) 
r <- raster(v, res=2000)
r <- init(r, "cell")
# set areas outside Honduras to NA
r <- mask(r, v)
set.seed(1)
s <- sampleRandom(r, 13)
s
# [1] 44486 48219 55229 72480 41917 71715 77681 59055 57573 35633 42037 40820
#[13] 60238
bio <- getData(country = "HND", level = 1)
bio <- spTransform(bio, crs) 

xy <- xyFromCell(r, s)
extract(bio, xy)[, "NAME_1"]
# [1] "Yoro"              "Yoro"              "Copán"            
# [4] "Francisco Morazán" "Yoro"              "Francisco Morazán"
# [7] "Valle"             "Francisco Morazán" "Francisco Morazán"
#[10] "Colón"             "Gracias a Dios"    "Yoro"             
#[13] "Olancho"