代码之家  ›  专栏  ›  技术社区  ›  ClimateUnboxed

r如何使用砖从规则的tif中获得纬度矢量

  •  1
  • ClimateUnboxed  · 技术社区  · 8 年前

    我有一个tif文件,我用brick读取。我可以看到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

    1 回复  |  直到 8 年前
        1
  •  1
  •   Val Srinivas    8 年前
    ext<-范围(b)
    
    lon<-seq(ext@xmin,ext@xmax,res(b)[1])
    
    

    所以基本上你要创建一个序列向量,从x/y最小到最大,间隔为砖块的分辨率。

    仅作说明:

    X<-光栅(分辨率=C(40,40)) 绘图(X) col='red',pch='*',cex=5,add=t)

    所以上面的方法给出了红色星号表示的纬度。如果您需要蓝色的,可以使用xyfromcellwhich返回光栅单元的坐标。

    # 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)
    

    enter image description here

    xyFromCell 它返回光栅单元的坐标。