在地图上的一个点周围绘制缓冲区 - R SF

Ploting a Buffer Around a Point on a Map - R SF

我一直在尝试围绕地图上的某个点绘制缓冲区,但是当我这样做时,缓冲区并没有像这样出现在正确的位置。

Faulty R Map

正确的位置是在加利福尼亚州。

这是我的代码:

library(tigris)
library(sf)
library(tidyverse)

projection <- 102003

options(tigris_use_cache =  TRUE)
county_polys <- counties(class = 'sf') %>%
  filter(STATEFP %in% c('06','41','53','04','16','32','49')) %>%
  st_transform(projection)

  centroids <- county_polys %>%
  as_tibble %>% select(INTPTLON,INTPTLAT) %>%
  mutate(
    INTPTLON = as.double(INTPTLON),
    INTPTLAT = as.double(INTPTLAT)) %>%
  st_as_sf(coords = c('INTPTLON','INTPTLAT'), crs = projection)

 pt <- centroids[2,] 
 pt_buffer <- st_buffer(pt,150000) 


 ggplot() + geom_sf(data = county_polys) + geom_sf(data = pt_buffer,color = 'red')

我们可以使用st_centroid函数获取质心,避免出错。不需要将 sf 对象转换为其他 类.

# This is the only thing I changed from your original code
# Get the centroid by st_centroid
centroids <- county_polys %>% st_centroid()

pt <- centroids[2,] 
pt_buffer <- st_buffer(pt,150000) 

ggplot() + geom_sf(data = county_polys) + geom_sf(data = pt_buffer,color = 'red')