gfe pull latest for edex: ncep_14.2.1

This commit is contained in:
mjames-upc 2014-09-26 17:27:06 -06:00
parent 0ca7aa3091
commit ac9164fd3f
15 changed files with 238 additions and 252 deletions

View file

@ -25,6 +25,7 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
@ -34,6 +35,7 @@ import java.util.Scanner;
import com.raytheon.edex.plugin.gfe.config.IFPServerConfig;
import com.raytheon.edex.plugin.gfe.config.IFPServerConfigManager;
import com.raytheon.edex.plugin.gfe.exception.GfeConfigurationException;
import com.raytheon.edex.plugin.gfe.server.IFPServer;
import com.raytheon.uf.common.dataplugin.gfe.GridDataHistory;
import com.raytheon.uf.common.dataplugin.gfe.GridDataHistory.OriginType;
import com.raytheon.uf.common.dataplugin.gfe.RemapGrid;
@ -46,6 +48,7 @@ import com.raytheon.uf.common.dataplugin.gfe.db.objects.GridParmInfo;
import com.raytheon.uf.common.dataplugin.gfe.db.objects.ParmID;
import com.raytheon.uf.common.dataplugin.gfe.db.objects.TimeConstraints;
import com.raytheon.uf.common.dataplugin.gfe.discrete.DiscreteKey;
import com.raytheon.uf.common.dataplugin.gfe.exception.GfeException;
import com.raytheon.uf.common.dataplugin.gfe.grid.Grid2DByte;
import com.raytheon.uf.common.dataplugin.gfe.grid.Grid2DFloat;
import com.raytheon.uf.common.dataplugin.gfe.slice.DiscreteGridSlice;
@ -72,6 +75,7 @@ import com.vividsolutions.jts.geom.Coordinate;
* Apr 13, 2011 #8393 dgilling Initial creation
* 02/19/13 #1637 randerso Added exception handling for Discrete and Weather
* 10/31/2013 #2508 randerso Change to use DiscreteGridSlice.getKeys()
* 04/22/2014 #3050 randerso Allow exceptions to propagate to caller from readASCIIGridData
*
* </pre>
*
@ -353,12 +357,14 @@ public class ASCIIGrid {
}
public String readASCIIGridData(File aGridData)
throws FileNotFoundException {
throws FileNotFoundException, GfeException, ParseException {
List<IGridSlice> gridSlices = new ArrayList<IGridSlice>();
Scanner inputStream = new Scanner(aGridData, "US-ASCII");
while (true) {
try {
Scanner inputStream = null;
try {
inputStream = new Scanner(aGridData, "US-ASCII");
while (true) {
// read the ASCIIGRID keyword
// if we have an ASCIIGRID to read
if (!inputStream.next().equals("ASCIIGRID")) {
@ -421,8 +427,12 @@ public class ASCIIGrid {
float yExtent = inputStream.nextFloat();
// make the GridLocation
IFPServerConfig config = IFPServerConfigManager
.getServerConfig(dbSiteId);
IFPServer ifpServer = IFPServer.getActiveServer(dbSiteId);
if (ifpServer == null) {
throw new GfeException("No active IFPServer for site: "
+ dbSiteId);
}
IFPServerConfig config = ifpServer.getConfig();
GridLocation baseGLoc = config.dbDomain();
ProjectionData projData = config.getProjectionData(projId);
GridLocation gLocation = new GridLocation(dbSiteId, projData,
@ -600,14 +610,12 @@ public class ASCIIGrid {
if (!inputStream.hasNext()) {
break;
}
} catch (Exception e) {
statusHandler.handle(Priority.PROBLEM,
"Caught exception in readASCIIGridData()", e);
break;
}
} finally {
if (inputStream != null) {
inputStream.close();
}
}
inputStream.close();
this.gridSlices = gridSlices;
return "";

View file

@ -113,6 +113,7 @@ import com.raytheon.uf.edex.database.DataAccessLayerException;
* 09/12/2013 #2348 randerso Removed code that called getDb from getD2DDatabaseIdsFromDb
* Added function to create a D2DGridDatabase object only if there is
* data in postgres for the desired model/reftime
* 04/17/2014 #2934 dgilling Change getGridParmInfo to use D2DParm's GridParmInfo.
*
* </pre>
*
@ -623,98 +624,14 @@ public class D2DGridDatabase extends VGridDatabase {
@Override
public ServerResponse<GridParmInfo> getGridParmInfo(ParmID id) {
ServerResponse<GridParmInfo> sr = new ServerResponse<GridParmInfo>();
GridParmInfo gpi = null;
String mappedModel = config.d2dModelNameMapping(id.getDbId()
.getModelName());
if (id.getParmName().equalsIgnoreCase("wind")) {
List<TimeRange> modelTimes = GridParamInfoLookup
.getInstance()
.getParameterTimes(mappedModel, id.getDbId().getModelDate());
TimeConstraints tc = getTimeConstraints(modelTimes);
// first try getting u-component attributes
ParameterInfo atts = GridParamInfoLookup.getInstance()
.getParameterInfo(mappedModel, "uw");
// if not found try wind speed
if (atts == null) {
atts = GridParamInfoLookup.getInstance().getParameterInfo(
mappedModel, "ws");
}
float minV = 0;
float maxV = atts.getValid_range()[1];
int precision = calcPrecision(minV, maxV);
gpi = new GridParmInfo(id, this.outputGloc, GridType.VECTOR,
atts.getUnits(), "wind", minV, maxV, precision, false, tc,
false);
sr.setPayload(gpi);
return sr;
}
ParameterInfo atts = GridParamInfoLookup.getInstance()
.getParameterInfo(mappedModel, id.getParmName());
if (atts == null) {
if (gpi == null) {
TimeConstraints tc = new TimeConstraints(
TimeUtil.SECONDS_PER_HOUR, TimeUtil.SECONDS_PER_HOUR, 0);
gpi = new GridParmInfo(id, this.outputGloc, GridType.SCALAR,
"", "", ParameterInfo.MIN_VALUE,
ParameterInfo.MAX_VALUE, 0, false, tc, false);
}
D2DParm parm = gfeParms.get(id);
if (parm != null) {
gpi = parm.getGpi();
} else {
boolean accParm = false;
List<String> accumParms = config.accumulativeD2DElements(dbId
.getModelName());
if (accumParms != null) {
if (accumParms.contains(atts.getShort_name())) {
accParm = true;
}
}
boolean rateParm = false;
// List<TimeRange> times = this.getGridInventory(id).getPayload();
List<TimeRange> times = GridParamInfoLookup
.getInstance()
.getParameterTimes(mappedModel, id.getDbId().getModelDate());
TimeConstraints tc = getTimeConstraints(times);
if (accParm) {
tc = new TimeConstraints(tc.getRepeatInterval(),
tc.getRepeatInterval(), tc.getStartTime());
rateParm = true;
}
float minV = -30;
float maxV = 10000;
if (atts.getValid_range() != null) {
minV = atts.getValid_range()[0];
maxV = atts.getValid_range()[1];
} else {
// This is the CDF convention. But we can't use
// it or the GFE will attempt to create billions and
// billions of contours.
// min = MINFLOAT;
// max = MAXFLOAT;
minV = 0;
maxV = 10000;
if (!GridPathProvider.STATIC_PARAMETERS.contains(id
.getParmName())) {
statusHandler.handle(Priority.VERBOSE,
"[valid_range] or [valid_min] or [valid_max] "
+ "not found for " + id.toString());
}
}
int precision = calcPrecision(minV, maxV);
gpi = new GridParmInfo(id, this.outputGloc, GridType.SCALAR,
atts.getUnits(), atts.getLong_name(), minV, maxV,
precision, false, tc, rateParm);
sr.addMessage("Unknown PID: " + id.toString());
}
sr.setPayload(gpi);

View file

@ -61,6 +61,9 @@ import com.raytheon.uf.common.status.UFStatus;
* Apr 21, 2011 dgilling Initial creation
* Apr 23, 2013 1949 rjpeter Removed extra lock table look up
* Jun 13, 2013 #2044 randerso Refactored to use IFPServer
* Apr 21, 2014 #3050 randerso Get the IFPServer instance based on the
* site in the ParmID
*
* </pre>
*
* @author dgilling
@ -83,9 +86,6 @@ public class SaveASCIIGridsHandler extends BaseGfeRequestHandler implements
@Override
public ServerResponse<String> handleRequest(SaveASCIIGridsRequest request)
throws Exception {
IFPServer ifpServer = getIfpServer(request);
GridParmManager gridParmMgr = ifpServer.getGridParmMgr();
LockManager lockMgr = ifpServer.getLockMgr();
ServerResponse<String> sr = new ServerResponse<String>();
@ -97,10 +97,23 @@ public class SaveASCIIGridsHandler extends BaseGfeRequestHandler implements
sr.addMessage(msg);
}
String prevSiteID = null;
int ngrids = agrid.getGridSlices().size();
for (int i = 0; i < ngrids; i++) {
ParmID pid = agrid.getGridSlices().get(i).getGridInfo().getParmID();
// get the server for this site
String siteID = pid.getDbId().getSiteId();
IFPServer ifpServer = IFPServer.getActiveServer(siteID);
if (ifpServer == null && !siteID.equals(prevSiteID)) {
sr.addMessage("No active IFPServer for site: " + siteID);
continue;
}
prevSiteID = siteID;
GridParmManager gridParmMgr = ifpServer.getGridParmMgr();
LockManager lockMgr = ifpServer.getLockMgr();
// get a list of available databases, see if the grid is part of an
// existing database.
ServerResponse<List<DatabaseID>> srDbInv = gridParmMgr

View file

@ -51,7 +51,7 @@ class Procedure (SmartScript.SmartScript):
tr = self.createTimeRange(0, 168, "Database", dbID)
self.copyCmd(elements, dbID, tr)
#
dbID = self.findDatabase("NAM-12km")
dbID = self.findDatabase("NAM12")
tr = self.createTimeRange(0, 60, "Database", dbID)
self.copyCmd(elements, dbID, tr)
#Copy

View file

@ -39,7 +39,7 @@
<alias base="NGM213">ngm213</alias>
<alias base="NGM202">ngm202</alias>
<alias base="AVN211">avn211</alias>
<alias base="NAM-40km">NAM-40km</alias>
<alias base="mesoEta212">mesoEta212</alias>
<alias base="mesoEta215">mesoEta215</alias>
<alias base="ETA212">eta212</alias>
<alias base="AVN203">avn203</alias>

View file

@ -37,6 +37,8 @@
# to get correct offsets for Alaska
# 01/17/2014 #2719 randerso Added NHA domain
# 03/20/2014 #2418 dgilling Remove unneeded D2D source PHISH.
# 04/17/14 2934 dgilling Remove alias for TPCSurgeProb D2D database.
# 05/09/2014 3148 randerso Add tpHPCndfd to D2DAccumulativeElements for HPCERP
#
########################################################################
@ -961,8 +963,8 @@ ISC = ('ISC', GRID, '', YES, NO, 1, 12)
LAPS = ('LAPS', GRID, '', YES, NO, 1, 30)
SAT = ('SAT', GRID, '', YES, NO, 1, 12)
HPCGuide = ('HPCGuide', GRID, '', NO, NO, 2, 0)
NAM-12km = ('NAM-12km', GRID, '', NO, NO, 2, 0)
NAM-40km = ('NAM-40km', GRID, '', NO, NO, 2, 0)
NAM12 = ('NAM12', GRID, '', NO, NO, 2, 0)
NAM40 = ('NAM40', GRID, '', NO, NO, 2, 0)
NAM80 = ('NAM80', GRID, '', NO, NO, 2, 0)
NAM95 = ('NAM95', GRID, '', NO, NO, 2, 0)
NGM80 = ('NGM80', GRID, '', NO, NO, 2, 0)
@ -1032,14 +1034,14 @@ D2DDBVERSIONS = {
#---------------------------------------------------------------------------
# Alaska OCONUS
if SID in ALASKA_SITES:
D2DMODELS = [('mesoEta216', 'NAM-40km'),
D2DMODELS = [('mesoEta216', 'NAM40'),
('mesoEta217', 'NAM20'),
('AVN203', 'GFS190'),
('MRF203', 'gfsLR'),
('NGM207', 'NGM95'),
('ETA207', 'NAM95'),
'GWW233',
('ETA242', 'NAM-12km'),
('ETA242', 'NAM12'),
'ECMWF-LowRes','ECMWF',
'UKMET-NorthernHemisphere', 'UKMET',
'ENSEMBLE',
@ -1115,7 +1117,7 @@ elif SID in CONUS_EAST_SITES:
('MRF', 'gfsLR'),
('RUC130', 'RUC13'),
('RUC', 'RUC80'),
('NAM-40km', 'NAM-40km'),
('mesoEta212', 'NAM40'),
('mesoEta215', 'NAM20'),
'MSAS',
('LAPS', 'LAPS'),
@ -1126,7 +1128,7 @@ elif SID in CONUS_EAST_SITES:
#DR3511 'HPCdelta',
'GLERL',
'WNAWAVE238',
('TPCSurgeProb','TPCStormSurge'), # DCS3462
'TPCSurgeProb',
'GlobalWave',
'EPwave10',
'AKwave10',
@ -1137,7 +1139,7 @@ elif SID in CONUS_EAST_SITES:
'WNAwave4',
'HurWind226',
('DGEX185', 'DGEX'),
('ETA218', 'NAM-12km'),
('ETA218', 'NAM12'),
'HPCGuide',
('OPCWave180', 'OPCTAFBE'),
('OPCWave181', 'OPCTAFBNW'),
@ -1164,7 +1166,7 @@ else: #######DCS3501 WEST_CONUS
('MRF', 'gfsLR'),
('RUC130', 'RUC13'),
('RUC', 'RUC80'),
('NAM-40km', 'NAM-40km'),
('mesoEta212', 'NAM40'),
('mesoEta215', 'NAM20'),
'MSAS',
('LAPS', 'LAPS'),
@ -1175,7 +1177,7 @@ else: #######DCS3501 WEST_CONUS
#DR3511 'HPCdelta',
'GLERL',
'WNAWAVE238',
('TPCSurgeProb','TPCStormSurge'), # DCS3462
'TPCSurgeProb',
'GlobalWave',
'EPwave10',
'WCwave10',
@ -1187,7 +1189,7 @@ else: #######DCS3501 WEST_CONUS
'AKWAVE',
'HurWind226',
('DGEX185', 'DGEX'),
('ETA218', 'NAM-12km'),
('ETA218', 'NAM12'),
'HPCGuide',
('OPCWave180', 'OPCTAFBE'),
('OPCWave181', 'OPCTAFBNW'),
@ -1321,7 +1323,7 @@ if SID in RFC_SITES:
# Alaska OCONUS
elif SID in ALASKA_SITES:
INITMODULES = {
# "AKNAM-40km" : ["NAM-40km", "NAM20"],
# "AKNAM40" : ["NAM40", "NAM20"],
"AKWAVE" : ['AKWAVE'],
# "AKwave4" : ['AKwave4'],
# "AKwave10" : ['AKwave10'],
@ -1329,7 +1331,7 @@ elif SID in ALASKA_SITES:
# "NAM95" : ["NAM95"],
# "NGM95" : ["NGM95"],
# "gfsLR" : ["gfsLR"],
"NAM-12km" : ["NAM-12km"],
"NAM12" : ["NAM12"],
"GFS80" : ["GFS80"],
# "GFS190" : ["GFS190"],
#DCS3501
@ -1370,13 +1372,13 @@ elif SID == "HFO":
elif SID == "SJU":
#initialization module to model mappings
INITMODULES = {
# "NAM-40km" : ["NAM-40km", "NAM20"],
# "NAM40" : ["NAM40", "NAM20"],
# "NAM80" : ["NAM80"],
"RUC13" : ["RUC13"],
"RUC80" : ["RUC80"],
# "gfsLR" : ["gfsLR"],
# "NGM80" : ["NGM80"],
"NAM-12km" : ["NAM-12km"],
"NAM12" : ["NAM12"],
"GFS80" : ["GFS80"],
"GFS40" : ["GFS40"],
#####DCS3501
@ -1413,7 +1415,7 @@ else:
INITMODULES = {
"RUC13" : ["RUC13"],
"RUC80" : ["RUC80"],
"NAM-12km" : ["NAM-12km"],
"NAM12" : ["NAM12"],
"GFS40" : ["GFS40"],
"GFS80" : ["GFS80"],
"LAPS" : ["LAPS"],
@ -1464,9 +1466,9 @@ D2DAccumulativeElements= {
"GFS190": ["tp", "cp"],
"NAM95": ["tp", "cp"],
"NAM80": ["tp", "cp"],
"NAM-40km": ["tp", "cp"],
"NAM40": ["tp", "cp"],
"NAM20": ["tp", "cp"],
"NAM-12km": ["tp", "cp", "crain", "csnow", "cfrzr", "cicep"],
"NAM12": ["tp", "cp", "crain", "csnow", "cfrzr", "cicep"],
"NGM80": ["tp", "cp"],
"NGM95": ["tp", "cp"],
"gfsLR": ["tp", "cp"],
@ -1484,6 +1486,7 @@ D2DAccumulativeElements= {
"HIRESWarw": ["tp"],
"HIRESWnmm": ["tp"],
"RTMA": ["tp"],
"HPCERP": ["tpHPCndfd"],
#DR20634 "SPC": ["tp"],
#Dummy ones for the transition from Eta to NAM. These are ignored.
@ -1557,8 +1560,8 @@ AUTO_CONFIGURE_NOTIFYTEXTPROD = 1 #0=off,1=on
# DO NOT CHANGE THE FOLLOWING SECTION
#------------------------------------
# import the local config file
localParms = localNAM-12kmParms = localRUC13Parms = localRUC80Parms = localNGM80Parms = []
localGFS80Parms = localgfsLRParms = localNAM-40kmParms = localDBs = []
localParms = localNAM12Parms = localRUC13Parms = localRUC80Parms = localNGM80Parms = []
localGFS80Parms = localgfsLRParms = localNAM40Parms = localDBs = []
localOPCWavEParms = localOPCWavNWParms = localOPCWavSWParms = []
localMOSGuideParms = localGFS40Parms = []
localNAM80Parms = localLAPSParms = localISCParms = localGWWParms = []
@ -1592,13 +1595,13 @@ if not BASELINE and siteImport('localConfig'):
myOfficeType = SITES[GFESUITE_SITEID] #probably from localConfig
localParms = getattr(localConfig, 'parms', localParms)
localNAM-12kmParms = getattr(localConfig, 'parmsNAM-12km', localNAM-12kmParms)
localNAM12Parms = getattr(localConfig, 'parmsNAM12', localNAM12Parms)
localOPCWavEParms = getattr(localConfig, 'parmsOPCWavE', localOPCWavEParms)
localOPCWavSWParms = getattr(localConfig, 'parmsOPCWavSW',
localOPCWavSWParms)
localOPCWavNWParms = getattr(localConfig, 'parmsOPCWavNW',
localOPCWavNWParms)
localNAM-40kmParms = getattr(localConfig, 'parmsNAM-40km', localNAM-40kmParms)
localNAM40Parms = getattr(localConfig, 'parmsNAM40', localNAM40Parms)
localNAM80Parms = getattr(localConfig, 'parmsNAM80', localNAM80Parms)
localNAM95Parms = getattr(localConfig, 'parmsNAM95', localNAM95Parms)
localRUC13Parms = getattr(localConfig, 'parmsRUC13', localRUC13Parms)
@ -1820,7 +1823,7 @@ TPCProbPARMS = [([prob34, prob50, prob64], TC1),
]
# Cobb snow tool
parmsNAM-12km = [([SnowRatio], TC1)]
parmsNAM12 = [([SnowRatio], TC1)]
parmsGFS40 = [([SnowRatio], TC1)]
ENPwave_parms = [([WindWaveHeight, WaveHeight, SurfHeight, Wind], TC6),
@ -1843,8 +1846,8 @@ DATABASES = [(Official, OFFICIALDBS + localParms),
(GFS80, STD6_MODEL + localGFS80Parms),
(GFS75, STD6_MODEL + localGFS75Parms),
(GFS190, STD6_MODEL + localGFS190Parms),
(NAM-40km, STD3_MODEL + localNAM-40kmParms),
(NAM-12km, STD3_MODEL + localNAM-12kmParms),
(NAM40, STD3_MODEL + localNAM40Parms),
(NAM12, STD3_MODEL + localNAM12Parms),
(gfsLR, STD12_MODEL + localgfsLRParms),
(GWW, WAVEPARMS + localGWWParms),
(WNAWAVE, WAVEPARMS + localWNAWAVEParms),
@ -1989,4 +1992,4 @@ def doIt():
IFPConfigServer.requestedISCparms = requestedISCparms
IFPConfigServer.transmitScript = transmitScript
doIt()
doIt()

View file

@ -903,13 +903,12 @@ class IscMosaic:
if self.__dbGrid is None or tr != self.__dbGrid[2]:
self.__dbGrid = None
#grid = self.__dbwe.getGridAndHist(tr)
grid = self._wec[tr]
if grid is not None:
destGrid, history = grid
self.__dbGrid = (destGrid, history, tr)
else:
logger.error("Unable to access grid for "+self.__printTR(tr) +" for " + self.__parmName)
logger.error("Unable to access grid for %s for %s", printTR(tr), self.__parmName)
return None
return (self.__dbGrid[0], self.__dbGrid[1])

View file

@ -302,8 +302,8 @@ def getLogger(scriptName, logName=None, logLevel=logging.INFO):
os.makedirs(logPath)
except OSError as e:
import errno
if e.errno != errno.EEXIST:
raise e
if e.errno != errno.EEXIST:
raise e
theLog = logging.getLogger(scriptName)
theLog.setLevel(logLevel)

View file

@ -4,9 +4,7 @@
<fcst>21600</fcst>
<fcst>43200</fcst>
<fcst>64800</fcst>
<fcst>75600</fcst>
<fcst>86400</fcst>
<fcst>97200</fcst>
<fcst>108000</fcst>
<fcst>129600</fcst>
<fcst>151200</fcst>
@ -15,7 +13,22 @@
<fcst>216000</fcst>
<fcst>237600</fcst>
<fcst>259200</fcst>
<fcst>280800</fcst>
<fcst>302400</fcst>
<fcst>324000</fcst>
<fcst>345600</fcst>
<fcst>367200</fcst>
<fcst>388800</fcst>
<fcst>410400</fcst>
<fcst>432000</fcst>
<fcst>453600</fcst>
<fcst>475200</fcst>
<fcst>496800</fcst>
<fcst>518400</fcst>
<fcst>540000</fcst>
<fcst>561600</fcst>
<fcst>583200</fcst>
<fcst>604800</fcst>
</valtimeMINUSreftime>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>tp48hr</short_name>

View file

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Mar 20, 2014 #2934 dgilling Added new parameters for PHISH/pSurge 2.0.
Apr 17, 2014 #2934 dgilling Fix fillValue and valid_range values.
-->
<gridParamInfo xmlns:ns2="group">
<valtimeMINUSreftime>
@ -28,7 +29,7 @@
<uiname>SURGE10pct</uiname>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC 0 FHAG</levelsDesc>
<levels>
@ -44,7 +45,7 @@
<uiname>SURGE20pct</uiname>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC 0 FHAG</levelsDesc>
<levels>
@ -60,7 +61,7 @@
<uiname>SURGE30pct</uiname>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC 0 FHAG</levelsDesc>
<levels>
@ -76,7 +77,7 @@
<uiname>SURGE40pct</uiname>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC 0 FHAG</levelsDesc>
<levels>
@ -92,7 +93,7 @@
<uiname>SURGE50pct</uiname>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC 0 FHAG</levelsDesc>
<levels>
@ -107,9 +108,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge25c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC</levelsDesc>
<levels>
@ -122,9 +123,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge24c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC</levelsDesc>
<levels>
@ -137,9 +138,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge23c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC</levelsDesc>
<levels>
@ -152,9 +153,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge22c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC</levelsDesc>
<levels>
@ -167,9 +168,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge21c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC</levelsDesc>
<levels>
@ -182,9 +183,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge20c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC 0 FHAG</levelsDesc>
<levels>
@ -198,9 +199,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge19c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC 0 FHAG</levelsDesc>
<levels>
@ -214,9 +215,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge18c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC 0 FHAG</levelsDesc>
<levels>
@ -230,9 +231,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge17c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC 0 FHAG</levelsDesc>
<levels>
@ -246,9 +247,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge16c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC 0 FHAG</levelsDesc>
<levels>
@ -262,9 +263,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge15c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC 0 FHAG</levelsDesc>
<levels>
@ -278,9 +279,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge14c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC 0 FHAG</levelsDesc>
<levels>
@ -294,9 +295,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge13c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC 0 FHAG</levelsDesc>
<levels>
@ -310,9 +311,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge12c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC 0 FHAG</levelsDesc>
<levels>
@ -326,9 +327,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge11c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC 0 FHAG</levelsDesc>
<levels>
@ -342,9 +343,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge10c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC 0 FHAG</levelsDesc>
<levels>
@ -358,9 +359,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge09c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC 0 FHAG</levelsDesc>
<levels>
@ -374,9 +375,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge08c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC 0 FHAG</levelsDesc>
<levels>
@ -390,9 +391,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge07c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC 0 FHAG</levelsDesc>
<levels>
@ -406,9 +407,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge06c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC 0 FHAG</levelsDesc>
<levels>
@ -422,9 +423,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge05c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC 0 FHAG</levelsDesc>
<levels>
@ -438,9 +439,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge04c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC 0 FHAG</levelsDesc>
<levels>
@ -454,9 +455,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge03c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC 0 FHAG</levelsDesc>
<levels>
@ -470,9 +471,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge02c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC 0 FHAG</levelsDesc>
<levels>
@ -486,9 +487,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge01c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -501,9 +502,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge00c</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -519,7 +520,7 @@
<uiname>SURGE10pct_incr</uiname>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -534,7 +535,7 @@
<uiname>SURGE20pct_incr</uiname>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -549,7 +550,7 @@
<uiname>SURGE30pct_incr</uiname>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -564,7 +565,7 @@
<uiname>SURGE40pct_incr</uiname>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -579,7 +580,7 @@
<uiname>SURGE50pct_incr</uiname>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -592,9 +593,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge20c_incr</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -607,9 +608,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge19c_incr</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -622,9 +623,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge18c_incr</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -637,9 +638,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge17c_incr</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -652,9 +653,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge16c_incr</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -667,9 +668,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge15c_incr</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -682,9 +683,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge14c_incr</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -697,9 +698,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge13c_incr</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -712,9 +713,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge12c_incr</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -727,9 +728,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge11c_incr</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -742,9 +743,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge10c_incr</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -757,9 +758,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge09c_incr</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -772,9 +773,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge08c_incr</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -787,9 +788,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge07c_incr</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -802,9 +803,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge06c_incr</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -817,9 +818,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge05c_incr</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -832,9 +833,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge04c_incr</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -847,9 +848,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge03c_incr</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -862,9 +863,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge02c_incr</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -877,9 +878,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge01c_incr</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>
@ -892,9 +893,9 @@
<units>%</units>
<udunits>percent</udunits>
<uiname>ProbSurge00c_incr</uiname>
<valid_range>0.0</valid_range>
<valid_range>-100.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-9999.0</fillValue>
<fillValue>-999999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>0 FHAG</levelsDesc>
<levels>

View file

@ -601,8 +601,8 @@ class Forecaster(GridUtilities):
#--------------------------------------------------------------------------
def _getLatest(self, client, srcNames, fcstName=None):
# ryu: Added/modified code to allow multiple sources. The srcdb is
# now an MDB. This is needed for (AK)NAM-40km init, which sources
# from both NAM-40km and NAM20.
# now an MDB. This is needed for (AK)NAM40 init, which sources
# from both NAM40 and NAM20.
srcdbs = []
modelName = DatabaseID.databaseID(self.__dbName).modelName()

View file

@ -18,7 +18,7 @@
# further licensing information.
##
#
# NAM-12km SmartInit
# NAM12 SmartInit
#
# Comments below for each algorithm.
#
@ -59,9 +59,9 @@ USE_WETBULB = 1
#
#============================================================================
from Init import *
class NAM-12kmForecaster(Forecaster):
class NAM12Forecaster(Forecaster):
def __init__(self):
Forecaster.__init__(self, "NAM-12km", "NAM-12km")
Forecaster.__init__(self, "NAM12", "NAM12")
self.BLcubeTime = (None, None)
def levels(self):
@ -1687,4 +1687,4 @@ class NAM-12kmForecaster(Forecaster):
return value
def main():
NAM-12kmForecaster().run()
NAM12Forecaster().run()

View file

@ -99,7 +99,7 @@ import com.vividsolutions.jts.simplify.TopologyPreservingSimplifier;
* made init method public for use in GFEDao
* 09/30/13 #2333 mschenke Added method to construct from {@link IGridGeometryProvider}
* 10/22/13 #2361 njensen Remove XML annotations
*
* 05/06/14 #3118 randerso Added clone() method
*
* </pre>
*
@ -110,7 +110,7 @@ import com.vividsolutions.jts.simplify.TopologyPreservingSimplifier;
@Table(name = "gfe_gridlocation", uniqueConstraints = { @UniqueConstraint(columnNames = { "dbId_id" }) })
@DynamicSerialize
public class GridLocation extends PersistableDataObject<String> implements
ISpatialObject {
ISpatialObject, Cloneable {
private static final transient IUFStatusHandler statusHandler = UFStatus
.getHandler(GridLocation.class);
@ -246,6 +246,37 @@ public class GridLocation extends PersistableDataObject<String> implements
init();
}
/**
* Copy constructor
*
* @param gridLocation
*/
public GridLocation(GridLocation other) {
// don't copy id or dbId
this.siteId = other.siteId;
this.nx = other.nx;
this.ny = other.ny;
this.timeZone = other.timeZone;
this.projection = other.projection;
this.origin = other.origin == null ? null : (Coordinate) other.origin
.clone();
this.extent = other.extent == null ? null : (Coordinate) other.extent
.clone();
this.geometry = (Polygon) other.geometry.clone();
this.crsWKT = other.crsWKT;
this.crsObject = other.crsObject;
}
/*
* (non-Javadoc)
*
* @see java.lang.Object#clone()
*/
@Override
public GridLocation clone() {
return new GridLocation(this);
}
/**
* Initialize the object. Must be called after database retrieval
*/

View file

@ -67,6 +67,7 @@ import com.raytheon.uf.common.status.UFStatus.Priority;
* 04/02/2013 #1774 randerso Improved error message in validCheck
* 08/06/13 #1571 randerso Added hibernate annotations, javadoc cleanup
* 10/22/2013 #2361 njensen Remove ISerializableObject
* 05/06/2014 #3118 randerso Changed clone() to also clone gridLoc
*
* </pre>
*
@ -196,7 +197,7 @@ public class GridParmInfo implements Cloneable {
*/
public GridParmInfo(GridParmInfo orig) {
this.parmID = orig.parmID;
this.gridLoc = orig.gridLoc;
this.gridLoc = orig.gridLoc.clone();
this.gridType = orig.gridType;
this.unitString = orig.unitString;
this.descriptiveName = orig.descriptiveName;

View file

@ -114,7 +114,7 @@ public class WEGroup {
// The modified ParmID string is the ParmID with the model time striped
// (ex: Temp:DEN_type_Fcst_00000000_0000). The relative cycle number for a
// parameter of a singleton database (Fcst, LAPS) is -1. For a parameter in
// a version database (NAM-12km), the relative cycle number is 0 for the
// a version database (NAM12), the relative cycle number is 0 for the
// latest,
// 1 for the previous, 2 for the second previous, etc.
// ---------------------------------------------------------------------------
@ -142,7 +142,7 @@ public class WEGroup {
// Bundle::getRelCycleNo()
// Private function called to get the relative cycle number for a ParmID.
// The relative cycle number for a parameter of a singleton database (Fcst,
// LAPS) is -1. For a parameter in a version database (NAM-12km), the relative
// LAPS) is -1. For a parameter in a version database (NAM12), the relative
// cycle number is 0 for the latest, 1 for the previous, 2 for the second
// previous, etc.
// The relative order of the current ParmID is computed by determining its
@ -243,7 +243,7 @@ public class WEGroup {
* The modified ParmID string is the ParmID with the model time striped (ex:
* Temp:DEN_type_Fcst_00000000_0000). The relative cycle number for a
* parameter of a singleton database (Fcst, LAPS) is -1. For a parameter in
* a version database (NAM-12km), the relative cycle number is 0 for the
* a version database (NAM12), the relative cycle number is 0 for the
* latest, 1 for the previous, 2 for the second previous, etc.
*
* @param siteID