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:
Stephen Gilbert 2014-07-08 09:51:57 -04:00
parent 929305ce1d
commit 11d21bbe95
14 changed files with 3435 additions and 2708 deletions

View file

@ -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

View file

@ -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>

View file

@ -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>

View file

@ -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++;
}

View file

@ -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;
}

View file

@ -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;
}
}

View file

@ -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();

View file

@ -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);

View file

@ -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="

View file

@ -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>

View file

@ -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>

View file

@ -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>