leaflet
This function plots back trajectories on a leaflet
map. This function
requires that data are imported using the openair::importTraj()
function.
trajLevelMap(
data,
longitude = "lon",
latitude = "lat",
pollutant,
type = NULL,
smooth = FALSE,
statistic = "frequency",
percentile = 90,
lon.inc = 1,
lat.inc = 1,
min.bin = 1,
.combine = NA,
sigma = 1.5,
cols = "turbo",
alpha = 0.5,
tile.border = NA,
provider = "OpenStreetMap",
legend.position = "topright",
legend.title = NULL,
legend.title.autotext = TRUE,
control.collapsed = FALSE,
control.position = "topright"
)
A leaflet object.
A data frame containing a HYSPLIT trajectory, perhaps accessed
with openair::importTraj()
.
required
A data frame containing HYSPLIT model outputs. If this data were not
obtained using openair::importTraj()
.
The decimal latitude/longitude.
default: "lat"
/ "lon"
Column names representing the decimal latitude and longitude.
Pollutant to be plotted. By default the trajectory height is used.
A method to condition the data
for separate plotting.
default: NULL
Used for splitting the trajectories into different groups which can be
selected between using a "layer control" menu. Passed to
openair::cutData()
.
Should the trajectory surface be smoothed? Defaults to FALSE
.
Note that, when smooth = TRUE
, no popup information will be available.
Statistic to use for trajLevel()
. By default, the function
will plot the trajectory frequencies (statistic = "frequency"
). As an
alternative way of viewing trajectory frequencies, the argument method = "hexbin"
can be used. In this case hexagonal binning of the trajectory
points (i.e., a point every three hours along each back trajectory).
The plot then shows the trajectory frequencies uses hexagonal binning.
There are also various ways of plotting concentrations.
It is possible to set statistic = "difference"
. In this case trajectories
where the associated concentration is greater than percentile
are
compared with the the full set of trajectories to understand the
differences in frequencies of the origin of air masses. The comparison is
made by comparing the percentage change in gridded frequencies. For
example, such a plot could show that the top 10\
tend to originate from air-mass origins to the east.
If statistic = "pscf"
then a Potential Source Contribution Function map
is produced. This statistic method interacts with percentile
.
If statistic = "cwt"
then concentration weighted trajectories are
plotted.
If statistic = "sqtba"
then Simplified Quantitative Transport Bias
Analysis is undertaken. This statistic method interacts with .combine
and
sigma
.
The percentile concentration of pollutant
against which
the all trajectories are compared.
The longitude and latitude intervals to be used for binning data.
The minimum number of unique points in a grid cell. Counts
below min.bin
are set as missing.
When statistic is "SQTBA" it is possible to combine lots of
receptor locations to derive a single map. .combine
identifies the column
that differentiates different sites (commonly a column named "site"
).
Note that individual site maps are normalised first by dividing by their
mean value.
For the SQTBA approach sigma
determines the amount of back
trajectory spread based on the Gaussian plume equation. Values in the
literature suggest 5.4 km after one hour. However, testing suggests lower
values reveal source regions more effectively while not introducing too
much noise.
The colours used for plotting, passed to
openair::openColours()
. The default, "turbo"
, is a rainbow palette with
relatively perceptually uniform colours. Read more about this palette at
https://research.google/blog/turbo-an-improved-rainbow-colormap-for-visualization/.
Opacity of the tiles. Must be between 0
and 1
.
Colour to use for the border of binned tiles. Defaults to
NA
, which draws no border.
The basemap to be used.
default: "OpenStreetMap"
A single leaflet::providers. See http://leaflet-extras.github.io/leaflet-providers/preview/ for a list of all base maps that can be used.
Position of the shared legend.
default: "topright"
Where should the legend be placed? One of "topright", "topright",
"bottomleft" or "bottomright". Passed to the position
argument of
leaflet::addLegend()
. NULL
defaults to "topright".
Title of the legend.
default: NULL
By default, when legend.title = NULL
, the function will attempt to
provide a sensible legend title based on colour
. legend.title
allows
users to overwrite this - for example, to include units or other contextual
information. Users may wish to use HTML tags to format the title.
Automatically format the title of the legend?
default: TRUE
When legend.title.autotext = TRUE
, legend.title
will be first run
through quickTextHTML()
.
Show the layer control as a collapsed?
default: FALSE
Should the "layer control" interface be collapsed? If TRUE
, users will
have to hover over an icon to view the options.
Position of the layer control menu
default: "topright"
Where should the "layer control" interface be placed? One of "topleft",
"topright", "bottomleft" or "bottomright". Passed to the position
argument of leaflet::addLayersControl()
.
openair::trajLevel()
trajLevelMapStatic()
for the static ggplot2
equivalent of
trajLevelMap()
Other interactive trajectory maps:
trajMap()
if (FALSE) {
trajLevelMap(traj_data, pollutant = "pm2.5", statistic = "pscf", min.bin = 10)
}
Run the code above in your browser using DataLab