НОВЫЙ ОТВЕТ
Попробуйте получить плитки с cartography::getTiles
, похоже, работает. Обратите внимание, что у вас должны быть установлены sf v0.9-0
и cartography v2.4-0
, оба недавно обновлены на CRAN . Полный список плиток доступен на getTiles
здесь .
library(sf)
library(cartography)
library(dplyr)
nz <- spData::nz %>% st_transform(27200)
#Get tile
HB_map <- cartography::getTiles(nz, type = "Stamen.Terrain")
class(HB_map)
#> [1] "RasterBrick"
#> attr(,"package")
#> [1] "raster"
st_crs(HB_map)$proj4string
#> [1] "+proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs "
st_crs(nz)$proj4string
#> [1] "+proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs "
library(raster)
test_map_mask <-
raster::mask(
HB_map,
nz,
)
#tmap
tmap::qtm(test_map_mask)
#> Warning: replacing previous import 'sf::st_make_valid' by
#> 'lwgeom::st_make_valid' when loading 'tmap'
#> Numeric values of test_map_mask interpreted as RGB values with max.value = 255. Run tm_shape(test_map_mask) + tm_raster() to visualize the data.
Создано в 2020-04-04 представьте пакет (v0.3.0)
СТАРЫЙ ОТВЕТ
Вы можете проверить getPngLayer
и pngLayer
из cartography
, в основном с этим вы создайте png-файл как растр, замаскированный sf
, и нанесите его на график.
Если ваша проблема заключается в построении графика, pngLayer
в основном является оболочкой raster::plotRGB
.
Extra ball Вы также можете получить Stamen Terrain, используя getTiles
, также на cartography
, но не забудьте установить последнюю версию (выпущенную сегодня на CRAN).
Представляет:
library(sf)
library(cartography)
library(dplyr)
HB_map <- spData::nz %>% getTiles(type = "Stamen.Terrain")
class(HB_map)
#> [1] "RasterBrick"
#> attr(,"package")
#> [1] "raster"
Regional_boundary <- spData::nz
st_crs(HB_map)$proj4string
#> [1] "+proj=tmerc +lat_0=0 +lon_0=173 +k=0.9996 +x_0=1600000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs "
st_crs(Regional_boundary)$proj4string
#> [1] "+proj=tmerc +lat_0=0 +lon_0=173 +k=0.9996 +x_0=1600000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs "
library(raster)
test_map_mask <-
raster::mask(
HB_map,
Regional_boundary,
)
#> Warning: st_crs<- : replacing crs does not reproject data; use st_transform for
#> that
par(mar=c(0,0,0,0))
tilesLayer(test_map_mask)
plot(st_geometry(Regional_boundary), border = "red", lwd=2, add = TRUE)
Создано в 2020-04-04 пакетом представитель (v0.3.0)
Виньетка: https://dieghernan.github.io/cartographyvignette/
Исходный код: https://github.com/riatelab/cartography/blob/master/R/tilesLayer.R