NetCDF
简介
NetCDF(Network Common Data Form)是一种自描述、与机器无关、基于数组的科学数据格式,同时也是支持创建、访问和共享这一数据格式的函数库。
此格式是由美国大气科学研究大学联盟(UCAR) 针对科学是数据的特点进行开发的,常见的文件后缀名为 .nc
。
此种数据格式以已经广泛的应用于大气科学、水文、海洋学、环境模拟、地球物理等诸多领域。
读取方式
Java
可以使用 Maven 或 Gradle 来引入依赖包:
1 2 3 4 5 6 7 <repositories > <repository > <id > unidata-all</id > <name > Unidata All</name > <url > https://artifacts.unidata.ucar.edu/repository/unidata-all/</url > </repository > </repositories >
1 2 3 4 5 6 7 8 <dependencies > <dependency > <groupId > edu.ucar</groupId > <artifactId > cdm-core</artifactId > <version > ${netcdfJavaVersion}</version > <scope > compile</scope > </dependency > </dependencies >
1 2 3 4 5 6 7 8 repositories { maven { url "https://artifacts.unidata.ucar.edu/repository/unidata-all/" } } dependencies { implementation 'edu.ucar:netcdfAll:5.4.1' }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 import ucar.ma2.Array;import ucar.nc2.NetcdfFile;import ucar.nc2.NetcdfFiles;import ucar.nc2.Variable;import ucar.nc2.write.Ncdump;import java.io.IOException;public class SimpleRead { private static final String PATH = "<path>" ; public static void main (String[] args) throws IOException { try (NetcdfFile ncfile = NetcdfFiles.open(PATH)) { Variable v = ncfile.findVariable("<xxx>" ); if (v == null ) { return ; } Array data = v.read(); String arrayStr = Ncdump.printArray(data, "<xxx>" , null ); System.out.println(arrayStr); } catch (IOException ioe) { System.out.println(ioe.getMessage()); } } }
Python
1 2 3 4 5 6 7 8 9 10 11 12 import netCDF4from netCDF4 import Dataset nc_obj=Dataset('20200809_prof.nc' )print (nc_obj.variables.keys())print (nc_obj.variables['<xxx>' ])print (nc_obj.variables['<xxx>' ].ncattrs()) arr_xxx=(nc_obj.variables['<xxx>' ][:])
参考资料
维基百科-NetCDF
netCDF-Java
netCDF4-Python