Inputs
我有两个形状文件导入到 R 中,这样我最终得到了。
包含公交路线的空间线数据框。
包含公交车站的空间点数据帧。
绘制给定路线及其停靠点如下所示。
样本数据
This link包括两个可作为 zip 格式下载的 shapefile,其中包含两条路线示例。
Target
我的目标是计算每对站点之间的地理距离(以米为单位):站点 1 到站点 2、站点 2 到站点 3 等,横跨基础巴士路线的长度。
我发现的大多数方法都计算欧几里德距离,或者称为“乌鸦飞翔”;这在这里不起作用。
这个帖子提到了PBSmapping
其中有一个calcLength
函数可以很好地计算路线的总距离,但我找不到将其与停靠点对情况相匹配的方法,也找不到实际上根据形状文件的属性进行子集化的方法。
The riverdist
包同样有趣,但针对河流进行了高度优化,我找不到应用它的方法。
Try gProject
来自rgeos
包裹:
library("rgdal")
library("rgeos")
# read shapefile and transfrom to UTM zone 36N (distances in m)
route <- spTransform(readOGR(".", "Trips"), CRS("+init=epsg:32636"))
stops <- spTransform(readOGR(".", "Stops"), CRS("+init=epsg:32636"))
l <- subset(route, route_id==1137)
p <- subset(stops, grepl("^1137_", UID))
plot(l, axes=TRUE, col="orange")
plot(p, add=TRUE, pch=19, cex=0.1)
text(p)
# distance along route
d <- sort(gProject(l, p))
d
# [1] 0 3051 3057 7221 10379 15657 20326 20326 22141 24262
# distance between stops
diff(d)
#[1] 3050.9166 5.9720 4164.2480 3157.7702 5278.5812 4668.1810 0.5878
#[8] 1814.9612 2120.8470
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)