2017-02-22 112 views
2

我正在研究R中的自定義路由規劃器。我正在使用Google Maps Directions API的輸出。我想在兩個地方之間的地圖上顯示路線。到目前爲止,一切都很順利。唯一的問題是,我現在不知道如何根據速度給出多種顏色的路線。我在網上搜索了幾天,找不到符合我目標的東西。這就是我發佈這篇文章的原因。如何繪製R中多種顏色的多義線?

#install.packages("leaflet") 
library(leaflet) 


pal <- colorNumeric(
palette = unique(polyline$Col), 
domain = polyline$Speed, 
na.color = "#FFFFFF" 
) 
rm(map) 
map <- leaflet() 
map <- addTiles(map) 
a <- 1 
for(a in length(unique(polyline$Step_ID))){ 


map <- addPolylines(map,lng = polyline$Lon, 
      lat = polyline$Lat, 
      data = polyline[polyline$Step_ID==a,], 
      color = polyline$col) 
a <- a + 1 
} 
map <- addLegend(map,"bottomright", pal = pal, values = polyline$Speed, 
     title = "Speed", 
     opacity = 1) 
map 

到目前爲止,我認爲你必須創建多個折線(糾正我,如果我錯了)來繪製多種顏色:

This is how my polyline data frame looks like:

然後我用TE下面的代碼顯現它Leafet在路線中。這就是爲什麼我做了一個for循環,將PolyLine添加到地圖中。

This is how my visualization looks like

寄託都只是怎麼想的那樣。唯一的問題是線的着色。我想像Google一樣對流量着色。

有人可以幫我解決這個問題嗎?

+1

可以輸入您的數據集 –

+0

.Label = c(「red」,「orange」,「green」),class =「factor」)),.Names = c(「Step_ID」, 「Dist_Value」 ,「Dist_Text」,「Dur_Text」,「Dur_Value」,「Lat」,「Lon」, 「Speed」,「Col」),row.names = c(NA,1448L),class =「data.frame」) –

回答

1

要完全複製您的問題,您需要向我們提供polyline的實際數據(即不是截圖)。在此之前,我將創建自己的數據集並向您展示如何創建彩色線條。

而且,正如你使用谷歌的API來獲取方向,我假設你有一個API密鑰,所以我要告訴你如何使用我的googleway包做

library(googleway) 

api_key <- "your_api_key" 

directions <- google_directions(origin = "St Kilda, Melbourne, Australia", 
           destination = "Geelong, Victoria, Australia", 
           key = api_key) 

## the results of the API give you distance in metres, and time in seconds 
## so we need to calculate teh speed 
spd <- (directions$routes$legs[[1]]$steps[[1]]$distance$value/1000)/(directions$routes$legs[[1]]$steps[[1]]$duration$value/ 60/60) 

## then we can start to build the object to use in the plot 
## and as we are staying within Google's API, we can use the encoded polyline to plot the routes 
## rather than extracting the coordinates 
df <- data.frame(speed = spd, 
       polyline = directions$routes$legs[[1]]$steps[[1]]$polyline) 



df$floorSpeed <- floor(df$speed) 
colours <- seq(1, floor(max(df$speed))) 
colours <- colorRampPalette(c("red", "yellow","green"))(length(colours)) 

df <- merge(df, 
      data.frame(speed = 1:length(colours), 
         colour = colours), 
      by.x = "floorSpeed", 
      by.y = "speed") 

map_key <- "your_map_api_key" 

google_map(key = map_key) %>% 
    add_polylines(data = df, polyline = "points", stroke_colour = "colour", 
        stroke_weight = 5, stroke_opacity = 0.9) 

enter image description here

製作路線規劃中閃亮的一種方式見this answer

+0

哎呀抱歉!我是新來的網站。 謝謝,這對我有用!它只適用於我的個人Mac,而不適用於我實習的Windows電腦。有點奇怪。但我會弄清楚是什麼問題。但感謝您的幫助和包裝! –

+0

@DaveMeijdam - 在Windows上安裝軟件包或查看地圖時是否存在問題? – SymbolixAU

+0

當我運行'devtools :: install_github(「SymbolixAU/googleway」)'時,它不會給出任何錯誤。但是當我運行繪製地圖的代碼時,它沒有顯示任何東西。觀衆保持空白。 –