Netcdf文件导出基本代码示例

需求:从一个nc文件中取出我想要的变量,导出到另外一个nc文件。

下面是基本代码:

@GetMapping("/export")
public String varExport(@ModelAttribute FileSaveVars params ) throws IOException, InvalidRangeException {
//      1° 设置原始文件路径+转存文件路径String filePath = "/Users/caowei/workspace/jszone/大气系统/ncdemo/src/main/resources/static/MERRA2_400.tavg1_2d_flx_Nx.20180101.SUB.nc";String savePath = "/Users/caowei/workspace/test.nc";
//      2° 读取文件NetcdfFile ncFile = null;ncFile = NetcdfFile.open(filePath, null);
//      3° 获取需要转存的变量Variable latVar = ncFile.findVariable("lat");
//      4° 读取变量的一些信息
//      4°-1 长度int latitudeCount = (int) latVar.getSize();
//      4°-2 读取变量数组数据ArrayDouble.D1 latArray = (ArrayDouble.D1) latVar.read();
//      5° 构造输出保存文件NetcdfFileWriter ncWrite = NetcdfFileWriter.createNew(NetcdfFileWriter.Version.netcdf4, savePath);
//      6° 设置文件的一些参数
//      6°-1纬度Dimension latitudeDimension = ncWrite.addDimension(null, "latitude", (int) latArray.getSize());
//      6°-2变量Variable latitudeVar = ncWrite.addVariable(null, "latitude", DataType.DOUBLE, "latitude");
//      6°-3设置属性latitudeVar.addAttribute(new Attribute("standard_name", "latitude"));latitudeVar.addAttribute(new Attribute("long_name", "latitude"));latitudeVar.addAttribute(new Attribute("units", "degrees_north"));latitudeVar.addAttribute(new Attribute("axis", "Y"));
//      7°创建ncWrite.create();
//      8° 构造数据ArrayDouble.D1 latitudeData = latArray;
//      9°将数据写入ncWrite.write(latitudeVar, latitudeData);
//      10°关闭保存ncWrite.close();return  "OK";
}

下面是抽出一个变量进行导出

  @GetMapping("/export")public String varExport(@ModelAttribute FileSaveVars params ) throws IOException, InvalidRangeException {
//      1° 设置原始文件路径+转存文件路径String filePath = "/Users/caowei/workspace/jszone/大气系统/ncdemo/src/main/resources/static/MERRA2_400.tavg1_2d_flx_Nx.20180101.SUB.nc";String savePath = "/Users/caowei/workspace/test.nc";
//      2° 读取文件NetcdfFile ncFile = null;ncFile = NetcdfFile.open(filePath, null);
//      3° 设置需要转存的变量String varName = "lon";
//      4° 获取需要转存的变量对象Variable varObject = ncFile.findVariable(varName);
//      5° 读取变量的一些信息
//      5°-1 长度int varCount = (int) varObject.getSize();
//      6° 构造输出保存文件NetcdfFileWriter ncWrite = NetcdfFileWriter.createNew(NetcdfFileWriter.Version.netcdf4, savePath);
//      7° 设置文件的一些参数
//      7°-1纬度Dimension varDimension = ncWrite.addDimension(null, varObject.getName().toString(), varCount);
//      7°-2变量Variable varVar = ncWrite.addVariable(null, varObject.getName().toString(), varObject.getDataType(), varDimension.getName());
//      7°-3设置属性List<Attribute> AttrList = varObject.getAttributes();for (Attribute att : AttrList) {varVar.addAttribute(att);}
//      8°创建ncWrite.create();
//      9°将数据写入ncWrite.write(varVar, varObject.read());
//      10°关闭保存ncWrite.close();return  "OK";
}

下面再次进行升级,可以直接导出单个三纬变量

@GetMapping("/export")
public String varExport(@ModelAttribute FileSaveVars params ) throws IOException, InvalidRangeException {
//      1° 设置原始文件路径+转存文件路径String filePath = "/Users/caowei/workspace/jszone/大气系统/ncdemo/src/main/resources/static/MERRA2_400.tavg1_2d_flx_Nx.20180101.SUB.nc";String savePath = "/Users/caowei/workspace/test.nc";
//      2° 读取文件NetcdfFile ncFile = NetcdfFile.open(filePath, null);
//      3° 设置需要转存的变量String varName = "QLML";
//      4° 获取需要转存的变量对象Variable varObject = ncFile.findVariable(varName);
//      5° 构造输出保存文件NetcdfFileWriter ncWrite = NetcdfFileWriter.createNew(NetcdfFileWriter.Version.netcdf4, savePath);
//      6° 设置文件的一些参数
//      7°-1纬度for(Dimension dimension : varObject.getDimensions()){ncWrite.addDimension(null, dimension.getShortName(), dimension.getLength());}
//      6°-2变量Variable varVar = ncWrite.addVariable(null, varObject.getShortName(), varObject.getDataType(), varObject.getDimensionsString());
//      6°-3设置属性List<Attribute> AttrList = varObject.getAttributes();for (Attribute att : AttrList) {varVar.addAttribute(att);}
//      7°创建ncWrite.create();
//      8°将数据写入ncWrite.write(varVar, varObject.read());
//      9°关闭保存ncWrite.close();return  "OK";
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/415166.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记一次MySQL手工注入

本来想找个装安全狗的站试下绕过&#xff0c;safe dog没找到&#xff0c;但随便一搜搜到一个小站有SQLi&#xff0c;正好借此机会复习下手工注入&#xff08;新版Firefox我吐槽一下&#xff0c;hackbar这么好用的工具&#xff0c;说阉割就阉割&#xff0c;哎&#xff09; 小站没…

Netcdf对数据进行裁剪

对三维数据进行裁剪 List<Range> tyxRanges new ArrayList<>(); tyxRanges.add(new Range(null,0,12)); tyxRanges.add(new Range(null,0,12)); tyxRanges.add(new Range(null,0,12)); Array varData varObject.read(tyxRanges); ncWrite.write(varVar, varData…

Android: 解决动画完成后位置恢复到初始位置的问题

今天在使用TranslateAnimation位移一个LinearLayout时&#xff0c;发现动画完成后又会自动回到初始的状态&#xff0c;设置了fillAfter也不太管用。 仔细研究了一下&#xff0c;发现&#xff1a; 这种现象很正常&#xff0c;因为TranslateAnimation只负责实现位移动画效果&…

Netcdf中时间的格式化

需求&#xff1a;获取到的时间格式为minutes since 2018-01-01 00:30:00 我想要的格式为2018-01-01 00:30:00 java代码如下 // 4 设置时间变量 Variable timeObject ncFile.findVariable("time"); String timeAt timeObject.getUnitsString(); String regex &q…

Android GridView,recycleview,栅格布局

<color name"gray_b7">#F5F5F5</color>//activity背景色&#xff0c;itemview底部&#xff08;横向栅格条&#xff09;背景色&#xff0c;itemview主色白 设置竖向栅格条 adapter中设置 int w MainApplication.getnScreenWidth();holder.itemView.set…

PAT——1027. 打印沙漏

本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”&#xff0c;要求按下列格式打印 ************ *****所谓“沙漏形状”&#xff0c;是指每行输出奇数个符号&#xff1b;各行符号中心对齐&#xff1b;相邻两行符号数差2&#xff1b;符号数先从大到小顺序递减…

Netcdf中多变量导出代码示例

多个变量进行导出代码如下&#xff1a; GetMapping("/export")public String varExport(ModelAttribute FileSaveVars params ) throws IOException, InvalidRangeException { // 1 设置原始文件路径转存文件路径String filePath "/Users/caowei/workspac…

Android 微信分享

起调效果 分享到朋友 分享到朋友圈 分享效果&#xff1a; 1、登录 微信开发平台 创建Android应用 微信开放平台&#xff1a;https://open.weixin.qq.com/cgi-bin/index?thome/ind…

首页列表显示全部问答,完成问答详情页布局

首页列表显示全部问答&#xff1a;将数据库查询结果传递到前端页面 Question.query.all()前端页面循环显示整个列表。问答排序完成问答详情页布局&#xff1a;包含问答的全部信息评论区以往评论列表显示区。在首页点击问答标题&#xff0c;链接到相应详情页。app.route(/base2)…

Netcdf 文件多属性,按照时间段导出代码示例

由于个人即是java初学者&#xff0c;又是netcdf文件小白&#xff0c;所以为了实现最终效果&#xff0c;可以对一个初始nc文件进行筛选指定变量&#xff0c;并且可以设定时间区间&#xff0c;花得时间比想象的要多&#xff0c;最终实现了效果&#xff0c;代码示例如下&#xff1…

【软工项目组】第九次会议

第九次会议 时间&#xff1a;2017-12-5 22:00 至 23:00 地点&#xff1a;第三教学楼A楼休息区 任务都已经分配完毕了&#xff0c;大家分别完成页面样式、前端逻辑、后端数据库、服务器域名配置的任务。最近几次的会议主要是集体写代码与答疑讨论的时间。 后端的接口在今天上传…

Android 集成微信分享2,实现微信分享

1、build.gradle下添加微信sdk依赖 compile (com.xyzlf.share:sharesdk:0.0.10) {exclude group: com.android.support, module: appcompat-v7 } 2、MainActivity文件夹下创建wxapi文件夹WXEntryActivity类&#xff0c;并配置到manifest里面&#xff1a; public class WXEnt…

ERA5、ERA-interm是啥

ERA5是欧洲中期天气预报中心最新产品。 ERA-Interim 是再分析数据&#xff0c;提供两套数据&#xff0c;一个是同化分析数据&#xff0c;一个是预报数据。分析数据&#xff0c;6小时的时间间隔&#xff0c;每12小时循环一次。例如&#xff0c;0 UTC 开始&#xff0c;6 UTC&…

Liunx 重定向,管道符(转)

原作网址&#xff1a;http://blog.csdn.net/qq_16811963/article/details/52997178 输出重定向 >代表以覆盖的方式将命令的正确输出输出到指定的文件或设备当中。 >>代表以追加方式输出。 常用的输出重定向&#xff1a; 1.命令 >> 文件 2>&1 :以追加的方…