使用示例数据时,tmaptools软件包中的参数错误读取了osm

时间:2019-08-08 08:26:53

标签: r tmap

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")并创建交互式绘图,但理想情况下可以制作静态绘图。

3 个答案:

答案 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")

enter image description here

答案 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")