从read_osm
中获取tmaptools package in R
的错误。要生成带有背景图层的静态地图。
即使使用tmap包中的示例NLD_muni
数据,也会出现错误
library(tmap)
library(tmaptools)
library(OpenStreetMap)
tmap_mode("plot")
data(NLD_muni)
test <- tmaptools::read_osm(NLD_muni, type = "esri", zoom = NULL)
错误
FUN(X [[i]],...)中的错误: 抱歉,参数类型“ NA”不明确或不支持。
预计将加载底图
可以使用tmap_mode("view")
并创建交互式绘图,但理想情况下可以制作静态绘图。
答案 0 :(得分:0)
两条评论:
1)不能显示带有静态{tmap}地图的底图;底图功能来自{leaflet}软件包,因此仅在视图模式下可用。
如果您绝对需要在静态地图中使用底图(这是一个有效的用例),请考虑结合使用{ggplot2}和{ggmap}。
2)您加载NLD_muni
非常复杂;请考虑以下代码:
library(tmap)
data(NLD_muni)
tmap_mode("view")
tm_shape(NLD_muni) + tm_polygons(col = "population")
答案 1 :(得分:0)
我遇到了与您相同的问题,根据帮助文件,read_osm
的帮助文件中的示例不再起作用(因为自从我升级到Windows 10并重新安装R后,我怀疑它与之相关)。
我在网上找到了another example,对我来说很有效,您可以从中重新开始。
# load Netherlands shape
data(NLD_muni)
# read OSM raster data
osm_NLD <- read_osm(bb(NLD_muni, ext=1.1, projection ="longlat"))
# plot with regular tmap functions
tm_shape(osm_NLD) +
tm_raster() +
tm_shape(NLD_muni) +
tm_polygons("population", convert2density=TRUE, style="kmeans", alpha=.7, palette="Purples")
答案 2 :(得分:0)
为了使用read_osm
在tmap中生成静态基本地图,x
参数对象必须位于WGS84投影中(EPSG 4326)。
library(tmap)
library(tmaptools)
library(tidyverse)
tmap_mode("plot")
data(NLD_muni)
# This does not work:
NLD_bm <- tmaptools::read_osm(NLD_muni, type = "esri")
# The problem is that NLD_muni is in the projected coordinate system for Netherlands,
# but read_osm wants WGS84
sf::st_crs(NLD_muni) # check the coordinate reference system
# This does work
NLD_bm <- NLD_muni %>%
sf::st_transform(., crs = 4326) %>% # transform NLD_muni to WGS84 projection
sf::st_bbox(.) %>% # extract bounding box of transformed layer
tmaptools::read_osm(., type = "esri") # pass bounding box to read_osm
# Now you can map them
tm_shape(NLD_bm) + tm_rgb() + tm_shape(NLD_muni) + tm_borders(col = "red")