📄 globetempdata.java
字号:
// **********************************************************************// // <copyright>// // BBN Technologies// 10 Moulton Street// Cambridge, MA 02138// (617) 873-8000// // Copyright (C) BBNT Solutions LLC. All rights reserved.// // </copyright>// **********************************************************************// // $Source:// /cvs/distapps/openmap/src/openmap/com/bbn/openmap/layer/plotLayer/GLOBETempData.java,v// $// $RCSfile: GLOBETempData.java,v $// $Revision: 1.2.2.2 $// $Date: 2005/08/09 21:17:54 $// $Author: dietrick $// // **********************************************************************package com.bbn.openmap.layer.plotLayer;import java.text.DecimalFormat;import java.text.ParseException;import java.util.Enumeration;import java.util.Hashtable;import java.util.NoSuchElementException;import java.util.StringTokenizer;public class GLOBETempData extends GLOBEData { private static float NO_VALUE = -99; private Hashtable site_table = new Hashtable(); public float overall_min_year_ = Float.NaN; public float overall_max_year_ = Float.NaN; public float overall_min_temp_ = Float.NaN; public float overall_max_temp_ = Float.NaN; public GLOBETempData() { super(); } /* * Data Format: * * Air Temperature: Field 1 = AT Field 2 = GLOBE phase number (1 * or 2) Field 3 = Site number Field 4 = Time the data was * reported, YYYYMMDD where YYYY = Calendar year MM = Calendar * month (starting with 1 = January) DD = Day of month (starting * with 1) Field 5 = Time the data was sampled, YYYYMMDDHH where * YYYY = Calendar year MM = Calendar month (starting with 1 = * January) DD = Day of month (starting with 1) HH = Hour of day * (00-23) Field 6 = Decimal year Field 7 = Measurement location * latitude Field 8 = Measurement location longitude (+ = East, - = * West) Field 9 = Measurement location elevation (meters above * sea level) Field 10 = Current air temperature (degrees Celsius) * [Missing value = -99.0] Field 11 = Daily maximum air * temperature (degrees Celsius) [Missing value = -99.0] Field 12 = * Daily minimum air temperature (degrees Celsius) [Missing value = * -99.0] * * Example: AT 1 1 19961218 1996121814 1996.96334 44.1281 -68.8747 * 14 18 22 -2 * */ protected void parseDataFromStream(String line) { StringTokenizer tokenizer = new StringTokenizer(line); DecimalFormat dec_format = new DecimalFormat(); try { for (int i = 0; i < 2; i++) tokenizer.nextToken(); /*int site_number = */dec_format.parse(tokenizer.nextToken()) .intValue(); ; for (int i = 0; i < 2; i++) tokenizer.nextToken(); float time = dec_format.parse(tokenizer.nextToken()).floatValue(); float latitude = dec_format.parse(tokenizer.nextToken()) .floatValue(); float longitude = dec_format.parse(tokenizer.nextToken()) .floatValue(); tokenizer.nextToken(); // ignore Field 9 float current_temp = dec_format.parse(tokenizer.nextToken()) .floatValue(); // float max_temp = // dec_format.parse( tokenizer.nextToken() ).floatValue(); // float min_temp = // dec_format.parse( tokenizer.nextToken() ).floatValue(); // Now process the data we just parsed. GLOBESite site = findSite(latitude, longitude); if (current_temp != NO_VALUE) { site.addCurrentTemp(time, current_temp); checkLimits(current_temp, time); } // if ( max_temp != NO_VALUE ) // { site.addMinTemp(time, max_temp); } // if ( min_temp != NO_VALUE ) // { site.addMinTemp(time, min_temp); } // System.out.println(" site: " + site_number // + " time: " + time // + " lat: " + latitude // + " lon: " + longitude // + " t1-3: " + current_temp // + " (" + max_temp // + "," + min_temp + ")" ); } catch (NoSuchElementException e) { System.err.println(e + ": " + e.getMessage()); } catch (ParseException e) { System.err.println(e); } } /** * See if these values for temp and year are outside of our * current notion of how large our data space is. * <p> * * @param temp * @param year */ private void checkLimits(float temp, float year) { if (Float.isNaN(overall_max_temp_) || temp > overall_max_temp_) overall_max_temp_ = temp; if (Float.isNaN(overall_min_temp_) || temp < overall_min_temp_) overall_min_temp_ = temp; if (Float.isNaN(overall_max_year_) || year > overall_max_year_) overall_max_year_ = year; if (Float.isNaN(overall_min_year_) || year < overall_min_year_) overall_min_year_ = year; } private GLOBESite findSite(float latitude, float longitude) { GLOBESite site = new GLOBESite(latitude, longitude); GLOBESite hashed_site = (GLOBESite) site_table.get(site.hash()); if (hashed_site == null) { // System.out.println("hash_miss: " + latitude + " " + // longitude); site_table.put(site.hash(), site); hashed_site = site; } return hashed_site; } public Enumeration getAllSites() { return site_table.elements(); } /* * public static void main (String argv[]) { try { * System.out.println("Getting URL: " + temp_data_source_); * GLOBETempData datafile = new GLOBETempData(); * datafile.loadData(); } catch (IOException e) { * System.err.println(e); } } */}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -