Learn R Programming

spdep (version 0.1-10)

graphneigh: Graph based spatial weights

Description

Functions return a graph object containing a list with the vertex coordinates and the to and from indices defining the edges. The helper function graph2nb converts a graph object into a neighbour list. The plot functions plot the graph objects.

Usage

gabrielneigh(coords)
relativeneigh(coords)soi.graph(tri.nb, coords)
graph2nb(gob, row.names=NULL,sym=FALSE)
plot.Gabriel(x, show.points=FALSE, add=FALSE, linecol=par(col), ...)
plot.relative(x, show.points=FALSE, add=FALSE, linecol=par(col),...)

Arguments

coords
matrix of region point coordinates
tri.nb
a neighbor list created from tri2nb
gob
a graph object created from any of the graph funtions
row.names
character vector of region ids to be added to the neighbours list as attribute region.id, default seq(1, nrow(x))
sym
a logical argument indicating whether or not neighbors should be symetric (if i->j then j->i)
x
object to be plotted
show.points
(logical) add points to plot
add
(logical) add to existing plot
linecol
edge plotting colour
...
further graphical parameters as in par(..)

Value

  • A list of class Graph withte following elements
  • npnumber of input points
  • fromarray of origin ids
  • toarray of destination ids
  • nedgesnumber of edges in graph
  • xinput x coordinates
  • yinput y coordinates
  • The helper functions return an nb object with a list of integer vectors containing neighbour region number ids.

Details

The graph functions produce graphs on a 2d point set thatare all subgraphs of the Delaunay triangulation. The relative neighbor graph is defined by the relation, x and y are neighbors if

$$d(x,y) \le min(max(d(x,z),d(y,z))| z \in S)$$

where d() is the distance, S is the set of points and z is an arbitrary point in S. The Gabriel graph is a subgraph of the delaunay triangulation and has the relative neighbor graph as a sub-graph. The relative neighbor graph is defined by the relation x and y are Gabriel neighbors if

$$d(x,y) \le min((d(x,z)^2 + d(y,z)^2)^{1/2} |z \in S)$$

where x,y,z and S are as before. The sphere of influence graph is defined for a finite point set S, let $r_x$ be the distance from point x to its nearest neighbor in S, and $C_x$ is the circle centered on x. Then x and y are SOI neigbors iff $C_x$ and $C_y$ intersect in at least 2 places.

References

Matula, D. W. and Sokal R. R. 1980, Properties of Gabriel graphs relevant to geographic variation research and the clustering of points in the plane, Geographic Analysis, 12(3), pp. 205-222.

Toussaint, G. T. 1980, The relative neighborhood graph of a finite planar set, Pattern Recognition, 12(4), pp. 261-268.

Kirkpatrick, D. G. and Radke, J. D. 1985, A framework for computational morphology. In Computational Geometry, Ed. G. T. Toussaint, North Holland.

See Also

knearneigh, dnearneigh, knn2nb

Examples

Run this code
data(columbus)
par(mfrow=c(2,2))
col.tri.nb<-tri2nb(coords)
col.gab.nb<-graph2nb(gabrielneigh(coords), sym=TRUE)
col.rel.nb<- graph2nb(relativeneigh(coords), sym=TRUE)
col.soi.nb<- graph2nb(soi.graph(col.tri.nb,coords), sym=TRUE)
plotpolys(polys, bbs, border="grey")
plot(col.tri.nb,coords,add=TRUE)
title(main="Delaunay Triangulation")
plotpolys(polys, bbs, border="grey")
plot(col.gab.nb, coords, add=TRUE)
title(main="Gabriel Graph")
plotpolys(polys, bbs, border="grey")
plot(col.rel.nb, coords, add=TRUE)
title(main="Relative Neighbor Graph")
plotpolys(polys, bbs, border="grey")
plot(col.soi.nb, coords, add=TRUE)
title(main="Sphere of Influence Graph")
par(mfrow=c(1,1))

Run the code above in your browser using DataLab