疾风亦有龟途 | 搜索
综合排序时间浏览量
全部分类安卓/IOS后端运维web前端软件安装学习/科研疾风龟途月记还是月季技巧杂糅
找到约 6 条结果
伊斯坦布尔对流层顶参数计算
开启线程数,请自己酌情处理。。。 2.1逐月 2.1.1 2017年参数 时间 一月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月 海拔 18.11 14.79 18.00 18.65 NULL 15.61 17.54 18.40 NULL 17.33 15.24 18.23 压强 71.20 142.42 74.72 67.26 NULL 124.95 87.20 76.63 NULL 86.97 124.53 68.00 温度 -64.48 -64.81 -62.54 -61.82 NULL -62.60 -65.42 -62.87 NULL -66.60 -62.92 -78.42 2.1.2 2018年参数 时间 一月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月 海拔 15.77 18.70 15.76 11.60 16.97 16.766 18.20 15.61 16.95 NULL 15.78 17.56 压强 120.60 66.89 122.94 NULL 105.15 101.40 80.16 108.45 92.82
2020/09/06 06:47
1728
伊斯坦布尔
对流层顶
掩星
Java
批处理
气象数据读取(2)--- FY-3C(风云)掩星数据读取
是我根据目前(2020-8-13)的数据结构给定的,后续有可能国家卫星气象中心提供的数据可能会不一样,可以自行修改
* 提取数据包括:Global Attributes:掩星点坐标(经纬度),时间(年,月,日)
* Attributes:海拔,温度,压强
* 也可以根据自己需要提取其他相关参数,请自行配置
* TODO:涉及到了文件读,应该要有关闭操作,请在使用后添加.close()进行关闭
*/
private static List mLat = new ArrayList();
private static List mLon = new ArrayList();
private static List mYear = new ArrayList();
private static List mMonth = new ArrayList();
private
2020/08/29 05:22
1910
风云
掩星
java
NC
数据提取
气象数据读取(4)--- 优雅的交汇
getGlobalVariablesLists(),在这两个方法中,String vbName和int position
* 是我根据目前(2020-8-13)的数据结构给定的,后续有可能国家卫星气象中心提供的数据可能会不一样(但是一般不会变得),可以自行修改
* 提取数据包括:Global Attributes:掩星点坐标(经纬度),时间(年,月,日)
* Attributes:海拔,温度,压强
* 也可以根据自己需要提取其他相关参数,请自行配置
*
* 重要提醒:!!! 在实例化该工具类后,必须先实现getNcDataList()方法,这样写是为了实例化后少写代码。有利有弊 *
* 涉及到了文件读,应该要有关闭操作,请在使用后添加.close()进行关闭
*/
public class ReadAllNcDataUtils {
private static List
2020/08/29 06:39
1585
解耦
java
掩星
nc
优雅
气象数据读取(3)---COSMIC掩星数据读取
获得海拔
*
* @param
* @return
*/
public List
- getAltList() {
return getVariablesLists("MSL_alt", mAlts, mAltsList);
}
/**
* 获得温度
*
* @param
* @return
*/
public List
- getTempList() {
return getVariablesLists("Temp", mTemps, mTempsList);
}
/**
* 获得压强
*
* @param
* @return
*/
public List
- getPressList() {
return getVariablesLists("Pres", mPress, mPressList);
}
2020/08/29 06:30
2110
cosmic
java
掩星
数据提取
气象数据读取(5)---时空特征匹配
1.需求分析 对于学习气象,遥感,地信的同学来说。对于时空特征这一概念都比较熟悉。我们在做科研时,总喜欢拿自己得出的结果和其他的权威数据作比较。这时,就离不开对时间和空间特征的匹配。这篇文章开始,我们就使用Java语言对气象数据进行时空特征匹配。 2.代码时刻 2.1代码逻辑 利用ReadAllNcDataUtils计算GNOS的year,month,day,hour,minute,second,lat,lon 利用ReadAllNcDataUtils计算COSMIC的year,month,day,hour,minute,second,lat,lon 根据上述计算参数,设计相应get方法(要给用户提供相应接口,满足用户的时空匹配特征) coding 2.2工具类实现 通过上面的步骤分析,我相信大家已经能明白其中逻辑。我们在utils下新建RoMatchingUtils工具类,具体代码如下 public class RoMatchingUtils {
//case分析
//1.用户给定纬度,找出给定文件夹中所有满足的数据,并将数据名及其路径存入相应数组中、或者存入到excel里,方便后续使用
//2.用户给定经度,找出给定文件夹中所有满足的数据,并将数据名及其路径存入相应数组中、或者存入到excel里,方便后续使用
//3.用户给定经纬度,找出给定文件夹中所有满足的数据,并将数据名及其路径存入相应数组中、或者存入到excel里,方便后续使用
//4.用户给定时间,给定经纬度,找出给定文件夹中所有满足的数据,并将数据名及其路径存入相应数组中、或者存入到excel里,方便后续使用
//5.其实还有很多case,这里就不一一弄了,上面4个case应该比较多,后面有需要可以自行扩展
/**
* case1 用户给定纬度
*
* @param inputValue 输入你要设定的经纬度值,比如说北纬20.0,南纬35.21等等
* @param IntervalValue 输入阈值范围,比如说±3°,那就是3.0。
* @param filePath 输入你要检索的文件夹路径
* @return
*/
public List getLatMat(Double inputValue, Double IntervalValue, String filePath) {
List matchResult = new ArrayList();
ReadAllNcDataUtils rd = new ReadAllNcDataUtils();
List ncDataList = rd.getNcDataList(filePath);
List fileList = rd.getFileList(filePath);
List roLat = rd.getRoLat(ncDataList);
for (int i = 0; i < roLat.size(); i++) {
Double v = Double.parseDouble(roLat.get(i));
if (Math.abs(inputValue - v) <= IntervalValue) {
matchResult.add(fileList.get(i).getPath());
}
}
return matchResult;
}
/**
* case2 用户给定经度
*
* @param inputValue 输入你要设定的经度值,比如说东经20.0,西经35.21等等
* @param IntervalValue 输入阈值范围,比如说±3°,那就是3.0。
* @param filePath 输入你要检索的文件夹路径
* @return
*/
public List getLonMat(Double inputValue, Double IntervalValue, String filePath) {
List matchResult = new ArrayList();
ReadAllNcDataUtils rd = new ReadAllNcDataUtils();
List ncDataList = rd.getNcDataList(filePath);
List fileList = rd.getFileList(filePath);
List roLon = rd.getRoLon(ncDataList);
for (int i = 0; i < roLon.size(); i++) {
Double v = Double.parseDouble(roLon.get(i));
if (Math.abs(inputValue - v) <= IntervalValue) {
matchResult.add(fileList.get(i).getPath());
}
}
return matchResult;
}
/**
* @param inputValueLat 输入你要设定的经纬度值,比如说北纬20.0,南纬35.21等等
* @param inputValueLon 输入你要设定的经度值,比如说东经20.0,西经35.21等等
* @param IntervalValueLat 输入阈值范围,比如说±3°,那就是3.0。
* @param IntervalValueLon 输入阈值范围,比如说±3°,那就是3.0。
* @param filePath 输入你要检索的文件夹路径
* @return
*/
public List getLatLonMat(Double inputValueLat, Double inputValueLon,
Double IntervalValueLat, Double IntervalValueLon, String filePath) {
List matchResult = new ArrayList();
ReadAllNcDataUtils rd = new ReadAllNcDataUtils();
List fileList = rd.getFileList(filePath);
List ncDataList = rd.getNcDataList(filePath);
List roLat = rd.getRoLat(ncDataList);
List roLon = rd.getRoLon(ncDataList);
for (int i = 0; i < roLat.size(); i++) {
double vLat = Double.parseDouble(roLat.get(i));
Double vLon = Double.parseDouble(roLon.get(i));
if (Math.abs(inputValueLat - vLat) <= IntervalValueLat && Math.abs(inputValueLon - vLon) <= IntervalValueLon) {
matchResult.add(fileList.get(i).getPath());
}
}
return matchResult;
}
/**
* @param inputValueLat 输入你要设定的经纬度值,比如说北纬20.0,南纬35.21等等
* @param inputValueLon 输入你要设定的经度值,比如说东经20.0,西经35.21等等
* @param IntervalValueLat 输入阈值范围,比如说±3°,那就是3.0。
* @param IntervalValueLon 输入阈值范围,比如说±3°,那就是3.0。
* @param time 单位是秒
* @param IntervalValueTime 单位是秒
* @param filePath 输入你要检索的文件夹路径
* @return
*/
public List getLatLonTimeMat(Double inputValueLat, Double inputValueLon,
Double IntervalValueLat, Double IntervalValueLon, Double time, Double IntervalValueTime, String filePath) {
List matchResult = new ArrayList();
ReadAllNcDataUtils rd = new ReadAllNcDataUtils();
List fileList = rd.getFileList(filePath);
List ncDataList = rd.getNcDataList(filePath);
List roLat = rd.getRoLat(ncDataList);
List roLon = rd.getRoLon(ncDataList);
List roHour = rd.getRoHour(ncDataList);
List roMinute = rd.getRoMinute(ncDataList);
List roSecond = rd.getRoSecond(ncDataList);
for (int i = 0; i < roLat.size(); i++) {
double vLat = Double.parseDouble(roLat.get(i));
Double vLon = Double.parseDouble(roLon.get(i));
Double vSecond = Double.parseDouble(roSecond.get(i));
Double vMinute = Double.parseDouble(roMinute.get(i)) * 60;
Double vHour = Double.parseDouble(roHour.get(i)) * 3600;
Double TotalTime = vSecond + vMinute + vHour;
if (Math.abs(inputValueLat - vLat) <= IntervalValueLat && Math.abs(inputValueLon - vLon) <= IntervalValueLon
&& Math.abs(TotalTime - time) <= IntervalValueTime) {
matchResult.add(fileList.get(i).getPath());
}
}
return matchResult;
}
}
3.总结 其实,Java语言是提供可变参数方法的,但是,由于当时写的时候,分开写了,也懒得搞了。并且分开写,好处是,不同的命名方法清晰明了,坏处是,代码变多啦!哈哈哈。 到此,我们的数据读取,时空匹配的工具类已经有了。但是,我们会遇到另外一个问题,那就是每次执行后的数据,我们没有存储下来,不利于后续的科研或者开发活动。况且,随着数据量的增多,每一次run都会耗费大量的资源和时间。所以,将数据以某种方式存储下来,势在必行。下一篇,我们将分享一种存储格式。。。 [x] 我们的征途是星辰大海。我就是我,我就是天! [x] 疾风亦有龟途对本文享有版权,转载请标明原文链接,禁止复制! [x] 欢迎访问我的个人博客网站---->夙夜星辰叹 [x] 欢迎关注我的微信公众号:
2020/09/02 06:40
1510
时空
经度
纬度
海拔
温度
探空气球数据提取与三次样条插值
实验的需求,如果需要批量处理相关文件,只需要在循环处调用相应的工具类即可。而该部分是通过使用面向对象的思想,将标准文件变得更加好用。 在处理数据之前,我们首先创建一个txtData的bean类,篇幅有限。这里省略了相应的get与set方法。 public class txtData {
private Integer year;
private Integer month;
private Integer day;
private Integer hour;
private Integer minute;
private Integer second;
private Double lat;
private Double lon;
private List alt;
private List temp;
}
我们知道,大气资料最重要的就是它的时间特征,空间特征,以及数据本身。所以在txtData类中,我们分别给了年月日时分秒,经纬度,以及海拔温度等参数。有了这个类,
2021/08/12 07:09
1628
探空气球
大气科学
java
maven
热门标签