伊斯坦布尔对流层顶参数计算
1.确定地理位置
最近接到一个任务。计算伊斯坦布尔的对流层顶参数,该城市在北纬 41°, 东经 28。要求是使用COSMIC掩星数据。在前面,我们写各种提取掩星数据的工具类,现在我们就把他们利用起来。不过在正式开始计算时,我们还要进行数据准备。我们要完成对数据的归档。如下图所示。在归档时使用到了复制操作,复制工具类请参考我的另一篇文章todo
2.计算参数
在计算时,根据要求,分为逐年,逐月两种方法。之所以不分季节,是因为,我只知道中国大部分地区四季分明,至于本文研究区域是否分明,我并不清楚。首先我们研究逐月。另外比较重要的一点,是对计算结果的存储。这要是用到另外一个工具类,该工具类请参考我的另一篇文章todo。本文也涉及多线程编程,但是很简单。下面贴上代码。
重写run方法
static class threadDemo extends Thread{
private String yourFilePath;
private String rolePath;
public threadDemo(String yourFilePath, String rolePath) {
this.yourFilePath = yourFilePath;
this.rolePath = rolePath;
}
@Override
public void run() {
RoMatchingUtils ro = new RoMatchingUtils();
List<String> latLonMat = ro.getLatLonMat(41, 28, 2, 2, yourFilePath);
if (latLonMat!=null) {
CPTutils cpTutils = new CPTutils();
CPTutils.Result thVar = cpTutils.getThVar(latLonMat);
makeExcel(yourFilePath,rolePath,thVar);
}else {
log.info("没有匹配结果。。。。");
}
}
}
在run方法里面用到了一个makeExcel的方法,这个方法是为我们后面写入excel提供相应的参数
makeExcel方法
private static void makeExcel(String yourFilePath,String filePath,CPTutils.Result thVar){
//第一步,创建一个workbook对应一个excel文件
HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
//第二部,在workbook中创建一个sheet对应excel中的sheet
HSSFSheet sheet = hssfWorkbook.createSheet("用户表一");
//第三部,在sheet表中添加表头第0行,老版本的poi对sheet的行列有限制
HSSFRow row = sheet.createRow(0);
//第四步,创建单元格,设置表头
HSSFCell cell = row.createCell(0);
cell = row.createCell(0);
cell.setCellValue("alt");
cell = row.createCell(1);
cell.setCellValue("temp");
cell = row.createCell(2);
cell.setCellValue("press");
for (int i = 0; i < thVar.getAltList().size(); i++) {
HSSFRow row1 = sheet.createRow(i + 1);
row1.createCell(0).setCellValue(thVar.getAltList().get(i));
row1.createCell(1).setCellValue(thVar.getTempList().get(i));
row1.createCell(2).setCellValue(thVar.getPressList().get(i));
}
String lb = yourFilePath.substring(filePath.length()-1);
//TODO:再加一个标记量
String str = "/19GlobalVariables"+lb+".xls";
log.info("srt========>" + str);
saveAsExcelUtils.saveAsExcel(filePath, str, hssfWorkbook);
}
这个方法主要是创建一个HSSFWorkbook对象,并对该对象进行初步的设置,可以看到,在最后我们有用到了一个saveAsExcelUtils方法,这个方法是真正的将数据写入excel
saveAsExcelUtils方法
/**
* 将你的数据保存为excel,调用该方法需要三个参数,所以在执行前必须提供下面三个参数
* @param filepath 目标存储文件夹
* @param fpPlus 你想存储的名字
* @param hf 一个excell对象
*/
public static void saveAsExcel(String filepath, String fpPlus, HSSFWorkbook hf) {
String str = filepath + fpPlus;
File file = new File(str);
if (file.exists()) {
file.deleteOnExit();
file = new File(str);
}
OutputStream outputStream = null;
try {
outputStream = new FileOutputStream(file);
try {
hf.write(outputStream);
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
可以看到,这个方法需要的三个参数,我们都已获得。那么我们只需要在main方法中调用他就好了:
main方法
public static void main(String[] args) {
threadDemo demo1 = new threadDemo(yourFilePath1,roleFilePath1);
demo1.start();
threadDemo demo2 = new threadDemo(yourFilePath2,roleFilePath2);
demo2.start();
}
开启线程数,请自己酌情处理。。。
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 | NULL | 107.94 | 85.52 |
温度 | -63.31 | -62.08 | -64.43 | -64.40 | -60.70 | -61.68 | -65.14 | -60.59 | -62.18 | NULL | -61.32 | -63.04 |
2.1.3 2019年参数
时间 | 一月 | 二月 | 三月 | 四月 | 五月 | 六月 | 七月 | 八月 | 九月 | 十月 | 十一月 | 十二月 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
海拔 | 13.54 | NULL | 14.03 | NULL | NULL | NULL | NULL | NULL | NULL | 17.16 | 17.84 | NULL |
压强 | 169.92 | NULL | 150.26 | NULL | NULL | NULL | NULL | NULL | NULL | 97.60 | 75.95 | NULL |
温度 | -65.11 | NULL | -67.62 | NULL | NULL | NULL | NULL | NULL | NULL | -62.64 | -69.54 | NULL |
从上面三个表可以看出,2019年的数据并不好,不知道为什么?
3.总结
终于做完了。总结下来就是掩星并不适合做小区域的研究!!!
版权属于: 依依东望