2017-09-20 56 views
1

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)) 

Picture of the map created in ggplot

私は、マップに道路を追加したいと思います。私は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パッケージより良い解決策はありますか?

答えて

0

あなたがSpatialLinesDataFramefortify、その後ggplot

fortify(hw_lines) %>% 
    ggplot(aes(x = long, y = lat, group = group)) + 
    geom_path() 

group美的が一緒に一つの長い行にすべての道路に参加するggplotを停止することをプロットすることができます。

+0

ありがとう、リチャード。完全に正常に動作します。 – Aud

関連する問題