1985~2025 年各城市市辖区空间形态紧凑性(紧凑度)指标面板数据

今天给大家分享一份 1985~2025 年中国各城市市辖区空间形态紧凑性指标面板数据。基于 CLCD 土地覆盖数据计算处理得到。

该指标的计算原理参考方颖、白秀叶(2022),具体思路如下:

  1. 使用 CLCD 土地覆盖数据中的**不透水面(Impervious)**作为城市建成区的代理指标;
  2. 提取各城市市辖区范围内的最大建成区;
  3. 在建成区内随机抽取点,计算任意两点间的平均距离(记为 dist1);
  4. 构造与该建成区面积相等的圆,计算圆内任意两点间的平均距离(记为 dist2);
  5. dist1 / dist2 即为城市空间形态的紧凑度指标。

该指标越大,说明城市空间形态越分散;指标越小(接近 1),说明城市形态越接近圆形,即越紧凑。

数据概览

为了方便大家使用,我把数据汇总成了城市层面的 1985~2025 年各城市市辖区空间形态紧凑性指标面板数据:

数据中包含如下变量:

变量名 含义
avg_distance_km 建成区内任意两点之间距离的均值(km)
adk_ec 建成区等面积圆内任意两点之间距离均值(km)
spatial_compactness 城市空间形态紧凑度(avg_distance_km / adk_ec)

该数据包含了 290 个城市、37 个年份(1985~2025年)、共 10,625 条观测值,数据预览如下:

省 市 year avg_distance_km adk_ec spatial_compactness
上海市 上海市 1985 9.19 7.46 1.23
上海市 上海市 1990 9.46 7.69 1.23
上海市 上海市 1995 10.96 9.37 1.17
上海市 上海市 2000 14.45 11.93 1.21
上海市 上海市 2020 25.17 21.37 1.18
北京市 北京市 1985 8.54 6.69 1.28
北京市 北京市 2025 24.08 19.67 1.22

图表展示

下图展示了 2025 年中国各城市市辖区空间形态的紧凑度分布:

下图展示了 1985-2025 年中国城市空间形态紧凑度的整体变化趋势:

下图展示了城市空间形态紧凑度与建成区平均距离的关系:

处理代码

数据处理的 R 语言代码如下(核心步骤):

首先加载相关 R 包并读取城市市辖区矢量数据:

library(tidyverse)
library(sf)
library(geosphere)
library(terra)
library(parallel)

# 读取CLCD土地覆盖数据
rast("CLCD土地覆盖数据2/CLCD_v01_2025_albert.tif") -> rst

# 读取市辖区矢量数据并按城市汇总
read_sf("2021行政区划/县.shp") %>%
filter(县类型 == "市辖区") %>%
select(-contains("类型")) %>%
group_by(省, 省代码, 市, 市代码) %>%
summarise() %>%
ungroup() -> city

然后使用多线程提取每个城市的建成区:

# 创建并行集群
makeCluster(16) -> cl
clusterEvalQ(cl, ({
library(tidyverse)
library(sf)
library(geosphere)
}))

# 计算任意两点间平均距离的函数
calculate_avg_distance <- function(province_polygon, n_points = 1000) {
random_points <- st_sample(province_polygon, size = n_points)
coords <- st_coordinates(random_points)
distances <- distm(coords)
avg_distance <- mean(distances[upper.tri(distances)])
return(avg_distance)
}

# 计算建成区任意两点间平均距离
maxcity2$avg_distance <- parallel::parSapply(cl, st_geometry(maxcity2), calculate_avg_distance)

最后计算等面积圆的距离并计算紧凑度:

# 构造等面积圆并计算其内任意两点间平均距离
st_buffer(dist = units::set_units(sqrt(as.numeric(temppc$area) / pi), m)) -> equal_circle
calculate_avg_distance(equal_circle$geometry) -> ec_dist

# 计算空间形态紧凑度
maxcitydf2a %>%
mutate(spatial_compactness = avg_distance_km / adk_ec) %>%
haven::write_dta("1985~2025年各城市市辖区空间形态紧凑性指标面板数据.dta")

附件中也提供了该数据的处理代码供参考:

数据引用格式

由于该数据包含较多 RStata 处理的内容,在研究中使用该数据请使用清晰的方式注明数据来源于 RStata 或者 RStata 数据中心,并使用如下格式引用:

RStata 数据中心: 1985~2025年各城市市辖区空间形态紧凑性指标面板数据. 2026. https://tidyfriday.cn/rsdb2/

英文文献可以使用下面的格式引用:

RStata Data Center: Panel Data on Spatial Compactness of Urban Built-up Areas across Chinese Cities, 1985–2025. 2026. https://tidyfriday.cn/rsdb2/

关联课程/数据推荐

1980~2015 年各省市区县空间形态紧凑度指标面板数据:https://rstata.duanshu.com/#/course/9e6bacd816324d5ea15004cd0d4c15e3

2001~2021 年各省市区县空间形态紧凑度面板数据:https://rstata.duanshu.com/#/course/fd68e2b4b73749c8862dcf399ac63f84

名师讲堂|使用 R 语言计算各城市空间形态的紧凑度:https://rstata.duanshu.com/#/course/9e6bacd816324d5ea15004cd0d4c15e3

如果有 RStata 相关的定制需求,可以联系李老师付费定制。

点击这里跳转到 RStata 短书平台获取附件:1985~2025 年各城市市辖区空间形态紧凑性(紧凑度)指标面板数据

评论