0

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

错误的 R 地图

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

这是我的代码:

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')
4

1 回答 1

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')

在此处输入图像描述

于 2017-11-16T22:40:31.660 回答