Also called “relief contours method”, “illuminated contour method” or “shaded contour lines method”, the Tanaka method1 enhances the representation of topography on a map by using shaded contour lines. The result is a 3D-like map.
This package is a simplified implementation of the Tanaka method, north-west white contours represent illuminated topography and south-east black contours represent shaded topography. Even if the results are quite satisfactory, a more refined method could be used based on the Kennelly and Kimerling’s paper2.
tanaka
is a small package with two functions:
tanaka()
uses a terra
object and displays
the map directly;tanaka_contour()
builds the isopleth polygon
layer.The contour lines creation relies on isoband
,
spatial manipulation and display rely on sf
.
install.packages("tanaka")
require(remotes)
install_github("riatelab/tanaka")
library(tanaka)
library(terra)
<- rast(system.file("tif/elev.tif", package = "tanaka"))
ras tanaka(ras, breaks = seq(80,400,20),
legend.pos = "topright", legend.title = "Elevation\n(meters)")
elevatr
.library(tanaka)
library(elevatr)
library(terra)
# use elevatr to get elevation data
<- get_elev_raster(locations = data.frame(x = c(6.7, 7), y = c(45.8,46)),
ras z = 10, prj = "EPSG:4326", clip = "locations")
<- rast(ras)
ras # custom color palette
<- c("#F7E1C6", "#EED4C1", "#E5C9BE", "#DCBEBA", "#D3B3B6", "#CAA8B3",
cols "#C19CAF", "#B790AB", "#AC81A7", "#A073A1", "#95639D", "#885497",
"#7C4692", "#6B3D86", "#573775", "#433266", "#2F2C56", "#1B2847")
# display the map
tanaka(ras, breaks = seq(500,4800,250), col = cols)
library(terra)
library(sf)
library(tanaka)
library(mapsf)
# Download
<- tempfile()
tempzip <- tempdir()
tempfolder <- paste0("http://cidportal.jrc.ec.europa.eu/ftp/jrc-opendata/GHSL/",
data_url "GHS_POP_GPW4_GLOBE_R2015A/GHS_POP_GPW42015_GLOBE_R2015A_54009_1k/",
"V1-0/GHS_POP_GPW42015_GLOBE_R2015A_54009_1k_v1_0.zip")
download.file(data_url, tempzip)
unzip(tempzip, exdir = tempfolder)
# Import
<- rast(paste0(tempfolder,
pop2015 "/GHS_POP_GPW42015_GLOBE_R2015A_54009_1k_v1_0/",
"GHS_POP_GPW42015_GLOBE_R2015A_54009_1k_v1_0.tif"))
# Mask raster
<- st_as_sf(data.frame(x=425483.8, y=5608290),
center coords=(c("x","y")),
crs = st_crs(pop2015))
<- st_buffer(center, dist = 800000)
center <- crop(pop2015, st_bbox(center)[c(1,3,2,4)])
ras # Smooth values
<- focalMat(x = ras, d = c(10000), type = "Gauss")
mat <- focal(x = ras, w = mat, fun = sum, na.rm = TRUE)
rassmooth # Map
<- c(0,25,50,100,250,500,750,1000,1750,2500,5000, 7500,10000)
bks mf_export(x = center, filename = "circle.png", width = 800, res = 100)
tanaka(x = rassmooth,
breaks = bks,
mask = center,
col = hcl.colors(n = 12, palette = "Inferno"),
shift = 2500,
add = TRUE,
legend.pos = "topleft",
legend.title = "Inhabitants\nper km2")
mf_map(center, add = TRUE, border = "white", col = NA, lwd = 6)
mf_title(txt = "Smoothed Population Density")
mf_credits(paste0("T. Giraud, 2022\n",
"Data : European Commission, Joint Research Centre (JRC); ",
"Columbia University, CIESIN (2015): GHS population grid, ",
"derived from GPW4."))
text(-250000 ,6420000, "Gaussian filter, sigma = 10km",
adj = 0, font = 3, cex = .8, xpd = TRUE )
dev.off()
The metR
package allows to draw Tanaka
contours with ggplot2.
1: Tanaka, K. (1950). The relief contour method of
representing topography on maps. Geographical Review, 40(3),
444-456.
2: Kennelly, P., & Kimerling, A. J. (2001).
Modifications of Tanaka’s illuminated contour method. Cartography
and Geographic Information Science, 28(2), 111-123.