如何在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
相关产品推荐
相关产品推荐

