我正在使用
library(tmap)
qtm("London")
要获取伦敦地图,但找不到找到形状的方法?
tm_shape
否则,我只能在查看模式下使用它,而不能在绘图模式下使用
。答案 0 :(得分:0)
是的,这是正确的。您必须执行另一种方法才能在tmap_mode("plot")
中获得地图图层。
在tmap_mode("view")
中,您可以这样做:
tm_shape(lnd) + tm_polygons(alpha = 0.7, col = "Pop_2001", legend.show = FALSE) +
tm_basemap(server = c('OpenStreetMap'))
不必使用tm_basemap(server = c('OpenStreetMap'))
,但无论如何我都已说明,因为在这里您可以更改底图,例如更改为stamen
。
对于tmap_mode("plot")
,您必须手动下载磁贴。有几种方法可以做到这一点。
1。。tmaptools
软件包提供了执行该功能的功能read_osm()
。要获取图块,请执行lonmap <- bb("London") %>% read_osm(type = "osm")
,它会返回一个栅格对象。
2。。另一种替代方法是使用openmap()
软件包中的OpenStreetMap
,如下所示:
london <- bb("London")
lonmap <- openmap(upperLeft = london[3:4],
lowerRight = london[1:2],
type = "osm",
mergeTiles = TRUE)
3。。当然,get_map()
软件包中有ggmap
,您现在需要一个API密钥。但是,这不能直接放入tm_shape()
中。
但是老实说read_osm()
和openmap()
都给我错误
java.lang.NullPointerException
我无法找到解决方案。
4。。因此,我什至使用另一个:getTiles()
软件包中的cartography
函数。 getTiles
仅接受sf
或sp
对象,并返回RasterBrick
对象
library(tmap)
library(cartography)
lonmap <- getTiles(x = lnd, type = "osm")
tmap_mode("plot")
tm_shape(lonmap) + tm_rgb() + tm_shape(lnd) +
tm_polygons(alpha = 0.5,col = "Pop_2001", legend.show = FALSE)
哪个给你的?
能够使用边界框的解决方法是:
lonmap <- bb("London") %>%
matrix(ncol = 2, byrow = TRUE) %>%
SpatialPoints(proj4string = CRS("+init=epsg:4326")) %>%
getTiles(type = "osm")
lnd
是SpatialPolygonsDataFrame
。没关系的内容。您可以从这里获取:
https://github.com/Robinlovelace/Creating-maps-in-R/blob/master/data/london_sport.shp