我正在尝试根据运输时间绘制轮廓。更清楚地说,我想将具有相似旅行时间(假设间隔为10分钟)的点聚类到特定点(目的地),并将它们映射为轮廓或热图。
现在,我唯一的想法就是使用R包gmapsdistance查找不同起点的旅行时间,然后将它们聚类并在地图上绘制出来。但是,正如您所知道的,这绝对不是一个可靠的解决方案。
该线在GIS社区和这一次的蟒蛇说明了类似的问题,但对于内特定的时间范围原点目的地。我想找到可以在一定时间内到达目的地的起点。
现在,下面的代码显示了我的基本想法(使用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")
该地图还可以帮助您理解以下问题:
使用这个答案,我可以从原点得到要到达的点,但是我需要将其反转并找到旅行时间等于或少于到达目的地的时间的点。
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])
相关分类