VLab Issue #4001 - NCEP EDEX and EDEX Common delivery for 14.2.1-n
Fixes for Vors, Ncuair, and pressure change Change-Id: I11d77f5b359e3f73317a46ecf9addf81079c1616 Former-commit-id: a05e1a8190d28f3d09e373b8d8c5f46829bbc9e8
This commit is contained in:
parent
929305ce1d
commit
11d21bbe95
14 changed files with 3435 additions and 2708 deletions
|
@ -313,7 +313,7 @@ COPY stns.VORS(PKEY, STATION_ID, STATION_NUM, NAME, STATE, COUNTRY, LATITUDE, LO
|
|||
312,RBL,225,RED_BLUFF,CA,US,40.1,-122.24
|
||||
313,SEA,243,SEATTLE,WA,US,47.44,-122.31
|
||||
314,HUH,35,WHATCOM,WA,US,48.95,-122.58
|
||||
315,PDX,208,PORTLAND,OR,US,45.58,-122.6
|
||||
315,BTG,208,BATTLE_GROUND,WA,US,45.75,-122.59
|
||||
316,PYE,371,POINT_REYES,CA,US,38.08,-122.87
|
||||
317,OED,362,MEDFORD,OR,US,42.48,-122.91
|
||||
318,EUG,93,EUGENE,OR,US,44.12,-123.22
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<!--
|
||||
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
|
||||
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
|
||||
|
||||
U.S._EXPORT_CONTROLLED_TECHNICAL_DATA
|
||||
This_software_product_contains_export-restricted_data_whose
|
||||
export/transfer/disclosure_is_restricted_by_U.S._law._Dissemination
|
||||
to_non-U.S._persons_whether_in_the_United_States_or_abroad_requires
|
||||
an_export_license_or_other_authorization.
|
||||
|
||||
Contractor_Name:________Raytheon_Company
|
||||
Contractor_Address:_____6825_Pine_Street,_Suite_340
|
||||
________________________Mail_Stop_B8
|
||||
________________________Omaha,_NE_68106
|
||||
________________________402.291.0100
|
||||
|
||||
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
|
||||
further_licensing_information.
|
||||
-->
|
||||
<lambertConformalGridCoverage>
|
||||
<name>14731025001</name>
|
||||
<description>HIRES - 5 km Western US</description>
|
||||
<la1>12.19</la1>
|
||||
<lo1>-133.459</lo1>
|
||||
<firstGridPointCorner>LowerLeft</firstGridPointCorner>
|
||||
<nx>1473</nx>
|
||||
<ny>1025</ny>
|
||||
<dx>5.079</dx>
|
||||
<dy>5.079</dy>
|
||||
<spacingUnit>km</spacingUnit>
|
||||
<minorAxis>6371229.0</minorAxis>
|
||||
<majorAxis>6371229.0</majorAxis>
|
||||
<lov>-95.0</lov>
|
||||
<latin1>25.</latin1>
|
||||
<latin2>25.</latin2>
|
||||
</lambertConformalGridCoverage>
|
|
@ -1435,6 +1435,26 @@
|
|||
</process>
|
||||
</model>
|
||||
|
||||
<model>
|
||||
<name>HiResW-NMM-US</name>
|
||||
<center>7</center>
|
||||
<subcenter>0</subcenter>
|
||||
<grid>14731025001</grid>
|
||||
<process>
|
||||
<id>112</id>
|
||||
</process>
|
||||
</model>
|
||||
|
||||
<model>
|
||||
<name>HiResW-ARW-US</name>
|
||||
<center>7</center>
|
||||
<subcenter>0</subcenter>
|
||||
<grid>14731025001</grid>
|
||||
<process>
|
||||
<id>116</id>
|
||||
</process>
|
||||
</model>
|
||||
|
||||
<model>
|
||||
<name>HiResW-NMM-East</name>
|
||||
<center>7</center>
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
* remove xml serialization as well *
|
||||
* 10/2011 S. Gurung Added changes related to getting stid/lat/lon/elev
|
||||
* from database instead of snstns.xml file
|
||||
*
|
||||
* 6/2014 T.Lee Added support XXAA, XXBB, XXCC, XXDD
|
||||
* </pre>
|
||||
*
|
||||
* This code has been developed by the SIB for use in the AWIPS2 system.
|
||||
|
@ -26,6 +26,12 @@
|
|||
|
||||
package gov.noaa.nws.ncep.common.dataplugin.ncuair.dao;
|
||||
|
||||
import gov.noaa.nws.ncep.common.dataplugin.ncuair.NcUairLiftedIndex;
|
||||
import gov.noaa.nws.ncep.common.dataplugin.ncuair.NcUairMaxWind;
|
||||
import gov.noaa.nws.ncep.common.dataplugin.ncuair.NcUairObsLevels;
|
||||
import gov.noaa.nws.ncep.common.dataplugin.ncuair.NcUairRecord;
|
||||
import gov.noaa.nws.ncep.common.dataplugin.ncuair.NcUairTropopause;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
|
@ -37,109 +43,213 @@ import com.raytheon.uf.common.pointdata.PointDataContainer;
|
|||
import com.raytheon.uf.common.pointdata.PointDataDescription;
|
||||
import com.raytheon.uf.common.pointdata.PointDataView;
|
||||
|
||||
import gov.noaa.nws.ncep.common.dataplugin.ncuair.NcUairLiftedIndex;
|
||||
import gov.noaa.nws.ncep.common.dataplugin.ncuair.NcUairMaxWind;
|
||||
import gov.noaa.nws.ncep.common.dataplugin.ncuair.NcUairObsLevels;
|
||||
import gov.noaa.nws.ncep.common.dataplugin.ncuair.NcUairTropopause;
|
||||
import gov.noaa.nws.ncep.common.dataplugin.ncuair.NcUairRecord;
|
||||
|
||||
public class NcUairToPointData {
|
||||
private static final String RAW_DATA = "RAWDATA";
|
||||
|
||||
private static final String UTC = "UTC";
|
||||
|
||||
private static final String REPORT_TYPE = "REPORTTYPE";
|
||||
|
||||
private static final String STATION_ID = "STATIONID";
|
||||
|
||||
private static final String ISSUE_TIME = "ISSUETIME";
|
||||
|
||||
private static final String OBS_TIME = "OBSTIME";
|
||||
|
||||
private static final String SYNOPTIC_TIME = "SYNOPTIME";
|
||||
|
||||
private static final String DATAURI = "DATAURI";
|
||||
|
||||
private static final String DATA_TYPE = "DATATYPE";
|
||||
|
||||
private static final String CORRECTION_INDICATOR = "CORR";
|
||||
|
||||
private static final String WMO_HEADER = "WMOHEADER";
|
||||
|
||||
private static final String STATION_NUMBER = "STNUM";
|
||||
|
||||
private static final String LATITUDE = "LATITUDE";
|
||||
|
||||
private static final String LONGITUDE = "LONGITUDE";
|
||||
|
||||
private static final String ELEVATION = "ELEVATION";
|
||||
|
||||
private static final String NIL = "NIL";
|
||||
|
||||
private static final String TTAA_PRES = "TTAA_PRES";
|
||||
|
||||
private static final String TTAA_TEMP = "TTAA_TEMP";
|
||||
|
||||
private static final String TTAA_DWPT = "TTAA_DWPT";
|
||||
|
||||
private static final String TTAA_DRCT = "TTAA_DRCT";
|
||||
|
||||
private static final String TTAA_SPED = "TTAA_SPED";
|
||||
|
||||
private static final String TTAA_HGHT = "TTAA_HGHT";
|
||||
|
||||
private static final String TTBB_PRES = "TTBB_PRES";
|
||||
|
||||
private static final String TTBB_TEMP = "TTBB_TEMP";
|
||||
|
||||
private static final String TTBB_DWPT = "TTBB_DWPT";
|
||||
|
||||
private static final String TTCC_PRES = "TTCC_PRES";
|
||||
|
||||
private static final String TTCC_TEMP = "TTCC_TEMP";
|
||||
|
||||
private static final String TTCC_DWPT = "TTCC_DWPT";
|
||||
|
||||
private static final String TTCC_DRCT = "TTCC_DRCT";
|
||||
|
||||
private static final String TTCC_SPED = "TTCC_SPED";
|
||||
|
||||
private static final String TTCC_HGHT = "TTCC_HGHT";
|
||||
|
||||
private static final String TTDD_PRES = "TTDD_PRES";
|
||||
|
||||
private static final String TTDD_TEMP = "TTDD_TEMP";
|
||||
|
||||
private static final String TTDD_DWPT = "TTDD_DWPT";
|
||||
|
||||
private static final String PPAA_PRES = "PPAA_PRES";
|
||||
|
||||
private static final String PPAA_TEMP = "PPAA_TEMP";
|
||||
|
||||
private static final String PPAA_DWPT = "PPAA_DWPT";
|
||||
|
||||
private static final String PPAA_DRCT = "PPAA_DRCT";
|
||||
|
||||
private static final String PPAA_SPED = "PPAA_SPED";
|
||||
|
||||
private static final String PPAA_HGHT = "PPAA_HGHT";
|
||||
|
||||
private static final String PPBB_DRCT = "PPBB_DRCT";
|
||||
|
||||
private static final String PPBB_SPED = "PPBB_SPED";
|
||||
|
||||
private static final String PPBB_HGHT = "PPBB_HGHT";
|
||||
|
||||
private static final String PPCC_PRES = "PPCC_PRES";
|
||||
|
||||
private static final String PPCC_TEMP = "PPCC_TEMP";
|
||||
|
||||
private static final String PPCC_DWPT = "PPCC_DWPT";
|
||||
|
||||
private static final String PPCC_DRCT = "PPCC_DRCT";
|
||||
|
||||
private static final String PPCC_SPED = "PPCC_SPED";
|
||||
|
||||
private static final String PPCC_HGHT = "PPCC_HGHT";
|
||||
|
||||
private static final String PPDD_DRCT = "PPDD_DRCT";
|
||||
|
||||
private static final String PPDD_SPED = "PPDD_SPED";
|
||||
|
||||
private static final String PPDD_HGHT = "PPDD_HGHT";
|
||||
|
||||
private static final String TROP_PRES = "TROP_PRES";
|
||||
|
||||
private static final String TROP_TEMP = "TROP_TEMP";
|
||||
|
||||
private static final String TROP_DWPT = "TROP_DWPT";
|
||||
|
||||
private static final String TROP_DRCT = "TROP_DRCT";
|
||||
|
||||
private static final String TROP_SPED = "TROP_SPED";
|
||||
|
||||
private static final String WMAX_PRES = "WMAX_PRES";
|
||||
|
||||
private static final String WMAX_DRCT = "WMAX_DRCT";
|
||||
|
||||
private static final String WMAX_SPED = "WMAX_SPED";
|
||||
|
||||
private static final String WMAX_LO_SHEAR = "WMAX_LO_SHEAR";
|
||||
|
||||
private static final String WMAX_HI_SHEAR = "WMAX_HI_SHEAR";
|
||||
|
||||
private static final String TTAA_LIFT = "TTAA_LIFT";
|
||||
|
||||
private static final String TTAA_LO_MEAN_DRCT = "TTAA_LO_MEAN_DRCT";
|
||||
|
||||
private static final String TTAA_LO_MEAN_SPED = "TTAA_LO_MEAN_SPED";
|
||||
|
||||
private static final String TTAA_HI_MEAN_DRCT = "TTAA_HI_MEAN_DRCT";
|
||||
|
||||
private static final String TTAA_HI_MEAN_SPED = "TTAA_HI_MEAN_SPED";
|
||||
|
||||
private static final String TTBB_LIFT = "TTBB_LIFT";
|
||||
|
||||
private static final String TTBB_LO_MEAN_DRCT = "TTBB_LO_MEAN_DRCT";
|
||||
|
||||
private static final String TTBB_LO_MEAN_SPED = "TTBB_LO_MEAN_SPED";
|
||||
|
||||
private static final String TTBB_HI_MEAN_DRCT = "TTBB_HI_MEAN_DRCT";
|
||||
|
||||
private static final String TTBB_HI_MEAN_SPED = "TTBB_HI_MEAN_SPED";
|
||||
|
||||
private enum REPORTTYPE {TTAA, TTBB, TTCC, TTDD, PPAA, PPBB, PPCC, PPDD,
|
||||
UUAA, UUBB, UUCC, UUDD, XXAA, XXBB, XXCC, XXDD};
|
||||
private static final String XXAA_PRES = "XXAA_PRES";
|
||||
|
||||
private static final String XXAA_TEMP = "XXAA_TEMP";
|
||||
|
||||
private static final String XXAA_DWPT = "XXAA_DWPT";
|
||||
|
||||
private static final String XXAA_DRCT = "XXAA_DRCT";
|
||||
|
||||
private static final String XXAA_SPED = "XXAA_SPED";
|
||||
|
||||
private static final String XXAA_HGHT = "XXAA_HGHT";
|
||||
|
||||
private static final String XXBB_PRES = "XXBB_PRES";
|
||||
|
||||
private static final String XXBB_TEMP = "XXBB_TEMP";
|
||||
|
||||
private static final String XXBB_DWPT = "XXBB_DWPT";
|
||||
|
||||
private static final String XXCC_PRES = "XXCC_PRES";
|
||||
|
||||
private static final String XXCC_TEMP = "XXCC_TEMP";
|
||||
|
||||
private static final String XXCC_DWPT = "XXCC_DWPT";
|
||||
|
||||
private static final String XXCC_DRCT = "XXCC_DRCT";
|
||||
|
||||
private static final String XXCC_SPED = "XXCC_SPED";
|
||||
|
||||
private static final String XXCC_HGHT = "XXCC_HGHT";
|
||||
|
||||
private static final String XXDD_PRES = "XXDD_PRES";
|
||||
|
||||
private static final String XXDD_TEMP = "XXDD_TEMP";
|
||||
|
||||
private static final String XXDD_DWPT = "XXDD_DWPT";
|
||||
|
||||
private enum REPORTTYPE {
|
||||
TTAA, TTBB, TTCC, TTDD, PPAA, PPBB, PPCC, PPDD, UUAA, UUBB, UUCC, UUDD, XXAA, XXBB, XXCC, XXDD
|
||||
};
|
||||
|
||||
/**
|
||||
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! It is important to
|
||||
* keep this up to date or risk breaking backwards compatibility
|
||||
* uu
|
||||
* keep this up to date or risk breaking backwards compatibility uu
|
||||
*/
|
||||
private static final String[] ALL_PARAMS = { RAW_DATA, UTC, REPORT_TYPE, STATION_ID,
|
||||
ISSUE_TIME, OBS_TIME, SYNOPTIC_TIME, DATAURI, DATA_TYPE, CORRECTION_INDICATOR,
|
||||
WMO_HEADER, STATION_NUMBER, LATITUDE, LONGITUDE, ELEVATION, NIL,
|
||||
TTAA_PRES, TTAA_TEMP, TTAA_DWPT, TTAA_DRCT, TTAA_SPED, TTAA_HGHT,
|
||||
TTBB_PRES, TTBB_TEMP, TTBB_DWPT,
|
||||
TTCC_PRES, TTCC_TEMP, TTCC_DWPT, TTCC_DRCT, TTCC_SPED, TTCC_HGHT,
|
||||
TTDD_PRES, TTDD_TEMP, TTDD_DWPT,
|
||||
PPAA_PRES, PPAA_TEMP, PPAA_DWPT, PPAA_DRCT, PPAA_SPED, PPAA_HGHT,
|
||||
PPBB_DRCT, PPBB_SPED, PPBB_HGHT,
|
||||
PPCC_PRES, PPCC_TEMP, PPCC_DWPT, PPCC_DRCT, PPCC_SPED, PPCC_HGHT,
|
||||
PPDD_DRCT, PPDD_SPED, PPDD_HGHT,
|
||||
TROP_PRES, TROP_TEMP, TROP_DWPT, TROP_DRCT, TROP_SPED, WMAX_PRES,
|
||||
WMAX_DRCT, WMAX_SPED, WMAX_LO_SHEAR, WMAX_HI_SHEAR,
|
||||
TTAA_LIFT, TTAA_LO_MEAN_DRCT, TTAA_LO_MEAN_SPED, TTAA_HI_MEAN_DRCT, TTAA_HI_MEAN_SPED,
|
||||
TTBB_LIFT, TTBB_LO_MEAN_DRCT, TTBB_LO_MEAN_SPED, TTBB_HI_MEAN_DRCT, TTAA_HI_MEAN_SPED,};
|
||||
private static final String[] ALL_PARAMS = { RAW_DATA, UTC, REPORT_TYPE,
|
||||
STATION_ID, ISSUE_TIME, OBS_TIME, SYNOPTIC_TIME, DATAURI,
|
||||
DATA_TYPE, CORRECTION_INDICATOR, WMO_HEADER, STATION_NUMBER,
|
||||
LATITUDE, LONGITUDE, ELEVATION, NIL, TTAA_PRES, TTAA_TEMP,
|
||||
TTAA_DWPT, TTAA_DRCT, TTAA_SPED, TTAA_HGHT, TTBB_PRES, TTBB_TEMP,
|
||||
TTBB_DWPT, TTCC_PRES, TTCC_TEMP, TTCC_DWPT, TTCC_DRCT, TTCC_SPED,
|
||||
TTCC_HGHT, TTDD_PRES, TTDD_TEMP, TTDD_DWPT, PPAA_PRES, PPAA_TEMP,
|
||||
PPAA_DWPT, PPAA_DRCT, PPAA_SPED, PPAA_HGHT, PPBB_DRCT, PPBB_SPED,
|
||||
PPBB_HGHT, PPCC_PRES, PPCC_TEMP, PPCC_DWPT, PPCC_DRCT, PPCC_SPED,
|
||||
PPCC_HGHT, PPDD_DRCT, PPDD_SPED, PPDD_HGHT, TROP_PRES, TROP_TEMP,
|
||||
TROP_DWPT, TROP_DRCT, TROP_SPED, WMAX_PRES, WMAX_DRCT, WMAX_SPED,
|
||||
WMAX_LO_SHEAR, WMAX_HI_SHEAR, TTAA_LIFT, TTAA_LO_MEAN_DRCT,
|
||||
TTAA_LO_MEAN_SPED, TTAA_HI_MEAN_DRCT, TTAA_HI_MEAN_SPED, TTBB_LIFT,
|
||||
TTBB_LO_MEAN_DRCT, TTBB_LO_MEAN_SPED, TTBB_HI_MEAN_DRCT,
|
||||
TTAA_HI_MEAN_SPED, XXAA_PRES, XXAA_TEMP, XXAA_DWPT, XXAA_DRCT,
|
||||
XXAA_SPED, XXAA_HGHT, XXBB_PRES, XXBB_TEMP, XXBB_DWPT, XXCC_PRES,
|
||||
XXCC_TEMP, XXCC_DWPT, XXCC_DRCT, XXCC_SPED, XXCC_HGHT, XXDD_PRES,
|
||||
XXDD_TEMP, XXDD_DWPT };
|
||||
|
||||
public static final String ALL_PARAMS_LIST;
|
||||
static {
|
||||
|
@ -172,7 +282,8 @@ public class NcUairToPointData {
|
|||
|
||||
public PluginDataObject[] toPointData(PluginDataObject[] pdo) {
|
||||
// long curTime = System.currentTimeMillis();
|
||||
//System.out.println("H5 uair toPointData entered, pdo size = "+ pdo.length);
|
||||
// System.out.println("H5 uair toPointData entered, pdo size = "+
|
||||
// pdo.length);
|
||||
if (pdo.length > 0) {
|
||||
Map<File, PointDataContainer> pointMap = new HashMap<File, PointDataContainer>();
|
||||
|
||||
|
@ -254,7 +365,8 @@ public class NcUairToPointData {
|
|||
if (record.getObsTime() != null)
|
||||
pdv.setLong(OBS_TIME, record.getObsTime().getTime().getTime());
|
||||
if (record.getSynopticTime() != null)
|
||||
pdv.setLong(SYNOPTIC_TIME, record.getSynopticTime().getTime().getTime());
|
||||
pdv.setLong(SYNOPTIC_TIME, record.getSynopticTime().getTime()
|
||||
.getTime());
|
||||
if (record.getIssueTime() != null)
|
||||
pdv.setLong(ISSUE_TIME, record.getIssueTime().getTime().getTime());
|
||||
pdv.setString(DATAURI, record.getDataURI());
|
||||
|
@ -274,7 +386,7 @@ public class NcUairToPointData {
|
|||
|
||||
case TTAA:
|
||||
case UUAA:
|
||||
case XXAA:
|
||||
|
||||
index = 0;
|
||||
if (sls != null) {
|
||||
while (sls.hasNext()) {
|
||||
|
@ -292,11 +404,30 @@ public class NcUairToPointData {
|
|||
pdv.setInt("numTTAA", index);
|
||||
}
|
||||
|
||||
break;
|
||||
case XXAA:
|
||||
index = 0;
|
||||
if (sls != null) {
|
||||
while (sls.hasNext()) {
|
||||
NcUairObsLevels sl = sls.next();
|
||||
if (sl.getPres() > 0 && index < maxManLevel) {
|
||||
pdv.setFloat(XXAA_PRES, sl.getPres(), index);
|
||||
pdv.setFloat(XXAA_HGHT, sl.getHght(), index);
|
||||
pdv.setFloat(XXAA_TEMP, sl.getTemp(), index);
|
||||
pdv.setFloat(XXAA_DWPT, sl.getDwpt(), index);
|
||||
pdv.setFloat(XXAA_DRCT, sl.getDrct(), index);
|
||||
pdv.setFloat(XXAA_SPED, sl.getSped(), index);
|
||||
index++;
|
||||
}
|
||||
}
|
||||
pdv.setInt("numXXAA", index);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case TTBB:
|
||||
case UUBB:
|
||||
case XXBB:
|
||||
|
||||
index = 0;
|
||||
if (sls != null) {
|
||||
while (sls.hasNext()) {
|
||||
|
@ -311,10 +442,25 @@ public class NcUairToPointData {
|
|||
pdv.setInt("numTTBB", index);
|
||||
}
|
||||
break;
|
||||
case XXBB:
|
||||
index = 0;
|
||||
if (sls != null) {
|
||||
while (sls.hasNext()) {
|
||||
NcUairObsLevels sl = sls.next();
|
||||
if (sl.getPres() > 0 && index < maxSigTempLevel) {
|
||||
pdv.setFloat(XXBB_PRES, sl.getPres(), index);
|
||||
pdv.setFloat(XXBB_TEMP, sl.getTemp(), index);
|
||||
pdv.setFloat(XXBB_DWPT, sl.getDwpt(), index);
|
||||
index++;
|
||||
}
|
||||
}
|
||||
pdv.setInt("numXXBB", index);
|
||||
}
|
||||
break;
|
||||
|
||||
case TTCC:
|
||||
case UUCC:
|
||||
case XXCC:
|
||||
|
||||
index = 0;
|
||||
if (sls != null) {
|
||||
while (sls.hasNext()) {
|
||||
|
@ -333,10 +479,29 @@ public class NcUairToPointData {
|
|||
pdv.setInt("numTTCC", index);
|
||||
}
|
||||
break;
|
||||
case XXCC:
|
||||
index = 0;
|
||||
if (sls != null) {
|
||||
while (sls.hasNext()) {
|
||||
NcUairObsLevels sl = sls.next();
|
||||
if (sl.getPres() > 0 && index < maxManLevel) {
|
||||
|
||||
pdv.setFloat(XXCC_PRES, sl.getPres(), index);
|
||||
pdv.setFloat(XXCC_HGHT, sl.getHght(), index);
|
||||
pdv.setFloat(XXCC_TEMP, sl.getTemp(), index);
|
||||
pdv.setFloat(XXCC_DWPT, sl.getDwpt(), index);
|
||||
pdv.setFloat(XXCC_DRCT, sl.getDrct(), index);
|
||||
pdv.setFloat(XXCC_SPED, sl.getSped(), index);
|
||||
index++;
|
||||
}
|
||||
}
|
||||
pdv.setInt("numXXCC", index);
|
||||
}
|
||||
break;
|
||||
|
||||
case TTDD:
|
||||
case UUDD:
|
||||
case XXDD:
|
||||
|
||||
index = 0;
|
||||
if (sls != null) {
|
||||
while (sls.hasNext()) {
|
||||
|
@ -351,6 +516,21 @@ public class NcUairToPointData {
|
|||
pdv.setInt("numTTDD", index);
|
||||
}
|
||||
break;
|
||||
case XXDD:
|
||||
index = 0;
|
||||
if (sls != null) {
|
||||
while (sls.hasNext()) {
|
||||
NcUairObsLevels sl = sls.next();
|
||||
if (sl.getPres() > 0 && index < maxSigTempLevel) {
|
||||
pdv.setFloat(XXDD_PRES, sl.getPres(), index);
|
||||
pdv.setFloat(XXDD_TEMP, sl.getTemp(), index);
|
||||
pdv.setFloat(XXDD_DWPT, sl.getDwpt(), index);
|
||||
index++;
|
||||
}
|
||||
}
|
||||
pdv.setInt("numXXDD", index);
|
||||
}
|
||||
break;
|
||||
|
||||
case PPAA:
|
||||
index = 0;
|
||||
|
@ -391,7 +571,8 @@ public class NcUairToPointData {
|
|||
if (sls != null) {
|
||||
while (sls.hasNext()) {
|
||||
NcUairObsLevels sl = sls.next();
|
||||
if ( (sl.getPres() > 0 || sl.getHght() > 0 ) && index < maxManLevel ) {
|
||||
if ((sl.getPres() > 0 || sl.getHght() > 0)
|
||||
&& index < maxManLevel) {
|
||||
pdv.setFloat(PPCC_PRES, sl.getPres(), index);
|
||||
pdv.setFloat(PPCC_HGHT, sl.getHght(), index);
|
||||
pdv.setFloat(PPCC_TEMP, sl.getTemp(), index);
|
||||
|
@ -424,9 +605,9 @@ public class NcUairToPointData {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
if (record.getTropopause() != null) {
|
||||
Iterator<NcUairTropopause> trops = record.getTropopause().iterator();
|
||||
Iterator<NcUairTropopause> trops = record.getTropopause()
|
||||
.iterator();
|
||||
index = 0;
|
||||
if (trops != null) {
|
||||
while (trops.hasNext()) {
|
||||
|
@ -464,7 +645,8 @@ public class NcUairToPointData {
|
|||
}
|
||||
|
||||
if (record.getLiftedIndex() != null) {
|
||||
Iterator<NcUairLiftedIndex> miscs = record.getLiftedIndex().iterator();
|
||||
Iterator<NcUairLiftedIndex> miscs = record.getLiftedIndex()
|
||||
.iterator();
|
||||
index = 0;
|
||||
if (miscs != null) {
|
||||
while (miscs.hasNext()) {
|
||||
|
@ -472,16 +654,24 @@ public class NcUairToPointData {
|
|||
if (index < maxMiscLevel) {
|
||||
if (record.getDataType().equals("TTAA")) {
|
||||
pdv.setFloat(TTAA_LIFT, misc.getLiTemp(), index);
|
||||
pdv.setFloat(TTAA_LO_MEAN_DRCT, misc.getLoDrct(), index);
|
||||
pdv.setFloat(TTAA_LO_MEAN_SPED, misc.getLoSped(), index);
|
||||
pdv.setFloat(TTAA_HI_MEAN_DRCT, misc.getHiDrct(), index);
|
||||
pdv.setFloat(TTAA_HI_MEAN_SPED, misc.getHiSped(), index);
|
||||
pdv.setFloat(TTAA_LO_MEAN_DRCT, misc.getLoDrct(),
|
||||
index);
|
||||
pdv.setFloat(TTAA_LO_MEAN_SPED, misc.getLoSped(),
|
||||
index);
|
||||
pdv.setFloat(TTAA_HI_MEAN_DRCT, misc.getHiDrct(),
|
||||
index);
|
||||
pdv.setFloat(TTAA_HI_MEAN_SPED, misc.getHiSped(),
|
||||
index);
|
||||
} else {
|
||||
pdv.setFloat(TTBB_LIFT, misc.getLiTemp(), index);
|
||||
pdv.setFloat(TTBB_LO_MEAN_DRCT, misc.getLoDrct(), index);
|
||||
pdv.setFloat(TTBB_LO_MEAN_SPED, misc.getLoSped(), index);
|
||||
pdv.setFloat(TTBB_HI_MEAN_DRCT, misc.getHiDrct(), index);
|
||||
pdv.setFloat(TTBB_HI_MEAN_SPED, misc.getHiSped(), index);
|
||||
pdv.setFloat(TTBB_LO_MEAN_DRCT, misc.getLoDrct(),
|
||||
index);
|
||||
pdv.setFloat(TTBB_LO_MEAN_SPED, misc.getLoSped(),
|
||||
index);
|
||||
pdv.setFloat(TTBB_HI_MEAN_DRCT, misc.getHiDrct(),
|
||||
index);
|
||||
pdv.setFloat(TTBB_HI_MEAN_SPED, misc.getHiSped(),
|
||||
index);
|
||||
}
|
||||
index++;
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
* 09/2011 457 S. Gurung Renamed H5 to Nc and h5 to nc
|
||||
* 10/2011 S. Gurung Added changes related to getting stid/lat/lon/elev
|
||||
* from database instead of snstns.xml file
|
||||
*
|
||||
* 6/2014 T.Lee Added support XXAA, XXBB, XXCC, XXDD
|
||||
* </pre>
|
||||
*
|
||||
* This code has been developed by the SIB for use in the AWIPS2 system.
|
||||
|
@ -24,6 +24,12 @@
|
|||
|
||||
package gov.noaa.nws.ncep.common.dataplugin.ncuair.dao;
|
||||
|
||||
import gov.noaa.nws.ncep.common.dataplugin.ncuair.NcUairLiftedIndex;
|
||||
import gov.noaa.nws.ncep.common.dataplugin.ncuair.NcUairMaxWind;
|
||||
import gov.noaa.nws.ncep.common.dataplugin.ncuair.NcUairObsLevels;
|
||||
import gov.noaa.nws.ncep.common.dataplugin.ncuair.NcUairRecord;
|
||||
import gov.noaa.nws.ncep.common.dataplugin.ncuair.NcUairTropopause;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
@ -36,16 +42,11 @@ import com.raytheon.uf.common.pointdata.PointDataView;
|
|||
import com.raytheon.uf.common.pointdata.spatial.SurfaceObsLocation;
|
||||
import com.raytheon.uf.edex.decodertools.time.TimeTools;
|
||||
|
||||
import gov.noaa.nws.ncep.common.dataplugin.ncuair.NcUairLiftedIndex;
|
||||
import gov.noaa.nws.ncep.common.dataplugin.ncuair.NcUairMaxWind;
|
||||
import gov.noaa.nws.ncep.common.dataplugin.ncuair.NcUairObsLevels;
|
||||
import gov.noaa.nws.ncep.common.dataplugin.ncuair.NcUairTropopause;
|
||||
import gov.noaa.nws.ncep.common.dataplugin.ncuair.NcUairRecord;
|
||||
|
||||
public class NcUairToRecord {
|
||||
|
||||
/** The logger */
|
||||
private static Log logger = LogFactory.getLog(NcUairToRecord.class);
|
||||
|
||||
public static final String HDR_PARAMS_LIST;
|
||||
static {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
|
@ -149,10 +150,36 @@ public class NcUairToRecord {
|
|||
sb.append("TTBB_LO_MEAN_DRCT,");
|
||||
sb.append("TTBB_LO_MEAN_SPED,");
|
||||
sb.append("TTBB_HI_MEAN_DRCT,");
|
||||
sb.append("TTBB_HI_MEAN_SPED");
|
||||
sb.append("TTBB_HI_MEAN_SPED,");
|
||||
// -------------------------
|
||||
sb.append("numXXAA,");
|
||||
sb.append("XXAA_PRES,");
|
||||
sb.append("XXAA_TEMP,");
|
||||
sb.append("XXAA_DWPT,");
|
||||
sb.append("XXAA_DRCT,");
|
||||
sb.append("XXAA_SPED,");
|
||||
sb.append("XXAA_HGHT,");
|
||||
// -------------------------
|
||||
sb.append("numXXBB,");
|
||||
sb.append("XXBB_PRES,");
|
||||
sb.append("XXBB_TEMP,");
|
||||
sb.append("XXBB_DWPT,");
|
||||
// --------------------------
|
||||
sb.append("numXXCC,");
|
||||
sb.append("XXCC_PRES,");
|
||||
sb.append("XXCC_TEMP,");
|
||||
sb.append("XXCC_DWPT,");
|
||||
sb.append("XXCC_DRCT,");
|
||||
sb.append("XXCC_SPED,");
|
||||
sb.append("XXCC_HGHT,");
|
||||
// -------------------------
|
||||
sb.append("numXXDD,");
|
||||
sb.append("XXDD_PRES,");
|
||||
sb.append("XXDD_TEMP,");
|
||||
sb.append("XXDD_DWPT");
|
||||
MAN_PARAMS_LIST = sb.toString();
|
||||
}
|
||||
|
||||
// static int count=0;
|
||||
private static NcUairRecord getNcUairRecord(PointDataView pdv) {
|
||||
NcUairRecord record = null;
|
||||
|
@ -166,8 +193,7 @@ public class NcUairToRecord {
|
|||
String uri = pdv.getString("DATAURI");
|
||||
logger.debug("URI = " + uri);
|
||||
record = new NcUairRecord(uri);
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
// System.out.println("no data uri");
|
||||
record = new NcUairRecord();
|
||||
}
|
||||
|
@ -210,6 +236,7 @@ public class NcUairToRecord {
|
|||
}
|
||||
return record;
|
||||
}
|
||||
|
||||
private static NcUairRecord getTTAA(PointDataView pdv, NcUairRecord record) {
|
||||
NcUairObsLevels obslevels;
|
||||
|
||||
|
@ -429,6 +456,7 @@ public class NcUairToRecord {
|
|||
}
|
||||
return record;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param pdv
|
||||
* @param record
|
||||
|
@ -495,6 +523,7 @@ public class NcUairToRecord {
|
|||
}
|
||||
return record;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param pdv
|
||||
* @param record
|
||||
|
@ -529,6 +558,7 @@ public class NcUairToRecord {
|
|||
}
|
||||
return record;
|
||||
}
|
||||
|
||||
private static NcUairRecord getTTDD(PointDataView pdv, NcUairRecord record) {
|
||||
if (record != null) {
|
||||
Set<String> parameters = pdv.getContainer().getParameters();
|
||||
|
@ -566,7 +596,6 @@ public class NcUairToRecord {
|
|||
temp = pdv.getNumberAllLevels("TTBB_TEMP");
|
||||
dwpt = pdv.getNumberAllLevels("TTBB_DWPT");
|
||||
|
||||
|
||||
for (int i = 0; i < numTTBB.intValue(); i++) {
|
||||
NcUairObsLevels obslevels = new NcUairObsLevels();
|
||||
obslevels.setPres(pres[i].floatValue());
|
||||
|
@ -606,12 +635,238 @@ public class NcUairToRecord {
|
|||
return record;
|
||||
}
|
||||
|
||||
private static NcUairRecord getXXAA(PointDataView pdv, NcUairRecord record) {
|
||||
NcUairObsLevels obslevels;
|
||||
// System.out.println(" GetXXAA !!!!!!!");
|
||||
|
||||
/*
|
||||
* Add XXAA data
|
||||
*/
|
||||
if (record != null) {
|
||||
Set<String> parameters = pdv.getContainer().getParameters();
|
||||
// for (String pam : parameters)
|
||||
// System.out.println("parm=" + pam);
|
||||
Number[] pres, hght, temp, dwpt, drct, sped;
|
||||
if (parameters.contains("numXXAA")) {
|
||||
Number numXXAA = pdv.getInt("numXXAA");
|
||||
if (numXXAA != null) {
|
||||
// System.out.println("numXXAA=" + numXXAA);
|
||||
pres = pdv.getNumberAllLevels("XXAA_PRES");
|
||||
hght = pdv.getNumberAllLevels("XXAA_HGHT");
|
||||
temp = pdv.getNumberAllLevels("XXAA_TEMP");
|
||||
dwpt = pdv.getNumberAllLevels("XXAA_DWPT");
|
||||
drct = pdv.getNumberAllLevels("XXAA_DRCT");
|
||||
sped = pdv.getNumberAllLevels("XXAA_SPED");
|
||||
|
||||
for (int i = 0; i < numXXAA.intValue(); i++) {
|
||||
obslevels = new NcUairObsLevels();
|
||||
obslevels.setPres(pres[i].floatValue());
|
||||
obslevels.setHght(hght[i].floatValue());
|
||||
obslevels.setTemp(temp[i].floatValue());
|
||||
obslevels.setDwpt(dwpt[i].floatValue());
|
||||
obslevels.setDrct(drct[i].floatValue());
|
||||
obslevels.setSped(sped[i].floatValue());
|
||||
// System.out.println("level pres=" +
|
||||
// obslevels.getPres());
|
||||
record.addObsLevels(obslevels);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Add tropopause data
|
||||
*/
|
||||
if (parameters.contains("numTrop")) {
|
||||
Number numTrop = pdv.getInt("numTrop");
|
||||
if (numTrop != null) {
|
||||
// System.out.println("numTropA="+numTrop);
|
||||
pres = pdv.getNumberAllLevels("TROP_PRES");
|
||||
temp = pdv.getNumberAllLevels("TROP_TEMP");
|
||||
dwpt = pdv.getNumberAllLevels("TROP_DWPT");
|
||||
drct = pdv.getNumberAllLevels("TROP_DRCT");
|
||||
sped = pdv.getNumberAllLevels("TROP_SPED");
|
||||
for (int i = 0; i < numTrop.intValue(); i++) {
|
||||
NcUairTropopause trop = new NcUairTropopause();
|
||||
trop.setPres(pres[i].floatValue());
|
||||
trop.setTemp(temp[i].floatValue());
|
||||
trop.setDwpt(dwpt[i].floatValue());
|
||||
trop.setDrct(drct[i].floatValue());
|
||||
trop.setSped(sped[i].floatValue());
|
||||
record.addTropopause(trop);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Add max wind data
|
||||
*/
|
||||
if (parameters.contains("numWmax")) {
|
||||
Number numWmax = pdv.getInt("numWmax");
|
||||
if (numWmax != null) {
|
||||
// System.out.println("numWmaxA="+numWmax);
|
||||
Number[] lo_shear = pdv.getNumberAllLevels("WMAX_LO_SHEAR");
|
||||
Number[] hi_shear = pdv.getNumberAllLevels("WMAX_HI_SHEAR");
|
||||
pres = pdv.getNumberAllLevels("WMAX_PRES");
|
||||
drct = pdv.getNumberAllLevels("WMAX_DRCT");
|
||||
sped = pdv.getNumberAllLevels("WMAX_SPED");
|
||||
|
||||
for (int i = 0; i < numWmax.intValue(); i++) {
|
||||
NcUairMaxWind wmax = new NcUairMaxWind();
|
||||
wmax.setPres(pres[i].floatValue());
|
||||
wmax.setDrct(drct[i].floatValue());
|
||||
wmax.setSped(sped[i].floatValue());
|
||||
wmax.setHiShear(hi_shear[i].floatValue());
|
||||
wmax.setLoShear(lo_shear[i].floatValue());
|
||||
record.addMaxWind(wmax);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (record == null) {
|
||||
System.out.println(" NcUairToRecord/ record is null!!!!!!!");
|
||||
}
|
||||
return record;
|
||||
}
|
||||
|
||||
private static NcUairRecord getXXCC(PointDataView pdv, NcUairRecord record) {
|
||||
if (record != null) {
|
||||
Set<String> parameters = pdv.getContainer().getParameters();
|
||||
Number[] pres, hght, temp, dwpt, drct, sped;
|
||||
if (parameters.contains("numXXCC")) {
|
||||
Number numXXCC = pdv.getInt("numXXCC");
|
||||
if (numXXCC != null) {
|
||||
// System.out.println("numXXCC="+numXXCC);
|
||||
NcUairObsLevels obslevels;
|
||||
pres = pdv.getNumberAllLevels("XXCC_PRES");
|
||||
hght = pdv.getNumberAllLevels("XXCC_HGHT");
|
||||
temp = pdv.getNumberAllLevels("XXCC_TEMP");
|
||||
dwpt = pdv.getNumberAllLevels("XXCC_DWPT");
|
||||
drct = pdv.getNumberAllLevels("XXCC_DRCT");
|
||||
sped = pdv.getNumberAllLevels("XXCC_SPED");
|
||||
for (int i = 0; i < numXXCC.intValue(); i++) {
|
||||
obslevels = new NcUairObsLevels();
|
||||
obslevels.setPres(pres[i].floatValue());
|
||||
obslevels.setHght(hght[i].floatValue());
|
||||
obslevels.setTemp(temp[i].floatValue());
|
||||
obslevels.setDwpt(dwpt[i].floatValue());
|
||||
obslevels.setDrct(drct[i].floatValue());
|
||||
obslevels.setSped(sped[i].floatValue());
|
||||
record.addObsLevels(obslevels);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Add tropopause data
|
||||
*/
|
||||
if (parameters.contains("numTrop")) {
|
||||
Number numTrop = pdv.getInt("numTrop");
|
||||
if (numTrop != null) {
|
||||
// System.out.println("numTropC="+numTrop);
|
||||
pres = pdv.getNumberAllLevels("TROP_PRES");
|
||||
temp = pdv.getNumberAllLevels("TROP_TEMP");
|
||||
dwpt = pdv.getNumberAllLevels("TROP_DWPT");
|
||||
drct = pdv.getNumberAllLevels("TROP_DRCT");
|
||||
sped = pdv.getNumberAllLevels("TROP_SPED");
|
||||
for (int i = 0; i < numTrop.intValue(); i++) {
|
||||
NcUairTropopause trop = new NcUairTropopause();
|
||||
trop.setPres(pres[i].floatValue());
|
||||
trop.setTemp(temp[i].floatValue());
|
||||
trop.setDwpt(dwpt[i].floatValue());
|
||||
trop.setDrct(drct[i].floatValue());
|
||||
trop.setSped(sped[i].floatValue());
|
||||
record.addTropopause(trop);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Add max wind data
|
||||
*/
|
||||
if (parameters.contains("numWmax")) {
|
||||
Number numWmax = pdv.getInt("numWmax");
|
||||
if (numWmax != null) {
|
||||
// System.out.println("numWmaxC="+numWmax);
|
||||
Number[] lo_shear = pdv.getNumberAllLevels("WMAX_LO_SHEAR");
|
||||
Number[] hi_shear = pdv.getNumberAllLevels("WMAX_HI_SHEAR");
|
||||
pres = pdv.getNumberAllLevels("WMAX_PRES");
|
||||
drct = pdv.getNumberAllLevels("WMAX_DRCT");
|
||||
sped = pdv.getNumberAllLevels("WMAX_SPED");
|
||||
|
||||
for (int i = 0; i < numWmax.intValue(); i++) {
|
||||
NcUairMaxWind wmax = new NcUairMaxWind();
|
||||
wmax.setPres(pres[i].floatValue());
|
||||
wmax.setDrct(drct[i].floatValue());
|
||||
wmax.setSped(sped[i].floatValue());
|
||||
wmax.setHiShear(hi_shear[i].floatValue());
|
||||
wmax.setLoShear(lo_shear[i].floatValue());
|
||||
record.addMaxWind(wmax);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return record;
|
||||
}
|
||||
|
||||
private static NcUairRecord getXXBB(PointDataView pdv, NcUairRecord record) {
|
||||
if (record != null) {
|
||||
Set<String> parameters = pdv.getContainer().getParameters();
|
||||
if (parameters.contains("numXXBB")) {
|
||||
|
||||
Number numXXBB = pdv.getInt("numXXBB");
|
||||
if (numXXBB != null) {
|
||||
// System.out.println("numXXBB="+numXXBB);
|
||||
Number[] pres, temp, dwpt;
|
||||
pres = pdv.getNumberAllLevels("XXBB_PRES");
|
||||
temp = pdv.getNumberAllLevels("XXBB_TEMP");
|
||||
dwpt = pdv.getNumberAllLevels("XXBB_DWPT");
|
||||
|
||||
for (int i = 0; i < numXXBB.intValue(); i++) {
|
||||
NcUairObsLevels obslevels = new NcUairObsLevels();
|
||||
obslevels.setPres(pres[i].floatValue());
|
||||
obslevels.setTemp(temp[i].floatValue());
|
||||
obslevels.setDwpt(dwpt[i].floatValue());
|
||||
record.addObsLevels(obslevels);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return record;
|
||||
}
|
||||
|
||||
private static NcUairRecord getXXDD(PointDataView pdv, NcUairRecord record) {
|
||||
if (record != null) {
|
||||
Set<String> parameters = pdv.getContainer().getParameters();
|
||||
if (parameters.contains("numXXDD")) {
|
||||
Number numXXDD = pdv.getInt("numXXDD");
|
||||
if (numXXDD != null) {
|
||||
Number[] pres, temp, dwpt;
|
||||
// System.out.println("numXXDD="+numXXDD);
|
||||
pres = pdv.getNumberAllLevels("XXDD_PRES");
|
||||
temp = pdv.getNumberAllLevels("XXDD_TEMP");
|
||||
dwpt = pdv.getNumberAllLevels("XXDD_DWPT");
|
||||
for (int i = 0; i < numXXDD.intValue(); i++) {
|
||||
NcUairObsLevels obslevels = new NcUairObsLevels();
|
||||
obslevels.setPres(pres[i].floatValue());
|
||||
obslevels.setTemp(temp[i].floatValue());
|
||||
obslevels.setDwpt(dwpt[i].floatValue());
|
||||
record.addObsLevels(obslevels);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return record;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param container
|
||||
* @return
|
||||
*/
|
||||
|
||||
private enum DATATYPE {TTAA, TTBB, TTCC, TTDD, PPAA, PPBB, PPCC, PPDD, XXAA, XXBB, XXCC, XXDD, UUAA, UUBB, UUCC, UUDD};
|
||||
private enum DATATYPE {
|
||||
TTAA, TTBB, TTCC, TTDD, PPAA, PPBB, PPCC, PPDD, XXAA, XXBB, XXCC, XXDD, UUAA, UUBB, UUCC, UUDD
|
||||
};
|
||||
|
||||
public static NcUairRecord[] toNcUairRecords(PointDataContainer container) {
|
||||
List<NcUairRecord> records = new ArrayList<NcUairRecord>();
|
||||
container.setCurrentSz(container.getAllocatedSz());
|
||||
|
@ -644,6 +899,18 @@ public class NcUairToRecord {
|
|||
case PPDD:
|
||||
record = getPPDD(pdv, record);
|
||||
break;
|
||||
case XXAA:
|
||||
record = getXXAA(pdv, record);
|
||||
break;
|
||||
case XXCC:
|
||||
record = getXXCC(pdv, record);
|
||||
break;
|
||||
case XXBB:
|
||||
record = getXXBB(pdv, record);
|
||||
break;
|
||||
case XXDD:
|
||||
record = getXXDD(pdv, record);
|
||||
break;
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
|
@ -652,7 +919,9 @@ public class NcUairToRecord {
|
|||
}
|
||||
return records.toArray(new NcUairRecord[records.size()]);
|
||||
}
|
||||
public static List<NcUairRecord> toNcUairRecordsList(PointDataContainer container) {
|
||||
|
||||
public static List<NcUairRecord> toNcUairRecordsList(
|
||||
PointDataContainer container) {
|
||||
List<NcUairRecord> records = new ArrayList<NcUairRecord>();
|
||||
container.setCurrentSz(container.getAllocatedSz());
|
||||
for (int i = 0; i < container.getCurrentSz(); i++) {
|
||||
|
@ -684,6 +953,18 @@ public class NcUairToRecord {
|
|||
case PPDD:
|
||||
record = getPPDD(pdv, record);
|
||||
break;
|
||||
case XXAA:
|
||||
record = getXXAA(pdv, record);
|
||||
break;
|
||||
case XXCC:
|
||||
record = getXXCC(pdv, record);
|
||||
break;
|
||||
case XXBB:
|
||||
record = getXXBB(pdv, record);
|
||||
break;
|
||||
case XXDD:
|
||||
record = getXXDD(pdv, record);
|
||||
break;
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -51,12 +51,26 @@ public class PressChange3Hr extends AbstractMetParameter implements javax.measur
|
|||
Number n = (Number) new Integer(ptsy.getStringValue());
|
||||
Amount ptsyAmount = new Amount(n, Unit.ONE);
|
||||
Amount theP03CAmount = PRLibrary.prP03CAbsVal(p, ptsyAmount);
|
||||
this.setAssociatedMetParam(copyDerivedPTSY(ptsy));
|
||||
this.setValue(theP03CAmount);
|
||||
|
||||
} else {
|
||||
this.setValueToMissing();
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
private PressureTendencySymbol copyDerivedPTSY(PressureTendencySymbol ptsy) {
|
||||
|
||||
PressureTendencySymbol cptsy = new PressureTendencySymbol();
|
||||
|
||||
cptsy.setDataTime(ptsy.getDataTime());
|
||||
cptsy.setStringValue(ptsy.getStringValue());
|
||||
cptsy.setUnit(ptsy.getUnit());
|
||||
cptsy.setValidTime(ptsy.getValidTime());
|
||||
|
||||
return cptsy;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -38,17 +38,8 @@ public class PressureChange3HrAndTendency extends AbstractMetParameter implement
|
|||
Number n = (Number) new Integer(ptsy.getStringValue());
|
||||
Amount ptsyAmount = new Amount(n, Unit.ONE);
|
||||
Amount theP03CAmount = PRLibrary.prP03CAbsVal(p, ptsyAmount);
|
||||
|
||||
this.setValue(theP03CAmount);
|
||||
this.setAssociatedMetParam(copyDerivedPTSY(ptsy));
|
||||
|
||||
// Works, ptsy values can be seen form here
|
||||
// System.out.print("==> derive called: ptsy: " + ptsy.toString());
|
||||
if (this.getAssociatedMetParam() == null) {
|
||||
// System.out.print(": BUT assoc metparm IS NULL");
|
||||
} else {
|
||||
// System.out.println(": ASSOC metparm to string: " + this.getAssociatedMetParam().toString());
|
||||
}
|
||||
this.setValue(theP03CAmount);
|
||||
|
||||
} else {
|
||||
this.setValueToMissing();
|
||||
|
|
|
@ -865,12 +865,23 @@ public final class PRLibrary {
|
|||
|
||||
ptsyValue = ptsy.getValue().intValue();
|
||||
|
||||
// Make into a negative value
|
||||
if (ptsyValue > 0 && ptsyValue < 4) {
|
||||
p03c = Math.abs(p03cavValue) * -1;
|
||||
} // Positive value
|
||||
else if (ptsyValue > 4 && ptsyValue < 8) {
|
||||
// No sign
|
||||
if (p03cavValue == 0.0) {
|
||||
return new Amount(p03cavValue, SI.PASCAL);
|
||||
}
|
||||
|
||||
// No sign
|
||||
if (ptsyValue == 4) {
|
||||
return new Amount(p03cavValue, SI.PASCAL);
|
||||
}
|
||||
|
||||
// Make into positive value
|
||||
if (ptsyValue >= 0 && ptsyValue <= 4) {
|
||||
p03c = Math.abs(p03cavValue);
|
||||
|
||||
} // Make into a negative value
|
||||
else if (ptsyValue > 4 && ptsyValue <= 8) {
|
||||
p03c = Math.abs(p03cavValue) * -1;
|
||||
}
|
||||
|
||||
return new Amount(p03c, SI.PASCAL);
|
||||
|
|
|
@ -154,6 +154,7 @@ public class NcSoundingLayer implements ISerializableObject, Cloneable {
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param pressure
|
||||
* @param geoHeight
|
||||
* @param temperature
|
||||
|
@ -164,8 +165,7 @@ public class NcSoundingLayer implements ISerializableObject, Cloneable {
|
|||
* @param windV
|
||||
* @param omega
|
||||
* @param specHumidity
|
||||
* @param dewDepression
|
||||
* @param dataType
|
||||
* @param dpd
|
||||
*/
|
||||
public NcSoundingLayer(float pressure, float geoHeight, float temperature,
|
||||
float dewpoint, float windSpeed, float windDirection, float windU,
|
||||
|
@ -187,6 +187,25 @@ public class NcSoundingLayer implements ISerializableObject, Cloneable {
|
|||
|
||||
}
|
||||
|
||||
public NcSoundingLayer(float pressure, float geoHeight, float temperature,
|
||||
float dewpoint, float windSpeed, float windDirection, float windU,
|
||||
float windV, float omega, float specHumidity, float relativeHumidity) {
|
||||
super();
|
||||
this.pressure = pressure;
|
||||
this.geoHeight = geoHeight;
|
||||
this.temperature = temperature;
|
||||
this.dewpoint = dewpoint;
|
||||
this.windSpeed = windSpeed;
|
||||
this.windDirection = windDirection;
|
||||
this.windU = windU;
|
||||
this.windV = windV;
|
||||
this.omega = omega;
|
||||
this.specHumidity = specHumidity;
|
||||
this.relativeHumidity = relativeHumidity;
|
||||
this.dpd = MISSING;
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* public String getDataType() { return dataType; }
|
||||
*
|
||||
|
@ -246,6 +265,24 @@ public class NcSoundingLayer implements ISerializableObject, Cloneable {
|
|||
this.temperature = temperature;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the dpd
|
||||
*/
|
||||
public float getDpd() {
|
||||
return dpd;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param dpd
|
||||
* the dpd to set
|
||||
*/
|
||||
public void setDpd(float dpd) {
|
||||
if (dpd == LEGACY_MISSING)
|
||||
this.dpd = MISSING;
|
||||
else
|
||||
this.dpd = dpd;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the dewpoint in Celsius
|
||||
*/
|
||||
|
@ -368,14 +405,6 @@ public class NcSoundingLayer implements ISerializableObject, Cloneable {
|
|||
this.relativeHumidity = relativeHumidity;
|
||||
}
|
||||
|
||||
public float getDpd() {
|
||||
return dpd;
|
||||
}
|
||||
|
||||
public void setDpd(float dpd) {
|
||||
this.dpd = dpd;
|
||||
}
|
||||
|
||||
private void computeUV() {
|
||||
if (windSpeed > MISSING && windDirection > MISSING) {
|
||||
Coordinate uv = uvComp(windSpeed, windDirection);
|
||||
|
@ -460,6 +489,7 @@ public class NcSoundingLayer implements ISerializableObject, Cloneable {
|
|||
|
||||
@Override
|
||||
public String toString() {
|
||||
|
||||
return "Pressure=" + getPressure() + "mb:Z=" + getGeoHeight() + "m:T="
|
||||
+ getTemperature() + "\u00B0C:Td=" + getDewpoint()
|
||||
+ "\u00B0C:WS=" + getWindSpeed() + "m/s:WD="
|
||||
|
|
|
@ -3951,6 +3951,18 @@
|
|||
<wfo></wfo>
|
||||
</station>
|
||||
<station>
|
||||
<stid>BTG</stid>
|
||||
<stnnum>000208</stnnum>
|
||||
<stnname>BATTLE_GROUND</stnname>
|
||||
<state>WA</state>
|
||||
<country>US</country>
|
||||
<latitude>45.75</latitude>
|
||||
<longitude>-122.59</longitude>
|
||||
<elevation>0</elevation>
|
||||
<priority>0</priority>
|
||||
<wfo></wfo>
|
||||
</station>
|
||||
<station> <!-- REPLACED BY BTG (ABOVE); KEEP PDX ENTRY ONLY AS LONG AS NEEDED TO DECODE LEGACY PRODUCTS, THEN DISCARD -->
|
||||
<stid>PDX</stid>
|
||||
<stnnum>000208</stnnum>
|
||||
<stnname>PORTLAND</stnname>
|
||||
|
|
|
@ -104,6 +104,13 @@
|
|||
<regex>^FXCA20 KWBC (0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9]).*PMDCA.*</regex>
|
||||
<regex>^FXAK02 KWNH (0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9]).*PMDAK.*</regex>
|
||||
<regex>^NOUS42 KWBC (0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9]).+</regex>
|
||||
<regex>^AACN01 CWAO (0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9]).+</regex>
|
||||
<regex>^NOUS71 KWNO (0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9]).+</regex>
|
||||
<regex>^NOUS71 KNES (0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9]).+</regex>
|
||||
<regex>^NOUS72 KNES (0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9]).+</regex>
|
||||
<regex>^NOUS72 KNCF (0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9]).+</regex>
|
||||
<regex>^NOCN05 CWAO (0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9]).+</regex>
|
||||
<regex>^NOXX01 KWBC (0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9]).+</regex>
|
||||
<regex>^NOUS42 KWNO (0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9]).+</regex>
|
||||
<regex>^NPXX10 KWBC (0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9]).+</regex>
|
||||
<regex>^NPXX10 KWNO (0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9]).+</regex>
|
||||
|
|
|
@ -111,4 +111,31 @@
|
|||
<parameter name="TTBB_LO_MEAN_SPED" numDims="2" type="FLOAT" unit="m/s" dimension="maxMiscLevel"/>
|
||||
<parameter name="TTBB_HI_MEAN_DRCT" numDims="2" type="FLOAT" unit="degrees" dimension="maxMiscLevel"/>
|
||||
<parameter name="TTBB_HI_MEAN_SPED" numDims="2" type="FLOAT" unit="m/s" dimension="maxMiscLevel"/>
|
||||
|
||||
<parameter name="numXXAA" numDims="1" type="INT" />
|
||||
<parameter name="XXAA_PRES" numDims="2" type="FLOAT" unit="hPa" dimension="maxManLevel"/>
|
||||
<parameter name="XXAA_TEMP" numDims="2" type="FLOAT" unit="Celsius" dimension="maxManLevel"/>
|
||||
<parameter name="XXAA_DWPT" numDims="2" type="FLOAT" unit="Celsius" dimension="maxManLevel"/>
|
||||
<parameter name="XXAA_DRCT" numDims="2" type="FLOAT" unit="degrees" dimension="maxManLevel"/>
|
||||
<parameter name="XXAA_SPED" numDims="2" type="FLOAT" unit="m/s" dimension="maxManLevel"/>
|
||||
<parameter name="XXAA_HGHT" numDims="2" type="FLOAT" unit="m" dimension="maxManLevel"/>
|
||||
|
||||
<parameter name="numXXCC" numDims="1" type="INT" />
|
||||
<parameter name="XXCC_PRES" numDims="2" type="FLOAT" unit="hPa" dimension="maxManLevel"/>
|
||||
<parameter name="XXCC_TEMP" numDims="2" type="FLOAT" unit="Celsius" dimension="maxManLevel"/>
|
||||
<parameter name="XXCC_DWPT" numDims="2" type="FLOAT" unit="Celsius" dimension="maxManLevel"/>
|
||||
<parameter name="XXCC_DRCT" numDims="2" type="FLOAT" unit="degrees" dimension="maxManLevel"/>
|
||||
<parameter name="XXCC_SPED" numDims="2" type="FLOAT" unit="m/s" dimension="maxManLevel"/>
|
||||
<parameter name="XXCC_HGHT" numDims="2" type="FLOAT" unit="m" dimension="maxManLevel"/>
|
||||
|
||||
<parameter name="numXXBB" numDims="1" type="INT" />
|
||||
<parameter name="XXBB_PRES" numDims="2" type="FLOAT" unit="hPa" dimension="maxSigTempLevel"/>
|
||||
<parameter name="XXBB_TEMP" numDims="2" type="FLOAT" unit="Celsius" dimension="maxSigTempLevel"/>
|
||||
<parameter name="XXBB_DWPT" numDims="2" type="FLOAT" unit="Celsius" dimension="maxSigTempLevel"/>
|
||||
|
||||
<parameter name="numXXDD" numDims="1" type="INT" />
|
||||
<parameter name="XXDD_PRES" numDims="2" type="FLOAT" unit="hPa" dimension="maxSigTempLevel"/>
|
||||
<parameter name="XXDD_TEMP" numDims="2" type="FLOAT" unit="Celsius" dimension="maxSigTempLevel"/>
|
||||
<parameter name="XXDD_DWPT" numDims="2" type="FLOAT" unit="Celsius" dimension="maxSigTempLevel"/>
|
||||
|
||||
</pointDataDescription>
|
||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue