[英]Extracting mean data for quadrats over a spatial raster
我将提供一点背景。 我不是 100% 确定我目前遵循的获取 output 的路径是正确的,但我使用了一个非常相似的过程来获取每个样方内遥测 ping 的计数数据。
我想要
telemetry <- read.csv("Outputs/2015/2015-nov-tsdata-1m.csv")
biomass <- raster("GIS/Interpolations/IDWBio/15NovIDWBio.tif")
#############################
# set class for id and date #
#############################
telemetry$id <- as.factor(telemetry$id)
telemetry$DateTime <- as.POSIXct(telemetry$DateTime, format = "%Y-%m-%d %H:%M:%S")
######################################################
# Set Spatial Points and Coordinate Reference System #
######################################################
telemetry.sp <- SpatialPoints(coords=cbind(telemetry$lon, telemetry$lat),
proj4string = CRS("+init=epsg:4326"))
proj4string(biomass) <- projection(telemetry.sp)
telemetry.sp$id <- telemetry$id #import Sat Tag ID
#####################################################################
# Import ShapeFile of Focus Study Area and set CRS same as sat data #
#####################################################################
StudyArea <- readOGR("GIS/ShapeFiles/Landscape/PelicanBanks.shp")
proj4string(StudyArea) <- projection(telemetry.sp)
##################################
# Turn the Shapefile into Raster #
##################################
rStudyArea20 <- raster(StudyArea)
rStudyArea50 <- raster(StudyArea)
#############################################################################
# Set Resolution / Cell Size of Raster, this will impact Quadrat size later #
#############################################################################
res(rStudyArea20) <- 0.0002
res(rStudyArea50) <- 0.0005
#### 0.0005 = 50m2, 0.0002 = 20m2
###################################################################################
# Add ShapeFile of StudyArea to above Raster, defining Rasters spatial attributes #
###################################################################################
rStudyArea20 <- rasterize(StudyArea, rStudyArea20)
rStudyArea50 <- rasterize(StudyArea, rStudyArea50)
####################################################
# Build 'quadrats' around our predefined Cell Size #
####################################################
quadrat20 <- as(rStudyArea20, "SpatialPolygons")
quadrat50 <- as(rStudyArea50, "SpatialPolygons")
### original biomass raster is over a very large area, so to minimise computing time I'm creating a
### subset of a smaller area while I'm trying to work out the code
biomass.mask <- mask(biomass, StudyArea)
##################################################
# Summarise the mean biomass within each quadrat #
##################################################
bioQuadrats20 <- rasterize(biomass.mask, rStudyArea20, fun='mean', background=0)
bioQuadrats50 <- rasterize(biomass.mask, rStudyArea50, fun='mean', background=0)
### this is where my train of thought falls apart and I receive the following error
** 无法为签名 '"RasterLayer"、"RasterLayer"' 找到 function 'rasterize' 的继承方法 **
任何帮助将不胜感激。 提前致谢。
我认为最后一部分可以通过extract
多边形内的生物量值来完成。 你不需要mask
。 你可以试试这个:
library(exactextractr)
library(sf)
quadrat20 <- as(rStudyArea20, "SpatialPolygons")
quadrat50 <- as(rStudyArea50, "SpatialPolygons")
quadrat20.sf <- st_as_sf(quadrat20)
quadrat50.sf <- st_as_sf(quadrat50)
extraction <- exact_extract(biomass, quadrat20.sf,"mean")
function exact_extract
带有exactextractr package,是从多边形内的栅格中提取值的最快方法。 function 还返回多边形的像素覆盖率,因此您可以轻松处理部分覆盖的像素。 此外,内置的汇总函数非常快,默认情况下会忽略 NA。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.