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);

在这里插入图片描述
只显示了左下角的区域。

增加对时间变量的裁剪

public String varExport(@ModelAttribute FileSaveVars params ) throws IOException, InvalidRangeException, ParseException {
//      0° 设置时间String timeStart = "2018-01-01 00:30:00";String timeEnd = "2018-01-01 00:40:00";
//      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 timeObject = ncFile.findVariable("time");String timeAt = timeObject.getUnitsString();String regex = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}";Pattern p = Pattern.compile(regex);Matcher matcher = p.matcher(timeAt);if (matcher.find()) {timeAt = matcher.group(0);}
//      4-1° 获取时间差int timeDiff1 = DateHelp.dateDifference(timeAt,timeStart);int timeDiff2 = DateHelp.dateDifference(timeAt,timeEnd);
//      4-2° 获取时间步长Array timeArray =  timeObject.read();int timeStep = (int)(timeArray.getFloat(1) - timeArray.getFloat(0)) ;int startIndex = timeDiff1/timeStep;int endIndex = timeDiff2/timeStep;
//      5° 获取需要转存的变量对象Variable varObject = ncFile.findVariable(varName);
//      6° 构造输出保存文件NetcdfFileWriter ncWrite = NetcdfFileWriter.createNew(NetcdfFileWriter.Version.netcdf4, savePath);
//      6° 设置文件的一些参数
//      7°-1纬度for(Dimension dimension : varObject.getDimensions()){System.out.println(dimension.getShortName());System.out.println(dimension.getLength());ncWrite.addDimension(null, dimension.getShortName(), dimension.getLength());}
//      7°-2变量Variable varVar = ncWrite.addVariable(null, varObject.getShortName(), varObject.getDataType(), varObject.getDimensionsString());System.out.println(varVar.getDimensions());
//      7°-3设置属性List<Attribute> AttrList = varObject.getAttributes();for (Attribute att : AttrList) {varVar.addAttribute(att);}
//      8°创建ncWrite.create();
//      9°将数据写入List<Range> tyxRanges = new ArrayList<>();tyxRanges.add(new Range(null,startIndex,endIndex));tyxRanges.add(new Range(null,0,120));tyxRanges.add(new Range(null,0,120));Array varData = varObject.read(tyxRanges);ncWrite.write(varVar, varData);
//      10°关闭保存ncWrite.close();return  "OK";
}

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

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

相关文章

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 :以追加的方…

使用run-rs启动mongodb

为什么需要&#xff1a; 因为在mac上直接使用社区版&#xff0c;进行备份数据导入时&#xff0c;会报错&#xff1a; MongoError: Transaction numbers are only allowed on a replica set member or mongos run-rs可以零配置启动mongodb 1、npm install run-rs -g 2、run…

Android Handler机制

1.什么是Handler&#xff1f; Handler是可以通过发送和处理Message和Runnable对象来关联相应线程的MessageQueue。通常我们认为它是一种异步机制。 a.可以让对应的Message和Runnable在未来的某个时间点进行相应的处理。 b.让自己想要的耗时操作在子线程中完成&#xff0c;让更新…