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

Moritz Lennert mlennert at club.worldonline.be
Wed Sep 14 13:40:50 CEST 2011


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 ?

BTW: Is there any documentation about which attributes are available in 
these objects other than running attributes() ?

Thanks in any case !

Moritz



More information about the R-sig-Geo mailing list