我有一个使用Brick读取的tif文件。我可以看到tif文件的空间扩展:
b<-brick("t.tif")
b
class : RasterBrick
dimensions : 10, 10, 100, 1 (nrow, ncol, ncell, nlayers)
resolution : 0.0001851853, 0.0001851854 (x, y)
extent : -18.61944, -18.61759, 37.83856, 37.84041 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
data source : /scratch/tompkins/water_allafrica/t.tif
names : t
min values : 0
max values : 255
extent(SpatialPoints(b))
class : Extent
xmin : -18.61935
xmax : -18.61769
ymin : 37.83865
ymax : 37.84031
但是我想不出如何轻松获取经度和纬度向量,因此我需要定义要写出的netcdf文件头。我可以手动完成,但我想有一个易于使用的内置函数。
示例输入文件在这里:http://clima-dods.ictp.it/Users/tompkins/stackoverflow/t.tif
答案 0 :(得分:1)
这可能是您需要的:
ext <- extent(b)
lat <- seq(ext@ymin,ext@ymax,res(b)[2])
lon <- seq(ext@xmin,ext@xmax,res(b)[1])
因此,基本上,您正在创建一个从x / y min到max的序列向量,且间隔为砖块的分辨率。
这些值指的是单元格的角坐标...您也可能对单元格中心感兴趣。
仅供说明:
# create testraster
x <- raster(resolution=c(40,40))
x[]<- 1:ncell(x)
# plot
plot(x)
# add corner coordinates
plot(SpatialPoints(cbind(rep(extent(x)@xmin,10),seq(extent(x)@ymin,extent(x)@ymax,res(x)[2])),proj4string = crs(x)),
col='red',pch='*',cex=5,add=T)
# add cell centers
plot(SpatialPoints(xyFromCell(x,cellFromRowCol(x,1:nrow(x),1)),proj4string = crs(x)),
col='blue',pch='*',cex=5,add=T)
因此,上述方法为您提供了由红色星号表示的纬度。如果需要蓝色的,可以使用xyFromCell
来返回栅格像元的坐标。