[AniMov] Clipping area from home range estimate

Tim Clark mudiver1200 at yahoo.com
Wed Oct 7 20:49:59 CEST 2009


Reply-to:331337.32068.qm at web36107.mail.mud.yahoo.com

Dear Adehabitat List,

After getting a little help I was able to answer my own question.  The home range estimate for some reason gives a whole range of "levels" for each polygon/area.  I still don't understand why, but there are multiple 100 percent isopleth levels in the homerange.  Indexing by these levels allowed me to compute new gpc polygons and recalculate the area for the polygon.

The working function and example data are below.

Aloha,

Tim


cut.NNCH<-function (x=hr, GPC.poly=BigMountain, percent = rev(seq(10,100, by = 10)), id = NULL, k = NULL, r = NULL, a = NULL, ...)
{
    if (!inherits(x, "NNCH"))
        stop("x should be of class \"NNCH\"")
    if (!require(sp))
        stop("package sp required")
    if (!require(gpclib))
        stop("package gpclib required")

    e <- NULL
    percent <- rev(vectorize.parameter(percent))
    homerange <- NNCH.select(x, k = k, a = a, r = r)
    for (kk in names(homerange)) {                                    #Index of number of k,r, or a values
        polys <- homerange[[kk]]$polygons
        level <- length(homerange[[kk]]$polygons)
        for (i in 1:level) {                                   #Index of number of percent values
            NNCH.poly<-polys[[i]]                              #gpc polygon of indexed home range
            cut.poly<-setdiff(NNCH.poly,GPC.poly)                     #Cuts land from homerange
            homerange[[kk]]$polygons[[i]]<-cut.poly            #Replaces homerange with cut homerange in class "gpc.poly"

            ar<-area.poly(homerange[[kk]]$polygons[[i]])       #Calculate area of gpc polygon     #Create data frame of isopleth levels and area
            homerange[[kk]]$area[[i,2]]<-ar
         }
    }
            return(homerange)
}

#Example data
library(adehabitat)
data(chamois)
xy <- chamois$locs
hr <- NNCH(xy, k = c(12,14))
plot(hr)

BigLake <- cbind(c(865000,870000,870000,865000),c(2045000,2045000,2050000,2050000))
BigLake <- as(BigLake[chull(BigLake), ], "gpc.poly")
plot(BigLake,add=TRUE)

#Run function
new.range<-cut.NNCH(x=hr,GPC.poly=BigLake)
plot(new.range)



Tim Clark
Department of Zoology 
University of Hawaii



      


More information about the AniMov mailing list