NetCDF(network Common Data Form)网络通用数据格式是由美国大学大气研究协会(University Corporation for Atmospheric Research,UCAR)的Unidata项目科学家针对科学数据的特点开发的,是一种面向数组型并适于网络共享的数据的描述和编码标准。
特点:NetCDF文件是自描述的二进制数据格式,即自带描述属性信息。通常包含了变量、维度和属性,变量包含了维度、属性(如数据单位)信息及变量的值。维度部分记录的是每个变量的维度名及长度。属性部分包含了一些额外信息,比如文件创建者等。
很多工具都可以处理NetCDF文件,比如MATLAB,Python,Java,NCL,GrADS,CDO,NCO,Panoply,ArcMap等等。NetCDF文件数据下载 地址
这里主要讲一下如何利用D3在前端处理NetCDF文件进行可视化分析。
核心代码如下:
//读取netCDF文件数据 var oReq = new XMLHttpRequest(); oReq.open("GET",urlpath, true); oReq. responseType = "blob"; oReq.onload = function(oEvent) { var blob = oReq. response; reader_ url = new FileReader(); reader_ url.onload = function(e) { //==================================================================================== reader = new netcdfjs(this.result);//netcdfjs是一个开源库 isize = reader.dimensions[0].size; jsize = reader.dimensions[1].size; var dimoName = reader.dimensions[0].name;//获取第0维数组的名称 var dim1Name = reader.dimensions[1].name;//获取第1维数组的名称 axiso = reader.getDataVariable(dimoName);//根据第0维的名称获取该维度的数组? axis1 = reader.getDataVariable(dim1Name);//根据第1维的名称获取该维度的数组? var valuesVar1 = reader.getDataVariable('UWND');//获取第UWND的数值 valuesVar1 = reverseVar(valuesVar1); //反转? var valuesVar2 = reader.getDataVariable('VWND');//获取第VWND的数值 valuesVar2 = reverseVar(valuesVar2); //反转?