R - Добавить шейп-файл Tigris SF в ggmap
Я пытаюсь добавить shapefiles
на вершине ggmap
объект. В частности, я хотел бы использовать Simple Feature
(СФ) shapefiles
скачать с R
пакет Tigris
, Я пытался наложить их на Stamen
и Google Maps из ggmap
,
Используемые пакеты:
library(tigris)
library(tidyverse)
library(ggmap)
library(sf)
Первая загрузка shapefiles
из Tigris
пакет. Я использую формы округов для штатов Техас. Я специально загружаю их как объект SF (в отличие от объекта SP).
shp_tx <- tigris::counties(cb = TRUE,
resolution = "20m",
year = 2018,
class = 'sf',
state = 'TX')
Затем я вычисляю ограничивающий прямоугольник из этого объекта, который используется для загрузки stamen ggmap
,
my_bbox <- sf::st_bbox(shp_tx) %>% as.numeric()
my_map <- ggmap::get_stamenmap(bbox = my_bbox,
maptype = 'toner-lite',
zoom = 5)
Теперь, когда я пытаюсь наложить округа shapefile
на ggmap
границы не выровнены должным образом.
ggmap(my_map) +
geom_sf(data = shp_tx,
aes(geometry = geometry),
col = 'blue',
fill = 'lightblue',
alpha = 0.25,
inherit.aes = FALSE)
Я понимаю, что мне нужно перепроектировать shp_tx
(SF) объект в CRS
соответствовать my_map (ggmap
) объект.
Я пробовал несколько прогнозов, основанных на онлайн-сообщениях, но ни один из них не работает должным образом. Вот те, которые я попробовал:
shp_tx2 <- sf::st_transform(shp_tx,
crs = 3857)
ggmap(my_map) +
geom_sf(data = shp_tx2,
aes(geometry = geometry),
col = 'blue',
fill = 'lightblue',
alpha = 0.25,
inherit.aes = FALSE)
А также
shp_tx3 <- sf::st_transform(shp_tx,
crs = 4326)
ggmap(my_map) +
geom_sf(data = shp_tx2,
aes(geometry = geometry),
col = 'blue',
fill = 'lightblue',
alpha = 0.25,
inherit.aes = FALSE)
Я не уверен, что это преобразование будет таким же, используя Stamen Map
или Google Map, но я пробовал оба, и у меня были похожие проблемы. Я надеюсь, что решение так же просто, как преобразование в правильный CRS. Благодарю.