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只负责实现位移动画效果&…

Android GridView,recycleview,栅格布局

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

Android 微信分享

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

Liunx 重定向,管道符(转)

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

你的鼠标有多快-小游戏

HTML <div class"box"><h3>你的鼠标有多快&#xff1f;</h3><p>游戏说明&#xff1a;点击开始游戏&#xff0c;随机掉下QQ表情&#xff0c;点中它&#xff0c;千万别让它掉下去&#xff01;&#xff01;</p><input type"butto…

android图片查看器,实现图片加载进度监听,实现保存图片

1、添加依赖 implementation com.github.bumptech.glide:glide:4.6.1 compile com.github.chrisbanes:PhotoView:2.0.0 compile com.squareup.okhttp3:okhttp:3.9.0 2、实现fragmentactivity&#xff1a; /*** 作者&#xff1a;created by meixi* 邮箱&#xff1a;131647168…

iPhone X Web 设计

iPhone X Web 设计 原文地址&#xff1a;https://webkit.org/blog/7929/designing-websites-for-iphone-x/ 开箱即用(开发者无需进行任何设置)&#xff0c;在iPhone X中&#xff0c;Safari 就可以完美的在全面屏上显示你既有的网站。网页内容会自动插入到显示的安全区域以至于不…

[转载] 我的WafBypass之道(SQL注入篇)

我的WafBypass之道&#xff08;SQL注入篇&#xff09; Web安全 作者&#xff1a;先知技术社区 2016-11-23 7,566【本文转自安全脉搏战略合作伙伴先知技术社区 原帖地址 安全脉搏编辑huan9740整理发布】 0x00 前言 去年到现在就一直有人希望我出一篇关于waf绕过的文章&#xf…

Linux之Ubuntu下安装屏幕录像软件(SimpleScreenRecorder)【摘抄】

本博文全文属于摘抄自&#xff1a; (见文末处参考文献)(由于担心原博文丢失&#xff0c;以后查找不到&#xff0c;故此原文摘抄&#xff0c;以备日后多次查阅) 在日常工作中&#xff0c;有时需要对屏幕进行录像&#xff0c;以制作讲解文档等。下面介绍在Linux上安装屏幕录像软件…

docker 目录 挂载

docker容器启动的时候&#xff0c;如果要挂载宿主机的一个目录&#xff0c;可以用-v参数指定。 譬如我要启动一个centos容器&#xff0c;宿主机的/share目录挂载到容器的/share目录&#xff0c;可通过以下方式指定&#xff1a; docker run -it -v /share:/share centos /bin/…

工作177:表单重置项目处理

<template><!--新建账号对话框--><el-dialog title"新建账号" :visible.sync"dialogFormVisible" close"close"><el-form ref"form" :model"form" size"medium" :label-width"formLabe…

docker删除所有镜像和容器

需求&#xff1a;重新进行开发&#xff0c;需要清空目前的镜像和容器。 1、删除容器 1&#xff09;首先需要停止所有的容器 docker stop $(docker ps -a -q) 2&#xff09;删除所有的容器&#xff08;只删除单个时把后面的变量改为image id即可&#xff09; docker rm $(d…

Android 自定义字体,设置字体

效果图 实现代码&#xff1a; 1、先下载字体文件.ttf 下载链接&#xff1a;http://font.chinaz.com/maobiziti.html 2、main文件夹下创建fonts文件夹&#xff0c;.ttf文件复制到fonts文件夹下 3、读取ttf文件 List<Typeface> mTypefaceList new ArrayList(); priva…