输入
我有两个我导入R的shapefile,所以我最终得到了。 包含公交路线的spatiallinesdataframe。 包含公交车站的空间点数据框。
使用止损绘制给定路线如下所示。
示例数据
此link包含两个shapefile,可以下载为带有两个路径示例的zip。
:定位
我的目标是计算每对停靠点之间的地理距离(以米为单位):在底层公交线路的长度上停止1到停止2,停止2到停止3等。
我发现的大多数方法都是计算欧氏距离,或者是“乌鸦蝇”;这在这里不起作用。
This post提到PBSmapping
calcLength
具有riverdist
功能,可以很好地计算路线的总距离,但我无法找到方法将其与停止对情况,我也找不到通过其属性实际对shapefile进行子集化的方法。
2018-04-10T16:17:25.752663+00:00 heroku[web.1]: State changed from crashed to starting
2018-04-10T16:17:27.555672+00:00 heroku[web.1]: Starting process with command `npm start`
2018-04-10T16:17:29.455213+00:00 heroku[web.1]: State changed from starting to crashed
2018-04-10T16:17:29.437370+00:00 heroku[web.1]: Process exited with status 1
2018-04-10T16:17:29.378111+00:00 app[web.1]: npm ERR! missing script: start
包同样有趣,但针对河流进行了高度优化,我无法找到应用它的方法。
答案 0 :(得分:1)
从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