compute buffer from point shapefile to have shapefile
On Wed, 17 Feb 2010, Tyler Dean Rudolph wrote:
Here is another way to compute buffered polygons around points: ## One record (point) at a time (buffer of 25m radius)
temp
x y 1 -300358 748992.6 library(spatstat) discbuff<-disc(radius=25, centre=c(temp$x, temp$y))
Note that from here you can use the coerce method in maptools: polybuff <- as(discbuff, "SpatialPolygons") There are many coercion methods in maptools for sp and spatstat classes. Hope this simplifies! Roger
library(sp) polybuff<-SpatialPolygons(list(Polygons(list(Polygon(rbind(cbind(discbuff$bdry[[1]]$x, y=discbuff$bdry[[1]]$y), c(discbuff$bdry[[1]]$x[1], y=discbuff$bdry[[1]]$y[1])))), ID=row.names(temp)))) plot(polybuff) points(temp, col="red") ## Numerous records (points) at once (buffer of 25m radius)
temp
x y
1 -300358.0 748992.6
7 -300450.8 748764.8
13 -300415.1 748865.8
19 -300504.5 748698.4
25 -300488.4 748460.1
polys<-list()
for(i in 1:nrow(temp)) {
discbuff<-disc(radius=25, centre=c(temp$x[i], temp$y[i]))
discpoly<-Polygon(rbind(cbind(discbuff$bdry[[1]]$x,
y=discbuff$bdry[[1]]$y), c(discbuff$bdry[[1]]$x[1],
y=discbuff$bdry[[1]]$y[1])))
polys<-c(polys, discpoly)
}
spolys<-list()
for(i in 1:length(polys)) {
spolybuff<-Polygons(list(polys[[i]]), ID=row.names(temp)[i])
spolys<-c(spolys, spolybuff)
}
polybuffs<-SpatialPolygons(spolys)
plot(polybuffs)
points(temp, col="red")
Tyler
[[alternative HTML version deleted]]
_______________________________________________ R-sig-Geo mailing list R-sig-Geo at stat.math.ethz.ch https://stat.ethz.ch/mailman/listinfo/r-sig-geo
Roger Bivand Economic Geography Section, Department of Economics, Norwegian School of Economics and Business Administration, Helleveien 30, N-5045 Bergen, Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43 e-mail: Roger.Bivand at nhh.no