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

时间:2017-11-16 22:26:28

标签: 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')

1 个答案:

答案 0 :(得分:1)

我们可以使用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')

enter image description here