【发布时间】:2016-01-19 20:13:38
【问题描述】:
问题:我想从 shapefile 中提取两个车站之间沿铁路网络的路线,并且只绘制这条特定路线,而不是整个网络。
这是我目前所拥有的:
我有一个包含整个英国铁路网络的 shapefile,绘制如下:
library(maptools)
rail <- readShapeSpatial("railnetworkLine.shp")
我还有一个带有东向和北向的电台列表,例如:
1) ABDARE 300400 202800
2) DEIGHTN 416490 419140
我可以将它们添加到地图中,它看起来像这样:
plot(rail)
plot(spdf.station, add=TRUE, col="red", pch=20)
所以我不知道如何提取它们之间的路线并绘制该路线 - 信息显然在 shapefile 中,我有车站的坐标,但我不明白如何提取它。
我设法用这段代码计算了它们之间的距离:
SpacingInMetres <- 10000
require(secrlinear)
network <- read.linearmask(data=rail, spacing=SpacingInMetres)
distance <- (networkdistance (stations[1,], stations[2,], network))/1000
# Confirm distance:
distance
>311.7893
我发现您可以使用ggmaps 使用 Google 地图获取沿道路的路线(请参阅here)。但是当你有一个 shapefile 作为网络输入而不是谷歌地图时,你怎么能做到呢?
我想也许包 'shp2graph' + 'igraph' 很有用,但我就是想不通。有什么想法吗?
【问题讨论】:
-
您是否必须使用 R 或其他 GIS 解决方案是否适合您
-
hm,我在这之前和之后还有很多其他代码,所以真的更喜欢解决方案 R..
-
您的 shapefile 中是否包含更多信息,例如路线名称?您至少可以根据它过滤路线,和/或根据火车站在您的路线上运行最短路径算法
标签: r geospatial igraph shapefile