2013~2023 年各省市区县路网密度面板数据

今天给大家分享一份 2013~2023 年中国各省市区县路网密度面板数据。由 RStata 数据中心从 OpenStreetMap (OSM) 道路和铁路矢量数据中提取处理得到。

路网密度是衡量区域交通基础设施发展水平的重要指标,通常以单位面积内的道路长度表示。本数据集详细统计了各区域的道路与铁路长度、区域面积及对应的路网密度,并按道路/铁路类型进行了细分,方便研究者从不同维度分析交通基础设施的分布特征与时空演变。

数据概览

为了方便大家使用,我把数据汇总成了中国各省份、各城市、各区县的路网密度面板数据。

  • 2013~2023年各省份路网密度面板数据.dta

  • 2013~2023年各城市路网密度面板数据.dta

  • 2013~2023年各区县路网密度面板数据.dta

各文件均包含以下变量:

变量名 含义
年份 统计年份
行政级别 省级 / 市级 / 区县级
类型 道路 / 铁路
类别 具体分类(如高速公路、一级公路、铁路、地铁等)
长度_m 长度(米)
长度_km 长度(公里)
密度 路网密度(公里/平方公里)
区域面积_km2 区域面积(平方公里)
省 / 省代码 省份名称及代码
市 / 市代码 城市名称及代码(市级、区县级)
县 / 县代码 区县名称及代码(区县级)

道路类型包括:高速公路、一级公路、二级公路、三级公路、干道、居住区道路、服务道路、农村道路、步行道、自行车道、小径、其他。

铁路类型包括:铁路、地铁、轻轨、有轨电车、单轨铁路、窄轨铁路、其他。

图表展示

下图展示了 2013-2023 年各省份路网密度的时间趋势:

下图展示了 2023 年各省份路网密度的空间分布:

下图展示了路网密度的整体分布情况:

下图展示了 2023 年各城市路网密度的空间分布:

下图展示了 2023 年各区县路网密度的空间分布:

处理方法

该数据的处理代码并不复杂,但是运算量非常大,感兴趣的小伙伴可以学习平台上的地理计算相关课程,例如:

使用 R 语言进行地理计算: https://rstata.duanshu.com/#/brief/course/7596d4ddfd904ca58cc5daccae8bc941

数据处理的核心流程如下:

  1. 数据来源:从 OpenStreetMap (OSM) 获取 2013~2023 年中国范围内的道路(gis_osm_roads_free_1.shp)和铁路(gis_osm_railways_free_1.shp)矢量数据。
  2. 行政区划数据:使用 2021 年行政区划边界数据(省、市、县三级),并采用 Albers 等面积投影(+proj=aea +lat_0=0 +lon_0=105 +lat_1=25 +lat_2=47)确保面积计算准确。
  3. 空间计算:使用 R 语言 sf 包,通过 st_intersection() 函数将道路/铁路线与行政区划面进行空间叠加,计算每个区域内各类道路和铁路的总长度。
  4. 密度计算:路网密度 = 道路(或铁路)长度(公里)/ 区域面积(平方公里)。
  5. 并行处理:采用 pbmclapply 进行多核心并行计算,每个省份/城市/区县每年独立保存 RDS 文件,支持断点续跑。
  6. 结果合并:将每年的计算结果合并,最终输出三个层级的面板数据(省级、市级、区县级),并添加中文变量标签。

核心 R 代码片段如下:

# 读取行政区划数据
province_sf <- st_read("2021行政区划/省.shp", quiet = TRUE) %>%
st_transform(crs = target_crs) %>%
mutate(区域面积_km2 = as.numeric(st_area(.) / 1e6))

# 计算某类道路在一个区域内的总长度
calc_length <- function(geom, lines, fclasses = NULL) {
if (!is.null(fclasses)) lines <- filter(lines, fclass %in% fclasses)
inter <- st_intersection(lines, geom)
if (nrow(inter) == 0) return(0)
sum(st_length(inter) %>% as.numeric(), na.rm = TRUE)
}

# 计算区域统计(总计 + 各类别)
calc_region_stats <- function(geom, area_km2, roads, rails,
year_label, admin_level) {
# 道路总计
road_rows <- tibble(
类型 = "道路",
类别 = "总计",
长度_m = calc_length(geom, roads)
)
# 按道路类别细分
cat_road_rows <- map_df(names(road_categories), function(cn) {
tibble(
类型 = "道路",
类别 = cn,
长度_m = calc_length(geom, roads, road_categories[[cn]])
)
})
# 合并并计算密度
bind_rows(road_rows, cat_road_rows) %>%
mutate(
长度_km = 长度_m / 1000,
密度 = (长度_m / 1000) / area_km2
)
}

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

数据引用格式

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

RStata 数据中心: 2013~2023年各省市区县路网密度面板数据. 2026. https://tidyfriday.cn/rsdb2/

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

RStata Data Center: Panel Data on Road Network Density across Provinces, Cities, and Districts/Counties, 2013–2023. 2026. https://tidyfriday.cn/rsdb2/

关联课程/数据推荐

如何绘制一幅漂亮的路网地图?网页文本提取、地理编码与可视化:https://rstata.duanshu.com/#/course/2b622a0fab0d4201a4324775259d89b0

矢量数据几何运算:https://rstata.duanshu.com/#/course/3d96208599674959a38f5ebe1474f1de

中国各城市间的交通距离是如何解析的?——以各城市与上海的驾车交通路线规划为例:https://rstata.duanshu.com/#/course/e35a78b8555143749245c9de51f9aa48

1993~2020 年各省市区县交通质量面板数据:https://rstata.duanshu.com/#/course/1335ed7a366442a2b4edafcac1858d6b

2021 和 2022 年中国各城市间的驾车路线规划和交通距离矩阵数据库:https://rstata.duanshu.com/#/course/77dfbd280e764820b1b20d929632e831

点击这里跳转到 RStata 短书平台获取附件:2013~2023 年各省市区县路网密度面板数据

评论