R-NC格式數(shù)據(jù)轉GeoTIFF及GeoTIFF轉NC

0. 問題導入

目前,很多地理數(shù)據(jù)均存儲為NetCDF格式(下簡稱NC格式),而往往內含多變量,不方便處理。其中,一種解決思路就是將NC格式文件中的多個變量數(shù)據(jù)轉格式為單變量的GeoTiff文件(圖1),進而進一步處理。


圖1 技術路線

1. 示例數(shù)據(jù)

示例數(shù)據(jù)格式為NC格式數(shù)據(jù),內含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. 數(shù)據(jù)可視化檢查(圖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 函數(shù)中的 overwrite 選項設置為 TRUE ,否則二次讀取再存儲系統(tǒng)會報錯!

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 函數(shù)讀入柵格數(shù)據(jù)后,再用以下函數(shù)輸出為NC數(shù)據(jù):

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處理數(shù)據(jù)過程中有遇到什么問題,我們可以一起討論鴨~

覺得本文對你有幫助的還麻煩您點個贊,或是評論有用,大家的支持是我持續(xù)更新的不竭動力!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容