【发布时间】:2018-12-05 11:03:10
【问题描述】:
注意: 需要r、python、java 或c++ 或c# 中的解决方案。
我正在尝试根据运输时间绘制轮廓。更清楚地说,我想将具有相似旅行时间(比如说 10 分钟间隔)的点聚集到特定点(目的地),并将它们映射为等高线或热图。
现在,我唯一的想法是使用 R 包 gmapsdistance 来查找不同来源的旅行时间,然后将它们聚类并绘制在地图。但是,正如您所知,这绝不是一个可靠的解决方案。
GIS 社区上的 thread 和 python 上的 this one 说明了类似的问题,但在特定时间到达目的地的起点。我想找到可以在一定时间内到达目的地的起点。
现在,下面的代码展示了我的基本想法(使用 R):
library(gmapsdistance)
set.api.key("YOUR.API.KEY")
mdestination <- "40.7+-73"
morigin1 <- "40.6+-74.2"
morigin2 <- "40+-74"
gmapsdistance(origin = morigin1,
destination = mdestination,
mode = "transit")
gmapsdistance(origin = morigin2,
destination = mdestination,
mode = "transit")
这张地图也可能有助于理解这个问题:
使用这个 answer 我可以得到我可以从原点到达的点,但我需要反转它并找到有旅行的点到我的目的地的时间小于一定时间;
library(httr)
library(googleway)
library(jsonlite)
appId <- "TravelTime_APP_ID"
apiKey <- "TravelTime_API_KEY"
mapKey <- "GOOGLE_MAPS_API_KEY"
location <- c(40, -73)
CommuteTime <- (5 / 6) * 60 * 60
url <- "http://api.traveltimeapp.com/v4/time-map"
requestBody <- paste0('{
"departure_searches" : [
{"id" : "test",
"coords": {"lat":', location[1], ', "lng":', location[2],' },
"transportation" : {"type" : "driving"} ,
"travel_time" : ', CommuteTime, ',
"departure_time" : "2017-05-03T07:20:00z"
}
]
}')
res <- httr::POST(url = url,
httr::add_headers('Content-Type' = 'application/json'),
httr::add_headers('Accept' = 'application/json'),
httr::add_headers('X-Application-Id' = appId),
httr::add_headers('X-Api-Key' = apiKey),
body = requestBody,
encode = "json")
res <- jsonlite::fromJSON(as.character(res))
pl <- lapply(res$results$shapes[[1]]$shell, function(x){
googleway::encode_pl(lat = x[['lat']], lon = x[['lng']])
})
df <- data.frame(polyline = unlist(pl))
df_marker <- data.frame(lat = location[1], lon = location[2])
google_map(key = mapKey) %>%
add_markers(data = df_marker) %>%
add_polylines(data = df, polyline = "polyline")
此外,Documentation of Travel Time Map Platform 谈到 Multi Origins with Arrival time,这正是我想做的事情。但是我需要为公共交通和驾驶(对于通勤时间不到一小时的地方)这样做,我认为由于公共交通很棘手(基于您靠近的车站),也许热图是比等高线更好的选择。
【问题讨论】:
-
@NicolásVelásquez 我看了看;它正在回答一个问题,即找到您可以在特定时间到达的地方,而不是您可以开始并在所需时间到达特定目的地的地方。
-
(您可能对制作等时地图的mapumental.com 感兴趣。)
-
@Rich 看来他们目前只覆盖英国。 mapumental.com/about 谢谢。
标签: r python java c++ c# java python r osrm travel-time