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

Moritz Lennert mlennert at club.worldonline.be
Tue Sep 13 17:12:26 CEST 2011


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



More information about the R-sig-Geo mailing list