Hola Sebastian.

Esto depende exactamente lo que intentes replicar.

En principio, si quieres que solo tu shape te sugiera cuáles entidades son
contiguas, bastará utilizar la función poly2nb sobre tu objeto de datos
(presumiblemente un SpatialPolygonsDataFrame). Notar que estas funciones
(relacionadas con objetos del tipo nb no te dará una matriz propiamente
dicha sino un vector indicándote el número de vecinos que tiene cada
entidad). Por ejemplo:

# descargado de
#
http://www.ivic.gob.ve/ecologia/lpydv/galeria/Venezuela/LINKS/DIV_POL_ESTADOS.zip
library(rgdal) # para leer el shape
library(spdep) # para calcular los vecinos (¿o los llamamos contiguos :D ?)

ven<-readOGR(dsn='.',layer='VZLA_division_pol')
coordenadas<-coordinates(ven)

En el conjunto de datos hay 36 regiones (digamos regiones) y para saber
cuántos vecinos tiene cada una se escribe:

card(poly2nb(ven))

También nota que la definición de "contiguo" puede variar de lo que en
principio se pueda creer. La viñeta nb (que viene con el paquete spdep)
define:

By default, the contiguity condition is met when at least one point on the
> boundary of one polygon is within the snap distance of at least one point
> of its neighbour. This relationship is given by the argument queen=TRUE by
> analogy with movements on a chessboard. So when three or more polygons meet
> at a single point, they all meet the contiguity condition, giving rise to
> crossed links. If queen=FALSE , at least two boundary points must be within
> the snap distance of each other, with the conventional name of a ‘rook’
> relationship


Así que ya ves que tienes otra opción con qué experimentar en tu
investigación:

card(poly2nb(ven, queen=T))
card(poly2nb(ven, queen=F))

y para echarles un ojo:

plot(ven)
plot(poly2nb(ven, queen=T),coordenadas,add=T) # ó queen=F

Otra clase famosa de contiguos, son los vecinos por distancia, que
básicamente conectan cada entidad con una cantidad k de entidades que estén
más cerca. Pero, de nuevo, todo depende lo que en realidad busques hacer.
Un ejemplo:

plot(ven)
plot(knn2nb(knearneigh(coordenadas,1)),coordenadas,add=T) # 1 vecino

plot(ven)
plot(knn2nb(knearneigh(coordenadas,2)),coordenadas,add=T) # 2 vecinos


Espero te ayude.




2013/8/19 Sebastian Kruk <residuo.solow@gmail.com>

> Hola Freddy.
>
> Yo parto de un shape en que tengo los típicos archivos .shp, .sbx, .sbn,
> .shx y .dbf.
>
> En la tabla tengo el área de los poligonos en m2, el perímetro, el estado
> y el código ISO del estado dispuesto por el SGM.
>
> ¿Me puedes orientar un poco más?
>
> Gracias,
>
> Sebastían.
>
>
>
>
>
> El 14 de agosto de 2013 16:19, Freddy Omar López Quintero <
> freddy.vate01@gmail.com> escribió:
>
>> Hola Sebastian,
>>
>> Ellos utilizan GeoDaSpace para calcular la matriz de contigüidad (tambien
>>> llamada de contactos, pesos, ponderaciones, distancias o interacciones
>>> espaciales).
>>>
>>
>> Creo que te puedes aproximar a lo que necesitas con la función knn2nb del
>> paquete spdep.
>>
>> Saludos.
>>
>>
>>
>>
>> --
>> «But Gwindor answered: 'The doom lies in yourself, not in your name.'»
>>
>> JRR Tolkien
>>
>
>


-- 
«But Gwindor answered: 'The doom lies in yourself, not in your name.'»

JRR Tolkien

	[[alternative HTML version deleted]]

