You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中将空间点转换为30×30m栅格单元中心点的实现咨询

空间点匹配对应栅格中心点实现方案(R语言)

以下实现基于你提供的示例代码扩展,可直接复用:

library(raster)
library(plyr)
library(ggplot2)
library(viridis)

setwd("C:/Users/chris/Desktop/Regionaler Klimawandel und Gesundheit/Urban COPD/R/Data/")
getwd()

set.seed(55)

# 1. 创建示例栅格(如果已有现成栅格可直接读取,跳过这部分创建逻辑)
r <- raster(xmn= 800000, 
            xmx= 810000,
            ymn= 7200000,
            ymx= 7210000)
# 设置栅格分辨率,可根据实际需求调整,单位和坐标系统一
res(r) <- 100

# 2. 生成示例点(你替换成自己的点数据集即可)
p <- as(r@extent, 'SpatialPolygons')
pts <- spsample(p, n = 100, "random")
pts$value <- runif(100, min=0, max=10)
df <- as.data.frame(pts)

# -------------------核心实现逻辑-------------------
# 3. 匹配每个点对应的栅格单元编号
cell_ids <- cellFromXY(r, pts)
# 4. 获取每个栅格单元的中心点,spatial=TRUE直接返回空间点格式
cell_centers <- xyFromCell(r, cell_ids, spatial = TRUE)
# 5. 挂载原始点的所有属性字段,避免信息丢失
cell_centers <- cbind(cell_centers, pts@data)

# 可转为数据框方便后续分析
center_df <- as.data.frame(cell_centers)
# ---------------------------------------------------

# 可视化验证
ggplot() +
  geom_point(data = df, aes(x, y), shape = 1, color = "gray70", size = 3) +
  geom_point(data = center_df, aes(x, y, fill = value), shape = 21, size = 2) +
  scale_fill_viridis() +
  theme_minimal()

关键说明

  • 如果你已有现成栅格,直接用r <- raster("你的栅格文件路径")读取即可,会自动继承原始栅格的范围、分辨率、坐标系信息,不需要手动设置
  • 输出的cell_centers就是标准空间点格式,坐标系和输入栅格、输入点完全一致
  • 若需要用sf格式处理,可通过st_as_sf(cell_centers)直接转换

你提供的示例原始点可视化效果如下:
栅格内示例点示意图

内容的提问来源于stack exchange,提问作者ChrissiLissi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:06:05