adding ids and df to hexagonal polys ?
Thanks for the hints here... but I'm guessing that there's somethings missing... the 5th command line (row.names(o) <- row.names(hpoly)) does not make sense to me as hpoly is a spatialPolygon which has no row names
str(hpoly,max.lev=2)
Formal class 'SpatialPolygons' [package "sp"] with 4 slots ..@ polygons :List of 965 ..@ plotOrder : int [1:965] 1 2 3 4 5 6 7 8 9 10 ... ..@ bbox : num [1:2, 1:2] 446230 3778428 1331230 8047934 .. ..- attr(*, "dimnames")=List of 2 ..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slots
summary(row.names(hpoly))
Length Class Mode
0 NULL NULL
I thought, perhaps there's a spelling problem? but no...
row.names(o) <- row.names(hpoly) hpoly1 <- SpatialPolygonsDataFrame(hpoly, data=o)
Error in SpatialPolygonsDataFrame(hpoly, data = o) : row.names of data and Polygons IDs do not match How is this possible? So I tried a "brute force" approach, with no success
row.names(slot(cl,"polygons")) <- 1:length(slot(cl,"polygons"))
Error in `rownames<-`(x, value) : attempt to set rownames on object with no dimensions I seem to have the concept wrong to begin with here. How are IDs assigned to a 'SpatialPolygons' class? I should be able to assign them regardless of the template shape used, right? Which would make the overlay() step unnecessary? I guess that I need some clarification on how the class is built.. my apologies if it's too obvious of a question... I just hope not to be the only one missing this thanks
On Thu, 2009-09-10 at 09:22 +0200, Roger Bivand wrote:
On Wed, 9 Sep 2009, Horacio Samaniego wrote:
Hi, I am trying to understand the different data types in the sp package. However, I do not seem to get the way that spdf are built. For example, let say that I can build a hexagonal grid. That work just fine using
regio <- readShapePoly("regions.shp")
hpts <- spsample(regio,type="hexagonal",cells=30000)
hpoly = HexPoints2SpatialPolygons(hpts)
I'm unclear about adding a df with IDs to this new SpetialPolygons class
library(maptools)
xx <- readShapePoly(system.file("shapes/sids.shp", package="maptools")[1],
IDvar="FIPSNO", proj4string=CRS("+proj=longlat +ellps=clrk66"))
hpts <- spsample(xx, type="hexagonal", n=100)
hpoly <- HexPoints2SpatialPolygons(hpts)
o <- overlay(xx, hpts)
row.names(o) <- row.names(hpoly)
hpoly1 <- SpatialPolygonsDataFrame(hpoly, data=o)
summary(hpoly1)
spplot(hpoly1, "BIR74")
After making sure that the IDs agree, just use the constructor for
SpatialPolygonsDataFrame objects.
Hope this helps,
Roger
I guess that I'm not understanding how ids are assigned... any hint would be appreciated thanks
_______________________________________________ R-sig-Geo mailing list R-sig-Geo at stat.math.ethz.ch https://stat.ethz.ch/mailman/listinfo/r-sig-geo