使用R语言的PCT包:画路径路网图(英国自行车数据库)

本文主要参考:
PCT Get started;
International application of the PCT methods

本文主要介绍R包 PCT , 其目标是提高 Propensity to Cycle Too (PCT) 生成的数据的可访问性和可重复性,托管在 www.pct.bike 上。

英格兰和威尔士的自行车使用数据研究 (Propensity ot Cycle - PCT) 是研究自行车,慢行交通,可持续交通方面很好地工具。PCT一个用于可持续交通规划的开源在线系统详细介绍了该项目的方法和动机。

该项目背后的一个主要动机是使交通证据更容易获得,鼓励以证据为基础的交通政策。 PCT 的代码库是公开可用的(参见 github.com/npct)。然而,托管在那里的代码不容易运行或复制,这就是这个包的用武之地:它提供了对 PCT 基础数据的快速访问,并使一些关键结果能够快速复制。它的开发主要是为了教育目的(包括即将到来的 PCT 培训课程),但它可能对人们在这些方法的基础上进行开发有用,例如在他们的城镇/城市/地区创建一个骑自行车的场景。

总而言之,如果您想了解 PCT的工作原理,能够重现其部分结果,并构建自行车使用场景以告知支持全球城市骑自行车的交通政策,那么这个R包很适合学习

1.安装加载包

# install.packages("pct")
library(pct)

2.数据导入

从PCT 包中获取和复制一些数据集,基于圣地亚哥市的一个例子。本文展示了如何使用该包来估计其他城市的自行车潜力。

本文数据的代码可以通过这个文件处理或得 pctSantiago.

head(santiago_od)

在这里插入图片描述

就区域数据而言,它们如下所示:

sf:::print.sf(santiago_zones)
## Simple feature collection with 75 features and 1 field
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: -70.69203 ymin: -33.47766 xmax: -70.58239 ymax: -33.403
## Geodetic CRS:  WGS 84
## First 10 features:
##     geo_code                       geometry
## 259      259 POLYGON ((-70.65174 -33.431...
## 260      260 POLYGON ((-70.65008 -33.443...
## 261      261 POLYGON ((-70.64562 -33.437...
## 262      262 POLYGON ((-70.64643 -33.477...
## 263      263 POLYGON ((-70.64913 -33.459...
## 264      264 POLYGON ((-70.64914 -33.459...
## 265      265 POLYGON ((-70.65058 -33.450...
## 266      266 POLYGON ((-70.65058 -33.450...
## 292      292 POLYGON ((-70.60615 -33.419...
## 293      293 POLYGON ((-70.60673 -33.415...
plot(santiago_zones)

在这里插入图片描述

请注意,我们对每条欲望路径(desire line) 都有循环估计。
如果此数据未知,则可以将所有desire line的当前骑行水平近似为全市平均水平,例如圣地亚哥约 5%。

3.创建欲望路径(desired lines)

可以使用以下方法将起点-终点数据转换为地理欲望路径 ,通过stplanr 的函数 od2line :

desire_lines = stplanr::od2line(flow = santiago_od, zones = santiago_zones)

然后可以将结果线绘制在区域数据的顶部,如下所示:

plot(santiago_zones$geometry)
plot(santiago_lines["pcycle"], lwd = santiago_lines$n / 3, add = TRUE)

在这里插入图片描述

# gj = geojsonsf::sf_geojson(santiago_lines)
# path = file.path(tempdir(), "dl.geojson")
# write(gj, path)
# html_map = geoplumber::gp_map(path, browse_map = FALSE)
# htmltools::includeHTML(html_map)

之前的地图表明数据是可靠的:我们已经创建了圣地亚哥市中心的旅行模式的良好近似。

4.估计自行车使用量

为了估计骑行潜力,我们需要估计距离和丘陵。
被调查的区域相对平坦,因此我们可以简化假设所有线路的丘陵为 0%(通常我们会从路网信息中获取此信息):

desire_lines$hilliness = 0

那么距离呢?
我们可以按如下方式计算它(请注意,我们将其转换为数字对象以防止与 units 包相关的问题):

desire_lines$distance = as.numeric(sf::st_length(desire_lines))

现在我们对距离和丘陵有(非常)粗略的估计,我们可以估计骑行潜力如下:

desire_lines$godutch_pcycle = uptake_pct_godutch(distance = desire_lines$distance, gradient = 0)

让我们来看看结果,与当前的骑行水平相比,以及与距离相比:

cor(x = desire_lines$pcycle, y = desire_lines$godutch_pcycle)
## [1] 0.08743354
plot(x = desire_lines$pcycle, y = desire_lines$godutch_pcycle)

在这里插入图片描述

plot(x = desire_lines$distance, y = desire_lines$godutch_pcycle, ylim = c(0, 1))

在这里插入图片描述

正如预期的那样,当前和潜在的循环水平之间存在正(尽管很小)正相关。
结果清楚地表明距离衰减在 2 公里后开始,但在 8 公里处仍有 25% 的份额,表明主要转向骑自行车。

我们可以将结果放在地图上,如下所示:

library(leaflet)
leaflet(width = "100%") %>%
  addTiles() %>%
  addPolylines(data = desire_lines, weight = desire_lines$pcycle * 5)

leaflet(width = "100%") 
 %>% addTiles()
 %>% addPolylines(data = desire_lines, weight = desire_lines$godutch_pcycle * 5)

在这里插入图片描述

结果表明,仅根据OD数据,圣地亚哥中部地区的自行车骑行水平就有很大的提高潜力。
然而,要为政策提供信息,需要对自行车潜力进行更详细的估计,其结果要深入到各个街道的层面。
这涉及路网。

5.路径

有很多方法可以计算街道网络上的路径。
主要选项是本地路由,其中计算是基于本地存储的数据(在您的计算机上)和路网服务,其中数据是远程完成的(“在云中”)。

让我们使用远程路由服务将上一节中生成的直线转换为人们可以实际骑行的路线.

leaflet() %>% 
  addTiles() %>% 
  addPolylines(data = santiago_routes_cs[32, ])

结果显示路由的一端连接到路由服务可能无法到达的 Sendero Ciclistas。
在这个阶段有两个主要选择:

  • 1.从分析中省略数据点,承认数据不完整或
  • 2.确定服务可以路由到的附近位置。

在这种情况下,我们将采用选项 1。
在我们从分析中删除有问题的第 32 行之前,我们将把来自期望行的数据连接回结果中:

routes = sf::st_sf(
  cbind(sf::st_drop_geometry(santiago_routes_cs),
  sf::st_drop_geometry(desire_lines)),
  geometry = santiago_routes_cs$geometry
)

更新结果

routes$godutch_slc = round(routes$godutch_pcycle * routes$all)
rnet = stplanr::overline2(routes, "godutch_slc")
plot(rnet, lwd = rnet$godutch_slc / mean(rnet$godutch_slc))

在这里插入图片描述

5.更进一步

如果对此研究方向/数据集/处理方式感兴趣可以进一步学习以下资料:

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RookieTrevor

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值