extracting simple list of adjacent neighbours
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. I've tried using the IDvar parameter in readShapePoly (IDvar="idcolumn"), but the result in sn is still the same. How do I get the sn result to contain the ids from the column I would like to use ? Moritz