congruent {spData} | R Documentation

## Datasets to illustrate the concept of spatial congruence

### Description

Sample of old (incongruent) and new (congruent) administrative zones from UK statistical agencies

### Usage

    congruent

### Format

Simple feature geographic data in a projected CRS (OSGB) with random values assigned for teaching purposes.

### Source

https://en.wikipedia.org/wiki/ONS_coding_system

### Examples

    if(requireNamespace("sf", quietly = TRUE)) {
      library(sf)
      plot(aggregating_zones$geometry, lwd = 5)
      plot(congruent$geometry, add = TRUE, border = "green", lwd = 2)
      plot(incongruent$geometry, add = TRUE, border = "blue", col = NA)
      rbind(congruent, incongruent)
    }
    # Code used to download the data:
    ## Not run:
    devtools::install_github("robinlovelace/ukboundaries")
    library(sf)
    library(tmap)
    library(dplyr)
    library(ukboundaries)
    sel = grepl("003|004", msoa2011_lds$geo_label)
    aggregating_zones = st_transform(msoa2011_lds[sel, ], 27700)
    # find lsoas in the aggregating_zones
    lsoa_touching = st_transform(lsoa2011_lds, 27700)[aggregating_zones, ]
    lsoa_cents = st_centroid(lsoa_touching)
    lsoa_cents = lsoa_cents[aggregating_zones, ]
    sel = lsoa_touching$geo_code %in% lsoa_cents$geo_code
    # same for ed zones
    ed_touching = st_transform(ed1981, 27700)[aggregating_zones, ]
    ed_cents = st_centroid(ed_touching)
    ed_cents = ed_cents[aggregating_zones, ]
    incongruent_agg_ed = ed_touching[ed_cents, ]
    set.seed(2017)
    incongruent_agg_ed$value = rnorm(nrow(incongruent_agg_ed), mean = 5)
    congruent = aggregate(incongruent_agg_ed["value"], lsoa_touching[sel, ], mean)
    congruent$level = "Congruent"
    congruent = congruent[c("level", "value")]
    incongruent_cents = st_centroid(incongruent_agg_ed)
    aggregating_value = st_join(incongruent_cents, congruent)$value.y
    incongruent_agg = aggregate(incongruent_agg_ed["value"], list(aggregating_value), FUN = mean)
    incongruent_agg$level = "Incongruent"
    incongruent = incongruent_agg[c("level", "value")]
    summary(st_geometry_type(congruent))
    summary(st_geometry_type(incongruent))
    incongruent = st_cast(incongruent, "MULTIPOLYGON")
    summary(st_geometry_type(incongruent))
    summary(st_geometry_type(aggregating_zones))
    devtools::use_data(congruent, overwrite = TRUE)
    devtools::use_data(incongruent, overwrite = TRUE)
    devtools::use_data(aggregating_zones, overwrite = TRUE)

    ## End(Not run)

[Package spData version 0.3.0 Index]