This uses the `car::placeLabel()` function to generate labels for the given scene. Either use an `sf` object or manually specify the x/y coordinates and label.
generate_label_overlay(
labels,
extent,
x = NULL,
y = NULL,
heightmap = NULL,
width = NA,
height = NA,
resolution_multiply = 1,
text_size = 1,
color = "black",
font = 1,
pch = 16,
point_size = 1,
point_color = NA,
offset = c(0, 0),
data_label_column = NULL,
halo_color = NA,
halo_expand = 0,
halo_alpha = 1,
halo_offset = c(0, 0),
halo_blur = 1,
seed = NA
)
A character vector of labels, or an `sf` object with `POINT` geometry and a column for labels.
Either an object representing the spatial extent of the scene (either from the `raster`, `terra`, `sf`, or `sp` packages), a length-4 numeric vector specifying `c("xmin", "xmax","ymin","ymax")`, or the spatial object (from the previously aforementioned packages) which will be automatically converted to an extent object.
Default `NULL`. The x-coordinate, if `labels` is not an `sf` object.
Default `NULL`. The y-coordinate, if `labels` is not an `sf` object.
Default `NULL`. The original height map. Pass this in to extract the dimensions of the resulting overlay automatically.
Default `NA`. Width of the resulting overlay. Default the same dimensions as height map.
Default `NA`. Width of the resulting overlay. Default the same dimensions as height map.
Default `1`. If passing in `heightmap` instead of width/height, amount to increase the resolution of the overlay, which should make lines/polygons/text finer. Should be combined with `add_overlay(rescale_original = TRUE)` to ensure those added details are captured in the final map.
Default `1`. Text size.
Default `black`. Color of the labels.
Default `1`. An integer which specifies which font to use for text. If possible, device drivers arrange so that 1 corresponds to plain text (the default), 2 to bold face, 3 to italic and 4 to bold italic.
Default `20`, solid. Point symbol. `0` = square, `1` = circle, `2` = triangle point up, `3` = plus, `4` = cross, `5` = diamond, `6` = triangle point down, `7` = square cross, `8` = star, `9` = diamond plus, `10` = circle plus, `11` = triangles up and down, `12` = square plus, `13` = circle cross, `14` = square and triangle down, `15` = filled square, `16` = filled circle, `17` = filled triangle point-up, `18` = filled diamond, `19` = solid circle, `20` = bullet (smaller circle), `21` = filled circle blue, `22` = filled square blue, `23` = filled diamond blue, `24` = filled triangle point-up blue, `25` = filled triangle point down blue
Default `0`, no points. Point size.
Default `NA`. Colors of the points. Unless otherwise specified, this defaults to `color`.
Default `c(0,0)`. Horizontal and vertical offset to apply to the label, in units of `geometry`.
Default `NULL`. The column in the `sf` object that contains the labels.
Default `NA`, no halo. If a color is specified, the text label will be surrounded by a halo of this color.
Default `2`. Number of pixels to expand the halo.
Default `1`. Transparency of the halo.
Default `c(0,0)`. Horizontal and vertical offset to apply to the halo, in units of `geometry`.
Default `1`. Amount of blur to apply to the halo. Values greater than `30` won't result in further blurring.
Default `NA`, no seed. Random seed for ensuring the consistent placement of labels around points.
Semi-transparent overlay with labels.
#Add the included `sf` object with roads to the montereybay dataset
if(run_documentation()) {
#Create the water palette
water_palette = colorRampPalette(c("darkblue", "dodgerblue", "lightblue"))(200)
bathy_hs = height_shade(montereybay, texture = water_palette)
#Set label font
par(family = "Arial")
#We're plotting the polygon data here for counties around Monterey Bay. We'll first
#plot the county names at the polygon centroids.
bathy_hs %>%
add_shadow(lamb_shade(montereybay,zscale=50),0.3) %>%
add_overlay(generate_polygon_overlay(monterey_counties_sf, palette = rainbow,
extent = attr(montereybay,"extent"),
heightmap = montereybay)) %>%
add_overlay(generate_label_overlay(labels=monterey_counties_sf,
color="black", point_size = 1, text_size = 1,
data_label_column = "NAME",
extent= attr(montereybay,"extent"), heightmap = montereybay,
seed=1)) %>%
plot_map()
}
if(run_documentation()) {
#It's hard to read these values, so we'll add a white halo.
bathy_hs %>%
add_shadow(lamb_shade(montereybay,zscale=50),0.3) %>%
add_overlay(generate_polygon_overlay(monterey_counties_sf, palette = rainbow,
extent = attr(montereybay,"extent"),
heightmap = montereybay)) %>%
add_overlay(generate_label_overlay(labels=monterey_counties_sf,
color="black", point_size = 1, text_size = 1,
data_label_column = "NAME",
extent= attr(montereybay,"extent"), heightmap = montereybay,
halo_color = "white", halo_expand = 3,
seed=1)) %>%
plot_map()
}
if(run_documentation()) {
#Plot the actual town locations, using the manual plotting interface instead of the `sf` object
montereybay %>%
height_shade() %>%
add_overlay(generate_altitude_overlay(bathy_hs, montereybay, 0, 0)) %>%
add_shadow(lamb_shade(montereybay,zscale=50),0.3) %>%
add_overlay(generate_label_overlay(labels=as.character(monterey_counties_sf$NAME),
x=as.numeric(as.character(monterey_counties_sf$INTPTLON)),
y=as.numeric(as.character(monterey_counties_sf$INTPTLAT)),
color="black", point_size = 1, text_size = 1,
extent= attr(montereybay,"extent"), heightmap = montereybay,
halo_color = "white", halo_expand = 3,
seed=1)) %>%
plot_map()
}
if(run_documentation()) {
#Adding a softer blurred halo
montereybay %>%
height_shade() %>%
add_overlay(generate_altitude_overlay(bathy_hs, montereybay, 0, 0)) %>%
add_shadow(lamb_shade(montereybay,zscale=50),0.3) %>%
add_overlay(generate_label_overlay(labels=as.character(monterey_counties_sf$NAME),
x=as.numeric(as.character(monterey_counties_sf$INTPTLON)),
y=as.numeric(as.character(monterey_counties_sf$INTPTLAT)),
color="black", point_size = 1, text_size = 1,
extent= attr(montereybay,"extent"), heightmap = montereybay,
halo_color = "white", halo_expand = 3, halo_blur=10,
seed=1)) %>%
plot_map()
}
if(run_documentation()) {
#Changing the seed changes the locations of the labels
montereybay %>%
height_shade() %>%
add_overlay(generate_altitude_overlay(bathy_hs, montereybay, 0, 0)) %>%
add_shadow(lamb_shade(montereybay,zscale=50),0.3) %>%
add_overlay(generate_label_overlay(labels=as.character(monterey_counties_sf$NAME),
x=as.numeric(as.character(monterey_counties_sf$INTPTLON)),
y=as.numeric(as.character(monterey_counties_sf$INTPTLAT)),
color="black", point_size = 1, text_size = 1,
extent= attr(montereybay,"extent"), heightmap = montereybay,
halo_color = "white", halo_expand = 3, halo_blur=10,
seed=2)) %>%
plot_map()
}