Get a RasterBrick from a .png image cut using the shape of a spatial object. The .png file could be either a local file or extracted from a given url.
getPngLayer(
x,
pngpath,
align = "center",
margin = 0,
crop = FALSE,
mask = TRUE,
inverse = FALSE,
dwmode = "curl",
...
)an sf object, a simple feature collection (POLYGON or MULTIPOLYGON) or a tile (see getTiles).
local path or url of a .png file.
set how the .png file should be fitted within x. Possible values are 'left','right','top', 'bottom' or 'center'.
inner margin, zooms out the .png over x. If 0 then .png is completely zoomed over x.
TRUE if results should be cropped to the specified x extent.
TRUE if the result should be masked to x.
logical. If FALSE, overlapped areas of x on pngpath are extracted, otherwise non-overlapping areas are returned. See mask.
Set the download mode. It could be 'base' for download.file or 'curl' for curl_download.
additional arguments for downloading the file. See download.file or curl_download.
A RasterBrick object is returned.
The effect of align would differ depending of the aspect ratio of x and pngpath. To obtain a fitted tile from pngpath
given that x is the tile to fit, set margin = 0 , crop = TRUE.
The accuracy of the final plot would depend on the quality of the .png file,
the scale of x and the resolution setup of the graphic device. Exporting to svg is highly
recommended.
library(sf)
mtq <- st_read(system.file("gpkg/mtq.gpkg", package = "cartography"))
#> Reading layer `mtq' from data source
#> `/tmp/RtmpmpfIrO/temp_libpath18ee15f22a9e/cartography/gpkg/mtq.gpkg'
#> using driver `GPKG'
#> Simple feature collection with 34 features and 7 fields
#> Geometry type: MULTIPOLYGON
#> Dimension: XY
#> Bounding box: xmin: 690574 ymin: 1592536 xmax: 735940.2 ymax: 1645660
#> Projected CRS: WGS 84 / UTM zone 20N
#Local file
dirpng <- system.file("img/LogoMartinique.png", package = "cartography")
mask <- getPngLayer(mtq, dirpng)
if (FALSE) {
#Remote file
urlpng <- "https://i.imgur.com/gePiDvB.png"
masksea <- getPngLayer(mtq, urlpng, mode = "wb", inverse = TRUE)
}