2 votes

Est-il possible de colorer le chemin en fonction de l'altitude ?

J'utilise mapdeck::add_path() pour montrer les trajectoires de vol des avions. J'aimerais colorer les trajectoires en fonction de l'altitude ; est-ce possible ? Voici un petit exemple :

library(mapdeck)
library(sf)
# From https://github.com/kent37/mapdeck_play/blob/master/tracks_2019_03_11.gpkg?raw=true
one_day = st_read('tracks_2019_03_11.gpkg')

key = 'your_api_key'
mapdeck(location=c(-71.128184, 42.3769824), zoom=14, key=key) %>% 
  add_path(one_day)

enter image description here

Merci de votre attention !

3voto

SymbolixAU Points 15470

Il n'est actuellement pas possible d'avoir une image multicolore path mais il est sur ma liste d'attente. todo liste.

Pour obtenir ce que vous souhaitez, vous devez utiliser un line qui prend une "origine" et une "destination" et dessine une ligne droite (c'est-à-dire les éléments constitutifs d'une path )

Pour obtenir les colonnes Origine-Destination, nous devons décomposer le fichier sf dans un data.frame, ajoutez les colonnes '_to', puis faites-en un data.frame. sf à nouveau.

(J'ai également un todo pour permettre aux data.frames d'utiliser Z et M, mais pour l'instant nous devons faire cette conversion finale en sf encore)

library(data.table)
library(sfheaders)

df <- sfheaders::sf_to_df( one_day, fill = TRUE )

setDT( df )[
  , `:=`(
    x_to = shift(x, type = "lead")
    , y_to = shift(y, type = "lead")
    , z_to = shift(z, type = "lead")
    , m_to = shift(m, type = "lead")
    )
  , by = flight
]

df <- df[ !is.na( x_to ) ]

df$origin <- sfheaders::sfc_point(
  obj = df
  , x = "x"
  , y = "y"
  , z = "z"
  , m = "m"
)

df$destination <- sfheaders::sfc_point(
  obj = df
  , x = "x_to"
  , y = "y_to"
  , z = "z_to"
  , m = "m_to"
)

sf <- sf::st_as_sf( df )

mapdeck(
  style = mapdeck_style("dark")
) %>%
  add_line(
    data = sf
    , origin = "origin"
    , destination = "destination"
    , stroke_colour = "z"
  )

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X