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. Благодарю.

0 ответов

Другие вопросы по тегам