将点转换为R中的网格

convert point to a grid in R

我有经纬度

locs <- structure(list(Latitude = 0.176094639, Longitude = 117.4955225), row.names = 1L, class = "data.frame")

我想将其转换为尺寸为 5 公里 X 5 公里的正方形多边形网格并保存 shapefile。我似乎无法在 R 中找到一个函数来执行此操作,想知道是否有人做过 类似的工作?

假设您提供的点是您想要的网格中心,

  • 使点成为 sf 对象
  • 缓冲2.5公里
  • 获取缓冲区的边界框
  • 制作一个网格(下面使用 10x10)
  • 写入 shapefile(注释掉)
library(sf)
library(tidyverse) # pipe & plotting

locs <- structure(list(Latitude = 0.176094639, Longitude = 117.4955225), row.names = 1L, class = "data.frame")

# Make the point an sf object
locs_sf <- locs %>%
  st_as_sf(coords = c('Longitude', 'Latitude')) %>% 
  st_set_crs(4326)

# get the bounding box of a 2500m buffered circle around the point
box <- st_buffer(locs_sf, 2500) %>%
  st_bbox() %>%
  st_as_sfc()

# make a 10x10 grid of the bounding box
grid <- st_make_grid(box, n = c(10,10))

# Use st_write() to write your shapefile
#st_write(grid, '/path/to/file.shp')

ggplot() +
  geom_sf(data = locs_sf, color = 'red', size = 5) + 
  geom_sf(data = grid, fill = NA, color = 'black')

reprex package (v2.0.1)

于 2022-03-24 创建