extracting simple list of adjacent neighbours
On Wed, 14 Sep 2011, Moritz Lennert wrote:
On 13/09/11 18:39, Roger Bivand wrote:
On Tue, 13 Sep 2011, Moritz Lennert wrote:
On 06/09/11 21:41, Roger Bivand wrote:
On Tue, 6 Sep 2011, Moritz Lennert wrote:
Hello,
I have a very simple problem, which I know will have a simple
solution, but I just can't get my head wrapped around it.
I have a shapefile with regions, including an attribut containing a
regional id.
I would like to extract a simple neighbourhood file, with
neighbourhood defined by simple adjacency with symmetry of
relationship in both directions.
Ideally, I would like to get something like this:
id_region_1 id_neighbour_1
id_region_1 id_neighbour_2
id_region_1 id_neighbour_3
id_region_2 id_neighbour_1
id_region_2 id_neighbour_2
id_region_3 id_neighbour_1
etc
What I've done so far:
originalmap<-readShapePoly("/path/to/shapefile.shp")
nb<-poly2nb(originalmap, row.names=originalmap$idcolumn)
Roughly: lw <- nb2listw(nb, style="B") sn <- listw2sn(lw) then the first two columns of the "spatial.neighbour" object sn (used in the S-PLUS SpatialStats module) are what you need. They can also be exported for use in Matlab.
This does give me the right format, but I don't get the ids in originalmap$idcolumn but rather the internal ids of the polygons.
example(columbus) nb <- poly2nb(columbus, row.names=as.character(columbus$NEIGNO)) lw <- nb2listw(nb, style="B") sn <- listw2sn(lw) head(sn) sn1 <- cbind(attr(sn, "region.id")[sn$from], attr(sn, "region.id")[sn$to]) head(sn1) using the region.id attribute. Hope this helps,
Yep, this gives me exactly what I was looking for. And I learned something new: never used attr() before. Is there no other way to access the region.id info in sn ?
No.
BTW: Is there any documentation about which attributes are available in these objects other than running attributes() ?
It isn't in the help page; most often attributes are only used internally. You can also run str() on an object to see whether any attributes are present, and if so, what they seem to be. Roger
Thanks in any case ! Moritz
Roger Bivand Department of Economics, NHH Norwegian School of Economics, 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