Я хочу построить карту, используя данные OSM. Необходимые данные можно легко загрузить с помощью пакета osmdata
-R. К сожалению, для моего региона не все данные доступны в OSM. Поэтому я скачал шейп-файл Региона с административными границами, в которых я заинтересован. Моя проблема в том, что я не могу отобразить информацию шейп-файла вместе с информацией OSM на одном графике.
Мой рабочий процесс:
library(raster)
library(rgdal)
library(tidyverse)
library(broom)
library(rgeos)
library(osmdata)
library(sf)
# Download shapefile from Leipzig with "Ortteile" (engl. urban districts)
https://gruenlink.de/1py4
# import Ortsteile Leipzigs
lpz_ot <- readOGR("ot.shp")
names(lpz_ot)
# convert spatial object to a ggplot ready data frame
lpz_ot_df <- tidy(lpz_ot,OT = "id")
# make sure the shapefile attribute table has an id column
lpz_ot$id <- rownames(lpz_ot@data)
# join the attribute table from the spatial object to the new data frame
lpz_ot_df <- lpz_ot_df %>%
left_join(lpz_ot@data,by = "id")
# check names
names(lpz_ot_df)
# Download interessting OSM Data (e.g. railways and tramlines)
#bounding box Leipzig
lpz_box <- opq(bbox = 'Leipzig')
# Plygon for Leipzig
lpz_poly <- getbb(place_name = c("Leipzig"),format_out = "polygon")
# railways and tramlines in Leipzig (in bounding box)
sv <- lpz_box%>%
add_osm_feature(key = "railway", value = c("tram","rail")) %>%
osmdata_sf()
# railways and tramlines in Leipzig (within administrative boundaries of Leipzig)
svt <- trim_osmdata (sv,lpz_poly,exclude =TRUE)
Я легко могу построить файл формы или osmdata с помощью ggplot. Но я не могу построить оба в одном сюжете. В чем моя ошибка в повторной оценке?
Код моего графика:
ggplot() +
geom_path(data = lpz_ot_df, aes(x = long, y = lat, group = group,color="black"))+
geom_sf(data = svt$osm_lines, aes(color = railway),size=1.3) +
theme_void() +
guides(color = FALSE)+
labs(title ="Urban districts in Leipzigs (with railwaynet)")
Чтобы проверить это, просто закомментируйте geom_path()
или geom_sf()
строки.
I думаю, это как-то связано с координатами, но я не знаю, как назначить правильные координаты.
Спасибо за любую помощь!