Nothing
#' Aggregates global half degree gridded data to countries
#'
#' Aggregates global half degree gridded data to countries (options for sum,
#' mean, min, max ). Uses a very simple grid map defining a single country
#' identity for each half degree cell. (other more sophisticated approaches
#' dividing cells between multiple countries will be investigated in future).
#' The country identity at each cell is specified in
#' data(gridCountriesDegreesHalf).
#'
#'
#' @param inFile either a gridascii filename or an sp SpatialGridDataFrame
#' object specifying a global half degree grid dataset
#' @param aggregateOption how to aggregate the data ('sum','mean','min','max')
#' @return a dataframe with 2 columns : numeric country codes and the
#' aggregated value for each country
#' @author andy south
#' #@importFrom maptools readAsciiGrid
#' @seealso \code{\link{mapHalfDegreeGridToCountries}}
#' @keywords dplot
#' @examples
#'
#'
#' data(gridExData,envir=environment(),package="rworldmap")
#' gridExData <- get("gridExData")
#' #aggregating the gridded data to countries
#' dF <- aggregateHalfDegreeGridToCountries(gridExData)
#' #joining the aggregated data to a country map
#' sPDF <- joinCountryData2Map(dF, nameJoinColumn='UN', joinCode='UN')
#' #plotting the map
#' mapCountryData(sPDF,nameColumnToPlot='sum_pa2000.asc')
#'
#'
#' @export aggregateHalfDegreeGridToCountries
`aggregateHalfDegreeGridToCountries` <-
function( inFile=""
,aggregateOption="sum" #"mean","max","min"
)
{
#a function to aggregate half degree grid data to country level
#based upon a grid country file obtained from IIASA
#returns a dataframe with numeric country code & aggregated values
#can do sum, mean, max or min
#added an option to work on an existing loaded spatialGridDataFrame
if ( is.character(inFile) )
{
if ( !file.exists(inFile) )
{
warning("the file: ",inFile," seems not to exist, exiting aggregateHalfDegreeGridToCountries()\n")
return(FALSE)
}
#reading file into a SpatialGridDataFrame
sGDF <- readAsciiGrid(fname=inFile)
} else if ( inherits(inFile, "SpatialGridDataFrame") )
{
#if its already a SpatialGridDataFrame just copy it
#! 6/3/09 this allows for the potential for multiple attribute columns
#! which is not coped with below
sGDF <- inFile
} else
{
warning(inFile," seems not to be a valid file name or a SpatialGridDataFrame, exiting aggregateHalfDegreeGridToCountries()\n")
}
#further checking grid resolution
if ( gridparameters(sGDF)$cellsize[1]!=0.5 )
warning(inFile," seems not to be a half degree grid, in aggregateHalfDegreeGridToCountries()\n")
#25/03/2013 replacing grid file with updated countries
data(gridCountriesDegreesHalf,envir=environment(),package="rworldmap")
sGDFcountries <- get("gridCountriesDegreesHalf")
#getting the names of the columns containing the data
attrNameGrid <- names(sGDF)[1]
attrNameGridCountries <- names(sGDFcountries)[1]
dF <- data.frame(attribute = sGDF[[attrNameGrid]]
,UN = sGDFcountries[[attrNameGridCountries]])
#4 aggregate cell values by numeric country code
#! later offer option for user to specify which
dFbyCountry <- aggregate(dF$attribute
, by=list(UN = dF$UN)
, FUN = aggregateOption
, na.rm=TRUE )
#, mean, na.rm=TRUE )
#renaming the aggregated column name from x, with filename if the input was a file (if a sGDF it causes error use names instead)
if ( is.character(inFile) )
{
names(dFbyCountry)[2] <- paste(aggregateOption,"_",basename(inFile), sep='')
} else #if inFile is a sGDF
{
#!6/3/09 this causes an error if the SGDF contained multiple attribute columns
names(dFbyCountry)[2] <- paste(aggregateOption,"_",names(inFile), sep='')
}
return(dFbyCountry)
} #end of aggregateHalfDegreeGridToCountries()
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.