dnearneigh {spdep}R Documentation

Neighbourhood contiguity by distance

Description

The function identifies neighbours of region points by Euclidean distance between lower (greater than) and upper (less than or equal to) bounds, or with lonlat = TRUE, by Great Circle distance in kilometers.

Usage

dnearneigh(x, d1, d2, row.names = NULL, lonlat = FALSE)

Arguments

x matrix of point coordinates
d1 lower distance bound
d2 upper distance bound
row.names character vector of region ids to be added to the neighbours list as attribute region.id, default seq(1, nrow(x))
lonlat TRUE if point coordinates are longitude-latitude decimal degrees, in which case distances are measured in kilometers

Value

The function returns a list of integer vectors giving the region id numbers for neighbours satisfying the distance criteria.

Author(s)

Roger Bivand Roger.Bivand@nhh.no

See Also

knearneigh

Examples

data(columbus)
k1 <- knn2nb(knearneigh(coords))
all.linked <- max(unlist(nbdists(k1, coords)))
col.nb.0.all <- dnearneigh(coords, 0, all.linked, row.names=rownames(columbus))
summary(col.nb.0.all, coords)
library(maptools)
plot(polys, border="grey", forcefill=FALSE)
plot(col.nb.0.all, coords, add=TRUE)
title(main=paste("Distance based neighbours 0-",  format(all.linked),
 " distance units", sep=""))
data(state)
us48.fipsno <- read.geoda(system.file("etc/weights/us48.txt",
 package="spdep")[1])
if (as.numeric(paste(version$major, version$minor, sep="")) < 19) {
 m50.48 <- match(us48.fipsno$"State.name", state.name)
} else {
 m50.48 <- match(us48.fipsno$"State_name", state.name)
}
xy <- as.matrix(as.data.frame(state.center))[m50.48,]
llk1 <- knn2nb(knearneigh(xy, k=1, lonlat=FALSE))
all.linked <- max(unlist(nbdists(llk1, xy, lonlat=FALSE)))
ll.nb <- dnearneigh(xy, 0, all.linked, lonlat=FALSE)
summary(ll.nb, xy, lonlat=TRUE, scale=0.5)
gck1 <- knn2nb(knearneigh(xy, k=1, lonlat=TRUE))
all.linked <- max(unlist(nbdists(gck1, xy, lonlat=TRUE)))
gc.nb <- dnearneigh(xy, 0, all.linked, lonlat=TRUE)
summary(gc.nb, xy, lonlat=TRUE, scale=0.5)
plot(ll.nb, xy)
plot(diffnb(ll.nb, gc.nb), xy, add=TRUE, col="red", lty=2)
title(main="Differences between Euclidean and Great Circle neighbours")

[Package spdep version 0.3-12 Index]