gpt4 book ai didi

r - 从铁路网络 shapefile 中提取车站之间的路线

转载 作者:行者123 更新时间:2023-12-02 01:51:35 27 4
gpt4 key购买 nike

问题:我想从 shapefile 中提取两个车站之间的铁路网络沿线的路线,并且仅绘制该特定路线,而不是整个网络。

这是我到目前为止所拥有的:

我有一个包含英国整个铁路网络的形状文件,绘制如下:

library(maptools)
rail <- readShapeSpatial("railnetworkLine.shp")

enter image description here

我还有一个包含东向和北向的电台列表,例如:

 1) ABDARE 300400 202800
2) DEIGHTN 416490 419140

我可以将它们添加到 map 中,如下所示:

plot(rail)
plot(spdf.station, add=TRUE, col="red", pch=20)

enter image description here

所以我不知道的是,我如何提取它们之间的路线并绘制该路线 - 信息显然在 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

我发现您可以使用 Google map 和 ggmaps 获取道路沿线路线(请参阅 here )。但是,当您使用 shapefile 而不是 Google map 作为网络输入时,该怎么办呢?

我认为“shp2graph”+“igraph”包可能很有用,但我就是不明白。有什么想法吗?

最佳答案

可以使用 stplanr 包计算路线网络上的最短路径。我使用了包含荷兰整个铁路网络的 shapefile。该形状文件可从以下位置获得:

https://mapcruzin.com/free-netherlands-arcgis-maps-shapefiles.htm

library(sf)
library(ggplot2)
library(stplanr)

# Read shapefile
nl_rails_sf <- sf::st_read("~/netherlands-railways-shape/railways.shp")

# Data frame with station locations
stations_df <- data.frame(station = c("Den Haag", "Den Bosch"),
lat = c(52.080276, 51.690556),
lon = c(4.325, 5.293611))

# Create sf object
stations_sf <- sf::st_as_sf(stations_df, coords = c("lon", "lat"), crs = 4326)

# Find shortest route
slnetwork <- SpatialLinesNetwork(nl_rails_sf)
find_nodes <- find_network_nodes(sln = slnetwork,
x = stations_df$lon,
y = stations_df$lat,
maxdist = 2e5)
route_dhdb_df <- data.frame(start = find_nodes[1], end = find_nodes[2])
route_dhdb_sf <- sum_network_links(sln = slnetwork, routedata = route_dhdb_df)

# Distance route in meters
distance_m <- sum(route_dhdb_sf$length) # 112189.5 [m]

# Plot results
ggplot(nl_rails_sf) +
geom_sf() +
theme_void() +
geom_sf(data = stations_sf, color = "red") +
geom_sf(data = route_dhdb_sf, color = "red")

enter image description here

关于r - 从铁路网络 shapefile 中提取车站之间的路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34886094/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com