Skip to content
An R package to find which regions each region in a shapefile is adjacent to
R
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
R
doc
man
DESCRIPTION
LICENSE
NAMESPACE
README.md
example.png

README.md

polygonNeighbors

An R package to find which regions each region in a shapefile is adjacent to. Outputs a data.frame and (optionally) the adjacency matrix and a plot of the adjacencies.

Installation

if (!require(devtools)) install.packages("devtools")
devtools::install_github("walshc/polygonNeighbors")

Example Usage

Download, extract and load a shapefile of US states:

file <- "http://www2.census.gov/geo/tiger/GENZ2015/shp/cb_2015_us_state_20m.zip"
download.file(file, "states.zip")
unzip("states.zip")
shp <- rgdal::readOGR(".", "cb_2015_us_state_20m")
shp <- shp[!(shp@data$STATEFP %in% c("02", "15", "72")),]  # Contiguous US
shp <- sp::spTransform(shp, CRS("+init=epsg:26978"))

Use the function (where "NAME" is the name of the states in shp):

state.adj <- polygonNeighbors(shp, id = "NAME")

You can also get the adjacency matrix and/or plot of adjacencies with:

state.adj <- polygonNeighbors(shp, id = "NAME", nb.matrix = TRUE, plot = TRUE)

Output

Adjacency data.frame

> head(state.adj$nb)
        NAME      adj.1     adj.2          adj.3      adj.4          adj.5         adj.6   adj.7 adj.8
1      Texas  Louisiana  Arkansas       Oklahoma New Mexico           <NA>          <NA>    <NA>  <NA>
2 California     Oregon    Nevada        Arizona       <NA>           <NA>          <NA>    <NA>  <NA>
3   Kentucky   Virginia Tennessee           Ohio   Illinois       Missouri West Virginia Indiana  <NA>
4    Georgia  Tennessee   Florida North Carolina    Alabama South Carolina          <NA>    <NA>  <NA>
5  Wisconsin   Michigan Minnesota       Illinois       Iowa           <NA>          <NA>    <NA>  <NA>
6     Oregon California     Idaho     Washington     Nevada           <NA>          <NA>    <NA>  <NA>

Adjacency matrix

> state.adj$nb.matrix[1:6, 1:6]
           Texas California Kentucky Georgia Wisconsin Oregon
Texas      FALSE      FALSE    FALSE   FALSE     FALSE  FALSE
California FALSE      FALSE    FALSE   FALSE     FALSE   TRUE
Kentucky   FALSE      FALSE    FALSE   FALSE     FALSE  FALSE
Georgia    FALSE      FALSE    FALSE   FALSE     FALSE  FALSE
Wisconsin  FALSE      FALSE    FALSE   FALSE     FALSE  FALSE
Oregon     FALSE       TRUE    FALSE   FALSE     FALSE  FALSE
You can’t perform that action at this time.