Как объединить несколько объектов estUD в объект estUDm для функции kerneloverlaphr.

Я создал несколько объектов estUD (предполагаемое распределение использования пространства одним животным) вне пакета adehabitatHR, используя второй метод на этой странице https://ecosystems.psu.edu/research/labs/walter-lab/manual/home-range-estimation/4.3-kde-with-plug-in-bandwidth-selection-hplug-in. Я сделал это, потому что пакет adehabitatHR не имеет возможности оценить распределение использования с пропускной способностью плагина.

сценарий:

`#Load dataset, x = animal pair number, 21 pairs in total. 

fulldata <- read.csv("clean_data.csv", header=T)

fulldata$pair.id <- as.factor(fulldata$pair.id)

pair_x <- subset(fulldata, fulldata$pair.id == "26")

#Get only the coordinates
loc <- data.frame(pair_x$x, pair_x$y)

#Define the projection
proj4string <- CRS("+proj=utm +zone=17N +ellps=WGS84")

#Make SpatialPointsDataFrame using coordinates, pair id and projection
spdf <- SpatialPointsDataFrame(loc, fulldata, proj4string = proj4string)

#Calculate the bandwidth matrix to use later in creating the KDE
Hpi1 <- Hpi(x = loc)

#Create spatial points from just the coordinates
loc.pts <- SpatialPoints(loc, proj4string=proj4string)


#Set the expansion value for the grid and get the bbox from the 
SpatialPointsDataFrame

expandValue <- 100 #This value is the amount to add on each side of the 
bbox

boundingVals <- spdf@bbox

#Get the change in x and y and adjust using expansion value
deltaLong <- as.integer(((boundingVals[1,2]) - (boundingVals[1,1]))
                    + (2*expandValue))
deltaLat <- as.integer(((boundingVals[2,2]) - (boundingVals[2,1]))
                   + (2*expandValue))

# 7 meter grid used because that is average accuracy of GPS unit
gridRes <- 7
gridSizeX <- deltaLong / gridRes
gridSizeY <- deltaLat / gridRes
#Offset the bounding coordinates to account for the additional area
boundingVals[2,1] <- boundingVals[2,1] - expandValue
boundingVals[2,2] <- boundingVals[2,2] + expandValue
boundingVals[1,1] <- boundingVals[1,1] - expandValue
boundingVals[1,2] <- boundingVals[1,2] + expandValue

#Grid Topology object is basis for grid (offset, cellsize, dim)
gridTopo <- GridTopology((boundingVals[,1]),
                     c(gridRes,gridRes),c(gridSizeX,gridSizeY))

#Using the Grid Topology and projection create a SpatialGrid class
sampGrid <- SpatialGrid(gridTopo, proj4string = proj4string)

#Cast over to Spatial Pixels
sampSP <- as(sampGrid, "SpatialPixels")

#convert the SpatialGrid class to a raster
sampRaster <- raster(sampGrid)
#set all the raster values to 1 such as to make a data mask

sampRaster[ ] <- 1
#Get the center points of the mask raster with values set to 1
evalPoints <- xyFromCell(sampRaster, 1:ncell(sampRaster))

#Create the KDE using the evaluation points
hpikde <- kde(x=loc, H=Hpi1, eval.points=evalPoints)

#Create a template raster based upon the mask and then assign the values 
from
#the kde to the template
hpikde.raster <- raster(sampRaster)
hpikde.raster <- setValues(hpikde.raster,hpikde$estimate)


hpikde_full_SPDF<-rasterToPoints(hpikde.raster, spatial=TRUE, fun=NULL)
#convert raster to estUDm (adehabitat) object
hpikde.px <- as(hpikde.raster,"SpatialPointsDataFrame")

#create new estUD using the SPxDF
hpikde.ud_x <- new("estUDm", hpikde.px)

#Assign values to a couple slots of the estUD
hpikde.ud_x@vol = FALSE
hpikde.ud_x@h$meth = "Plug-in Bandwidth"`

Теперь я хочу выполнить функцию kerneloverlaphr, но для этого требуется объект estUDm (предполагаемое распределение использования пространства несколькими животными). Есть ли способ объединить несколько объектов estUD в один объект estUDm? Или же можно отредактировать приведенный выше код для создания одного объекта estUDm, классифицированного по идентификатору пары?

Я попытался поместить все данные, содержащие все пары, в приведенный выше код, но не могу классифицировать этот объект как estUDm и получить эту ошибку:

hpikde.ud_full <- new("estUDm", hpikde.px)
Error in getClass(Class, where = topenv(parent.frame())) : 
  “estUDm” is not a defined class

0 ответов

Другие вопросы по тегам