[R-sig-Geo] changing the area of a shapefile to a new value

Tom_R tom.richardson at bristol.ac.uk
Sun Jan 2 19:41:45 CET 2011

Hi List,
I would appreciate some help regarding resizing shapefile areas.
I have several different animals, each with a different home-range (HR). To
test whether the overlap between HR's is more or less than expected, I would
like to reassign the HR areas amongst the different HR's. THen I will
compare the permuted overlap to the observed overlap. 

My (inelegant) code goes:

## load data & set up HR
xy <-  data.frame(cbind(points$x,  points$y))                ## x,y coords
ud <-  kernelUD(xy, id=NULL, h = "href",  kern = c("epa"))  ## 
kernel-estimate of the home range (from adehabitat)
ver <- getverticeshr(ud, home.range)     ## The HR; may have >1 disjoint
areas, & also have empty lakes
shapefile_HR <- kver2shapefile(ver)                              ##
shapefile for an individual animal
blobby <- shape2poly(shapefile_HR, region.id=NULL)	## convert shapefile  to
a polygon
HR_polygons <-  lapply(ver, area2spol)   			## convert "shapefile" to
"spatial polygons"

## Sum the area across all of the (potentially) disjoint parts
for (h in 1:length(blobby)  )                             ## loop for each
of the disjoint parts of the HR
	regions <- slot(HR_polygons[[1]], "polygons")
	regions <- lapply(regions, function(x) {SpatialPolygons(list(x))})
	windoze <- lapply(regions, as.owin)			                  ## A spatstat
	wind_shape <- writePolyShape(as(windoze[[h]], "spatialPolygons")
	if (h == 1) {blob_area <- area.owin(windoze[[h]])}                 
	if (h > 1)  {blob_area <- blob_area + area.owin(windoze[[h]])} ## sums the
disjoint HR areas

The above gives me the HR area for a single animal ("blob_area"). But what I
would now like to do is to enlarge or shrink the HR's (i.e. modify
"shapefile_HR") of each animal. If all I wanted to do was to increase the HR
size by a factor x, then I could use the "scaleXY" function. However, I
actually need to change the AREA, to a new value, e.g. enlarge 
"shapefile_HR" from 130 mm^2 to  350mm^2. I can't find a simple function to
do that...

I imagine there is a simple function to do this, & I have spent all day
looking, to no avail...

Thanks list & happy 2011!

View this message in context: http://r-sig-geo.2731867.n2.nabble.com/changing-the-area-of-a-shapefile-to-a-new-value-tp5879842p5879842.html
Sent from the R-sig-geo mailing list archive at Nabble.com.

More information about the R-sig-Geo mailing list