NetCDF(nc)数据读取与格式转换
NetCDF(network Common Data Form)网络通用数据格式是由美国大学大气研究协会(University Corporation for Atmospheric Research,UCAR)的 Unidata 项目科学家针对科学数据的特点开发的,是一种面向数组型并适于网络共享的数据的描述和编码标准。目前,NetCDF广泛应用于大气科学、水文、海洋学、环境模拟、地球物理等诸多领域。用户可以借助多种方式方便地管理和操作 NetCDF 数据集。
在这里以CRU TS Version 4.04数据为例,介绍一下nc数据格式读取与转换TIFF等相关内容。
1 GIS里面读取nc数据
ArcGIS数据读取与转换
ArcGIS中可以使用Multidimension Tools-Make NetCDF Raster Layer将nc文件转化为一个栅格图层。
Make NetCDF Raster Layer
打开转换后的栅格图层属性,查看NetCDF选项卡,查看维度值,可以看到当前显示的数据时间。
查看nc栅格属性
在图层上右击,数据(Data),导出数据(Export Data),即可将数据导出为TIFF格式
数据导出TIFF
但是NetCDF数据往往有很多个时间,这样只能导出一个时间的数据。在ArcGIS中使用Modelbuilder可以将NetCDF数据转化为多波段的TIFF数据,使用的工具如下(在这里没有设置参数,按照你的目录调整参数即可):
关于Model Builder的使用请参阅文末相关文章阅读
nc转多波段TIFF
上面Model Builder导出的数据将所有的时间写入了一个TIF,同时时间信息丢失了,没有具体的显示,也不太方便。
QGIS查看nc数据
QGIS原生支持nc数据,直接将nc数据拖入QGIS即可打开。颜色可以从图层属性,符号化选项卡进行修改
QGIS符号化调整
波段1时间是36905,时间起始是1900-1-1,可以在EXCEL里面进行一下计算,查看可得波段1时间为2001年1月
EXCEL计算时间
在QGIS中也可以通过另存为的方式将nc转为TIFF文件。
2 R语言处理nc数据
这里最推荐的就是R语言啦,编程简单,效果好!
ncdf4包是最常用的读取nc文件的R包,这里就不多说了,我这次主要是想把CRU TS时间序列nc数据转为单幅的TIFF文件,这样就能够用下面文章2里面的代码进行计算处理了。
三句话,nc转tiff完成!
library(raster)
tmpbr
writeRaster(tmpbr, filename = tmpbr@data@names, bylayer=T, format="GTiff")
转换后以时间命名的TIFF文件
剩下的就可以用下面文章2中的方法计算和可视化了!
相关文章与参考文献:
https://pjbartlein.github.io/REarthSysSci/raster_intro.html