在WebGIS的开发过程中,有些时候会不可避免地接触到NetCDF格式的数据。NetCDF(network Common Data Form)格式的数据把对某一研究对象的多维信息归类在一起,它可以在任意一台操作系统进行创建、使用和分享。目前netCDF已经广泛用于地球物理、气象科学等领域。
NetCDF的文件后缀名为.nc,下面以某个nc文件为例,通过Java读取netCDF数据。该件为世界高程数据。
第一步:从网上下载读取netCDF的Jar包,下载路径如下:
第二步:在Eclipse/MyEclipse开发平台下引用刚刚下载的jar包,具体操作过程详见其他博客。
第三步:新建一个Java在该类中新建一个名为read()的方法,该方法不传递任何参数。
第四步:在read()方法里面编写以下代码,该代码用来从本地读取netCDF文件。
NetcdfFile openNC = NetcdfFile.open("C:\\FAKEDATA.nc");
第五步:接着编写以下代码,用来读取维度信息。
List<Dimension> dimensions = openNC.getDimensions();
这里的netCDF文件是包含有经度(lon)、纬度(lat)的数值,其文件格式为[lat = 2000;, lon = 4000;]
第六步:接着编写以下代码,用来读取各个变量。
List<Variable> variables = openNC.getVariables();
在调试的过程中,variables会出现以下信息,这里交代了高程信息、X值和Y值和维度信息。其中,elevation是二维变量,lat、lon是一维变量:
[short elevation(lat=2000, lon=4000);
:standard_name = "height_above_reference_ellipsoid";
:long_name = "Elevation relative to sea level";
:units = "m";
, double lat(lat=2000);
:standard_name = "latitude";
:long_name = "latitude";
:units = "degrees_north";
:axis = "Y";
, double lon(lon=4000);
:standard_name = "longitude";
:long_name = "longitude";
:units = "degrees_east";
:axis = "X";
]
第七步:根据变量名称获取变量信息,然后用户可以设定范围进行局部读取。