ggplotコード(コードの簡略化バージョン)を使用して、中国の調査サイトのラスタオブジェクト(ワールドクリームからの標高データ)から標高マップを作成しました。関連するラスタオブジェクトはworldclim.orgからダウンロードされ、ラスタパッケージを使用してdata.frameに変換されます。このプロットに使用されるデータには、linkがあります。明確にするためにggplotマップ上のosmarオブジェクトから道路をプロットする
# load library
library("tidyverse")
load(file = "gongga.RData")
ggplot() +
geom_raster(data = gongga, aes(x=x, y=y, fill = elev)) +
coord_equal() +
scale_fill_gradient(name = "Elevation", low = "grey0", high = "grey100") +
scale_x_continuous(expand = c(0,0)) +
scale_y_continuous(expand = c(0,0)) +
theme(aspect.ratio=1/1, text = element_text(size=15))
私は、マップに道路を追加したいと思います。私はOpenstreetmapから道路を抽出するosmarパッケージに出くわしました。
hereのコードを使用して、私は右側のセクションの道路を抽出しますが、私はそれらを既存のggplotにプロットする方法はわかりません。
# EXTRACT ROADS FROM OPENSTREETMAP AND PLOT THEM WITH RANDOM POINTS
# Load libraries
library('osmar')
library('geosphere')
# Define the spatial extend of the OSM data we want to retrieve
moxi.box <- center_bbox(center_lon = 102.025, center_lat = 29.875,
width = 10000, height = 10000)
# Download all osm data inside this area
api <- osmsource_api()
moxi <- get_osm(moxi.box, source = api)
# Find highways
ways <- find(moxi, way(tags(k == "highway")))
ways <- find_down(moxi, way(ways))
ways <- subset(moxi, ids = ways)
# SpatialLinesDataFrame object
hw_lines <- as_sp(ways, "lines")
# Plot points
plot(hw_lines, xlab = "Lon", ylab = "Lat")
box()
オブジェクトにggplotをプロットするための変換は必要ですか? または私の目的のためのosmarパッケージより良い解決策はありますか?
ありがとう、リチャード。完全に正常に動作します。 – Aud