R/top_polygon.R

#' Function for extracting topography info from minimum convex polygons
#'
#' @ inrast = list of rasters (with names!)
#' @ inisl = spatialPointsDataframe containing coordinates for plots of individual islands
#'

top_polygon<-function(inrast,inisl){
    results<-NULL
    # extract info on Islands
    isl.l<-as.character(unique(inisl$Islandnew))
    # loop through islands
    for (i in 1:length(isl.l)){
        cat(as.character(isl.l[i]))
        cat("\n")
        tmpisl<-subset(inisl,Islandnew==isl.l[i])
        # extract topograpy info using a minimum convex polygon
        ptmp<- mcp(SpatialPoints(tmpisl), percent = 100)
        for (j in 1:length(inrast)){
            cat(as.character(names(inrast)[j]))
            cat("\n")
            # crop raster extent
            tmpr<-crop(x=inrast[[j]],y=extent(ptmp))
            # create temporary raster
            tmpr1<-raster(extent(tmpr),nrow=nrow(tmpr),ncol=ncol(tmpr))
            tmpr2<-rasterize(ptmp,tmpr1,res=res(tmpr)[1])
            # mask out
            finalr<-mask(x=tmpr,mask=tmpr2)
            # get values and coordinates
            tmpdf <- na.exclude(data.frame(coordinates(finalr), value = getValues(finalr)))
            tmpdf1<-data.frame(tmpdf,Island=isl.l[i],var=names(inrast)[j])
            results<-rbind(tmpdf1,results)
        }
    }
    results1<-spread(results,var,value)
    return(results1)
}
drmarcogir/Rmacdiv documentation built on May 15, 2019, 12:58 p.m.