之前我给大家分享过一份中国各个城市之间的交通距离矩阵数据:中国的各城市间交通距离矩阵——驾车去其他城市的最优路线、最短距离和最小耗时
×
最近有小伙伴询问是否能计算各个区县距离最近地级市的交通距离。借助上面数据的处理方法是可以实现的。理论上我们需要计算各个区县和各个城市间的所有距离,然后比较得到最近的。但是这样很不切实,因为我们需要进行差不多 2900 * 370 = 107.3 万次路线规划。
因此我是先计算各个区县与各个城市(均是质心)之间的大圆距离,比较得到距离每个区县最近的 10 个城市,交通距离最近的城市一定在这 10 个城市之间。
![]()
使用高德地图驾车路径规划接口即可对这些区县-城市对进行路径规划,由此便可得到各个区县驾车去附近城市的最优驾车路线、距离和耗时,也就是附件中的 各区县与附近城市的交通距离和驾车路径数据.rds 数据,使用 readr 包中的 read_rds() 函数即可读取,是个 sf 对象:
readr::read_rds("各区县与附近城市的交通距离和驾车路径数据.rds") |
其中:
- fromadd 是区县名称,是 省、市、区县连接得到的,附件中还有一个文件夹“2021行政区划”,里面是 2021年的各级行政区划,读取之后其中的 省市区县连接就可以得到 fromadd;
- toadd 是城市名称,是省和市连接得到的;
- dist 是区县和城市质心的大圆距离,单位 km;
- from 是区县的质心坐标;
- to 是城市的质心坐标;
- distace 是驾车最优距离,单位 km;
- duration 是沿着最优路线驾车的预估耗时,单位 小时;
- path:是驾车的最优路线,sf 对象。
另外考虑到大家可能使用其他 GIS 工具,因此我还提供了 shp 格式的文件,也就是附件中的:lineshp 文件夹。使用 Stata 的 shp2dta 命令也可以把这个文件转换成 dta 文件进行读取。
比较距离得到最近交通距离
通过分区县比较 distance 就可以得到区县和城市的最短驾车距离,也就是附件中的下面三个文件:
- 各区县与驾车距离最近城市的交通距离和驾车路径数据.rds
- 各区县与驾车距离最近城市的交通距离数据.xlsx
- mindist_lineshp 文件夹:shp 文件
比较时间得到最短的交通耗时
通过分区县比较 duration 就可以得到区县和城市的最短驾车耗时,也就是附件中的下面三个文件:
- 各区县与驾车时间最短城市的交通距离和驾车路径数据.rds
- 各区县与驾车时间最短城市的交通距离数据.xlsx
- mintime_lineshp 文件夹:shp 文件
各区县与本市的最短交通距离
通常与各区县距离最近的城市是其所在的城市,因此可以得到各区县与本市的最短交通距离:
- 各区县质心到本市质心的驾车距离与驾车路径数据.rds
- 各区县质心到本市质心的驾车距离与驾车时间数据.xlsx
- self_lineshp 文件夹:shp 文件
如何使用高德地图进行路径规划
关于如何使用高德地图进行路径规划,感兴趣的小伙伴可以学习这个课程:https://rstata.duanshu.com/#/course/e35a78b8555143749245c9de51f9aa48
×
附件中也有本数据的处理代码,感兴趣的小伙伴可以研究研究~
点击这里跳转到 RStata 短书平台获取附件:各个区县与最近城市的交通距离、驾车耗时、最优路线数据
评论