如何在R中获得光栅图像中心像素的纵横比?

如何在R中获得光栅图像中心像素的纵横比?,r,raster,r-raster,R,Raster,R Raster,我想提取位于光栅图像中心的像素的纬度和经度信息。如果光栅图像不是完全正方形(例如,它不是50x50),我希望获得大约中心像素的lat/long。以下是一些可复制的数据: library(raster) r = raster(ncol=25, nrow=25, xmn=-1000, xmx=1000, ymn=-100, ymx=900, vals = 1:(25*25)) crs(r) = crs(raster()) 基于您的代码和我上面的评论,下面是一个示例。显然,对于不规则形状的光栅,这对

我想提取位于光栅图像中心的像素的纬度和经度信息。如果光栅图像不是完全正方形(例如,它不是50x50),我希望获得大约中心像素的lat/long。以下是一些可复制的数据:

library(raster)
r = raster(ncol=25, nrow=25, xmn=-1000, xmx=1000, ymn=-100, ymx=900, vals = 1:(25*25))
crs(r) = crs(raster())

基于您的代码和我上面的评论,下面是一个示例。显然,对于不规则形状的光栅,这对您的情况没有帮助

library(raster)
library(sf)
r = raster(ncol=25, nrow=25, xmn=-1000, xmx=1000, ymn=-100, ymx=900, vals = 1:(25*25))
crs(r) = crs(raster())

#convert extent of raster to poly
poly<-st_as_sfc(st_bbox(raster(r))) 
class(poly)
plot(r)
plot(st_geometry(poly), border="red", add=TRUE)

#get centroid
cent<-st_centroid(poly)
plot(st_geometry(cent), add=TRUE)
库(光栅)
图书馆(sf)
r=光栅(ncol=25,nrow=25,xmn=-1000,xmx=1000,ymn=-100,ymx=900,VAL=1:(25*25))
crs(r)=crs(光栅())
#将光栅范围转换为多边形

poly基于您的代码和我上面的评论,下面是一个示例。显然,对于不规则形状的光栅,这对您的情况没有帮助

library(raster)
library(sf)
r = raster(ncol=25, nrow=25, xmn=-1000, xmx=1000, ymn=-100, ymx=900, vals = 1:(25*25))
crs(r) = crs(raster())

#convert extent of raster to poly
poly<-st_as_sfc(st_bbox(raster(r))) 
class(poly)
plot(r)
plot(st_geometry(poly), border="red", add=TRUE)

#get centroid
cent<-st_centroid(poly)
plot(st_geometry(cent), add=TRUE)
库(光栅)
图书馆(sf)
r=光栅(ncol=25,nrow=25,xmn=-1000,xmx=1000,ymn=-100,ymx=900,VAL=1:(25*25))
crs(r)=crs(光栅())
#将光栅范围转换为多边形

poly这里是一种获取中央网格单元中心的方法

library(raster)
r <- raster(ncol=25, nrow=25, xmn=-1000, xmx=1000, ymn=-100, ymx=900)

row <- trunc(nrow(r)/2)
col <- trunc(ncol(r)/2)
c(row, col)
#[1] 12 12
cell <- cellFromRowCol(r, row, col)
cell
#[1] 287
xyFromCell(r, cell)
#       x   y
#[1,] -80 440
库(光栅)

r这是一种获得中央网格单元中心的方法

library(raster)
r <- raster(ncol=25, nrow=25, xmn=-1000, xmx=1000, ymn=-100, ymx=900)

row <- trunc(nrow(r)/2)
col <- trunc(ncol(r)/2)
c(row, col)
#[1] 12 12
cell <- cellFromRowCol(r, row, col)
cell
#[1] 287
xyFromCell(r, cell)
#       x   y
#[1,] -80 440
库(光栅)

r如果需要光栅的中心,可以将范围转换为多边形,然后取质心。这可能不会为您提供中心像素的质心,但如果给定光栅中的像素数为偶数,则这可能是可行的。如果需要光栅的中心,可以将范围转换为多边形,然后获取质心。这可能不会为您提供中心像素的质心,但如果给定光栅中的像素数为偶数,则这是可能的。当光栅图像尺寸为偶数时,这是一种很好的方法。如果光栅图像是,比如说
21x50
或类似的东西,您将如何处理该问题?当光栅图像尺寸为偶数时,这是一种很好的方法。如果光栅图像是,比如说
21x50
或类似的东西,您将如何解决这个问题?很好的解决方法!请您也展示一下您将如何获取lat/long信息?我不理解这个问题。以上使用lon/lat(即使x和y提及)的方法很棒!请您也展示一下您将如何获取lat/long信息?我不理解这个问题。以上使用lon/lat(即使x和y提及)