美文网首页数据科学与R语言R语言与统计分析R
R-NC格式数据转GeoTIFF及GeoTIFF转NC

R-NC格式数据转GeoTIFF及GeoTIFF转NC

作者: TroyShen | 来源:发表于2019-12-04 16:20 被阅读0次

    0. 问题导入

    目前,很多地理数据均存储为NetCDF格式(下简称NC格式),而往往内含多变量,不方便处理。其中,一种解决思路就是将NC格式文件中的多个变量数据转格式为单变量的GeoTiff文件(图1),进而进一步处理。


    图1 技术路线

    1. 示例数据

    示例数据格式为NC格式数据,内含7个变量。

    ncfile = ncdf4::nc_open('L:\\JianShu\\2019-12-4\\data\\clmforc.Qian.c2006.T62.Solr.1972-01.nc')
    names(ncfile$var)
    [1] "EDGEE"  "EDGEN"  "EDGES"  "EDGEW"  "FSDS"   "LATIXY" "LONGXY"
    
    

    2. 将NC文件中的FSDS变量导入为raster

    input_nc = 'L:\\JianShu\\2019-12-4\\data\\clmforc.Qian.c2006.T62.Solr.1972-01.nc'
    varname = 'FSDS'
    nc2raster = raster(input_nc, varname = varname)
    

    3. 数据可视化检查(图2)

    png("L:\\JianShu\\2019-12-4\\plot1.png",
         height = 15,
         width = 20,
         units = "cm",
         res = 1000)
    print(levelplot(nc2raster))
    dev.off()
    
    图2 结果可视化检查

    4. 结果写入GeoTiff文件

    重点来啦,最重要的是要保证writeRaster 函数中的 overwrite 选项设置为 TRUE ,否则二次读取再存储系统会报错!

    Error in .getGDALtransient(x, filename = filename, options = options,  : 
      filename exists; use overwrite=TRUEError in .getGDALtransient(x, filename = filename, options = options,  : 
      filename exists; use overwrite=TRUE
    

    因此

    output = 'L:\\JianShu\\2019-12-4\\FSDS.tif'
    writeRaster(nc2raster, output, format = 'GTiff', overwrite = TRUE)
    

    如果需要将Tiff转为NC文件,需要用raster/stack 函数读入栅格数据后,再用以下函数输出为NC数据:

    intif = stack(output)
    output_nc = 'L:\\JianShu\\2019-12-4\\FSDS.nc'
    writeRaster(intif, output_nc, format = 'CDF',overwrite = TRUE)
    

    5. 解决本示例问题所采用的R-packages

    library(raster)
    library(ncdf4)
    library(rasterVis)
    library(lattice)
    

    6. 写在最后

    大家平时在用R处理数据过程中有遇到什么问题,我们可以一起讨论鸭~

    觉得本文对你有帮助的还麻烦您点个赞,或是评论有用,大家的支持是我持续更新的不竭动力!

    相关文章

      网友评论

        本文标题:R-NC格式数据转GeoTIFF及GeoTIFF转NC

        本文链接:https://www.haomeiwen.com/subject/kmakgctx.html