Я знаю, что могу использовать mapview :: mapshot , чтобы экспортировать карту листовки из Rstudio в виде PNG.Однако я не смог точно указать уровень масштабирования и регион экспортируемой карты.
Заимствование некоторого кода из этого ответа на связанный вопрос, давайте рассмотрим следующееMWE.
library(maps)
library(ggmap)
library(maptools)
library(leaflet)
library(mapview)
library(rgdal)
country <- 'italy';
zoomLevel <- 12;
ita.map <- map( country, fill = TRUE, col = 1, plot = F );
ita.map.ids <- sapply( strsplit( ita.map$names, ':' ), function(x) x[1] );
ita.sp <- map2SpatialPolygons( ita.map, IDs=ita.map.ids, proj4string=CRS("+proj=longlat +datum=WGS84"))
bb<-as.numeric(ita.sp@bbox)
m<-leaflet() %>%
setView(12.48,41.89,zoom=zoomLevel) %>%
addTiles() %>%
addPolygons(data=ita.sp)%>%
addExtent(data=ita.sp)
mapshot(m, file = "italy.png")
дает Это правильный уровень масштабирования, но он явно не охватывает всю Италию.
Добавление
%>% fitBounds(bb[1],bb[2],bb[3],bb[4])
к приведенному выше коду дает , что лучше, но а) не соответствует указанному уровню масштабирования и б) имеет много нежелательных горизонтальных отступов.
IПредположим, что добавление аргументов width и height к вызову leaflet()
поможет, но я не уверен, как автоматически получить правильные значения.Также полученное изображение будет очень большим, что потребует снижения разрешения.
Как я могу экспортировать регион карты, содержащий Италию, с указанным уровнем масштабирования без дополнительного заполнения?