我正试图弄清楚如何使用sf
和ggplot2
从openstreetmaps重新绘制矢量数据。我知道我可以使用ggmap
获得光栅背景,但我希望通过直接使用底层矢量数据来获得更高质量的绘图。
以下是一些让我了解网站数据的代码。
map <- get_map(location = bb, maptype = "toner", source = "stamen", zoom = 15)
ggmap(map)
这会产生:
当然,我想使用矢量图形获得相同的结果。这是一个Overpass查询,它从上面的同一个边界框中选择数据。
[out:xml][timeout:60];
(
node(38.0151865284475, -121.872227331133, 38.0340023660995, 121.829405993985);
<;
>;
);
out body;
将其插入overpass API似乎突出显示了大量数据,但是当我在R中绘图时,我看到了一些奇怪的东西。
library(osmdata)
q <- "[out:xml][timeout:60];\n (\n node(38.0151865284475, -121.872227331133, 38.0340023660995, -121.829405993985);\n <;\n >;\n );\n out body;\n "
r <- osmdata_sf(q)
plot(r[["osm_multipolygons"]]["osm_id"])
我的目标是绘制一些看起来很像原始的openstreetmap绘图视图,但其中只包括铁路,街道,水体,建筑物和湿地。所以,我需要弄清楚如何下载包含在其中或触及边界框的所有内容。也许节点本身无法获取此信息?我可以实际执行我想要的osmdata
,还是应该采用不同的方法?