Skip to contents

Calculates the Urban Centrality Index (UCI) as in Pereira et al., (2013) doi:10.1111/gean.12002 . The UCI measures the extent to which the spatial organization of a city or region varies from extreme monocentric to extreme polycentric in a continuous scale from 0 to 1. Values close to 0 indicate more polycentric patterns and values close to 1 indicate a more monocentric urban form.

Calculate Urban Centrality Index

Usage

uci(
  sf_object,
  var_name,
  dist_type = "euclidean",
  bootstrap_border = FALSE,
  showProgress = TRUE,
  parallel = FALSE
)

Arguments

sf_object

A POLYGON sf data.frame of the study area.

var_name

A string. The name of the column in sf_object with the number of activities/opportunities/resources/services to be considered when calculating urban centrality levels. NA values are considered to be equal to 0.

dist_type

A string indicating whether calculations should be based on "euclidean" distances (Default) or "spatial_link" distances. Spatial link distances consider Euclidean distances along the links of spatial neighbor links. In the case of areas with a concave shape (like a bay), it is strongly recommended to use "spatial_link" distances (even though they are computationally more costly) because simple Euclidean distances can bias UCI estimates in those cases.

bootstrap_border

A logical. The calculation of UCI requires one to find the maximum value of the Venables spatial separation index of the study area. If bootstrap_border = FALSE (Default), the function uses a heuristic approach that assumes that the max spatial separation would occur when all activities were equally distributed along the border of the study area. This is a fast approach, but it does not reach the maximum spatial separation. Alternatively, if bootstrap_border = TRUE, the function uses a bootstrap approach that simulates 20000 random distributions of activities along the border and uses the max spatial separation found. This approach is more computationally expensive and although it might not return the maximum theoretical value of spatial separation, it is probably very close to it.

showProgress

A logical. Indicates whether to show a progress bar for the bootstrap simulation. Defaults to TRUE.

parallel

Decides whether the function should run in parallel. Defaults is FALSE. When TRUE, it will use all cores available minus one using future::plan() with strategy "multisession" internally. Note that it is possible to create your own plan before calling uci(). In this case, do not use this argument.

Usage

Please check the vignettes and data documentation on the website.

Author

Maintainer: Rafael H. M. Pereira rafa.pereira.br@gmail.com (ORCID)

Examples

# load data
data_dir <- system.file("extdata", package = "uci")
grid <- readRDS(file.path(data_dir, "grid_bho.rds"))

# calculate UCI
df <- uci(
        sf_object = grid,
        var_name = 'jobs',
        dist_type = "euclidean",
        bootstrap_border = FALSE
        )
head(df)
#>         UCI location_coef spatial_separation spatial_separation_max
#> 1 0.2538635     0.5278007           3880.114               7475.899

# calculate UCI with bootstrap
df2 <- uci(
        sf_object = grid,
        var_name = 'jobs',
        dist_type = "euclidean",
        bootstrap_border = TRUE,
        showProgress = TRUE
        )
head(df2)
#>         UCI location_coef spatial_separation spatial_separation_max
#> 1 0.2553067     0.5278007           3880.114               7515.494