[R-sig-Geo] extracting simple list of adjacent neighbours

Roger Bivand Roger.Bivand at nhh.no
Tue Sep 13 18:39:41 CEST 2011


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,

Roger


>
> 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
>

-- 
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



More information about the R-sig-Geo mailing list