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

如何在R语言中获取栅格图像中心像素的经纬度?

提取栅格图像中心像素的经纬度(含非正方形栅格处理)

没问题,我来帮你搞定这个需求——不管栅格是严格正方形还是矩形,都能快速获取近似中心像素的经纬度。结合你提供的可复现代码,具体步骤如下:

步骤1:加载示例栅格数据

先运行你给出的代码创建测试栅格:

library(raster)
# 创建测试栅格
r = raster(ncol=25, nrow=25, xmn=-1000, xmx=1000, ymn=-100, ymx=900, vals = 1:(25*25))
# 设置CRS为WGS84(与raster()默认一致)
crs(r) = crs(raster())

步骤2:计算近似中心像素的行列索引

不管栅格的行数/列数是奇数还是偶数,我们用round()来取最接近中心的位置:

# 获取栅格的总行数和总列数
total_rows <- nrow(r)
total_cols <- ncol(r)

# 计算近似中心的行、列索引
center_row <- round(total_rows / 2)
center_col <- round(total_cols / 2)

比如你的25x25栅格,这里会得到center_row=13、center_col=13,正好是正中心像素;如果是24x30的矩形栅格,会得到12行15列,也就是最接近中心的像素。

步骤3:提取中心像素的经纬度

通过单元格编号转换坐标,直接拿到经纬度值:

# 获取中心像素的单元格编号
center_cell <- cellFromRowCol(r, center_row, center_col)

# 提取该单元格的中心经纬度(spatial=FALSE返回普通数据框)
center_lonlat <- xyFromCell(r, center_cell, spatial = FALSE)

# 命名结果更清晰
colnames(center_lonlat) <- c("Longitude", "Latitude")

# 查看结果
print(center_lonlat)

运行后你会得到对应测试栅格的输出:

Longitude Latitude
[1,]         0      400

这个数值对应你设置的栅格范围中心,因为CRS为WGS84,所以这就是对应的经度和纬度。如果你的实际栅格是真实经纬度范围或其他投影,这个方法同样适用——xyFromCell()会自动根据栅格的CRS返回正确坐标。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 14:44:06