在 tmap 上手动设置地图比例

Posted

技术标签:

【中文标题】在 tmap 上手动设置地图比例【英文标题】:Set manually the map scale on tmap 【发布时间】:2021-12-28 02:09:09 【问题描述】:

我正在使用tmap 创建一个地图,以将特定坐标绘制为点。 我想将我的地图保存为 .png,使用 tmap_leafletmapshot 效果很好(见下面的代码)。

library(sf)
library(tmap)
library(mapview)

coord <- data.frame(Lat=c(0.92, 0.92, 0.93, 0.92, 0.93, 0.93, 1.00, 1.00, 0.99, 0.93),
              Lon=c(104.58, 104.51, 104.57, 104.50, 104.55, 104.51, 104.59, 104.49, 104.6, 104.61))
sdat <- st_as_sf(coord, coords = c("Lon", "Lat"),
                 crs = "+proj=longlat +datum=WGS84 +no_defs")
tmap_mode("view")
Map <- tm_basemap("Esri.WorldTopoMap") +
  tm_shape(sdat) +
  tm_dots(alpha = 1,
          title = "Location")
lf <- tmap_leaflet(Map)
mapshot(lf, file = "Map.png") # save map

我的问题是在 tmap 视图模式下可视化的默认区域。 我想缩小以可视化地图的更大区域(例如设置特定边界),而不仅仅是真正靠近绘制点的区域。我还没有在网上找到解决方案。 这就是我获得.png的方式:

这就是我想要得到的东西(用截图制作):

【问题讨论】:

【参考方案1】:

您可以使用tm_view() 调整缩放级别:

library(sf)
library(tmap)
library(mapview)

coord <- data.frame(Lat=c(0.92, 0.92, 0.93, 0.92, 0.93, 0.93, 1.00, 1.00, 0.99, 0.93),
              Lon=c(104.58, 104.51, 104.57, 104.50, 104.55, 104.51, 104.59, 104.49, 104.6, 104.61))
sdat <- st_as_sf(coord, coords = c("Lon", "Lat"),
                 crs = "+proj=longlat +datum=WGS84 +no_defs")
tmap_mode("view")
Map <- tm_basemap("Esri.WorldTopoMap") +
  tm_shape(sdat) +
  tm_dots(alpha = 1,
          title = "Location") +
  tm_view(set.zoom.limits = c(10, 20))

lf <- tmap_leaflet(Map)
mapshot(lf, file = "Map.png") 

【讨论】:

以上是关于在 tmap 上手动设置地图比例的主要内容,如果未能解决你的问题,请参考以下文章

安卓开发 百度地图怎么自动设置缩放比例

数据可视化应用绘制空间地图(附R语言代码)

设置两个 matplotlib imshow 图具有相同的颜色地图比例

安卓开发 百度地图怎么自动设置缩放比例

即使在代码中手动设置位置后,标记也不会显示在地图上

OpenLayers中地图缩放级别的设置方法