Merge branch 'omaha_13.3.1' into development

Conflicts:
	edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/db/dao/GFEDao.java
	edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/reference/MapManager.java
	edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/notify/GfeIngestNotificationFilter.java
	edexOsgi/com.raytheon.uf.common.time/src/com/raytheon/uf/common/time/util/TimeUtil.java

Former-commit-id: 2ca7ead62d [formerly 5ec1c01d3a] [formerly 736bb45741] [formerly 736bb45741 [formerly 140765a43e]] [formerly 437a04011a [formerly 736bb45741 [formerly 140765a43e] [formerly 437a04011a [formerly 4a7059ac9b104116fef4d0dab9a0108fb61b5a5c]]]]
Former-commit-id: 437a04011a
Former-commit-id: ba02abb01d1c45e71a88538e220dd9927dcb8c5a [formerly 0f6adbe76d6a5926e99d6caab1841fd3e7bd7349] [formerly 7b27767d7e [formerly 0b48e96314]]
Former-commit-id: 7b27767d7e
Former-commit-id: 47c7f66f2b
This commit is contained in:
Steve Harris 2013-04-01 12:19:04 -05:00
commit 9aca3ab74a
190 changed files with 5293 additions and 2987 deletions

View file

@ -128,5 +128,5 @@
</lineProperty> </lineProperty>
</Line> </Line>
</linePropertyMap> </linePropertyMap>
<dataPageProperty severePotentialPage="10" convectiveInitiationPage="9" meanWindPage="8" stormRelativePage="7" mixingHeightPage="6" opcDataPage="5" thermodynamicDataPage="4" parcelDataPage="3" summary2Page="2" summary1Page="1"/> <dataPageProperty numberPagePerDisplay="1" severePotentialPage="10" convectiveInitiationPage="9" meanWindPage="8" stormRelativePage="7" mixingHeightPage="6" opcDataPage="5" thermodynamicDataPage="4" parcelDataPage="3" summary2Page="2" summary1Page="1"/>
</NsharpConfigStore> </NsharpConfigStore>

View file

@ -100,6 +100,7 @@ import com.raytheon.viz.gfe.core.parm.vcparm.VCModuleJobPool;
* use in PngWriter * use in PngWriter
* 01/22/2013 #1515 dgilling Increase default size of VCModule thread pool * 01/22/2013 #1515 dgilling Increase default size of VCModule thread pool
* to decrease UI hang-ups waiting for results. * to decrease UI hang-ups waiting for results.
* 03/20/2013 #1774 randerso Code cleanup
* *
* </pre> * </pre>
* *
@ -243,7 +244,7 @@ public abstract class AbstractParmManager implements IParmManager {
protected DatabaseID productDB; protected DatabaseID productDB;
protected List<DatabaseID> availableDatabases; protected Set<DatabaseID> availableDatabases;
protected final DatabaseID mutableDb; protected final DatabaseID mutableDb;
@ -320,26 +321,16 @@ public abstract class AbstractParmManager implements IParmManager {
dbCategories = Arrays.asList(prefs.getStringArray("dbTypes")); dbCategories = Arrays.asList(prefs.getStringArray("dbTypes"));
this.availableDatabases = getDatabaseInventory(); this.availableDatabases = new HashSet<DatabaseID>(
getDatabaseInventory());
this.dbInvChangeListener = new AbstractGFENotificationObserver<DBInvChangeNotification>( this.dbInvChangeListener = new AbstractGFENotificationObserver<DBInvChangeNotification>(
DBInvChangeNotification.class) { DBInvChangeNotification.class) {
@Override @Override
public void notify(DBInvChangeNotification notificationMessage) { public void notify(DBInvChangeNotification notificationMessage) {
updatedDatabaseList(notificationMessage.getDeletions(),
List<DatabaseID> newInventory; notificationMessage.getAdditions());
List<DatabaseID> additions = new ArrayList<DatabaseID>();
List<DatabaseID> deletions = new ArrayList<DatabaseID>();
newInventory = filterDbIds(notificationMessage.getInventory());
additions.addAll(newInventory);
additions.removeAll(availableDatabases);
deletions.addAll(availableDatabases);
deletions.removeAll(newInventory);
availableDatabases = newInventory;
updatedDatabaseList(availableDatabases, deletions, additions);
} }
}; };
@ -1862,15 +1853,16 @@ public abstract class AbstractParmManager implements IParmManager {
* The list of available parms is updated based on the list of additions and * The list of available parms is updated based on the list of additions and
* deletions. * deletions.
* *
* @param newList
* The full inventory, including new additions and deletions
* @param deletions * @param deletions
* The items being removed from the inventory * The items being removed from the inventory
* @param additions * @param additions
* The items being added from the inventory * The items being added from the inventory
*/ */
public void updatedDatabaseList(List<DatabaseID> newList, public void updatedDatabaseList(List<DatabaseID> deletions,
List<DatabaseID> deletions, List<DatabaseID> additions) { List<DatabaseID> additions) {
availableDatabases.addAll(additions);
availableDatabases.removeAll(deletions);
List<ParmID> toDelete = new ArrayList<ParmID>(); List<ParmID> toDelete = new ArrayList<ParmID>();
for (DatabaseID dbId : deletions) { for (DatabaseID dbId : deletions) {

View file

@ -60,6 +60,7 @@ import com.raytheon.uf.common.dataplugin.gfe.slice.VectorGridSlice;
import com.raytheon.uf.common.dataplugin.gfe.slice.WeatherGridSlice; import com.raytheon.uf.common.dataplugin.gfe.slice.WeatherGridSlice;
import com.raytheon.uf.common.dataplugin.gfe.weather.WeatherKey; import com.raytheon.uf.common.dataplugin.gfe.weather.WeatherKey;
import com.raytheon.uf.common.time.TimeRange; import com.raytheon.uf.common.time.TimeRange;
import com.raytheon.uf.common.time.util.TimeUtil;
import com.raytheon.viz.gfe.Activator; import com.raytheon.viz.gfe.Activator;
import com.raytheon.viz.gfe.core.DataManager; import com.raytheon.viz.gfe.core.DataManager;
import com.raytheon.viz.gfe.core.griddata.DiscreteGridData; import com.raytheon.viz.gfe.core.griddata.DiscreteGridData;
@ -82,6 +83,7 @@ import com.vividsolutions.jts.geom.Coordinate;
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* 02/04/2008 chammack Initial Creation * 02/04/2008 chammack Initial Creation
* 03/20/2013 #1774 randerso Use TimeUtil constants
* *
* </pre> * </pre>
* *
@ -106,10 +108,10 @@ public class MockParmManager extends AbstractParmManager {
"CST6CDT"); "CST6CDT");
private static final TimeConstraints TC1 = new TimeConstraints( private static final TimeConstraints TC1 = new TimeConstraints(
TimeConstraints.HOUR, TimeConstraints.HOUR, 0); TimeUtil.SECONDS_PER_HOUR, TimeUtil.SECONDS_PER_HOUR, 0);
private static final TimeConstraints TC2 = new TimeConstraints( private static final TimeConstraints TC2 = new TimeConstraints(
13 * TimeConstraints.HOUR, TimeConstraints.DAY, 13); 13 * TimeUtil.SECONDS_PER_HOUR, TimeUtil.SECONDS_PER_DAY, 13);
protected Set<Parm> fullParmSet; protected Set<Parm> fullParmSet;
@ -662,6 +664,7 @@ public class MockParmManager extends AbstractParmManager {
return gloc; return gloc;
} }
@Override
public Parm getParmInExpr(final String exprName, boolean enableTopo) { public Parm getParmInExpr(final String exprName, boolean enableTopo) {
return getParmInExpr(exprName, enableTopo, dataManager return getParmInExpr(exprName, enableTopo, dataManager
.getSpatialDisplayManager().getActivatedParm()); .getSpatialDisplayManager().getActivatedParm());
@ -795,10 +798,12 @@ public class MockParmManager extends AbstractParmManager {
} }
@Override
public List<DatabaseID> getIscDatabases() { public List<DatabaseID> getIscDatabases() {
return new ArrayList<DatabaseID>(); return new ArrayList<DatabaseID>();
} }
@Override
public ParmID getISCParmID(ParmID pid) { public ParmID getISCParmID(ParmID pid) {
return new ParmID(); return new ParmID();
} }

View file

@ -111,6 +111,8 @@ import com.raytheon.viz.ui.cmenu.AbstractRightClickAction;
* 11/30/2012 #1328 mschenke Made GFE use descriptor for time matching * 11/30/2012 #1328 mschenke Made GFE use descriptor for time matching
* and time storage and manipulation * and time storage and manipulation
* 01/22/2013 #1518 randerso Removed use of Map with Parms as keys * 01/22/2013 #1518 randerso Removed use of Map with Parms as keys
* 03/28/2013 #1838 randerso Fixed selected time range when Select Grids When
* Stepping is enabled. Cleaned up deprecated warnings.
* *
* </pre> * </pre>
* *
@ -563,8 +565,7 @@ public class GridCanvas extends Canvas implements IMessageClient {
List<String> popUpActions = new ArrayList<String>(0); List<String> popUpActions = new ArrayList<String>(0);
if (gmEditActions.length > 0) { if (gmEditActions.length > 0) {
// Only show tools this parm supports // Only show tools this parm supports
String[] parmTools = DataManager String[] parmTools = dataMgr
.getCurrentInstance()
.getSmartToolInterface().listTools(parm); .getSmartToolInterface().listTools(parm);
List<String> parmToolList = Arrays List<String> parmToolList = Arrays
.asList(parmTools); .asList(parmTools);
@ -815,8 +816,7 @@ public class GridCanvas extends Canvas implements IMessageClient {
grid = null; grid = null;
} }
grid.changeValidTime(lastDestinationTR, false); grid.changeValidTime(lastDestinationTR, false);
grid.updateHistoryToModified(DataManager.getCurrentInstance() grid.updateHistoryToModified(dataMgr.getWsId());
.getWsId());
newGrids.add(grid); newGrids.add(grid);
@ -924,8 +924,6 @@ public class GridCanvas extends Canvas implements IMessageClient {
Date clickTime = gridManager.getUtil().pixelToDate(e.x); Date clickTime = gridManager.getUtil().pixelToDate(e.x);
GridID clickGridID = new GridID(parm, clickTime); GridID clickGridID = new GridID(parm, clickTime);
gridManager.setSelectedTime(clickTime);
// make it active, make it inactive depending upon okToEdit // make it active, make it inactive depending upon okToEdit
try { try {
if (clickGridID.grid() != null && clickGridID.grid().isOkToEdit()) { if (clickGridID.grid() != null && clickGridID.grid().isOkToEdit()) {
@ -967,6 +965,8 @@ public class GridCanvas extends Canvas implements IMessageClient {
statusHandler.handle(Priority.PROBLEM, "Error activating parm " statusHandler.handle(Priority.PROBLEM, "Error activating parm "
+ parm.getParmID().compositeNameUI(), e1); + parm.getParmID().compositeNameUI(), e1);
} }
gridManager.setSelectedTime(clickTime);
} }
private void resize() { private void resize() {

View file

@ -30,15 +30,16 @@ import org.junit.Test;
import com.raytheon.uf.common.dataplugin.gfe.GridDataHistory; import com.raytheon.uf.common.dataplugin.gfe.GridDataHistory;
import com.raytheon.uf.common.dataplugin.gfe.config.ProjectionData; import com.raytheon.uf.common.dataplugin.gfe.config.ProjectionData;
import com.raytheon.uf.common.dataplugin.gfe.config.ProjectionData.ProjectionType; import com.raytheon.uf.common.dataplugin.gfe.config.ProjectionData.ProjectionType;
import com.raytheon.uf.common.dataplugin.gfe.db.objects.GFERecord.GridType;
import com.raytheon.uf.common.dataplugin.gfe.db.objects.GridLocation; import com.raytheon.uf.common.dataplugin.gfe.db.objects.GridLocation;
import com.raytheon.uf.common.dataplugin.gfe.db.objects.GridParmInfo; 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.ParmID;
import com.raytheon.uf.common.dataplugin.gfe.db.objects.TimeConstraints; import com.raytheon.uf.common.dataplugin.gfe.db.objects.TimeConstraints;
import com.raytheon.uf.common.dataplugin.gfe.db.objects.GFERecord.GridType;
import com.raytheon.uf.common.dataplugin.gfe.grid.Grid2DBit; import com.raytheon.uf.common.dataplugin.gfe.grid.Grid2DBit;
import com.raytheon.uf.common.dataplugin.gfe.grid.Grid2DFloat; import com.raytheon.uf.common.dataplugin.gfe.grid.Grid2DFloat;
import com.raytheon.uf.common.dataplugin.gfe.slice.ScalarGridSlice; import com.raytheon.uf.common.dataplugin.gfe.slice.ScalarGridSlice;
import com.raytheon.uf.common.time.TimeRange; import com.raytheon.uf.common.time.TimeRange;
import com.raytheon.uf.common.time.util.TimeUtil;
import com.raytheon.viz.gfe.core.parm.MockParm; import com.raytheon.viz.gfe.core.parm.MockParm;
import com.raytheon.viz.gfe.core.wxvalue.ScalarWxValue; import com.raytheon.viz.gfe.core.wxvalue.ScalarWxValue;
import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.Coordinate;
@ -55,6 +56,7 @@ import com.vividsolutions.jts.geom.Coordinate;
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Mar 26, 2008 rbell Initial creation * Mar 26, 2008 rbell Initial creation
* Mar 20, 2013 #1774 randerso Use TimeUtil constants
* *
* </pre> * </pre>
* *
@ -106,8 +108,8 @@ public class ScalarGridDataTest {
new Point(4, 4), new Coordinate(45, 30), new Coordinate(9, 9), new Point(4, 4), new Coordinate(45, 30), new Coordinate(9, 9),
"CST6CDT"); "CST6CDT");
TimeConstraints testTC1 = new TimeConstraints(TimeConstraints.HOUR, TimeConstraints testTC1 = new TimeConstraints(
TimeConstraints.HOUR, 0); TimeUtil.SECONDS_PER_HOUR, TimeUtil.SECONDS_PER_HOUR, 0);
GridParmInfo testGPI1 = new GridParmInfo(testPID1, testGL1, GridParmInfo testGPI1 = new GridParmInfo(testPID1, testGL1,
GridType.SCALAR, "F", "Temperature", -20f, 80f, 2, false, GridType.SCALAR, "F", "Temperature", -20f, 80f, 2, false,

View file

@ -29,15 +29,16 @@ import org.junit.Test;
import com.raytheon.uf.common.dataplugin.gfe.GridDataHistory; import com.raytheon.uf.common.dataplugin.gfe.GridDataHistory;
import com.raytheon.uf.common.dataplugin.gfe.config.ProjectionData; import com.raytheon.uf.common.dataplugin.gfe.config.ProjectionData;
import com.raytheon.uf.common.dataplugin.gfe.config.ProjectionData.ProjectionType; import com.raytheon.uf.common.dataplugin.gfe.config.ProjectionData.ProjectionType;
import com.raytheon.uf.common.dataplugin.gfe.db.objects.GFERecord.GridType;
import com.raytheon.uf.common.dataplugin.gfe.db.objects.GridLocation; import com.raytheon.uf.common.dataplugin.gfe.db.objects.GridLocation;
import com.raytheon.uf.common.dataplugin.gfe.db.objects.GridParmInfo; 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.ParmID;
import com.raytheon.uf.common.dataplugin.gfe.db.objects.TimeConstraints; import com.raytheon.uf.common.dataplugin.gfe.db.objects.TimeConstraints;
import com.raytheon.uf.common.dataplugin.gfe.db.objects.GFERecord.GridType;
import com.raytheon.uf.common.dataplugin.gfe.grid.Grid2DBit; import com.raytheon.uf.common.dataplugin.gfe.grid.Grid2DBit;
import com.raytheon.uf.common.dataplugin.gfe.grid.Grid2DFloat; import com.raytheon.uf.common.dataplugin.gfe.grid.Grid2DFloat;
import com.raytheon.uf.common.dataplugin.gfe.slice.VectorGridSlice; import com.raytheon.uf.common.dataplugin.gfe.slice.VectorGridSlice;
import com.raytheon.uf.common.time.TimeRange; import com.raytheon.uf.common.time.TimeRange;
import com.raytheon.uf.common.time.util.TimeUtil;
import com.raytheon.viz.gfe.core.parm.MockParm; import com.raytheon.viz.gfe.core.parm.MockParm;
import com.raytheon.viz.gfe.core.wxvalue.VectorWxValue; import com.raytheon.viz.gfe.core.wxvalue.VectorWxValue;
import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.Coordinate;
@ -54,6 +55,7 @@ import com.vividsolutions.jts.geom.Coordinate;
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Mar 26, 2008 rbell Initial creation * Mar 26, 2008 rbell Initial creation
* Mar 20, 2013 #1774 randerso Use TimeUtil constants
* *
* </pre> * </pre>
* *
@ -66,8 +68,8 @@ public class VectorGridDataTest {
private final float testFA1[] = new float[145 * 145]; private final float testFA1[] = new float[145 * 145];
{ {
for (int i = 0; i < 145 * 145; i++) { for (int i = 0; i < 145 * 145; i++) {
this.testFA1[i] = (float) (i + (i / (Math.pow(10.0, (i + "") this.testFA1[i] = (float) (i + (i / (Math.pow(10.0,
.length())))); (i + "").length()))));
} }
} }
@ -104,7 +106,7 @@ public class VectorGridDataTest {
"CST6CDT"); "CST6CDT");
private final TimeConstraints testTC1 = new TimeConstraints( private final TimeConstraints testTC1 = new TimeConstraints(
TimeConstraints.HOUR, TimeConstraints.HOUR, 0); TimeUtil.SECONDS_PER_HOUR, TimeUtil.SECONDS_PER_HOUR, 0);
private final GridParmInfo testGPI1 = new GridParmInfo(this.testPID1, private final GridParmInfo testGPI1 = new GridParmInfo(this.testPID1,
this.testGL1, GridType.VECTOR, "F", "Temperature", -20f, 80f, 2, this.testGL1, GridType.VECTOR, "F", "Temperature", -20f, 80f, 2,

View file

@ -42,6 +42,7 @@ import com.raytheon.uf.common.dataplugin.gfe.grid.Grid2DFloat;
import com.raytheon.uf.common.dataplugin.gfe.slice.IGridSlice; import com.raytheon.uf.common.dataplugin.gfe.slice.IGridSlice;
import com.raytheon.uf.common.dataplugin.gfe.slice.ScalarGridSlice; import com.raytheon.uf.common.dataplugin.gfe.slice.ScalarGridSlice;
import com.raytheon.uf.common.time.TimeRange; import com.raytheon.uf.common.time.TimeRange;
import com.raytheon.uf.common.time.util.TimeUtil;
import com.raytheon.viz.gfe.GFEOperationFailedException; import com.raytheon.viz.gfe.GFEOperationFailedException;
import com.raytheon.viz.gfe.core.DataManager; import com.raytheon.viz.gfe.core.DataManager;
import com.raytheon.viz.gfe.core.griddata.AbstractGridData; import com.raytheon.viz.gfe.core.griddata.AbstractGridData;
@ -64,6 +65,7 @@ import com.vividsolutions.jts.geom.Coordinate;
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* 02/21/2008 chammack Initial Creation * 02/21/2008 chammack Initial Creation
* 03/20/2013 #1774 randerso Use TimeUtil constants
* *
* </pre> * </pre>
* *
@ -84,7 +86,7 @@ public class TestParm {
"CST6CDT"); "CST6CDT");
private static final TimeConstraints TC1 = new TimeConstraints( private static final TimeConstraints TC1 = new TimeConstraints(
TimeConstraints.HOUR, TimeConstraints.HOUR, 0); TimeUtil.SECONDS_PER_HOUR, TimeUtil.SECONDS_PER_HOUR, 0);
private static GridParmInfo gpi; private static GridParmInfo gpi;
@ -136,7 +138,7 @@ public class TestParm {
"CST6CDT"); "CST6CDT");
private final TimeConstraints testTC1 = new TimeConstraints( private final TimeConstraints testTC1 = new TimeConstraints(
TimeConstraints.HOUR, TimeConstraints.HOUR, 0); TimeUtil.SECONDS_PER_HOUR, TimeUtil.SECONDS_PER_HOUR, 0);
private final GridParmInfo testGPI1 = new GridParmInfo(this.testPID1, private final GridParmInfo testGPI1 = new GridParmInfo(this.testPID1,
this.testGL1, GridType.SCALAR, "F", "Temperature", -20f, 80f, 2, this.testGL1, GridType.SCALAR, "F", "Temperature", -20f, 80f, 2,

View file

@ -170,6 +170,16 @@ public abstract class AbstractVizPerspectiveManager implements
try { try {
mgr.activateDefaultTool(((AbstractEditor) part) mgr.activateDefaultTool(((AbstractEditor) part)
.getDefaultTool()); .getDefaultTool());
if (mgr.getToolManager().getSelectedModalTools()
.isEmpty()) {
// Hack due to tool activation not sending whether
// it should be activated or deactivated and is just
// toggling instead. TODO: Make AbstractModalTool
// required command parameter for activate or
// deactivate
mgr.activateDefaultTool(((AbstractEditor) part)
.getDefaultTool());
}
} catch (VizException e) { } catch (VizException e) {
statusHandler.handle(Priority.SIGNIFICANT, statusHandler.handle(Priority.SIGNIFICANT,
"Error activating tool set", e); "Error activating tool set", e);

View file

@ -32,9 +32,7 @@ import org.eclipse.ui.commands.ICommandService;
import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.viz.core.Activator;
import com.raytheon.uf.viz.core.exception.VizException; import com.raytheon.uf.viz.core.exception.VizException;
import com.raytheon.uf.viz.core.status.StatusConstants;
/** /**
* Defines a Tool Manager, which handles the tool registrations and activations * Defines a Tool Manager, which handles the tool registrations and activations
@ -112,6 +110,14 @@ public class ModalToolManager {
*/ */
public synchronized void activateToolSet(String defaultTool) public synchronized void activateToolSet(String defaultTool)
throws VizException { throws VizException {
boolean found = false;
for (AbstractModalTool tool : toolMap.values()) {
if (tool != null && tool.commandId.equals(defaultTool)) {
found = true;
break;
}
}
if (!found) {
try { try {
ICommandService service = (ICommandService) PlatformUI ICommandService service = (ICommandService) PlatformUI
.getWorkbench().getService(ICommandService.class); .getWorkbench().getService(ICommandService.class);
@ -127,5 +133,6 @@ public class ModalToolManager {
throw new VizException("Error loading tool set", e); throw new VizException("Error loading tool set", e);
} }
} }
}
} }

View file

@ -134,6 +134,7 @@ import com.vividsolutions.jts.geom.Polygon;
* setPolygonLocked(true) below conSelected() is called in corSelected(), * setPolygonLocked(true) below conSelected() is called in corSelected(),
* and removed it from updateListSelected(). * and removed it from updateListSelected().
* Feb 18, 2013 #1633 rferrel Changed checkFollowupSelection to use SimulatedTime. * Feb 18, 2013 #1633 rferrel Changed checkFollowupSelection to use SimulatedTime.
* Mar 28, 2013 DR 15974 D. Friedman Do not track removed GIDs.
* *
* </pre> * </pre>
* *
@ -1587,7 +1588,6 @@ public class WarngenDialog extends CaveSWTDialog implements
warngenLayer.getStormTrackState().endTime = null; warngenLayer.getStormTrackState().endTime = null;
WarningAction action = WarningAction.valueOf(data.getAct()); WarningAction action = WarningAction.valueOf(data.getAct());
warngenLayer.setWarningAction(action); warngenLayer.setWarningAction(action);
warngenLayer.initRemovedGids();
if (action == WarningAction.CON) { if (action == WarningAction.CON) {
oldWarning = conSelected(data); oldWarning = conSelected(data);
} else if (action == WarningAction.COR) { } else if (action == WarningAction.COR) {

View file

@ -160,6 +160,10 @@ import com.vividsolutions.jts.io.WKTReader;
* 12/18/2012 DR 15571 Qinglu Lin Resolved coordinate issue in TML line caused by clicking Restart button. * 12/18/2012 DR 15571 Qinglu Lin Resolved coordinate issue in TML line caused by clicking Restart button.
* 01/24/2013 DR 15723 Qinglu Lin Added initRemovedGids() and updated updateWarnedAreas() to prevent the removed * 01/24/2013 DR 15723 Qinglu Lin Added initRemovedGids() and updated updateWarnedAreas() to prevent the removed
* counties from being re-hatched. * counties from being re-hatched.
* 03/06/2013 DR 15831 D. Friedman Use area inclusion filter in followups.
* 03/28/2013 DR 15973 Qinglu Lin Added adjustVertex() and applied it invalid polygon.
* 03/28/2013 DR 15974 D. Friedman Preserve the set of selected counties when recreating the polygon from the
* hatched area and remember marked counties outside the polygon on followup.
* </pre> * </pre>
* *
* @author mschenke * @author mschenke
@ -278,7 +282,9 @@ public class WarngenLayer extends AbstractStormTrackResource {
try { try {
Polygon hatched = polygonUtil.hatchWarningArea( Polygon hatched = polygonUtil.hatchWarningArea(
warningPolygon, warningArea); warningPolygon,
removeCounties(warningArea,
state.getFipsOutsidePolygon()));
if (hatched != null) { if (hatched != null) {
// DR 15559 // DR 15559
Coordinate[] coords = hatched.getCoordinates(); Coordinate[] coords = hatched.getCoordinates();
@ -287,7 +293,11 @@ public class WarngenLayer extends AbstractStormTrackResource {
GeometryFactory gf = new GeometryFactory(); GeometryFactory gf = new GeometryFactory();
LinearRing lr = gf.createLinearRing(coords); LinearRing lr = gf.createLinearRing(coords);
hatchedArea = gf.createPolygon(lr, null); hatchedArea = gf.createPolygon(lr, null);
hatchedWarningArea = createWarnedArea(latLonToLocal(hatchedArea)); if (! hatchedArea.isValid())
hatchedArea = adjustVertex(hatchedArea);
hatchedWarningArea = createWarnedArea(
latLonToLocal(hatchedArea),
latLonToLocal(warningArea));
} else { } else {
this.hatchedArea = null; this.hatchedArea = null;
this.hatchedWarningArea = null; this.hatchedWarningArea = null;
@ -387,8 +397,6 @@ public class WarngenLayer extends AbstractStormTrackResource {
private WarningAction warningAction = WarningAction.NEW; private WarningAction warningAction = WarningAction.NEW;
private final Set<String> removedGids = new HashSet<String>();
static { static {
for (int i = 0; i < 128; i++) { for (int i = 0; i < 128; i++) {
if (i % 32 == 0) { if (i % 32 == 0) {
@ -1059,11 +1067,15 @@ public class WarngenLayer extends AbstractStormTrackResource {
public void setOldWarningPolygon(AbstractWarningRecord record) { public void setOldWarningPolygon(AbstractWarningRecord record) {
if (record != null) { if (record != null) {
state.setOldWarningPolygon((Polygon) record.getGeometry().clone()); state.setOldWarningPolygon((Polygon) record.getGeometry().clone());
state.setOldWarningArea(getWarningAreaFromPolygon( Geometry oldArea = getWarningAreaFromPolygon(
state.getOldWarningPolygon(), record)); state.getOldWarningPolygon(), record);
if (oldArea.getUserData() instanceof Set)
state.setFipsOutsidePolygon((Set<String>) oldArea.getUserData());
state.setOldWarningArea(oldArea);
} else { } else {
state.setOldWarningArea(null); state.setOldWarningArea(null);
state.setOldWarningPolygon(null); state.setOldWarningPolygon(null);
state.setFipsOutsidePolygon(null);
} }
} }
@ -1114,7 +1126,7 @@ public class WarngenLayer extends AbstractStormTrackResource {
Map<String, String[]> countyMap = FipsUtil Map<String, String[]> countyMap = FipsUtil
.parseCountyHeader(activeTableRecord.getUgcZone()); .parseCountyHeader(activeTableRecord.getUgcZone());
// get area with precalculated area // get area with precalculated area
activeTableRecord.setGeometry(getArea(area, countyMap)); activeTableRecord.setGeometry(getArea(area, countyMap, false));
} }
} }
@ -1154,35 +1166,59 @@ public class WarngenLayer extends AbstractStormTrackResource {
} }
/** /**
* Give the intersection area and polygon, build the area for the county map * Given the intersection area and polygon, build the area for the county
* map
* *
* @param area * @param area
* @param polygon
* @param countyMap * @param countyMap
* @return * @param includeAllEntries
* if true, ensure all entries in countyMap are represented in
* the result even if not in {@code area}.
* @return the resulting area. If includeAllEntries is true and there are
* areas in countyMap not inside {@code area}, the user data will be
* set to a Set of the FIPS IDs (or equivalent) of those outside
* areas.
*/ */
private Geometry getArea(Geometry area, Map<String, String[]> countyMap) { private Geometry getArea(Geometry area, Map<String, String[]> countyMap,
boolean includeAllEntries) {
if (area == null) { if (area == null) {
return null; return null;
} }
// Now remove counties not present in warning // Now remove counties not present in warning
Set<String> idsOutsidePolygon = null;
Set<String> fipsOutsidePolygon = null;
if (includeAllEntries) {
idsOutsidePolygon = new HashSet<String>();
for (Map.Entry<String, String[]> entry : countyMap.entrySet()) {
String state = entry.getKey();
for (String id : entry.getValue()) {
idsOutsidePolygon.add(state + '-' + id);
}
}
}
List<Geometry> geoms = new ArrayList<Geometry>(); List<Geometry> geoms = new ArrayList<Geometry>();
GeometryUtil.buildGeometryList(geoms, area); GeometryUtil.buildGeometryList(geoms, area);
List<Geometry> newList = new ArrayList<Geometry>(); List<Geometry> newList = new ArrayList<Geometry>();
boolean isMarineZone = configuration.getGeospatialConfig()
.getAreaSource().equalsIgnoreCase(MARINE);
for (Geometry geom : geoms) { for (Geometry geom : geoms) {
CountyUserData data = (CountyUserData) geom.getUserData(); CountyUserData data = (CountyUserData) geom.getUserData();
String fips = null; String fips = null;
String[] ids = null; String[] ids = null;
if (configuration.getGeospatialConfig().getAreaSource() if (isMarineZone) {
.equalsIgnoreCase(MARINE)) {
fips = String.valueOf(data.entry.attributes.get(configuration fips = String.valueOf(data.entry.attributes.get(configuration
.getHatchedAreaSource().getFipsField())); .getHatchedAreaSource().getFipsField()));
if (countyMap.containsKey(fips.substring(0, 2))) { if (countyMap.containsKey(fips.substring(0, 2))) {
ids = countyMap.get(fips.substring(0, 2)); ids = countyMap.get(fips.substring(0, 2));
for (String id : ids) { for (String id : ids) {
if (fips.endsWith(id)) { if (fips.endsWith(id)) {
if (idsOutsidePolygon != null) {
idsOutsidePolygon.remove(fips.substring(0, 2) + '-' + id);
}
newList.add(geom); newList.add(geom);
break; break;
} }
@ -1199,6 +1235,9 @@ public class WarngenLayer extends AbstractStormTrackResource {
.getFipsField())); .getFipsField()));
for (String id : ids) { for (String id : ids) {
if (fips.endsWith(id)) { if (fips.endsWith(id)) {
if (idsOutsidePolygon != null) {
idsOutsidePolygon.remove(stateAbbr + '-' + id);
}
newList.add(geom); newList.add(geom);
break; break;
} }
@ -1206,8 +1245,39 @@ public class WarngenLayer extends AbstractStormTrackResource {
} }
} }
} }
return area.getFactory().createGeometryCollection(
if (includeAllEntries && !idsOutsidePolygon.isEmpty()) {
if (geoData != null) {
fipsOutsidePolygon = new HashSet<String>();
for (GeospatialData f : geoData.features) {
CountyUserData data = (CountyUserData) f.geometry
.getUserData();
String fips = String.valueOf(data.entry.attributes
.get(configuration.getHatchedAreaSource()
.getFipsField()));
String key;
if (isMarineZone) {
key = fips.substring(0, 2) + '-' + fips.substring(3);
} else {
String stateAbbr = String.valueOf(data.entry.attributes
.get(configuration.getHatchedAreaSource()
.getAreaNotationField()));
key = stateAbbr + '-' + fips.substring(2);
}
if (idsOutsidePolygon.contains(key)) {
newList.add((Geometry) f.geometry.clone());
fipsOutsidePolygon.add(getFips(f));
}
}
}
}
Geometry result = area.getFactory().createGeometryCollection(
newList.toArray(new Geometry[newList.size()])); newList.toArray(new Geometry[newList.size()]));
if (fipsOutsidePolygon != null)
result.setUserData(fipsOutsidePolygon);
return result;
} }
/** /**
@ -1219,7 +1289,7 @@ public class WarngenLayer extends AbstractStormTrackResource {
* @return * @return
*/ */
private Geometry getArea(Polygon polygon, Map<String, String[]> countyMap) { private Geometry getArea(Polygon polygon, Map<String, String[]> countyMap) {
return getArea(buildArea(polygon), countyMap); return getArea(buildArea(polygon), countyMap, true);
} }
/** /**
@ -1250,6 +1320,10 @@ public class WarngenLayer extends AbstractStormTrackResource {
} }
} }
public void updateWarnedAreas(boolean snapHatchedAreaToPolygon) throws VizException {
updateWarnedAreas(snapHatchedAreaToPolygon, false);
}
/** /**
* *
* @param snapHatchedAreaToPolygon * @param snapHatchedAreaToPolygon
@ -1257,7 +1331,7 @@ public class WarngenLayer extends AbstractStormTrackResource {
* eliminated. * eliminated.
* @throws VizException * @throws VizException
*/ */
public void updateWarnedAreas(boolean snapHatchedAreaToPolygon) public void updateWarnedAreas(boolean snapHatchedAreaToPolygon, boolean preservedSelection)
throws VizException { throws VizException {
if (getPolygon() == null) { if (getPolygon() == null) {
return; return;
@ -1268,7 +1342,8 @@ public class WarngenLayer extends AbstractStormTrackResource {
Geometry warningArea = state.getWarningArea(); Geometry warningArea = state.getWarningArea();
Geometry warningPolygon = state.getWarningPolygon(); Geometry warningPolygon = state.getWarningPolygon();
Geometry newWarningArea = createWarnedArea(latLonToLocal((snapHatchedAreaToPolygon || warningArea == null) ? warningPolygon Geometry newWarningArea = createWarnedArea(latLonToLocal((snapHatchedAreaToPolygon || warningArea == null) ? warningPolygon
: warningArea)); : warningArea),
preservedSelection && warningArea != null ? latLonToLocal(warningArea) : null);
updateWarnedAreaState(newWarningArea, snapHatchedAreaToPolygon); updateWarnedAreaState(newWarningArea, snapHatchedAreaToPolygon);
System.out.println("determining hatchedArea took " System.out.println("determining hatchedArea took "
@ -1279,26 +1354,63 @@ public class WarngenLayer extends AbstractStormTrackResource {
* Creates a warning area based on the hatched area in local coordinates * Creates a warning area based on the hatched area in local coordinates
* *
* @param hatchedArea * @param hatchedArea
* @param preservedSelection
* if not null, the result contains all entities in this Geometry
* even if they do not intersect hatchedArea or do not pass the
* inclusion filter
* @return * @return
*/ */
private Geometry createWarnedArea(Geometry hatchedArea) { private Geometry createWarnedArea(Geometry hatchedArea, Geometry preservedSelection) {
Geometry oldWarningPolygon = latLonToLocal(state.getOldWarningPolygon()); Geometry oldWarningPolygon = latLonToLocal(state.getOldWarningPolygon());
Geometry oldWarningArea = latLonToLocal(state.getOldWarningArea());
Geometry newHatchedArea = null; Geometry newHatchedArea = null;
Set<String> selectedFips = null;
List<Geometry> selectedGeoms = null;
if (preservedSelection != null)
selectedFips = getAllFipsInArea(preservedSelection);
// Loop through each of our counties returned from the query // Loop through each of our counties returned from the query
for (GeospatialData f : geoData.features) { for (GeospatialData f : geoData.features) {
// get the geometry of the county and make sure it intersects // get the geometry of the county and make sure it intersects
// with our hatched area // with our hatched area
PreparedGeometry prepGeom = (PreparedGeometry) f.attributes PreparedGeometry prepGeom = (PreparedGeometry) f.attributes
.get(GeospatialDataList.LOCAL_PREP_GEOM); .get(GeospatialDataList.LOCAL_PREP_GEOM);
Geometry geom = (Geometry) f.attributes
.get(GeospatialDataList.LOCAL_GEOM);
Geometry intersection = null; Geometry intersection = null;
try { try {
// Get intersection between county and hatched boundary // Get intersection between county and hatched boundary
intersection = GeometryUtil.intersection(hatchedArea, prepGeom); intersection = GeometryUtil.intersection(hatchedArea, prepGeom);
if (oldWarningArea != null) {
intersection = GeometryUtil.intersection(intersection, oldWarningArea);
}
if (intersection.isEmpty()) { if (intersection.isEmpty()) {
if (selectedFips == null
|| !selectedFips.contains(getFips(f))) {
continue; continue;
} else if (! selectedFips.isEmpty()) {
/*
* Add whatever part of the area was previously hatched
* despite being outside the new polygon.
*/
if (selectedGeoms == null) {
selectedGeoms = new ArrayList<Geometry>();
GeometryUtil.buildGeometryList(selectedGeoms, preservedSelection);
}
intersection = null;
String prefix = GeometryUtil.getPrefix(f.geometry.getUserData());
for (Geometry g : selectedGeoms) {
if (g.getUserData() != null) {
if (prefix.equals(GeometryUtil.getPrefix(g.getUserData()))) {
intersection = intersection == null ? g :
GeometryUtil.union(intersection, g);
}
}
}
if (intersection == null) {
// This part of the area was not previously selected.
continue;
}
}
} }
} catch (RuntimeException e) { } catch (RuntimeException e) {
continue; continue;
@ -1306,33 +1418,15 @@ public class WarngenLayer extends AbstractStormTrackResource {
} }
try { try {
double ratio = intersection.getArea() / geom.getArea(); boolean include;
double ratioInPercent = ratio * 100.; if (selectedFips != null)
Double areaOfGeom = (Double) f.attributes.get(AREA); include = selectedFips.contains(getFips(f));
double areaInKmSqOfIntersection = meterSqToKmSq else
.convert(areaOfGeom * ratio); include = filterArea(f, intersection, true)
&& (oldWarningPolygon == null
boolean includeArea = false; || prepGeom.intersects(oldWarningPolygon)
if (getConfiguration().getHatchedAreaSource() || isOldAreaOutsidePolygon(f));
.getInclusionAndOr().equalsIgnoreCase("AND")) { if (include) {
if ((ratioInPercent >= getConfiguration()
.getHatchedAreaSource().getInclusionPercent())
&& (areaInKmSqOfIntersection > getConfiguration()
.getHatchedAreaSource().getInclusionArea())) {
includeArea = true;
}
} else {
if ((ratioInPercent >= getConfiguration()
.getHatchedAreaSource().getInclusionPercent())
|| (areaInKmSqOfIntersection > getConfiguration()
.getHatchedAreaSource().getInclusionArea())) {
includeArea = true;
}
}
if (includeArea
&& (oldWarningPolygon == null || prepGeom
.intersects(oldWarningPolygon))) {
if (newHatchedArea == null) { if (newHatchedArea == null) {
newHatchedArea = intersection; newHatchedArea = intersection;
} else { } else {
@ -1397,34 +1491,54 @@ public class WarngenLayer extends AbstractStormTrackResource {
state.resetMarked(); state.resetMarked();
} else if (warningPolygon != null) { } else if (warningPolygon != null) {
// want intersection of warningPolygon and oldWarningArea // want intersection of warningPolygon and oldWarningArea
Set<String> selectedGids = new HashSet<String>(
Arrays.asList(GeometryUtil.getGID(newHatchedArea)));
Geometry selectedArea = newHatchedArea;
newHatchedArea = GeometryUtil.intersection(warningPolygon, newHatchedArea = GeometryUtil.intersection(warningPolygon,
oldWarningArea); oldWarningArea);
if (removedGids.size() > 0) { Set<String> newGids = new HashSet<String>(
Arrays.asList(GeometryUtil.getGID(newHatchedArea)));
if (!selectedGids.equals(newGids)) {
// Remove areas with gid in removedGids // Remove areas with gid in removedGids
List<Geometry> areas = new ArrayList<Geometry>( List<Geometry> areas = new ArrayList<Geometry>(
newHatchedArea.getNumGeometries()); newHatchedArea.getNumGeometries());
Set<String> seenGids = new HashSet<String>();
for (int n = 0; n < newHatchedArea.getNumGeometries(); ++n) { for (int n = 0; n < newHatchedArea.getNumGeometries(); ++n) {
Geometry newArea = newHatchedArea.getGeometryN(n); Geometry newArea = newHatchedArea.getGeometryN(n);
String[] gids = GeometryUtil.getGID(newArea); String[] gids = GeometryUtil.getGID(newArea);
boolean flag = false; boolean flag = false;
for (String gid : gids) { for (String gid : gids) {
if (removedGids.contains(gid)) { if (! selectedGids.contains(gid)) {
flag = true; flag = true;
break; break;
} }
} }
if (!flag) { if (!flag) {
areas.add(newArea); areas.add(newArea);
seenGids.addAll(Arrays.asList(gids));
}
}
selectedGids.removeAll(seenGids);
if (!selectedGids.isEmpty()) {
for (int n = 0; n < selectedArea.getNumGeometries(); ++n) {
Geometry area = selectedArea.getGeometryN(n);
String[] gids = GeometryUtil.getGID(area);
boolean flag = false;
for (String gid : gids) {
if (selectedGids.contains(gid)) {
flag = true;
break;
}
}
if (flag)
areas.add(area);
} }
} }
if (areas.size() != newHatchedArea.getNumGeometries()) {
// Areas were removed, recreate newHatchedArea
newHatchedArea = GeometryUtil.union(areas newHatchedArea = GeometryUtil.union(areas
.toArray(new Geometry[0])); .toArray(new Geometry[0]));
} }
} }
} }
}
if (newHatchedArea == null || newHatchedArea.isEmpty()) { if (newHatchedArea == null || newHatchedArea.isEmpty()) {
boolean initialWarning = false; boolean initialWarning = false;
@ -1471,6 +1585,94 @@ public class WarngenLayer extends AbstractStormTrackResource {
} }
} }
/** Determine if the given area of the reference area passes the
* inclusion filter. Subroutine of {@link #filterArea}.
* @param areaToConsider
* @param wholeArea
* @param areaInMetersSq
* @param anyAmountOfArea
* @return
*/
private boolean filterCheck(Geometry areaToConsider, Geometry wholeArea,
double areaInMetersSq) {
double ratio = areaToConsider.getArea() / wholeArea.getArea();
double ratioInPercent = ratio * 100.;
double areaInKmSqOfIntersection = meterSqToKmSq.convert(areaInMetersSq
* ratio);
boolean percentOk = ratioInPercent >= getConfiguration()
.getHatchedAreaSource().getInclusionPercent();
boolean areaOk = areaInKmSqOfIntersection > getConfiguration()
.getHatchedAreaSource().getInclusionArea();
return getConfiguration().getHatchedAreaSource().getInclusionAndOr()
.equalsIgnoreCase("AND") ?
percentOk && areaOk : percentOk || areaOk;
}
/** Determine if a feature should be included based on how much of it
* is hatched and the configured inclusion criteria.
* @param feature
* @param featureAreaToConsider the portion of the feature that is hatched
* @param localCoordinates if true, use local CRS; otherwise, use lat/lon
* @param anyAmountOfArea if true, ignore the configured criteria and
* include the feature if event a small amount is hatched.
* @return true if the feature should be included
*/
private boolean filterArea(GeospatialData feature, Geometry featureAreaToConsider, boolean localCRS) {
Geometry geom = localCRS ?
(Geometry) feature.attributes.get(GeospatialDataList.LOCAL_GEOM) :
feature.geometry;
double areaOfGeom = (Double) feature.attributes.get(AREA);
if (filterCheck(featureAreaToConsider, geom, areaOfGeom))
return true;
else if (state.getOldWarningArea() != null) {
/*
* Second chance: If the county slipped by the filter in the initial
* warning, allow it now as long as the hatched area is (nearly) the
* same as the hatched area in the initial warning.
*
* This test assumes that the followup filter is not more permissive
* that the initial warning filter. OTOH, if the followup filter is
* more permissive, this test is not really necessary.
*/
Geometry oldWarningArea = state.getOldWarningArea();
if (localCRS)
oldWarningArea = latLonToLocal(oldWarningArea);
List<Geometry> geoms = new ArrayList<Geometry>();
GeometryUtil.buildGeometryList(geoms, oldWarningArea);
Geometry oldSelectedArea = null;
String prefix = GeometryUtil.getPrefix(feature.geometry.getUserData());
for (Geometry g : geoms) {
if (g.getUserData() != null) {
if (prefix.equals(GeometryUtil.getPrefix(g.getUserData()))) {
oldSelectedArea = oldSelectedArea == null ? g :
GeometryUtil.union(oldSelectedArea, g);
}
}
}
if (oldSelectedArea != null) {
double ratioOfOldArea = featureAreaToConsider.getArea() /
oldSelectedArea.getArea();
/*
* Ideally, we would only allow the exact same area, but due to
* possible loss of precision in all of the calculations, we
* allow >= 0.999.
*/
return ratioOfOldArea >= .999
&& !filterCheck(oldSelectedArea, geom, areaOfGeom);
}
}
return false;
}
private boolean isOldAreaOutsidePolygon(GeospatialData f) {
Set<String> fipsOutsidePolygon = state.getFipsOutsidePolygon();
if (fipsOutsidePolygon != null)
return fipsOutsidePolygon.contains(getFips(f));
return false;
}
/** /**
* Warned area to shade in lat/lon space * Warned area to shade in lat/lon space
* *
@ -1888,7 +2090,7 @@ public class WarngenLayer extends AbstractStormTrackResource {
state.setWarningPolygon(warnPolygon); state.setWarningPolygon(warnPolygon);
state.setWarningArea(getWarningAreaFromPolygon( state.setWarningArea(getWarningAreaFromPolygon(
state.getWarningPolygon(), record)); state.getWarningPolygon(), record));
updateWarnedAreas(true); updateWarnedAreas(true, true);
} }
private DataTime recordFrameTime(AbstractWarningRecord warnRecord) { private DataTime recordFrameTime(AbstractWarningRecord warnRecord) {
@ -2266,9 +2468,6 @@ public class WarngenLayer extends AbstractStormTrackResource {
} }
state.setWarningArea(tmp); state.setWarningArea(tmp);
for (String gid : gids) {
removedGids.add(gid);
}
} else { } else {
String featureFips = getFips(f); String featureFips = getFips(f);
Collection<GeospatialData> dataWithFips = getDataWithFips(featureFips); Collection<GeospatialData> dataWithFips = getDataWithFips(featureFips);
@ -2277,7 +2476,8 @@ public class WarngenLayer extends AbstractStormTrackResource {
Set<String> fipsIds = getAllFipsInArea(oldWarningArea); Set<String> fipsIds = getAllFipsInArea(oldWarningArea);
if (fipsIds.contains(featureFips) == false) { if (fipsIds.contains(featureFips) == false) {
break; break;
} else if (oldWarningPolygon.contains(point) == true) { } else if (oldWarningPolygon.contains(point) == true
|| isOldAreaOutsidePolygon(f)) {
// Get intersecting parts for each geom with // Get intersecting parts for each geom with
// matching fips // matching fips
List<Geometry> fipsParts = new ArrayList<Geometry>( List<Geometry> fipsParts = new ArrayList<Geometry>(
@ -2294,10 +2494,9 @@ public class WarngenLayer extends AbstractStormTrackResource {
geom = GeometryUtil.intersection( geom = GeometryUtil.intersection(
warningPolygon, geom); warningPolygon, geom);
} }
if (filterArea(f, geom, false)) {
state.setWarningArea(GeometryUtil.union( state.setWarningArea(GeometryUtil.union(
state.getWarningArea(), geom)); state.getWarningArea(), geom));
for (String gid : gids) {
removedGids.remove(gid);
} }
} }
} else { } else {
@ -2335,6 +2534,23 @@ public class WarngenLayer extends AbstractStormTrackResource {
.getFipsField()); .getFipsField());
} }
private String getFips(Geometry g) {
Object o = g.getUserData();
if (o != null) {
return getFips(((CountyUserData) o).entry);
} else {
for (int n = 0; n < g.getNumGeometries(); ++n) {
Geometry g2 = g.getGeometryN(n);
if (g != g2) {
String fips = getFips(g2);
if (fips != null)
return fips;
}
}
}
return null;
}
private void warningAreaChanged() { private void warningAreaChanged() {
state.snappedToArea = false; state.snappedToArea = false;
if (areaHatcher != null) { if (areaHatcher != null) {
@ -2363,13 +2579,20 @@ public class WarngenLayer extends AbstractStormTrackResource {
} }
private Geometry removeCounty(Geometry warningArea, String fipsToRemove) { private Geometry removeCounty(Geometry warningArea, String fipsToRemove) {
Set<String> set = new HashSet<String>();
set.add(fipsToRemove);
return removeCounties(warningArea, set);
}
private Geometry removeCounties(Geometry warningArea, Set<String> fipsToRemove) {
if (fipsToRemove == null || fipsToRemove.isEmpty())
return warningArea;
List<Geometry> toKeep = new ArrayList<Geometry>( List<Geometry> toKeep = new ArrayList<Geometry>(
warningArea.getNumGeometries()); warningArea.getNumGeometries());
for (int n = 0; n < warningArea.getNumGeometries(); ++n) { for (int n = 0; n < warningArea.getNumGeometries(); ++n) {
Geometry area = warningArea.getGeometryN(n); Geometry area = warningArea.getGeometryN(n);
CountyUserData userData = (CountyUserData) area.getUserData(); String areaFips = getFips(area);
String areaFips = getFips(userData.entry); if (fipsToRemove.contains(areaFips) == false) {
if (fipsToRemove.equals(areaFips) == false) {
toKeep.add(area); toKeep.add(area);
} }
} }
@ -2571,7 +2794,113 @@ public class WarngenLayer extends AbstractStormTrackResource {
this.warningAction = warningAction; this.warningAction = warningAction;
} }
public void initRemovedGids() { /**
removedGids.clear(); * Adjust the location of vertexes that cause polygon self-crossing.
*/
private Polygon adjustVertex(Polygon p) {
GeometryFactory gf = new GeometryFactory();
LinearRing lr;
Coordinate coord[] = p.getCoordinates();
int length = coord.length;
Coordinate intersectCoord = null;
int index[] = new int[6];
LineSegment ls1, ls2;
double d[] = new double[6];
int indexOfTheOtherEnd[] = new int[2];
boolean isPolygonValid = false;
outerLoop: for (int skippedSegment = 1; skippedSegment < length - 3; skippedSegment++) {
for (int i = 0; i < length - 1; i++) {
index[0] = i;
index[1] = index[0] + 1;
index[2] = index[1] + skippedSegment;
if (index[2] >= length)
index[2] = index[2] - length + 1;
index[3] = index[2] + 1;
if (index[3] >= length)
index[3] = index[3] - length + 1;
ls1 = new LineSegment(coord[index[0]],coord[index[1]]);
ls2 = new LineSegment(coord[index[2]],coord[index[3]]);
intersectCoord = ls1.intersection(ls2);
if (intersectCoord != null) {
for (int j = 0; j < index.length-2; j++) {
d[j] = calculateDistance(intersectCoord,coord[index[j]]);
}
if (d[0] < d[1]) {
index[4] = index[0];
d[4] = d[0];
indexOfTheOtherEnd[0] = index[1];
} else {
index[4] = index[1];
d[4] = d[1];
indexOfTheOtherEnd[0] = index[0];
}
if (d[2] < d[3]) {
index[5] = index[2];
d[5] = d[2];
indexOfTheOtherEnd[1] = index[3];
} else {
index[5] = index[3];
d[5] = d[3];
indexOfTheOtherEnd[1] = index[2];
}
// index of the vertex on a line segment (line segment A), which will be moved along line segment A.
int replaceIndex;
// index of the vertex at the other end of line segment A.
int theOtherIndex;
if (d[4] < d[5]) {
replaceIndex = index[4];
theOtherIndex = indexOfTheOtherEnd[0];
} else {
replaceIndex= index[5];
theOtherIndex = indexOfTheOtherEnd[1];
}
// move the bad vertex, which is on line segment A and has the shortest distance to intersectCoord,
// along line segment A to the other side of line segment B which intersects with line segment A.
double delta;
double min = 0.00001;
if (Math.abs(intersectCoord.x - coord[replaceIndex].x) < min) {
// move the bad vertex along a vertical line segment.
delta = intersectCoord.y - coord[theOtherIndex].y;
coord[replaceIndex].y += 0.01 * (delta / Math.abs(delta));
} else if (Math.abs(intersectCoord.y - coord[replaceIndex].y) < min) {
// move the bad vertex along a horizontal line segment.
delta = intersectCoord.x - coord[theOtherIndex].x;
coord[replaceIndex].x += 0.01 * (delta / Math.abs(delta));
} else {
// move the bad vertex along a line segment which is neither vertical nor horizontal.
double slope = computeSlope(coord, replaceIndex, theOtherIndex);
delta = coord[theOtherIndex].y - intersectCoord.y;
coord[replaceIndex].y = intersectCoord.y + 0.005 * (delta / Math.abs(delta));
coord[replaceIndex].x = (coord[replaceIndex].y - coord[theOtherIndex].y) / slope
+ coord[theOtherIndex].x;
}
PolygonUtil.round(coord, 2);
if (replaceIndex == 0)
coord[length-1] = new Coordinate(coord[replaceIndex]);
else if (replaceIndex == length - 1)
coord[0] = new Coordinate(coord[replaceIndex]);
lr = gf.createLinearRing(coord);
p = gf.createPolygon(lr, null);
isPolygonValid = p.isValid();
if (isPolygonValid)
break outerLoop;
}
}
}
return p;
}
private double calculateDistance(Coordinate c1, Coordinate c2) {
return Math.sqrt(Math.pow(c1.x - c2.x, 2) + Math.pow(c1.y - c2.y, 2));
}
public double computeSlope(Coordinate[] coords, int i, int j) {
double min = 1.0E-08;
double dx = coords[i].x-coords[j].x;
double slope = 0.0;
if (Math.abs(dx)>min) {
slope = (coords[i].y-coords[j].y)/dx;
}
return slope;
} }
} }

View file

@ -63,6 +63,7 @@ import com.vividsolutions.jts.geom.Polygon;
* AddVertexAction, DeleteVertextAction and MoveElementAction inner classes. * AddVertexAction, DeleteVertextAction and MoveElementAction inner classes.
* Jan 30, 2013 15439 Qinglu Lin Code were added to prevent nullPointException from occurring * Jan 30, 2013 15439 Qinglu Lin Code were added to prevent nullPointException from occurring
* when c2 is null for "case SINGLE_POINT" in move(). * when c2 is null for "case SINGLE_POINT" in move().
* Mar 28, 2013 DR 15974 D. Friedman Do not track removed GIDs.
* *
* </pre> * </pre>
* *
@ -360,7 +361,6 @@ public class WarngenUIManager extends InputAdapter {
} }
private void move(int x, int y) { private void move(int x, int y) {
warngenLayer.initRemovedGids();
IDisplayPaneContainer container = warngenLayer.getResourceContainer(); IDisplayPaneContainer container = warngenLayer.getResourceContainer();
WarngenUIState state = warngenLayer.getWarngenState(); WarngenUIState state = warngenLayer.getWarngenState();
@ -416,7 +416,6 @@ public class WarngenUIManager extends InputAdapter {
return; return;
} }
warngenLayer.initRemovedGids();
Coordinate[] coords = warngenLayer.getPolygon().getCoordinates(); Coordinate[] coords = warngenLayer.getPolygon().getCoordinates();
int idx = StormTrackUIManager.getCoordinateIndex(warngenLayer, int idx = StormTrackUIManager.getCoordinateIndex(warngenLayer,
@ -519,7 +518,6 @@ public class WarngenUIManager extends InputAdapter {
private class MoveElementAction extends AbstractRightClickAction { private class MoveElementAction extends AbstractRightClickAction {
@Override @Override
public void run() { public void run() {
warngenLayer.initRemovedGids();
moveType = MoveType.ALL_POINTS; moveType = MoveType.ALL_POINTS;
movePointIndex = StormTrackUIManager.getCoordinateIndex( movePointIndex = StormTrackUIManager.getCoordinateIndex(
warngenLayer, warngenLayer.getPolygon().getCoordinates(), warngenLayer, warngenLayer.getPolygon().getCoordinates(),
@ -549,7 +547,6 @@ public class WarngenUIManager extends InputAdapter {
return; return;
} }
warngenLayer.initRemovedGids();
Coordinate c = new Coordinate(lastMouseX, lastMouseY); Coordinate c = new Coordinate(lastMouseX, lastMouseY);
Polygon poly = warngenLayer.getPolygon(); Polygon poly = warngenLayer.getPolygon();

View file

@ -44,6 +44,7 @@ import com.vividsolutions.jts.geom.Polygon;
* 12/06/2012 DR 15559 Qinglu Lin Added computeSlope(), computeCoordinate(), * 12/06/2012 DR 15559 Qinglu Lin Added computeSlope(), computeCoordinate(),
* and adjustPolygon(). * and adjustPolygon().
* Feb 15, 2013 1624 jsanchez Fix NullPointerException in removeDuplicateCoordinate. * Feb 15, 2013 1624 jsanchez Fix NullPointerException in removeDuplicateCoordinate.
* 03/28/2013 DR 15974 D. Friedman Track marked areas outside polygon.
* *
* </pre> * </pre>
* *
@ -77,6 +78,8 @@ public class WarngenUIState {
public FollowupData followupData = null; public FollowupData followupData = null;
private Set<String> fipsOutsidePolygon = null;
/** /**
* Get the warning area in lat/lon projection * Get the warning area in lat/lon projection
* *
@ -326,6 +329,14 @@ public class WarngenUIState {
this.warningPolygon = removeDuplicateCoordinate(warningPolygon); this.warningPolygon = removeDuplicateCoordinate(warningPolygon);
} }
public Set<String> getFipsOutsidePolygon() {
return fipsOutsidePolygon;
}
public void setFipsOutsidePolygon(Set<String> gidsOutsidePolygon) {
this.fipsOutsidePolygon = gidsOutsidePolygon;
}
public void clear() { public void clear() {
warningPolygon = null; warningPolygon = null;
clear2(); clear2();
@ -344,6 +355,7 @@ public class WarngenUIState {
warningArea = null; warningArea = null;
markedWarningArea = null; markedWarningArea = null;
markedWarningPolygon = null; markedWarningPolygon = null;
fipsOutsidePolygon = null;
} }
/** /**

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -34,7 +34,6 @@ import java.util.regex.Pattern;
import com.raytheon.edex.plugin.gfe.config.IFPServerConfig; import com.raytheon.edex.plugin.gfe.config.IFPServerConfig;
import com.raytheon.edex.plugin.gfe.config.IFPServerConfigManager; import com.raytheon.edex.plugin.gfe.config.IFPServerConfigManager;
import com.raytheon.edex.plugin.gfe.db.dao.GFEDao;
import com.raytheon.edex.plugin.gfe.exception.GfeConfigurationException; import com.raytheon.edex.plugin.gfe.exception.GfeConfigurationException;
import com.raytheon.edex.plugin.gfe.server.GridParmManager; import com.raytheon.edex.plugin.gfe.server.GridParmManager;
import com.raytheon.edex.plugin.gfe.server.database.D2DGridDatabase; import com.raytheon.edex.plugin.gfe.server.database.D2DGridDatabase;
@ -47,6 +46,7 @@ import com.raytheon.uf.common.dataplugin.gfe.GridDataHistory;
import com.raytheon.uf.common.dataplugin.gfe.db.objects.DatabaseID; import com.raytheon.uf.common.dataplugin.gfe.db.objects.DatabaseID;
import com.raytheon.uf.common.dataplugin.gfe.db.objects.ParmID; import com.raytheon.uf.common.dataplugin.gfe.db.objects.ParmID;
import com.raytheon.uf.common.dataplugin.gfe.exception.GfeException; import com.raytheon.uf.common.dataplugin.gfe.exception.GfeException;
import com.raytheon.uf.common.dataplugin.gfe.server.message.ServerResponse;
import com.raytheon.uf.common.dataplugin.gfe.server.notify.GridUpdateNotification; import com.raytheon.uf.common.dataplugin.gfe.server.notify.GridUpdateNotification;
import com.raytheon.uf.common.message.WsId; import com.raytheon.uf.common.message.WsId;
import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.IUFStatusHandler;
@ -70,6 +70,8 @@ import com.raytheon.uf.edex.site.SiteAwareRegistry;
* D2DParmIdCache toGfeIngestNotificationFilter. * D2DParmIdCache toGfeIngestNotificationFilter.
* Added code to match wind components and send * Added code to match wind components and send
* GridUpdateNotifications. * GridUpdateNotifications.
* Mar 20, 2013 #1774 randerso Changde to use GFDD2DDao
*
* </pre> * </pre>
* *
* @author bphillip * @author bphillip
@ -308,7 +310,6 @@ public class D2DParmIdCache {
"Building D2DParmIdCache for " + siteID + "..."); "Building D2DParmIdCache for " + siteID + "...");
IFPServerConfig config = IFPServerConfigManager IFPServerConfig config = IFPServerConfigManager
.getServerConfig(siteID); .getServerConfig(siteID);
GFEDao dao = new GFEDao();
Set<ParmID> parmIds = new HashSet<ParmID>(); Set<ParmID> parmIds = new HashSet<ParmID>();
long start = System.currentTimeMillis(); long start = System.currentTimeMillis();
List<String> d2dModels = config.getD2dModels(); List<String> d2dModels = config.getD2dModels();
@ -318,8 +319,8 @@ public class D2DParmIdCache {
if ((d2dModelName != null) && (gfeModel != null)) { if ((d2dModelName != null) && (gfeModel != null)) {
List<DatabaseID> dbIds = null; List<DatabaseID> dbIds = null;
try { try {
dbIds = dao.getD2DDatabaseIdsFromDb(d2dModelName, dbIds = D2DGridDatabase.getD2DDatabaseIdsFromDb(config,
gfeModel, siteID); d2dModelName);
} catch (DataAccessLayerException e) { } catch (DataAccessLayerException e) {
throw new PluginException( throw new PluginException(
"Unable to get D2D Database Ids from database!", "Unable to get D2D Database Ids from database!",
@ -333,9 +334,14 @@ public class D2DParmIdCache {
for (int i = 0; i < versions; i++) { for (int i = 0; i < versions; i++) {
try { try {
parmIds.addAll(dao.getD2DParmIdsFromDb( D2DGridDatabase db = (D2DGridDatabase) GridParmManager
d2dModelName, dbIds.get(i))); .getDb(dbIds.get(i));
} catch (DataAccessLayerException e) { ServerResponse<List<ParmID>> sr = db
.getParmList();
if (sr.isOkay()) {
parmIds.addAll(sr.getPayload());
}
} catch (GfeException e) {
throw new PluginException( throw new PluginException(
"Error adding parmIds to D2DParmIdCache!!", "Error adding parmIds to D2DParmIdCache!!",
e); e);

View file

@ -34,13 +34,13 @@ import com.google.common.util.concurrent.MoreExecutors;
import com.raytheon.edex.plugin.gfe.cache.d2dparms.D2DParmIdCache; import com.raytheon.edex.plugin.gfe.cache.d2dparms.D2DParmIdCache;
import com.raytheon.edex.plugin.gfe.cache.gridlocations.GridLocationCache; import com.raytheon.edex.plugin.gfe.cache.gridlocations.GridLocationCache;
import com.raytheon.edex.plugin.gfe.cache.ifpparms.IFPParmIdCache; import com.raytheon.edex.plugin.gfe.cache.ifpparms.IFPParmIdCache;
import com.raytheon.edex.plugin.gfe.db.dao.GFEDao;
import com.raytheon.edex.plugin.gfe.db.dao.IscSendRecordDao; import com.raytheon.edex.plugin.gfe.db.dao.IscSendRecordDao;
import com.raytheon.edex.plugin.gfe.exception.GfeConfigurationException; import com.raytheon.edex.plugin.gfe.exception.GfeConfigurationException;
import com.raytheon.edex.plugin.gfe.exception.GfeMissingConfigurationException; import com.raytheon.edex.plugin.gfe.exception.GfeMissingConfigurationException;
import com.raytheon.edex.plugin.gfe.isc.IRTManager; import com.raytheon.edex.plugin.gfe.isc.IRTManager;
import com.raytheon.edex.plugin.gfe.reference.MapManager; import com.raytheon.edex.plugin.gfe.reference.MapManager;
import com.raytheon.edex.plugin.gfe.server.GridParmManager; import com.raytheon.edex.plugin.gfe.server.GridParmManager;
import com.raytheon.edex.plugin.gfe.server.database.D2DGridDatabase;
import com.raytheon.edex.plugin.gfe.server.database.D2DSatDatabaseManager; import com.raytheon.edex.plugin.gfe.server.database.D2DSatDatabaseManager;
import com.raytheon.edex.plugin.gfe.server.database.GridDatabase; import com.raytheon.edex.plugin.gfe.server.database.GridDatabase;
import com.raytheon.edex.plugin.gfe.server.database.NetCDFDatabaseManager; import com.raytheon.edex.plugin.gfe.server.database.NetCDFDatabaseManager;
@ -85,6 +85,7 @@ import com.raytheon.uf.edex.site.notify.SendSiteActivationNotifications;
* Feb 15, 2013 1638 mschenke Moved sending of site notification messages to edex plugin * Feb 15, 2013 1638 mschenke Moved sending of site notification messages to edex plugin
* Feb 28, 2013 #1447 dgilling Enable active table fetching on site * Feb 28, 2013 #1447 dgilling Enable active table fetching on site
* activation. * activation.
* Mar 20, 2013 #1774 randerso Changed to use GFED2DDao
* *
* </pre> * </pre>
* *
@ -426,7 +427,6 @@ public class GFESiteActivation implements ISiteActivationListener {
if (LockState.SUCCESSFUL.equals(ct.getLockState())) { if (LockState.SUCCESSFUL.equals(ct.getLockState())) {
boolean clearTime = false; boolean clearTime = false;
try { try {
GFEDao dao = new GFEDao();
List<String> d2dModels = configRef.getD2dModels(); List<String> d2dModels = configRef.getD2dModels();
List<List<String>> idsByVersion = new ArrayList<List<String>>( List<List<String>> idsByVersion = new ArrayList<List<String>>(
5); 5);
@ -441,10 +441,9 @@ public class GFESiteActivation implements ISiteActivationListener {
.desiredDbVersions(new DatabaseID( .desiredDbVersions(new DatabaseID(
siteID, DataType.GRID, "", siteID, DataType.GRID, "",
gfeModel)); gfeModel));
List<DatabaseID> dbIds = dao List<DatabaseID> dbIds = D2DGridDatabase
.getD2DDatabaseIdsFromDb( .getD2DDatabaseIdsFromDb(configRef,
d2dModelName, gfeModel, d2dModelName, versions);
siteID, versions);
while (versions > idsByVersion.size()) { while (versions > idsByVersion.size()) {
idsByVersion.add(new ArrayList<String>( idsByVersion.add(new ArrayList<String>(

View file

@ -0,0 +1,419 @@
/**
* 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.
**/
package com.raytheon.edex.plugin.gfe.db.dao;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
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.util.GridTranslator;
import com.raytheon.uf.common.comm.CommunicationException;
import com.raytheon.uf.common.dataplugin.PluginException;
import com.raytheon.uf.common.dataplugin.gfe.db.objects.DatabaseID;
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.grid.GridConstants;
import com.raytheon.uf.common.dataplugin.grid.GridInfoConstants;
import com.raytheon.uf.common.dataplugin.grid.GridRecord;
import com.raytheon.uf.common.dataplugin.level.Level;
import com.raytheon.uf.common.dataplugin.level.LevelFactory;
import com.raytheon.uf.common.parameter.mapping.ParameterMapper;
import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.common.util.mapping.MultipleMappingException;
import com.raytheon.uf.edex.database.DataAccessLayerException;
import com.raytheon.uf.edex.database.query.DatabaseQuery;
import com.raytheon.uf.edex.plugin.grid.dao.GridDao;
/**
* Data access object for manipulating GFE Records
*
* <pre>
* SOFTWARE HISTORY
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* 03/20/13 #1774 randerso Refactored out of GFEDao
*
* </pre>
*
* @author randerso
* @version 1.0
*/
// **********************************************************************
// TODO: this was moved out of GFEDao and needs to be cleaned up to better
// use the inherited GridDao functionality and hibernate instead of
// SQL/HQL queries. Some parts of the queries could be pushed up to
// GridDao
// **********************************************************************
public class GFED2DDao extends GridDao {
private static final String FCST_TIME = "dataTime.fcstTime";
private static final String REF_TIME = "dataTime.refTime";
// hibernate query to find grid info record for the given datasetId and
// parameter
private static final String SQL_D2D_GRID_PARM_QUERY = "select parameter_abbreviation, id "
+ "FROM grid_info WHERE "
+ GridInfoConstants.DATASET_ID
+ " = :"
+ GridInfoConstants.DATASET_ID
+ " AND "
+ "level_id = :level_id AND "
+ "(lower(parameter_abbreviation) = :abbrev OR lower(parameter_abbreviation) like :hourAbbrev)";
// hibernate query to find the times for the GridRecord for the given
// info.id, id returned to allow easy lookup of the record associated with
// the time
private static final String HQL_D2D_GRID_TIME_QUERY = "select dataTime.fcstTime, id from GridRecord "
+ "where "
+ GridConstants.INFO_ID
+ " = :info_id AND dataTime.refTime = :refTime order by dataTime.fcstTime";
private static final Pattern WIND_PATTERN = Pattern.compile("wind");
public GFED2DDao() throws PluginException {
super();
}
/**
* Retrieves a list of available forecast times
*
* @param dbId
* The database ID to get the times for
* @return The list of forecast times associated with the specified
* DatabaseID
* @throws DataAccessLayerException
* If errors occur while querying the metadata database
*/
public List<Integer> getD2DForecastTimes(DatabaseID dbId)
throws DataAccessLayerException {
DatabaseQuery query = new DatabaseQuery(GridRecord.class.getName());
query.addDistinctParameter(FCST_TIME);
try {
IFPServerConfig config = IFPServerConfigManager
.getServerConfig(dbId.getSiteId());
query.addQueryParam(GridConstants.DATASET_ID,
config.d2dModelNameMapping(dbId.getModelName()));
} catch (GfeConfigurationException e) {
throw new DataAccessLayerException(
"Error occurred looking up model name mapping", e);
}
query.addQueryParam(REF_TIME, dbId.getModelTimeAsDate());
query.addOrder(FCST_TIME, true);
@SuppressWarnings("unchecked")
List<Integer> vals = (List<Integer>) this.queryByCriteria(query);
return vals;
}
/**
* Retrieves a GridRecord from the grib metadata database based on a ParmID,
* TimeRange, and GridParmInfo.
*
* @param id
* The parmID of the desired GridRecord
* @param forecastTime
* The foreCast time of the desired GridRecord, null for any
* record
* @param info
* The GridParmInfo for the requested d2d grid.
* @return The GridRecord from the grib metadata database
* @throws DataAccessLayerException
* If errors occur while querying the metadata database
*/
public GridRecord getD2DGrid(ParmID id, Integer forecastTime,
GridParmInfo info) throws DataAccessLayerException {
Session s = null;
try {
s = getHibernateTemplate().getSessionFactory().openSession();
// TODO: clean up so we only make one db query
SortedMap<Integer, Integer> rawTimes = queryByD2DParmId(id, s);
// if forecastTime is null just pick one,
// this is for static data since all times are the same
if (forecastTime == null) {
forecastTime = rawTimes.keySet().iterator().next();
}
GridRecord retVal = (GridRecord) s.get(GridRecord.class,
rawTimes.get(forecastTime));
retVal.setPluginName(GridConstants.GRID);
return retVal;
} finally {
if (s != null) {
try {
s.close();
} catch (Exception e) {
statusHandler.error(
"Error occurred closing database session", e);
}
}
}
}
/**
* Gets a SortedMap of DataTime and GridRecord ids from the grib metadata
* database which match the given ParmID. Session passed to allow reuse
* across multiple calls.
*
* @param id
* The ParmID to search with
* @param s
* The database session to use
* @return The list of GridRecords from the grib metadata database which
* match the given ParmID
* @throws DataAccessLayerException
* If errors occur while querying the metadata database
*/
public SortedMap<Integer, Integer> queryByD2DParmId(ParmID id, Session s)
throws DataAccessLayerException {
String levelName = GridTranslator.getLevelName(id.getParmLevel());
double[] levelValues = GridTranslator.getLevelValue(id.getParmLevel());
boolean levelOnePresent = (levelValues[0] != Level
.getInvalidLevelValue());
boolean levelTwoPresent = (levelValues[1] != Level
.getInvalidLevelValue());
Level level = null;
// to have a level 2, must have a level one
try {
if (levelOnePresent && levelTwoPresent) {
level = LevelFactory.getInstance().getLevel(levelName,
levelValues[0], levelValues[1]);
} else if (levelOnePresent) {
level = LevelFactory.getInstance().getLevel(levelName,
levelValues[0]);
} else {
level = LevelFactory.getInstance().getLevel(levelName, 0.0);
}
} catch (CommunicationException e) {
logger.error(e.getLocalizedMessage(), e);
}
if (level == null) {
logger.warn("Unable to query D2D parms, ParmID " + id
+ " does not map to a level");
return new TreeMap<Integer, Integer>();
}
SQLQuery modelQuery = s.createSQLQuery(SQL_D2D_GRID_PARM_QUERY);
modelQuery.setLong("level_id", level.getId());
DatabaseID dbId = id.getDbId();
try {
IFPServerConfig config = IFPServerConfigManager
.getServerConfig(dbId.getSiteId());
modelQuery.setString(GridInfoConstants.DATASET_ID,
config.d2dModelNameMapping(dbId.getModelName()));
} catch (GfeConfigurationException e) {
throw new DataAccessLayerException(
"Error occurred looking up model name mapping", e);
}
String abbreviation = null;
try {
abbreviation = ParameterMapper.getInstance().lookupBaseName(
id.getParmName(), "gfeParamName");
} catch (MultipleMappingException e) {
statusHandler.handle(Priority.WARN, e.getLocalizedMessage(), e);
abbreviation = e.getArbitraryMapping();
}
abbreviation = abbreviation.toLowerCase();
modelQuery.setString("abbrev", abbreviation);
modelQuery.setString("hourAbbrev", abbreviation + "%hr");
@SuppressWarnings("unchecked")
List<Object[]> results = modelQuery.list();
Integer modelId = null;
if (results.size() == 0) {
return new TreeMap<Integer, Integer>();
} else if (results.size() > 1) {
// hours matched, take hour with least number that matches exact
// param
Pattern p = Pattern.compile("^" + abbreviation + "(\\d+)hr$");
int lowestHr = -1;
for (Object[] rows : results) {
String param = ((String) rows[0]).toLowerCase();
if (param.equals(abbreviation) && (lowestHr < 0)) {
modelId = (Integer) rows[1];
} else {
Matcher matcher = p.matcher(param);
if (matcher.matches()) {
int hr = Integer.parseInt(matcher.group(1));
if ((lowestHr < 0) || (hr < lowestHr)) {
modelId = (Integer) rows[1];
lowestHr = hr;
}
}
}
}
} else {
modelId = (Integer) (results.get(0))[1];
}
Query timeQuery = s.createQuery(HQL_D2D_GRID_TIME_QUERY);
timeQuery.setInteger("info_id", modelId);
timeQuery.setParameter("refTime", dbId.getModelTimeAsDate());
@SuppressWarnings("unchecked")
List<Object[]> timeResults = timeQuery.list();
if (timeResults.isEmpty()) {
return new TreeMap<Integer, Integer>();
}
SortedMap<Integer, Integer> dataTimes = new TreeMap<Integer, Integer>();
for (Object[] rows : timeResults) {
dataTimes.put((Integer) rows[0], (Integer) rows[1]);
}
return dataTimes;
}
/**
* Retrieve the available Forecast Hours by D2D parm id.
*
* @param id
* @return the list of forecast hours
* @throws DataAccessLayerException
*/
public List<Integer> queryFcstHourByD2DParmId(ParmID id)
throws DataAccessLayerException {
List<Integer> timeList = new ArrayList<Integer>();
Session s = null;
try {
s = getHibernateTemplate().getSessionFactory().openSession();
if (id.getParmName().equalsIgnoreCase("wind")) {
String idString = id.toString();
Matcher idWindMatcher = WIND_PATTERN.matcher(idString);
ParmID uWindId = new ParmID(idWindMatcher.replaceAll("uW"));
SortedMap<Integer, Integer> results = queryByD2DParmId(uWindId,
s);
List<Integer> uTimeList = new ArrayList<Integer>(results.size());
for (Integer o : results.keySet()) {
uTimeList.add(o);
}
ParmID vWindId = new ParmID(idWindMatcher.replaceAll("vW"));
results = queryByD2DParmId(vWindId, s);
Set<Integer> vTimeList = new HashSet<Integer>(results.size(), 1);
for (Integer o : results.keySet()) {
vTimeList.add(o);
}
for (Integer tr : uTimeList) {
if (vTimeList.contains(tr)) {
timeList.add(tr);
}
}
if (!timeList.isEmpty()) {
return timeList;
}
ParmID sWindId = new ParmID(idWindMatcher.replaceAll("ws"));
results = queryByD2DParmId(sWindId, s);
List<Integer> sTimeList = new ArrayList<Integer>(results.size());
for (Integer o : results.keySet()) {
sTimeList.add(o);
}
ParmID dWindId = new ParmID(idWindMatcher.replaceAll("wd"));
results = queryByD2DParmId(dWindId, s);
Set<Integer> dTimeList = new HashSet<Integer>(results.size(), 1);
for (Integer o : results.keySet()) {
dTimeList.add(o);
}
for (Integer tr : sTimeList) {
if (dTimeList.contains(tr)) {
timeList.add(tr);
}
}
} else {
SortedMap<Integer, Integer> results = queryByD2DParmId(id, s);
for (Integer o : results.keySet()) {
timeList.add(o);
}
}
} finally {
if (s != null) {
try {
s.close();
} catch (Exception e) {
statusHandler.error(
"Error occurred closing database session", e);
}
}
}
return timeList;
}
/**
* Retrieves model run times for the n most recent model runs of a given
* d2dModelName
*
* @param d2dModelName
* @param maxRecords
* @return
* @throws DataAccessLayerException
*/
public List<Date> getD2DModelRunTimes(String d2dModelName, int maxRecords)
throws DataAccessLayerException {
DatabaseQuery query = new DatabaseQuery(GridRecord.class.getName());
query.addDistinctParameter(REF_TIME);
query.addQueryParam(GridConstants.DATASET_ID, d2dModelName);
query.addOrder(REF_TIME, false);
if (maxRecords > 0) {
query.setMaxResults(maxRecords);
}
List<?> result = this.queryByCriteria(query);
List<Date> inventory = new ArrayList<Date>(result.size());
for (Object obj : result) {
// convert returned "Dates" (actually java.sql.TimeStamps) to actual
// java.util.Dates so equals comparisons work correctly
Date date = new Date(((Date) obj).getTime());
inventory.add(date);
}
return inventory;
}
}

View file

@ -27,18 +27,13 @@ import java.util.Calendar;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import org.hibernate.Query; import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session; import org.hibernate.Session;
import org.hibernate.Transaction; import org.hibernate.Transaction;
import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.DetachedCriteria;
@ -49,44 +44,27 @@ import org.springframework.transaction.support.TransactionCallbackWithoutResult;
import com.raytheon.edex.db.dao.DefaultPluginDao; import com.raytheon.edex.db.dao.DefaultPluginDao;
import com.raytheon.edex.plugin.gfe.config.GFESiteActivation; import com.raytheon.edex.plugin.gfe.config.GFESiteActivation;
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.GridParmManager; import com.raytheon.edex.plugin.gfe.server.GridParmManager;
import com.raytheon.edex.plugin.gfe.server.database.D2DGridDatabase;
import com.raytheon.edex.plugin.gfe.server.database.GridDatabase; import com.raytheon.edex.plugin.gfe.server.database.GridDatabase;
import com.raytheon.edex.plugin.gfe.util.GridTranslator;
import com.raytheon.edex.plugin.gfe.util.SendNotifications; import com.raytheon.edex.plugin.gfe.util.SendNotifications;
import com.raytheon.uf.common.comm.CommunicationException;
import com.raytheon.uf.common.dataplugin.PluginDataObject; import com.raytheon.uf.common.dataplugin.PluginDataObject;
import com.raytheon.uf.common.dataplugin.PluginException; import com.raytheon.uf.common.dataplugin.PluginException;
import com.raytheon.uf.common.dataplugin.gfe.GridDataHistory; import com.raytheon.uf.common.dataplugin.gfe.GridDataHistory;
import com.raytheon.uf.common.dataplugin.gfe.db.objects.DatabaseID; import com.raytheon.uf.common.dataplugin.gfe.db.objects.DatabaseID;
import com.raytheon.uf.common.dataplugin.gfe.db.objects.DatabaseID.DataType;
import com.raytheon.uf.common.dataplugin.gfe.db.objects.GFERecord; import com.raytheon.uf.common.dataplugin.gfe.db.objects.GFERecord;
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.ParmID;
import com.raytheon.uf.common.dataplugin.gfe.exception.GfeException;
import com.raytheon.uf.common.dataplugin.gfe.server.notify.GridUpdateNotification; import com.raytheon.uf.common.dataplugin.gfe.server.notify.GridUpdateNotification;
import com.raytheon.uf.common.dataplugin.gfe.server.notify.LockNotification; import com.raytheon.uf.common.dataplugin.gfe.server.notify.LockNotification;
import com.raytheon.uf.common.dataplugin.gfe.util.GfeUtil; import com.raytheon.uf.common.dataplugin.gfe.util.GfeUtil;
import com.raytheon.uf.common.dataplugin.grid.GridConstants;
import com.raytheon.uf.common.dataplugin.grid.GridInfoConstants;
import com.raytheon.uf.common.dataplugin.grid.GridRecord;
import com.raytheon.uf.common.dataplugin.level.Level;
import com.raytheon.uf.common.dataplugin.level.LevelFactory;
import com.raytheon.uf.common.dataplugin.persist.IPersistable; import com.raytheon.uf.common.dataplugin.persist.IPersistable;
import com.raytheon.uf.common.dataplugin.persist.PersistableDataObject; import com.raytheon.uf.common.dataplugin.persist.PersistableDataObject;
import com.raytheon.uf.common.dataquery.db.QueryResult; import com.raytheon.uf.common.dataquery.db.QueryResult;
import com.raytheon.uf.common.datastorage.DataStoreFactory; import com.raytheon.uf.common.datastorage.DataStoreFactory;
import com.raytheon.uf.common.datastorage.IDataStore; import com.raytheon.uf.common.datastorage.IDataStore;
import com.raytheon.uf.common.parameter.mapping.ParameterMapper;
import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.common.time.DataTime; import com.raytheon.uf.common.time.DataTime;
import com.raytheon.uf.common.time.TimeRange; import com.raytheon.uf.common.time.TimeRange;
import com.raytheon.uf.common.time.util.TimeUtil;
import com.raytheon.uf.common.util.Pair; import com.raytheon.uf.common.util.Pair;
import com.raytheon.uf.common.util.mapping.MultipleMappingException;
import com.raytheon.uf.edex.database.DataAccessLayerException; import com.raytheon.uf.edex.database.DataAccessLayerException;
import com.raytheon.uf.edex.database.purge.PurgeLogger; import com.raytheon.uf.edex.database.purge.PurgeLogger;
import com.raytheon.uf.edex.database.query.DatabaseQuery; import com.raytheon.uf.edex.database.query.DatabaseQuery;
@ -113,6 +91,7 @@ import com.raytheon.uf.edex.database.query.DatabaseQuery;
* 02/10/13 #1603 randerso Eliminated unnecessary conversion from lists to arrays * 02/10/13 #1603 randerso Eliminated unnecessary conversion from lists to arrays
* 02/12/13 #1608 randerso Changed to use explicit deletes for groups and datasets * 02/12/13 #1608 randerso Changed to use explicit deletes for groups and datasets
* 03/15/13 #1795 njensen Added updatePublishTime() * 03/15/13 #1795 njensen Added updatePublishTime()
* 03/21/13 #1774 randerso Moved D2D routines into {@link com.raytheon.edex.plugin.gfe.db.dao.GFED2DDao}
* *
* </pre> * </pre>
* *
@ -120,25 +99,6 @@ import com.raytheon.uf.edex.database.query.DatabaseQuery;
* @version 1.0 * @version 1.0
*/ */
public class GFEDao extends DefaultPluginDao { public class GFEDao extends DefaultPluginDao {
// hibernate query to find grid info record for the given datasetId and
// parameter
private String SQL_D2D_GRID_PARM_QUERY = "select parameter_abbreviation, id "
+ "FROM grid_info WHERE "
+ GridInfoConstants.DATASET_ID
+ " = :"
+ GridInfoConstants.DATASET_ID
+ " AND "
+ "level_id = :level_id AND "
+ "(lower(parameter_abbreviation) = :abbrev OR lower(parameter_abbreviation) like :hourAbbrev)";
// hibernate query to find the times for the GridRecord for the given
// info.id, id returned to allow easy lookup of the record associated with
// the time
private static final String HQL_D2D_GRID_TIME_QUERY = "select dataTime, id from GridRecord "
+ "where "
+ GridConstants.INFO_ID
+ " = :info_id AND dataTime.refTime = :refTime order by dataTime.fcstTime";
private static final Pattern WIND_PATTERN = Pattern.compile("wind"); private static final Pattern WIND_PATTERN = Pattern.compile("wind");
public GFEDao() throws PluginException { public GFEDao() throws PluginException {
@ -596,348 +556,6 @@ public class GFEDao extends DefaultPluginDao {
return history; return history;
} }
/**
* Retrieves a list of valid times for a specified ParmID from the grib
* metadata database. The valid time is constructed by adding the forecast
* time to the reference time.
*
* @param id
* The parmID to get the times for
* @return The list of times associated with the specified ParmID
* @throws DataAccessLayerException
* If errors occur while querying the metadata database
*/
public List<TimeRange> getD2DTimes(ParmID id)
throws DataAccessLayerException {
return queryTimeByD2DParmId(id);
}
/**
* Retrieves a list of available forecast times
*
* @param dbId
* The database ID to get the times for
* @return The list of forecast times associated with the specified
* DatabaseID
* @throws DataAccessLayerException
* If errors occur while querying the metadata database
*/
@SuppressWarnings("unchecked")
public List<Integer> getD2DForecastTimes(DatabaseID dbId)
throws DataAccessLayerException {
DatabaseQuery query = new DatabaseQuery(GridRecord.class.getName());
query.addDistinctParameter("dataTime.fcstTime");
try {
IFPServerConfig config = IFPServerConfigManager
.getServerConfig(dbId.getSiteId());
query.addQueryParam(GridConstants.DATASET_ID,
config.d2dModelNameMapping(dbId.getModelName()));
} catch (GfeConfigurationException e) {
throw new DataAccessLayerException(
"Error occurred looking up model name mapping", e);
}
query.addQueryParam("dataTime.refTime", dbId.getModelTimeAsDate());
query.addOrder("dataTime.fcstTime", true);
List<?> vals = this.queryByCriteria(query);
return (List<Integer>) vals;
}
/**
* Retrieves a GridRecord from the grib metadata database based on a ParmID,
* TimeRange, and GridParmInfo.
*
* @param id
* The parmID of the desired GridRecord
* @param timeRange
* The timeRange of the desired GridRecord
* @param info
* The GridParmInfo for the requested d2d grid.
* @return The GridRecord from the grib metadata database
* @throws DataAccessLayerException
* If errors occur while querying the metadata database
*/
public GridRecord getD2DGrid(ParmID id, TimeRange timeRange,
GridParmInfo info) throws DataAccessLayerException {
Session s = null;
try {
s = getHibernateTemplate().getSessionFactory().openSession();
// TODO: clean up so we only make one db query
SortedMap<DataTime, Integer> rawTimes = queryByD2DParmId(id, s);
List<TimeRange> gribTimes = new ArrayList<TimeRange>();
for (DataTime dt : rawTimes.keySet()) {
gribTimes.add(dt.getValidPeriod());
}
try {
if (isMos(id)) {
for (Map.Entry<DataTime, Integer> timeEntry : rawTimes
.entrySet()) {
TimeRange gribTime = timeEntry.getKey()
.getValidPeriod();
TimeRange time = info.getTimeConstraints()
.constraintTime(gribTime.getEnd());
if (timeRange.getEnd().equals(time.getEnd())
|| !info.getTimeConstraints().anyConstraints()) {
GridRecord retVal = (GridRecord) s.get(
GridRecord.class, timeEntry.getValue());
retVal.setPluginName(GridConstants.GRID);
return retVal;
}
}
} else if (D2DGridDatabase.isNonAccumDuration(id, gribTimes)) {
for (Map.Entry<DataTime, Integer> timeEntry : rawTimes
.entrySet()) {
TimeRange gribTime = timeEntry.getKey()
.getValidPeriod();
if (timeRange.getStart().equals(gribTime.getEnd())
|| timeRange.equals(gribTime)) {
GridRecord retVal = (GridRecord) s.get(
GridRecord.class, timeEntry.getValue());
retVal.setPluginName(GridConstants.GRID);
return retVal;
}
}
} else {
for (Map.Entry<DataTime, Integer> timeEntry : rawTimes
.entrySet()) {
TimeRange gribTime = timeEntry.getKey()
.getValidPeriod();
TimeRange time = info.getTimeConstraints()
.constraintTime(gribTime.getStart());
if ((timeRange.getStart().equals(time.getStart()) || !info
.getTimeConstraints().anyConstraints())) {
GridRecord retVal = (GridRecord) s.get(
GridRecord.class, timeEntry.getValue());
retVal.setPluginName(GridConstants.GRID);
return retVal;
}
}
}
} catch (GfeConfigurationException e) {
throw new DataAccessLayerException(
"Error getting configuration for "
+ id.getDbId().getSiteId(), e);
}
} finally {
if (s != null) {
try {
s.close();
} catch (Exception e) {
statusHandler.error(
"Error occurred closing database session", e);
}
}
}
return null;
}
/**
* Gets a SortedMap of DataTime and GridRecord ids from the grib metadata
* database which match the given ParmID. Session passed to allow reuse
* across multiple calls.
*
* @param id
* The ParmID to search with
* @param s
* The database session to use
* @return The list of GridRecords from the grib metadata database which
* match the given ParmID
* @throws DataAccessLayerException
* If errors occur while querying the metadata database
*/
@SuppressWarnings("unchecked")
public SortedMap<DataTime, Integer> queryByD2DParmId(ParmID id, Session s)
throws DataAccessLayerException {
String levelName = GridTranslator.getLevelName(id.getParmLevel());
double[] levelValues = GridTranslator.getLevelValue(id.getParmLevel());
boolean levelOnePresent = (levelValues[0] != Level
.getInvalidLevelValue());
boolean levelTwoPresent = (levelValues[1] != Level
.getInvalidLevelValue());
Level level = null;
// to have a level 2, must have a level one
try {
if (levelOnePresent && levelTwoPresent) {
level = LevelFactory.getInstance().getLevel(levelName,
levelValues[0], levelValues[1]);
} else if (levelOnePresent) {
level = LevelFactory.getInstance().getLevel(levelName,
levelValues[0]);
} else {
level = LevelFactory.getInstance().getLevel(levelName, 0.0);
}
} catch (CommunicationException e) {
logger.error(e.getLocalizedMessage(), e);
}
if (level == null) {
logger.warn("Unable to query D2D parms, ParmID " + id
+ " does not map to a level");
return new TreeMap<DataTime, Integer>();
}
SQLQuery modelQuery = s.createSQLQuery(SQL_D2D_GRID_PARM_QUERY);
modelQuery.setLong("level_id", level.getId());
DatabaseID dbId = id.getDbId();
try {
IFPServerConfig config = IFPServerConfigManager
.getServerConfig(dbId.getSiteId());
modelQuery.setString(GridInfoConstants.DATASET_ID,
config.d2dModelNameMapping(dbId.getModelName()));
} catch (GfeConfigurationException e) {
throw new DataAccessLayerException(
"Error occurred looking up model name mapping", e);
}
String abbreviation = null;
try {
abbreviation = ParameterMapper.getInstance().lookupBaseName(
id.getParmName(), "gfeParamName");
} catch (MultipleMappingException e) {
statusHandler.handle(Priority.WARN, e.getLocalizedMessage(), e);
abbreviation = e.getArbitraryMapping();
}
abbreviation = abbreviation.toLowerCase();
modelQuery.setString("abbrev", abbreviation);
modelQuery.setString("hourAbbrev", abbreviation + "%hr");
List<?> results = modelQuery.list();
Integer modelId = null;
if (results.size() == 0) {
return new TreeMap<DataTime, Integer>();
} else if (results.size() > 1) {
// hours matched, take hour with least number that matches exact
// param
Pattern p = Pattern.compile("^" + abbreviation + "(\\d+)hr$");
int lowestHr = -1;
for (Object[] rows : (List<Object[]>) results) {
String param = ((String) rows[0]).toLowerCase();
if (param.equals(abbreviation) && (lowestHr < 0)) {
modelId = (Integer) rows[1];
} else {
Matcher matcher = p.matcher(param);
if (matcher.matches()) {
int hr = Integer.parseInt(matcher.group(1));
if ((lowestHr < 0) || (hr < lowestHr)) {
modelId = (Integer) rows[1];
lowestHr = hr;
}
}
}
}
} else {
modelId = (Integer) ((Object[]) results.get(0))[1];
}
Query timeQuery = s.createQuery(HQL_D2D_GRID_TIME_QUERY);
timeQuery.setInteger("info_id", modelId);
timeQuery.setParameter("refTime", dbId.getModelTimeAsDate());
List<Object[]> timeResults = timeQuery.list();
if (timeResults.isEmpty()) {
return new TreeMap<DataTime, Integer>();
}
SortedMap<DataTime, Integer> dataTimes = new TreeMap<DataTime, Integer>();
for (Object[] rows : timeResults) {
dataTimes.put((DataTime) rows[0], (Integer) rows[1]);
}
return dataTimes;
}
public List<TimeRange> queryTimeByD2DParmId(ParmID id)
throws DataAccessLayerException {
List<TimeRange> timeList = new ArrayList<TimeRange>();
Session s = null;
try {
s = getHibernateTemplate().getSessionFactory().openSession();
if (id.getParmName().equalsIgnoreCase("wind")) {
String idString = id.toString();
Matcher idWindMatcher = WIND_PATTERN.matcher(idString);
ParmID uWindId = new ParmID(idWindMatcher.replaceAll("uW"));
SortedMap<DataTime, Integer> results = queryByD2DParmId(
uWindId, s);
List<TimeRange> uTimeList = new ArrayList<TimeRange>(
results.size());
for (DataTime o : results.keySet()) {
uTimeList.add(new TimeRange(o.getValidPeriod().getStart(),
3600 * 1000));
}
ParmID vWindId = new ParmID(idWindMatcher.replaceAll("vW"));
results = queryByD2DParmId(vWindId, s);
Set<TimeRange> vTimeList = new HashSet<TimeRange>(
results.size(), 1);
for (DataTime o : results.keySet()) {
vTimeList.add(new TimeRange(o.getValidPeriod().getStart(),
3600 * 1000));
}
for (TimeRange tr : uTimeList) {
if (vTimeList.contains(tr)) {
timeList.add(new TimeRange(tr.getStart(), tr.getStart()));
}
}
if (!timeList.isEmpty()) {
return timeList;
}
ParmID sWindId = new ParmID(idWindMatcher.replaceAll("ws"));
results = queryByD2DParmId(sWindId, s);
List<TimeRange> sTimeList = new ArrayList<TimeRange>(
results.size());
for (DataTime o : results.keySet()) {
sTimeList.add(new TimeRange(o.getValidPeriod().getStart(),
3600 * 1000));
}
ParmID dWindId = new ParmID(idWindMatcher.replaceAll("wd"));
results = queryByD2DParmId(dWindId, s);
Set<TimeRange> dTimeList = new HashSet<TimeRange>(
results.size(), 1);
for (DataTime o : results.keySet()) {
dTimeList.add(new TimeRange(o.getValidPeriod().getStart(),
3600 * 1000));
}
for (TimeRange tr : sTimeList) {
if (dTimeList.contains(tr)) {
timeList.add(new TimeRange(tr.getStart(), tr.getStart()));
}
}
} else {
SortedMap<DataTime, Integer> results = queryByD2DParmId(id, s);
if (isMos(id)) {
for (DataTime o : results.keySet()) {
timeList.add(new TimeRange(o.getValidPeriod().getEnd(),
o.getValidPeriod().getDuration()));
}
} else {
for (DataTime o : results.keySet()) {
timeList.add(o.getValidPeriod());
}
}
}
} finally {
if (s != null) {
try {
s.close();
} catch (Exception e) {
statusHandler.error(
"Error occurred closing database session", e);
}
}
}
return timeList;
}
public void purgeGFEGrids(final DatabaseID dbId) { public void purgeGFEGrids(final DatabaseID dbId) {
txTemplate.execute(new TransactionCallbackWithoutResult() { txTemplate.execute(new TransactionCallbackWithoutResult() {
@Override @Override
@ -959,107 +577,6 @@ public class GFEDao extends DefaultPluginDao {
}); });
} }
public List<DatabaseID> getD2DDatabaseIdsFromDb(String d2dModelName,
String gfeModel, String siteID) throws DataAccessLayerException {
return getD2DDatabaseIdsFromDb(d2dModelName, gfeModel, siteID, -1);
}
public List<DatabaseID> getD2DDatabaseIdsFromDb(String d2dModelName,
String gfeModel, String siteID, int maxRecords)
throws DataAccessLayerException {
List<DatabaseID> dbInventory = new ArrayList<DatabaseID>();
DatabaseQuery query = new DatabaseQuery(GridRecord.class.getName());
query.addDistinctParameter("dataTime.refTime");
query.addQueryParam(GridConstants.DATASET_ID, d2dModelName);
query.addOrder("dataTime.refTime", false);
if (maxRecords > 0) {
query.setMaxResults(maxRecords);
}
List<?> result = this.queryByCriteria(query);
for (Object obj : result) {
DatabaseID dbId = null;
dbId = new DatabaseID(siteID, DataType.GRID, "D2D", gfeModel,
(Date) obj);
try {
GridDatabase db = GridParmManager.getDb(dbId);
if ((db != null) && !dbInventory.contains(dbId)) {
dbInventory.add(dbId);
}
} catch (GfeException e) {
statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(),
e);
}
}
return dbInventory;
}
/**
* Retrieves the latest (or newest) model run for the given site and model
* name.
*
* @param d2dModel
* A GridModel object that contains the D2D model name.
* @param gfeModel
* The GFE model name that corresponds to d2dModel.
* @param siteID
* The site to retrieve the data for.
* @return The DatabaseID of the newest D2D model, or null if no models can
* be found.
* @throws DataAccessLayerException
*/
public DatabaseID getLatestD2DDatabaseIdsFromDb(String d2dModelName,
String gfeModel, String siteID) throws DataAccessLayerException {
List<DatabaseID> dbIds = getD2DDatabaseIdsFromDb(d2dModelName,
gfeModel, siteID, 1);
if (!dbIds.isEmpty()) {
return dbIds.get(0);
} else {
return null;
}
}
public Set<ParmID> getD2DParmIdsFromDb(String d2dModelName, DatabaseID dbId)
throws DataAccessLayerException {
Set<ParmID> parmIds = new HashSet<ParmID>();
DatabaseQuery query = new DatabaseQuery(GridRecord.class.getName());
query.addDistinctParameter(GridConstants.PARAMETER_ABBREVIATION);
query.addDistinctParameter(GridConstants.MASTER_LEVEL_NAME);
query.addDistinctParameter(GridConstants.LEVEL_ONE);
query.addDistinctParameter(GridConstants.LEVEL_TWO);
query.addQueryParam(GridConstants.DATASET_ID, d2dModelName);
query.addQueryParam(
"dataTime.refTime",
TimeUtil.formatDate(dbId.getModelTimeAsDate()).replaceAll("_",
" "));
List<?> result = this.queryByCriteria(query);
for (Object obj : result) {
Object[] objArr = (Object[]) obj;
String levelName = GridTranslator.getShortLevelName(
(String) objArr[1], (Double) objArr[2], (Double) objArr[3]);
if (!levelName.equals(LevelFactory.UNKNOWN_LEVEL)) {
String abbrev = (String) objArr[0];
try {
abbrev = ParameterMapper.getInstance().lookupAlias(abbrev,
"gfeParamName");
} catch (MultipleMappingException e) {
statusHandler.handle(Priority.WARN,
e.getLocalizedMessage(), e);
abbrev = e.getArbitraryMapping();
}
ParmID newParmId = new ParmID(abbrev, dbId, levelName);
parmIds.add(newParmId);
}
}
return parmIds;
}
/** /**
* Removes GridParmInfo from the HDF5 file and any data associated with that * Removes GridParmInfo from the HDF5 file and any data associated with that
* info * info
@ -1136,12 +653,6 @@ public class GFEDao extends DefaultPluginDao {
} }
} }
public static boolean isMos(ParmID id) {
return id.getDbId().getModelName().equals("MOSGuide")
&& (id.getParmName().startsWith("mxt") || id.getParmName()
.startsWith("mnt"));
}
/** /**
* Updates the publish times in the database of all provided * Updates the publish times in the database of all provided
* GridDataHistories. Does not alter the publish times in memory. * GridDataHistories. Does not alter the publish times in memory.

View file

@ -30,6 +30,8 @@ import com.raytheon.uf.common.dataplugin.gfe.exception.GfeException;
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* 04/08/08 #875 bphillip Initial Creation * 04/08/08 #875 bphillip Initial Creation
* 03/28/13 #1837 dgilling Implement missing constructors from
* super-class.
* *
* </pre> * </pre>
* *
@ -40,6 +42,10 @@ public class GfeConfigurationException extends GfeException {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public GfeConfigurationException() {
super();
}
/** /**
* @param aCause * @param aCause
*/ */
@ -58,4 +64,7 @@ public class GfeConfigurationException extends GfeException {
super(aCause, anException); super(aCause, anException);
} }
public GfeConfigurationException(Throwable anException) {
super(anException);
}
} }

View file

@ -0,0 +1,59 @@
/**
* 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.
**/
package com.raytheon.edex.plugin.gfe.exception;
/**
* Exception thrown when a database table referenced in localMaps.py cannot be
* located in the maps database.
*
* <pre>
*
* SOFTWARE HISTORY
*
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Mar 28, 2013 dgilling Initial creation
*
* </pre>
*
* @author dgilling
* @version 1.0
*/
public class MissingLocalMapsException extends GfeConfigurationException {
private static final long serialVersionUID = 1L;
public MissingLocalMapsException() {
super();
}
public MissingLocalMapsException(String message) {
super(message);
}
public MissingLocalMapsException(String message, Throwable cause) {
super(message, cause);
}
public MissingLocalMapsException(Throwable cause) {
super(cause);
}
}

View file

@ -20,8 +20,11 @@
package com.raytheon.edex.plugin.gfe.paraminfo; package com.raytheon.edex.plugin.gfe.paraminfo;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.Date; import java.util.Date;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set;
import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAccessorType;
@ -31,6 +34,7 @@ import javax.xml.bind.annotation.XmlElements;
import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlRootElement;
import com.raytheon.uf.common.time.TimeRange; import com.raytheon.uf.common.time.TimeRange;
import com.raytheon.uf.common.time.util.TimeUtil;
/** /**
* *
@ -42,6 +46,8 @@ import com.raytheon.uf.common.time.TimeRange;
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Jun 24, 2010 #6372 bphillip Initial creation * Jun 24, 2010 #6372 bphillip Initial creation
* Mar 20, 2013 #1774 randerso Added getParmNames,
* changed getAvailableTimes to match A1
* *
* </pre> * </pre>
* *
@ -108,12 +114,21 @@ public class GridParamInfo {
} }
public List<TimeRange> getAvailableTimes(Date refTime) { public List<TimeRange> getAvailableTimes(Date refTime) {
List<TimeRange> availTimes = new ArrayList<TimeRange>(); List<TimeRange> availTimes = new ArrayList<TimeRange>(times.size());
for (int i = 1; i < times.size(); i++) { for (Integer fcstHour : times) {
availTimes.add(new TimeRange(refTime.getTime() + times.get(i - 1) availTimes.add(new TimeRange(new Date(refTime.getTime() + fcstHour
* 1000, refTime.getTime() + times.get(i) * 1000)); * TimeUtil.MILLIS_PER_SECOND), TimeUtil.MILLIS_PER_HOUR));
} }
return availTimes; return availTimes;
} }
public Collection<String> getParmNames() {
List<ParameterInfo> paramInfoList = this.getGridParamInfo();
Set<String> parmNames = new HashSet<String>();
for (ParameterInfo info : paramInfoList) {
parmNames.add(info.getShort_name());
}
return parmNames;
}
} }

View file

@ -58,6 +58,8 @@ import com.raytheon.uf.common.util.mapping.MultipleMappingException;
* parm names for a given model. * parm names for a given model.
* Feb 15, 2013 1598 bsteffen Make GridParamInfoLookup filter on * Feb 15, 2013 1598 bsteffen Make GridParamInfoLookup filter on
* extension. * extension.
* Mar 20, 2013 #1774 randerso Added getModelInfo,
* added Dflt if no levels specified
* *
* </pre> * </pre>
* *
@ -94,7 +96,14 @@ public class GridParamInfoLookup {
init(); init();
} }
private GridParamInfo getGridParamInfo(String mappedModel) { /**
* Gets the model information based on the specified model
*
* @param mappedModel
* The model name
* @return The parameter information or null if none found
*/
public GridParamInfo getGridParamInfo(String mappedModel) {
String paramInfoName = null; String paramInfoName = null;
try { try {
paramInfoName = DatasetIdMapper.getInstance().lookupAliasOrNull( paramInfoName = DatasetIdMapper.getInstance().lookupAliasOrNull(
@ -211,5 +220,17 @@ public class GridParamInfoLookup {
"Error unmarshalling grid parameter information", e); "Error unmarshalling grid parameter information", e);
} }
} }
for (GridParamInfo gridParamInfo : modelParamMap.values()) {
for (String parmName : gridParamInfo.getParmNames()) {
ParameterInfo parameterInfo = gridParamInfo
.getParameterInfo(parmName);
// add Dflt level if no other levels defined
if (parameterInfo.getLevels().isEmpty()) {
parameterInfo.getLevels().add("Dflt");
}
}
}
} }
} }

View file

@ -43,6 +43,7 @@ import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
* Jun 24, 2010 bphillip Initial creation * Jun 24, 2010 bphillip Initial creation
* Sep 12, 2012 #1117 dgilling Create field to hold list of * Sep 12, 2012 #1117 dgilling Create field to hold list of
* valid levels for each parameter. * valid levels for each parameter.
* Mar 20, 2013 #1774 randerso Added getMinVal and getMaxVal
* *
* </pre> * </pre>
* *
@ -53,6 +54,13 @@ import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
@XmlAccessorType(XmlAccessType.NONE) @XmlAccessorType(XmlAccessType.NONE)
public class ParameterInfo { public class ParameterInfo {
// The netCDF convention is MINFLOAT to MAXFLOAT.
// But we can't use it or GFE will attempt to create
// billions and billions of contours.
public static final float MIN_VALUE = 0f;
public static final float MAX_VALUE = 10000f;
@XmlElement @XmlElement
@XmlJavaTypeAdapter(CollapsedStringAdapter.class) @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
private String short_name; private String short_name;
@ -190,6 +198,28 @@ public class ParameterInfo {
this.valid_range = valid_range; this.valid_range = valid_range;
} }
/**
* @return the minimum valid value
*/
public float getMinVal() {
float min = MIN_VALUE;
if (valid_range != null && valid_range.length == 2) {
min = valid_range[0];
}
return min;
}
/**
* @return the maximum valid value
*/
public float getMaxVal() {
float min = MAX_VALUE;
if (valid_range != null && valid_range.length == 2) {
min = valid_range[1];
}
return min;
}
/** /**
* @return the fillValue * @return the fillValue
*/ */

View file

@ -46,10 +46,10 @@ import org.opengis.filter.Filter;
import org.opengis.filter.FilterFactory2; import org.opengis.filter.FilterFactory2;
import org.opengis.geometry.BoundingBox; import org.opengis.geometry.BoundingBox;
import com.raytheon.edex.plugin.gfe.exception.MissingLocalMapsException;
import com.raytheon.uf.common.dataquery.db.QueryResult; import com.raytheon.uf.common.dataquery.db.QueryResult;
import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.edex.core.EDEXUtil; import com.raytheon.uf.edex.core.EDEXUtil;
import com.raytheon.uf.edex.database.tasks.SqlQueryTask; import com.raytheon.uf.edex.database.tasks.SqlQueryTask;
import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.Geometry;
@ -68,6 +68,8 @@ import com.vividsolutions.jts.geom.Polygon;
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Sep 18, 2012 #1091 randerso Initial creation * Sep 18, 2012 #1091 randerso Initial creation
* Mar 28, 2013 #1837 dgilling Change error handling in
* getLastUpdated().
* *
* </pre> * </pre>
* *
@ -172,11 +174,16 @@ public class DbShapeSource {
/** /**
* @throws IOException * @throws IOException
* @throws MissingLocalMapsException
* *
*/ */
public void open() throws IOException { public void open() throws IOException, MissingLocalMapsException {
DataStore dataStore = getDataStore(); DataStore dataStore = getDataStore();
try {
schema = dataStore.getSchema(this.tableName); schema = dataStore.getSchema(this.tableName);
} catch (IOException e) {
throw new MissingLocalMapsException(e);
}
shapeField = schema.getGeometryDescriptor().getLocalName(); shapeField = schema.getGeometryDescriptor().getLocalName();
featureCollection = null; featureCollection = null;
@ -247,7 +254,8 @@ public class DbShapeSource {
return featureIterator.next(); return featureIterator.next();
} }
public synchronized ShapeType getShapeType() throws IOException { public synchronized ShapeType getShapeType() throws IOException,
MissingLocalMapsException {
if (this.type == null) { if (this.type == null) {
boolean closeIt = false; boolean closeIt = false;
if (schema == null) { if (schema == null) {
@ -418,6 +426,9 @@ public class DbShapeSource {
} catch (IOException e) { } catch (IOException e) {
statusHandler.error( statusHandler.error(
"IOException reading " + dbShape.getTableName(), e); "IOException reading " + dbShape.getTableName(), e);
} catch (MissingLocalMapsException e) {
statusHandler.error("Could not locate " + dbShape.getTableName()
+ " in the maps database.", e);
} finally { } finally {
try { try {
if (dbShape != null) { if (dbShape != null) {
@ -431,18 +442,17 @@ public class DbShapeSource {
System.out.println("Took " + (System.currentTimeMillis() - t0) + " ms"); System.out.println("Took " + (System.currentTimeMillis() - t0) + " ms");
} }
public Date getLastUpdated() { public Date getLastUpdated() throws MissingLocalMapsException {
Date retVal = new Date();
String sqlQuery = "SELECT import_time FROM " + SCHEMA_NAME String sqlQuery = "SELECT import_time FROM " + SCHEMA_NAME
+ ".map_version WHERE table_name = '" + this.tableName + "';"; + ".map_version WHERE table_name = '" + this.tableName + "';";
try { try {
SqlQueryTask task = new SqlQueryTask(sqlQuery, DB_NAME); SqlQueryTask task = new SqlQueryTask(sqlQuery, DB_NAME);
QueryResult result = task.execute(); QueryResult result = task.execute();
retVal = (Date) result.getRowColumnValue(0, 0); return (Date) result.getRowColumnValue(0, 0);
} catch (Exception e) { } catch (Exception e) {
statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e); // statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(),
} // e);
throw new MissingLocalMapsException(e);
return retVal; }
} }
} }

View file

@ -47,6 +47,7 @@ import org.opengis.metadata.spatial.PixelOrientation;
import org.opengis.referencing.operation.MathTransform; import org.opengis.referencing.operation.MathTransform;
import com.raytheon.edex.plugin.gfe.config.IFPServerConfig; import com.raytheon.edex.plugin.gfe.config.IFPServerConfig;
import com.raytheon.edex.plugin.gfe.exception.MissingLocalMapsException;
import com.raytheon.edex.plugin.gfe.reference.DbShapeSource.ShapeType; import com.raytheon.edex.plugin.gfe.reference.DbShapeSource.ShapeType;
import com.raytheon.edex.plugin.gfe.textproducts.AreaDictionaryMaker; import com.raytheon.edex.plugin.gfe.textproducts.AreaDictionaryMaker;
import com.raytheon.edex.plugin.gfe.textproducts.CombinationsFileMaker; import com.raytheon.edex.plugin.gfe.textproducts.CombinationsFileMaker;
@ -74,6 +75,7 @@ import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.common.util.FileUtil; import com.raytheon.uf.common.util.FileUtil;
import com.raytheon.uf.common.util.file.FilenameFilters; import com.raytheon.uf.common.util.file.FilenameFilters;
import com.raytheon.uf.edex.core.EDEXUtil;
import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.GeometryFactory; import com.vividsolutions.jts.geom.GeometryFactory;
@ -98,6 +100,9 @@ import com.vividsolutions.jts.simplify.TopologyPreservingSimplifier;
* Oct 13, 2008 #1607 njensen Added genCombinationsFiles() * Oct 13, 2008 #1607 njensen Added genCombinationsFiles()
* Sep 18, 2012 #1091 randerso Changed to use Maps.py and localMaps.py * Sep 18, 2012 #1091 randerso Changed to use Maps.py and localMaps.py
* Mar 14, 2013 1794 djohnson Consolidate common FilenameFilter implementations. * Mar 14, 2013 1794 djohnson Consolidate common FilenameFilter implementations.
* Mar 28, 2013 #1837 dgilling Better error reporting if a map table
* from localMaps.py could not be found,
* warnings clean up.
* *
* </pre> * </pre>
* *
@ -245,28 +250,21 @@ public class MapManager {
/** /**
* @param maps * @param maps
*/ */
@SuppressWarnings("unused")
/**
* Searches the parent directory of a provided list of shape files to
* determine whether or not they contain a file that is newer than any files
* in a specified directory.
*
* @param maps
* An array of shape files.
* @param directory
* A directory containing the resultant edit areas from the shape
* files.
* @return True, if any file in the parent folder of any of the shape files
* is newer than anything in the specified directory. Else, false.
*/
private boolean updateNeeded(List<DbShapeSource> maps, private boolean updateNeeded(List<DbShapeSource> maps,
final String directory) { final String directory) {
// calc newest file inside maps.directory() // calc newest file inside maps.directory()
long newestSource = Long.MIN_VALUE; long newestSource = Long.MIN_VALUE;
List<DbShapeSource> failedMaps = new ArrayList<DbShapeSource>();
for (DbShapeSource map : maps) { for (DbShapeSource map : maps) {
try {
newestSource = Math.max(newestSource, map.getLastUpdated() newestSource = Math.max(newestSource, map.getLastUpdated()
.getTime()); .getTime());
} catch (MissingLocalMapsException e) {
reportMissingLocalMap(map, "retrieving last update time", e);
failedMaps.add(map);
} }
}
maps.removeAll(failedMaps);
// Determine time of last modification of Maps.py, serverConfig, // Determine time of last modification of Maps.py, serverConfig,
// localConfig, localMaps, and siteConfig. // localConfig, localMaps, and siteConfig.
@ -385,6 +383,10 @@ public class MapManager {
} }
makeReferenceData(m); makeReferenceData(m);
} catch (MissingLocalMapsException e) {
String error = reportMissingLocalMap(m, "retrieving map data",
e);
_mapErrors.add(error);
} catch (Exception e) { } catch (Exception e) {
String error = "********* EDIT AREA GENERATION ERROR - MakeReferenceData *********\n" String error = "********* EDIT AREA GENERATION ERROR - MakeReferenceData *********\n"
+ "Error in generating edit areas, map #" + "Error in generating edit areas, map #"
@ -575,8 +577,8 @@ public class MapManager {
// old one, write a warning to the log. // old one, write a warning to the log.
ReferenceData other = null; ReferenceData other = null;
try { try {
other = (ReferenceData) SerializationUtil other = SerializationUtil.jaxbUnmarshalFromXmlFile(
.jaxbUnmarshalFromXmlFile(path); ReferenceData.class, path);
} catch (Exception e) { } catch (Exception e) {
statusHandler.error("Error reading edit area file " statusHandler.error("Error reading edit area file "
+ path.getAbsolutePath(), e); + path.getAbsolutePath(), e);
@ -962,4 +964,23 @@ public class MapManager {
return s; return s;
} }
private String reportMissingLocalMap(DbShapeSource missingMap,
String operation, MissingLocalMapsException e) {
String errorLog = "Error in " + operation + " for map named ["
+ missingMap.getDisplayName() + "]: Could not find table ["
+ missingMap.getTableName() + "] in maps database.";
statusHandler.error(errorLog, e);
String errorUser = errorLog
+ " Edit areas for this map will not be generated."
+ " Check site ["
+ _config.getSiteID().get(0)
+ "] localMaps.py configuration and verify all necessary shape files have been imported.";
EDEXUtil.sendMessageAlertViz(Priority.ERROR,
"com.raytheon.edex.plugin.gfe", "GFE", "GFE", errorUser,
errorUser, null);
return errorLog;
}
} }

View file

@ -91,6 +91,8 @@ import com.raytheon.uf.edex.database.purge.PurgeLogger;
* smartInit hdf5 data * smartInit hdf5 data
* 03/07/13 #1773 njensen Logged commitGrid() times * 03/07/13 #1773 njensen Logged commitGrid() times
* 03/15/13 #1795 njensen Sped up commitGrid() * 03/15/13 #1795 njensen Sped up commitGrid()
* 03/20/2013 #1774 randerso Removed dead method, changed to use new
* D2DGridDatabase constructor
* *
* </pre> * </pre>
* *
@ -356,48 +358,6 @@ public class GridParmManager {
return sr; return sr;
} }
public static ServerResponse<String> getD2DGridData(
List<GetGridRequest> requests) {
ServerResponse<String> retVal = new ServerResponse<String>();
// Get the grid data
ServerResponse<List<IGridSlice>> sr = getGridData(requests);
retVal.addMessages(sr);
if (!sr.isOkay()) {
return retVal;
}
// // Now store it off in a temp location so the client can get to it
// for (IGridSlice slice : sr.getPayload()) {
// try {
// GridDatabase db = getDb(requests.get(0).getParmId().getDbId());
// if (db instanceof D2DGridDatabase) {
// File tempDir = GfeUtil.getTempHDF5Dir(
// GridDatabase.gfeBaseDataDir, requests.get(0)
// .getParmId());
// if (!tempDir.exists()) {
// tempDir.mkdirs();
// }
// db.saveGridToHdf5(slice, GfeUtil.getTempHDF5File(
// GridDatabase.gfeBaseDataDir, requests.get(0)
// .getParmId()), GfeUtil.getHDF5Group(
// requests.get(0).getParmId(), slice.getValidTime()));
// } else {
// retVal
// .addMessage("Cannot save temp grids for non-D2D grid databases.");
// return retVal;
// }
// } catch (GfeException e) {
// sr.addMessage("Unable to get DB: "
// + requests.get(0).getParmId().getDbId());
// return retVal;
// }
// }
return retVal;
}
/** /**
* * Request to commit data to the official database. The changes are * * Request to commit data to the official database. The changes are
* returned through the calling argument "changes". * returned through the calling argument "changes".
@ -1197,7 +1157,12 @@ public class GridParmManager {
IFPServerConfig serverConfig = IFPServerConfigManager IFPServerConfig serverConfig = IFPServerConfigManager
.getServerConfig(siteId); .getServerConfig(siteId);
try { try {
db = new D2DGridDatabase(serverConfig, dbId); // this is still necessary on other JVMs from where
// ingested
String d2dModelName = serverConfig
.d2dModelNameMapping(modelName);
db = new D2DGridDatabase(serverConfig, d2dModelName,
dbId.getModelTimeAsDate());
} catch (Exception e) { } catch (Exception e) {
statusHandler.handle(Priority.PROBLEM, statusHandler.handle(Priority.PROBLEM,
e.getLocalizedMessage()); e.getLocalizedMessage());
@ -1363,10 +1328,9 @@ public class GridParmManager {
private static void createDbNotification(String siteID, private static void createDbNotification(String siteID,
List<DatabaseID> dbs, List<DatabaseID> additions, List<DatabaseID> dbs, List<DatabaseID> additions,
List<DatabaseID> deletions) { List<DatabaseID> deletions) {
if (!additions.isEmpty() || !deletions.isEmpty()) {
DBInvChangeNotification notify = new DBInvChangeNotification(dbs, DBInvChangeNotification notify = new DBInvChangeNotification(dbs,
additions, deletions, siteID); additions, deletions, siteID);
if (!additions.isEmpty() || !deletions.isEmpty()) {
SendNotifications.send(notify); SendNotifications.send(notify);
} }
} }

View file

@ -94,7 +94,6 @@ import com.raytheon.uf.edex.core.dataplugin.PluginRegistry;
import com.raytheon.uf.edex.database.DataAccessLayerException; import com.raytheon.uf.edex.database.DataAccessLayerException;
import com.raytheon.uf.edex.database.plugin.PluginFactory; import com.raytheon.uf.edex.database.plugin.PluginFactory;
import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.io.WKTReader;
/** /**
* GFE Grid database containing IFP Grid data. * GFE Grid database containing IFP Grid data.
@ -115,6 +114,7 @@ import com.vividsolutions.jts.io.WKTReader;
* 02/12/13 #1608 randerso Changed to explicitly call deleteGroups * 02/12/13 #1608 randerso Changed to explicitly call deleteGroups
* 03/07/13 #1737 njensen Logged getGridData times * 03/07/13 #1737 njensen Logged getGridData times
* 03/15/13 #1795 njensen Added updatePublishTime() * 03/15/13 #1795 njensen Added updatePublishTime()
* 03/20/13 #1774 randerso Cleanup code to use proper constructors
* *
* </pre> * </pre>
* *
@ -1191,6 +1191,7 @@ public class IFPGridDatabase extends GridDatabase {
"Unable to update grid history!!", e); "Unable to update grid history!!", e);
} }
return sr; return sr;
} }
/** /**
@ -1591,77 +1592,79 @@ public class IFPGridDatabase extends GridDatabase {
protected GridParmInfo populateGpi(Map<String, Object> dataAttributes) protected GridParmInfo populateGpi(Map<String, Object> dataAttributes)
throws Exception { throws Exception {
GridParmInfo gpi = new GridParmInfo(); String projID = (String) dataAttributes
TimeConstraints tc = new TimeConstraints(); .get("gridLoc.projection.projectionID");
GridLocation location = new GridLocation(); ProjectionType projType = ProjectionType
ProjectionData pd = new ProjectionData(); .valueOf((String) dataAttributes
.get("gridLoc.projection.projectionType"));
pd.setProjectionID((String) dataAttributes Coordinate latLonLL = new Coordinate(
.get("gridLoc.projection.projectionID")); (Float) dataAttributes.get("gridLoc.projection.latLonLL.x"),
pd.setProjectionType(ProjectionType.valueOf((String) dataAttributes (Float) dataAttributes.get("gridLoc.projection.latLonLL.y"));
.get("gridLoc.projection.projectionType"))); Coordinate latLonUR = new Coordinate(
pd.setLatLonLL(new Coordinate((Float) dataAttributes (Float) dataAttributes.get("gridLoc.projection.latLonUR.x"),
.get("gridLoc.projection.latLonLL.x"), (Float) dataAttributes (Float) dataAttributes.get("gridLoc.projection.latLonUR.y"));
.get("gridLoc.projection.latLonLL.y"))); Coordinate latLonOrig = new Coordinate(
pd.setLatLonUR(new Coordinate((Float) dataAttributes (Float) dataAttributes.get("gridLoc.projection.latLonOrigin.x"),
.get("gridLoc.projection.latLonUR.x"), (Float) dataAttributes (Float) dataAttributes.get("gridLoc.projection.latLonOrigin.y"));
.get("gridLoc.projection.latLonUR.y"))); Float stdPar1 = (Float) dataAttributes
pd.setLatLonOrigin(new Coordinate((Float) dataAttributes .get("gridLoc.projection.stdParallelOne");
.get("gridLoc.projection.latLonOrigin.x"), Float stdPar2 = (Float) dataAttributes
(Float) dataAttributes.get("gridLoc.projection.latLonOrigin.y"))); .get("gridLoc.projection.stdParallelTwo");
pd.setStdParallelOne((Float) dataAttributes Point gridLL = new Point(
.get("gridLoc.projection.stdParallelOne")); (Integer) dataAttributes
pd.setStdParallelTwo((Float) dataAttributes
.get("gridLoc.projection.stdParallelTwo"));
pd.setGridPointLL(new Point((Integer) dataAttributes
.get("gridLoc.projection.gridPointLL.x"), .get("gridLoc.projection.gridPointLL.x"),
(Integer) dataAttributes (Integer) dataAttributes
.get("gridLoc.projection.gridPointLL.y"))); .get("gridLoc.projection.gridPointLL.y"));
pd.setGridPointUR(new Point((Integer) dataAttributes Point gridUR = new Point(
(Integer) dataAttributes
.get("gridLoc.projection.gridPointUR.x"), .get("gridLoc.projection.gridPointUR.x"),
(Integer) dataAttributes (Integer) dataAttributes
.get("gridLoc.projection.gridPointUR.y"))); .get("gridLoc.projection.gridPointUR.y"));
pd.setLatIntersect((Float) dataAttributes Float latInt = (Float) dataAttributes
.get("gridLoc.projection.latIntersect")); .get("gridLoc.projection.latIntersect");
pd.setLonCenter((Float) dataAttributes Float lonCenter = (Float) dataAttributes
.get("gridLoc.projection.lonCenter")); .get("gridLoc.projection.lonCenter");
pd.setLonOrigin((Float) dataAttributes Float lonOrig = (Float) dataAttributes
.get("gridLoc.projection.lonOrigin")); .get("gridLoc.projection.lonOrigin");
ProjectionData proj = new ProjectionData(projID, projType, latLonLL,
latLonUR, latLonOrig, stdPar1, stdPar2, gridLL, gridUR, latInt,
lonCenter, lonOrig);
location.setSiteId((String) dataAttributes.get("gridLoc.siteID")); String id = (String) dataAttributes.get("gridLoc.siteID");
location.setNx((Integer) dataAttributes.get("gridLoc.nx")); int nx = (Integer) dataAttributes.get("gridLoc.nx");
location.setNy((Integer) dataAttributes.get("gridLoc.ny")); int ny = (Integer) dataAttributes.get("gridLoc.ny");
location.setTimeZone((String) dataAttributes.get("gridLoc.timeZone")); Coordinate domainOrigin = new Coordinate(
location.setOrigin(new Coordinate((Float) dataAttributes (Float) dataAttributes.get("gridLoc.origin.x"),
.get("gridLoc.origin.x"), (Float) dataAttributes (Float) dataAttributes.get("gridLoc.origin.y"));
.get("gridLoc.origin.y"))); Coordinate domainExtent = new Coordinate(
location.setExtent(new Coordinate((Float) dataAttributes (Float) dataAttributes.get("gridLoc.extent.x"),
.get("gridLoc.extent.x"), (Float) dataAttributes (Float) dataAttributes.get("gridLoc.extent.y"));
.get("gridLoc.extent.y"))); String timeZone = (String) dataAttributes.get("gridLoc.timeZone");
location.setGeometry(new WKTReader().read((String) dataAttributes GridLocation gridLoc = new GridLocation(id, proj, new Point(nx, ny),
.get("gridLoc.geometry"))); domainOrigin, domainExtent, timeZone);
location.setCrsWKT((String) dataAttributes.get("gridLoc.crs"));
location.setProjection(pd);
tc.setDuration((Integer) dataAttributes.get("timeConstraints.duration")); int duration = (Integer) dataAttributes.get("timeConstraints.duration");
tc.setRepeatInterval((Integer) dataAttributes int repeatInterval = (Integer) dataAttributes
.get("timeConstraints.repeatInterval")); .get("timeConstraints.repeatInterval");
tc.setStartTime((Integer) dataAttributes int startTime = (Integer) dataAttributes
.get("timeConstraints.startTime")); .get("timeConstraints.startTime");
TimeConstraints timeConstraints = new TimeConstraints(duration,
repeatInterval, startTime);
gpi.setParmID(new ParmID((String) dataAttributes.get("parmID"))); ParmID parmId = new ParmID((String) dataAttributes.get("parmID"));
gpi.setGridType(GridType.valueOf((String) dataAttributes GridType gridType = GridType.valueOf((String) dataAttributes
.get("gridType"))); .get("gridType"));
gpi.setDescriptiveName((String) dataAttributes.get("descriptiveName")); String descriptiveName = (String) dataAttributes.get("descriptiveName");
gpi.setUnitString((String) dataAttributes.get("unitString")); String unit = (String) dataAttributes.get("unitString");
gpi.setMaxValue((Float) dataAttributes.get("maxValue")); Float minValue = (Float) dataAttributes.get("minValue");
gpi.setMinValue((Float) dataAttributes.get("minValue")); Float maxValue = (Float) dataAttributes.get("maxValue");
gpi.setPrecision((Integer) dataAttributes.get("precision")); int precision = (Integer) dataAttributes.get("precision");
gpi.setRateParm((Boolean) dataAttributes.get("rateParm")); boolean timeIndependentParm = (Boolean) dataAttributes
gpi.setTimeIndependentParm((Boolean) dataAttributes .get("timeIndependentParm");
.get("timeIndependentParm")); boolean rateParm = (Boolean) dataAttributes.get("rateParm");
gpi.setTimeConstraints(tc); GridParmInfo gpi = new GridParmInfo(parmId, gridLoc, gridType, unit,
gpi.setGridLoc(location); descriptiveName, minValue, maxValue, precision,
timeIndependentParm, timeConstraints, rateParm);
return gpi; return gpi;
} }

View file

@ -35,35 +35,33 @@ import com.raytheon.edex.plugin.gfe.config.IFPServerConfigManager;
import com.raytheon.edex.plugin.gfe.exception.GfeConfigurationException; import com.raytheon.edex.plugin.gfe.exception.GfeConfigurationException;
import com.raytheon.edex.plugin.gfe.server.D2DSatParm; import com.raytheon.edex.plugin.gfe.server.D2DSatParm;
import com.raytheon.edex.plugin.gfe.server.GridParmManager; import com.raytheon.edex.plugin.gfe.server.GridParmManager;
import com.raytheon.edex.plugin.gfe.server.database.D2DGridDatabase;
import com.raytheon.edex.plugin.gfe.server.database.D2DSatDatabase; import com.raytheon.edex.plugin.gfe.server.database.D2DSatDatabase;
import com.raytheon.edex.plugin.gfe.server.database.D2DSatDatabaseManager; import com.raytheon.edex.plugin.gfe.server.database.D2DSatDatabaseManager;
import com.raytheon.edex.plugin.gfe.smartinit.SmartInitQueue; import com.raytheon.edex.plugin.gfe.smartinit.SmartInitQueue;
import com.raytheon.edex.plugin.gfe.smartinit.SmartInitRecord; import com.raytheon.edex.plugin.gfe.smartinit.SmartInitRecord;
import com.raytheon.edex.plugin.gfe.smartinit.SmartInitRecordPK; import com.raytheon.edex.plugin.gfe.smartinit.SmartInitRecordPK;
import com.raytheon.edex.plugin.gfe.util.GridTranslator;
import com.raytheon.edex.plugin.gfe.util.SendNotifications; import com.raytheon.edex.plugin.gfe.util.SendNotifications;
import com.raytheon.uf.common.dataplugin.gfe.GridDataHistory; import com.raytheon.uf.common.dataplugin.gfe.GridDataHistory;
import com.raytheon.uf.common.dataplugin.gfe.db.objects.DatabaseID; import com.raytheon.uf.common.dataplugin.gfe.db.objects.DatabaseID;
import com.raytheon.uf.common.dataplugin.gfe.db.objects.DatabaseID.DataType;
import com.raytheon.uf.common.dataplugin.gfe.db.objects.ParmID; import com.raytheon.uf.common.dataplugin.gfe.db.objects.ParmID;
import com.raytheon.uf.common.dataplugin.gfe.server.notify.DBInvChangeNotification; import com.raytheon.uf.common.dataplugin.gfe.server.notify.DBInvChangeNotification;
import com.raytheon.uf.common.dataplugin.gfe.server.notify.GfeNotification; import com.raytheon.uf.common.dataplugin.gfe.server.notify.GfeNotification;
import com.raytheon.uf.common.dataplugin.gfe.server.notify.GridUpdateNotification; import com.raytheon.uf.common.dataplugin.gfe.server.notify.GridUpdateNotification;
import com.raytheon.uf.common.dataplugin.grid.GridRecord; import com.raytheon.uf.common.dataplugin.grid.GridRecord;
import com.raytheon.uf.common.dataplugin.message.DataURINotificationMessage; import com.raytheon.uf.common.dataplugin.message.DataURINotificationMessage;
import com.raytheon.uf.common.dataplugin.level.Level;
import com.raytheon.uf.common.dataplugin.satellite.SatelliteRecord; import com.raytheon.uf.common.dataplugin.satellite.SatelliteRecord;
import com.raytheon.uf.common.message.WsId; import com.raytheon.uf.common.message.WsId;
import com.raytheon.uf.common.parameter.mapping.ParameterMapper;
import com.raytheon.uf.common.serialization.SerializationUtil; import com.raytheon.uf.common.serialization.SerializationUtil;
import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.common.time.TimeRange; import com.raytheon.uf.common.time.TimeRange;
import com.raytheon.uf.common.util.mapping.MultipleMappingException;
import com.raytheon.uf.edex.core.EDEXUtil; import com.raytheon.uf.edex.core.EDEXUtil;
/** /**
* TODO Add Description * Filters data URI notifications and sends GridUpdate and DbInvChanged
* notifications for new D2D data
* *
* <pre> * <pre>
* *
@ -78,6 +76,7 @@ import com.raytheon.uf.edex.core.EDEXUtil;
* Feb 15, 2013 1638 mschenke Moved DataURINotificationMessage to uf.common.dataplugin * Feb 15, 2013 1638 mschenke Moved DataURINotificationMessage to uf.common.dataplugin
* Mar 25, 2013 1823 dgilling Trigger SAT smart init based only on record's * Mar 25, 2013 1823 dgilling Trigger SAT smart init based only on record's
* SectorId and PhysicalElement. * SectorId and PhysicalElement.
* Mar 20, 2013 #1774 randerso Refactor to use grid durations from D2DGridDatabase
* *
* </pre> * </pre>
* *
@ -125,7 +124,6 @@ public class GfeIngestNotificationFilter {
Map<SmartInitRecordPK, SmartInitRecord> inits = new HashMap<SmartInitRecordPK, SmartInitRecord>(); Map<SmartInitRecordPK, SmartInitRecord> inits = new HashMap<SmartInitRecordPK, SmartInitRecord>();
// Loop through each record received and construct a ParmID // Loop through each record received and construct a ParmID
Map<ParmID, List<TimeRange>> gridInv = new HashMap<ParmID, List<TimeRange>>(); Map<ParmID, List<TimeRange>> gridInv = new HashMap<ParmID, List<TimeRange>>();
List<GridUpdateNotification> guns = new ArrayList<GridUpdateNotification>();
Set<DatabaseID> newDbs = new HashSet<DatabaseID>(); Set<DatabaseID> newDbs = new HashSet<DatabaseID>();
IFPServerConfig config = null; IFPServerConfig config = null;
@ -139,12 +137,11 @@ public class GfeIngestNotificationFilter {
for (GridRecord grid : gridRecords) { for (GridRecord grid : gridRecords) {
String gfeModel = config.gfeModelNameMapping(grid String gfeModel = config.gfeModelNameMapping(grid
.getDatasetId()); .getDatasetId());
DatabaseID dbId = D2DGridDatabase.getDbId(grid.getDatasetId(),
grid.getDataTime().getRefTime(), config);
// ignore if no mapping // ignore if no mapping
if (gfeModel != null && gfeModel.length() > 0) { if (dbId != null) {
DatabaseID dbId = new DatabaseID(site, DataType.GRID,
"D2D", gfeModel, grid.getDataTime().getRefTime());
if ((!D2DParmIdCache.getInstance().getDatabaseIDs() if ((!D2DParmIdCache.getInstance().getDatabaseIDs()
.contains(dbId)) .contains(dbId))
&& (!newDbs.contains(dbId))) { && (!newDbs.contains(dbId))) {
@ -159,33 +156,22 @@ public class GfeIngestNotificationFilter {
} }
String abbrev = grid.getParameter().getAbbreviation(); String abbrev = grid.getParameter().getAbbreviation();
String gfeParmName = null; Level level = grid.getLevel();
try {
gfeParmName = ParameterMapper.getInstance()
.lookupAlias(abbrev, "gfeParamName");
} catch (MultipleMappingException e) {
statusHandler.handle(Priority.WARN,
e.getLocalizedMessage(), e);
gfeParmName = e.getArbitraryMapping();
}
String level = GridTranslator.getShortLevelName(grid D2DGridDatabase db = (D2DGridDatabase) GridParmManager
.getLevel().getMasterLevel().getName(), grid .getDb(dbId);
.getLevel().getLevelonevalue(), grid.getLevel() ParmID parmID = db.getParmId(abbrev, level);
.getLeveltwovalue());
ParmID parmID = new ParmID(gfeParmName, dbId, level);
List<TimeRange> trs = gridInv.get(parmID); List<TimeRange> trs = gridInv.get(parmID);
if (trs == null) { if (trs == null) {
trs = new ArrayList<TimeRange>(); trs = new ArrayList<TimeRange>();
gridInv.put(parmID, trs); gridInv.put(parmID, trs);
} }
TimeRange validPeriod = grid.getDataTime().getValidPeriod();
if (validPeriod.getDuration() > 0) { Integer fcstHour = grid.getDataTime().getFcstTime();
trs.add(validPeriod); TimeRange tr = db.getTimeRange(parmID, fcstHour);
} else { if (tr != null) {
trs.add(new TimeRange(grid.getDataTime() trs.add(tr);
.getValidPeriod().getStart(), 3600 * 1000));
} }
List<String> siteInitModules = config.initModels(gfeModel); List<String> siteInitModules = config.initModels(gfeModel);
@ -216,6 +202,7 @@ public class GfeIngestNotificationFilter {
} }
// DR 15442 - move last for loop out of the for loop at line 110 // DR 15442 - move last for loop out of the for loop at line 110
List<GridUpdateNotification> guns = new ArrayList<GridUpdateNotification>();
for (ParmID parmId : gridInv.keySet()) { for (ParmID parmId : gridInv.keySet()) {
try { try {
List<TimeRange> trs = gridInv.get(parmId); List<TimeRange> trs = gridInv.get(parmId);

View file

@ -1,152 +1,437 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
Mar 20, 2013 #1774 randerso Added all parms from dataFieldTable.txt
sorted lists for ease of update
-->
<aliasList caseSensitive="true" namespace="gfeParamName"> <aliasList caseSensitive="true" namespace="gfeParamName">
<alias base="WGH">wgh</alias>
<alias base="AV">av</alias> <alias base="AV">av</alias>
<alias base="CRAIN">crain</alias> <alias base="CAPE">cape</alias>
<alias base="CFRZR">cfrzr</alias> <alias base="CFRZR">cfrzr</alias>
<alias base="CICEP">cicep</alias> <alias base="CICEP">cicep</alias>
<alias base="CSNOW">csnow</alias>
<alias base="CAPE">cape</alias>
<alias base="CIn">cin</alias> <alias base="CIn">cin</alias>
<alias base="CP">cp</alias>
<alias base="CP3hr">cp3hr</alias> <alias base="CP3hr">cp3hr</alias>
<alias base="CP">cp</alias>
<alias base="CPOFP">cpofp</alias>
<alias base="CPOZP">cpozp</alias>
<alias base="CRAIN">crain</alias>
<alias base="CSNOW">csnow</alias>
<alias base="DIRPW">dirpw</alias>
<alias base="DIRSW">dirsw</alias>
<alias base="DpD">dpd</alias> <alias base="DpD">dpd</alias>
<alias base="DpT">dpt</alias> <alias base="DpT">dpt</alias>
<alias base="WVDIR">wvdir</alias> <alias base="EMSP">emsp</alias>
<alias base="SWDIR">swdir</alias>
<alias base="EPT">ept</alias> <alias base="EPT">ept</alias>
<alias base="GeH">geh</alias> <alias base="GeH">geh</alias>
<alias base="GH">gh</alias> <alias base="GH">gh</alias>
<alias base="GVV">gvv</alias>
<alias base="Heli">heli</alias>
<alias base="HIdx">hidx</alias> <alias base="HIdx">hidx</alias>
<alias base="LgSP">lgsp</alias> <alias base="HTSGW">htsgw</alias>
<alias base="KI">ki</alias>
<alias base="LgSP3hr">lgsp3hr</alias> <alias base="LgSP3hr">lgsp3hr</alias>
<alias base="LgSP">lgsp</alias>
<alias base="LHF">lhf</alias> <alias base="LHF">lhf</alias>
<alias base="MMSP">mmsp</alias>
<alias base="MnT">mnt</alias> <alias base="MnT">mnt</alias>
<alias base="WVPER">wvper</alias> <alias base="MSG">msg</alias>
<alias base="SWPER">swper</alias>
<alias base="MxT">mxt</alias> <alias base="MxT">mxt</alias>
<alias base="PERPW">perpw</alias>
<alias base="PERSW">persw</alias>
<alias base="PLI">pli</alias> <alias base="PLI">pli</alias>
<alias base="PMSL">pmsl</alias>
<alias base="PoT">pot</alias> <alias base="PoT">pot</alias>
<alias base="P">p</alias> <alias base="P">p</alias>
<alias base="PMSL">pmsl</alias>
<alias base="EMSP">emsp</alias>
<alias base="MMSP">mmsp</alias>
<alias base="DIRPW">dirpw</alias>
<alias base="PERPW">perpw</alias>
<alias base="HTSGW">htsgw</alias>
<alias base="PR">pr</alias> <alias base="PR">pr</alias>
<alias base="CPOFP">cpofp</alias> <alias base="PVV">pvv</alias>
<alias base="CPOZP">cpozp</alias>
<alias base="PW">pw</alias> <alias base="PW">pw</alias>
<alias base="RH">rh</alias> <alias base="RH">rh</alias>
<alias base="SHF">shf</alias>
<alias base="DIRSW">dirsw</alias>
<alias base="PERSW">persw</alias>
<alias base="WVHGT">wvhgt</alias>
<alias base="SWELL">swell</alias>
<alias base="SCP">scp</alias> <alias base="SCP">scp</alias>
<alias base="SnD">snd</alias> <alias base="SHF">shf</alias>
<alias base="SH">sh</alias> <alias base="SH">sh</alias>
<alias base="Heli">heli</alias>
<alias base="SLI">sli</alias> <alias base="SLI">sli</alias>
<alias base="BLI">bli</alias> <alias base="SnD">snd</alias>
<alias base="T">t</alias> <alias base="SVV">svv</alias>
<alias base="SWDIR">swdir</alias>
<alias base="SWELL">swell</alias>
<alias base="SWPER">swper</alias>
<alias base="TCC">tcc</alias> <alias base="TCC">tcc</alias>
<alias base="ThP">thp</alias> <alias base="ThP">thp</alias>
<alias base="TP">tp</alias> <alias base="TKE">tke</alias>
<alias base="TP3hr">tp3hr</alias>
<alias base="TP6hr">tp6hr</alias>
<alias base="TP12hr">tp12hr</alias> <alias base="TP12hr">tp12hr</alias>
<alias base="TP24hr">tp24hr</alias> <alias base="TP24hr">tp24hr</alias>
<alias base="TP3hr">tp3hr</alias>
<alias base="TP48hr">tp48hr</alias> <alias base="TP48hr">tp48hr</alias>
<alias base="TP6hr">tp6hr</alias>
<alias base="TP">tp</alias>
<alias base="T">t</alias>
<alias base="USTM">ustm</alias> <alias base="USTM">ustm</alias>
<alias base="VSTM">vstm</alias>
<alias base="uW">uw</alias> <alias base="uW">uw</alias>
<alias base="vW">vw</alias>
<alias base="VAPP">vapp</alias> <alias base="VAPP">vapp</alias>
<alias base="PVV">pvv</alias>
<alias base="Vis">vis</alias> <alias base="Vis">vis</alias>
<alias base="VPT">vpt</alias> <alias base="VPT">vpt</alias>
<alias base="WEASD">weasd</alias> <alias base="VSTM">vstm</alias>
<alias base="vW">vw</alias>
<alias base="WD">wd</alias> <alias base="WD">wd</alias>
<alias base="WS">ws</alias> <alias base="WEASD">weasd</alias>
<alias base="WGH">wgh</alias>
<alias base="WGS">wgs</alias> <alias base="WGS">wgs</alias>
<alias base="MSG">msg</alias> <alias base="WS">ws</alias>
<alias base="SVV">svv</alias> <alias base="WVDIR">wvdir</alias>
<alias base="GVV">gvv</alias> <alias base="WVHGT">wvhgt</alias>
<alias base="KI">ki</alias> <alias base="WVPER">wvper</alias>
<alias base="TKE">tke</alias>
<!-- Parameters below this point are not defined in parameter definition <!-- Parameters below this point are not defined in parameter definition
files. Since these are not very well defined parameters they will only be files. Since these are not very well defined parameters they will only be
used if the grib decoder happens to give parameters the same base abbreviation. used if the grib decoder happens to give parameters the same base abbreviation.
In the future more work should be done to merge these names into definition In the future more work should be done to merge these names into definition
files. --> files. -->
<alias base="ADIMC">adimc</alias>
<alias base="Alti">alti</alias>
<alias base="BH">bh</alias>
<alias base="BLI">bli</alias>
<alias base="BPVV">bpvv</alias>
<alias base="BWu">bwu</alias>
<alias base="BWv">bwv</alias>
<alias base="CAPEc1">capec1</alias>
<alias base="CAPEc2">capec2</alias>
<alias base="CAPEc3">capec3</alias>
<alias base="CAPEc4">capec4</alias>
<alias base="CAPEc5">capec5</alias>
<alias base="CB">cb</alias>
<alias base="CC">cc</alias>
<alias base="CCOV">ccov</alias>
<alias base="CCP">ccpc</alias> <alias base="CCP">ccpc</alias>
<alias base="CFRZRc1">cfrzrc1</alias>
<alias base="CFRZRmean">cfrzrmean</alias>
<alias base="CFRZRsprd">cfrzrsprd</alias>
<alias base="CIce">cice</alias>
<alias base="CICEPc1">cicepc1</alias>
<alias base="CICEPmean">cicepmean</alias>
<alias base="CICEPsprd">cicepsprd</alias>
<alias base="Cigc1">cigc1</alias>
<alias base="Cigc2">cigc2</alias>
<alias base="Cigc3">cigc3</alias>
<alias base="CP2hr">cp2hr</alias>
<alias base="CPVV">cpvv</alias>
<alias base="CRAINc1">crainc1</alias>
<alias base="CRAINmean">crainmean</alias>
<alias base="CRAINsprd">crainsprd</alias>
<alias base="CSNOWc1">csnowc1</alias>
<alias base="CSNOWmean">csnowmean</alias>
<alias base="CSNOWsprd">csnowsprd</alias>
<alias base="CSSI">cssi</alias>
<alias base="CTop">ctop</alias>
<alias base="CTSTM">ctstm</alias>
<alias base="CTyp">ctyp</alias>
<alias base="CW">cw</alias>
<alias base="CXR">cxr</alias>
<alias base="DpTerranl">dpterranl</alias>
<alias base="DpTmean">dptmean</alias>
<alias base="DpTsprd">dptsprd</alias>
<alias base="ELON">elon</alias>
<alias base="FD">fd</alias>
<alias base="FZNP">fznp</alias>
<alias base="GHmean">ghmean</alias>
<alias base="GHsprd">ghsprd</alias>
<alias base="HyC">hyc</alias>
<alias base="ICEC">icec</alias>
<alias base="ICEG">iceg</alias>
<alias base="ICNG">icng</alias>
<alias base="ICPRB">icprb</alias>
<alias base="ICSEV">icsev</alias>
<alias base="IIdx">iidx</alias>
<alias base="ILW">ilw</alias>
<alias base="IP">ip</alias>
<alias base="LgSP2hr">lgsp2hr</alias>
<alias base="LLIP">llip</alias>
<alias base="LLR">llr</alias>
<alias base="LZFPC">lzfpc</alias>
<alias base="LZFSC">lzfsc</alias>
<alias base="LZTWC">lztwc</alias>
<alias base="MAdv">madv</alias>
<alias base="MAXRH12hr">maxRH12hr</alias>
<alias base="MAXRH3hr">maxRH3hr</alias>
<alias base="MCDD">mcdd</alias>
<alias base="MCon">mcon</alias>
<alias base="MINRH12hr">minRH12hr</alias>
<alias base="MINRH3hr">minRH3hr</alias>
<alias base="MnT12hr">mnt12hr</alias>
<alias base="MnT3hr">mnt3hr</alias>
<alias base="MnT6hr">mnt6hr</alias>
<alias base="MRET">mret</alias>
<alias base="MSLP">mslp</alias>
<alias base="MWu">mwu</alias>
<alias base="MWv">mwv</alias>
<alias base="MxT12hr">mxt12hr</alias>
<alias base="MxT3hr">mxt3hr</alias>
<alias base="MxT6hr">mxt6hr</alias>
<alias base="NBE">nbe</alias>
<alias base="NLAT">nlat</alias>
<alias base="NLRS">nlrs</alias>
<alias base="OTIM">otim</alias>
<alias base="PAcc">pacc</alias>
<alias base="PBE">pbe</alias>
<alias base="Pchg">pt3</alias> <alias base="Pchg">pt3</alias>
<alias base="VV">ww</alias> <alias base="PC">pc</alias>
<alias base="TP-HPC">tp_HPC</alias> <alias base="Perranl">perranl</alias>
<alias base="TP-ACR">tp_ACR</alias> <alias base="PICE">pice</alias>
<alias base="TP-ALR">tp_ALR</alias> <alias base="PLIxc1">plixc1</alias>
<alias base="TP-FWR">tp_FWR</alias> <alias base="PLIxc2">plixc2</alias>
<alias base="TP-KRF">tp_KRF</alias> <alias base="PLIxc3">plixc3</alias>
<alias base="TP-MSR">tp_MSR</alias> <alias base="PLIxc4">plixc4</alias>
<alias base="TP-ORN">tp_ORN</alias> <alias base="PLIxc5">plixc5</alias>
<alias base="TP-PTR">tp_PTR</alias> <alias base="PMSLmean">pmslmean</alias>
<alias base="TP-RHA">tp_RHA</alias> <alias base="PMSLsprd">pmslsprd</alias>
<alias base="TP-RSA">tp_RSA</alias> <alias base="POP12hr">pop12hr</alias>
<alias base="TP-STR">tp_STR</alias> <alias base="POP3hr">pop3hr</alias>
<alias base="TP-TAR">tp_TAR</alias> <alias base="POP6hr">pop6hr</alias>
<alias base="TP-TIR">tp_TIR</alias> <alias base="POP">pop</alias>
<alias base="TP-TUA">tp_TUA</alias> <alias base="PPAM">ppam</alias>
<alias base="TP3mean">tpmean3</alias> <alias base="PPAN">ppan</alias>
<alias base="TP6mean">tpmean6</alias> <alias base="PPAS">ppas</alias>
<alias base="TP12mean">tpmean12</alias> <alias base="PPBM">ppbm</alias>
<alias base="TP24mean">tpmean24</alias> <alias base="PPBN">ppbn</alias>
<alias base="SNOL12mean">snolmean12</alias> <alias base="PPBS">ppbs</alias>
<alias base="TP3sprd">tpsprd3</alias> <alias base="PPFFG">ppffg</alias>
<alias base="TP6sprd">tpsprd6</alias> <alias base="PPNN">ppnn</alias>
<alias base="TP12sprd">tpsprd12</alias> <alias base="prcp12hr">prcp12hr</alias>
<alias base="TP24sprd">tpsprd24</alias> <alias base="prcp3hr">prcp3hr</alias>
<alias base="SNOL12sprd">snolsprd12</alias> <alias base="prcp6hr">prcp6hr</alias>
<alias base="Prob34">prob34</alias>
<alias base="Prob50">prob50</alias>
<alias base="Prob64">prob64</alias>
<alias base="PTAM">ptam</alias>
<alias base="PTAN">ptan</alias>
<alias base="PTA">pta</alias>
<alias base="PTAS">ptas</alias>
<alias base="PTBM">ptbm</alias>
<alias base="PTBN">ptbn</alias>
<alias base="PTBS">ptbs</alias>
<alias base="PTNN">ptnn</alias>
<alias base="PTOR">ptor</alias>
<alias base="PT">pt</alias>
<alias base="PTT">ptt</alias>
<alias base="PTyp">ptyp</alias>
<alias base="PWmean">pwmean</alias>
<alias base="PWS34">pws34</alias>
<alias base="PWS50">pws50</alias>
<alias base="PWS64">pws64</alias>
<alias base="PWsprd">pwsprd</alias>
<alias base="QPE01">qpe1</alias> <alias base="QPE01">qpe1</alias>
<alias base="QPE06">qpe6</alias> <alias base="QPE06">qpe6</alias>
<alias base="TPCSG">Surge10Pct</alias> <alias base="QPE24">qpe24</alias>
<alias base="TPCSG-305E2">PSurge10Ft</alias> <alias base="RAIN">rain</alias>
<alias base="TPCSG-274E2">PSurge9Ft</alias> <alias base="REFC">refc</alias>
<alias base="TPCSG-244E2">PSurge8Ft</alias> <alias base="REFD">refd</alias>
<alias base="TPCSG-213E2">PSurge7Ft</alias> <alias base="RHmean">rhmean</alias>
<alias base="TPCSG-183E2">PSurge6Ft</alias> <alias base="RHsprd">rhsprd</alias>
<alias base="TPCSG-152E2">PSurge5Ft</alias> <alias base="ROUTED_FLOW_C">routed_flow_c</alias>
<alias base="TPCSG-122E2">PSurge4Ft</alias> <alias base="ROUTED_FLOW_H">routed_flow_h</alias>
<alias base="TPCSG-91E2">PSurge3Ft</alias> <alias base="ROUTED_FLOW_M">routed_flow_m</alias>
<alias base="TPCSG-61E2">PSurge2Ft</alias> <alias base="ROUTED_FLOW">routed_flow</alias>
<alias base="RR">rr</alias>
<alias base="RRV">rrv</alias>
<alias base="S1Hr">s1hr</alias>
<alias base="SAcc">sacc</alias>
<alias base="SHerranl">sherranl</alias>
<alias base="shWlt">shwlt</alias>
<alias base="SIPD">sld</alias> <alias base="SIPD">sld</alias>
<alias base="MAXRH3hr">maxRH3hr</alias> <alias base="SI">si</alias>
<alias base="MAXRH12hr">maxRH12hr</alias> <alias base="SMC">smc</alias>
<alias base="MINRH3hr">minRH3hr</alias> <alias base="SNOL12c10">snol12c10</alias>
<alias base="MINRH12hr">minRH12hr</alias> <alias base="SNOL12c1">snol12c1</alias>
<alias base="TPCSG-SLOSH">SloshSurge</alias> <alias base="SNOL12c2">snol12c2</alias>
<alias base="SNOL12c3">snol12c3</alias>
<alias base="SNOL12c4">snol12c4</alias>
<alias base="SNOL12c5">snol12c5</alias>
<alias base="SNOL12c6">snol12c6</alias>
<alias base="SNOL12c7">snol12c7</alias>
<alias base="SNOL12c8">snol12c8</alias>
<alias base="SNOL12c9">snol12c9</alias>
<alias base="SNOL12mean">snolmean12</alias>
<alias base="SNOL12sprd">snolsprd12</alias>
<alias base="snowd3hr">snowd3hr</alias>
<alias base="snowd6hr">snowd6hr</alias>
<alias base="SNOW">snow</alias>
<alias base="SPT">spt</alias>
<alias base="STOT">stot</alias>
<alias base="STPA">stpa</alias>
<alias base="ST">st</alias>
<alias base="TAdv">tadv</alias>
<alias base="Tc1">tc1</alias>
<alias base="Terranl">terranl</alias>
<alias base="ThP12hr">thp12hr</alias>
<alias base="ThP3hr">thp3hr</alias>
<alias base="ThP6hr">thp6hr</alias>
<alias base="Tmean">tmean</alias>
<alias base="TOTSN">totsn</alias>
<alias base="TP120hr">tp120hr</alias>
<alias base="TP12c1">tp12c1</alias>
<alias base="TP12c2">tp12c2</alias>
<alias base="TP12c3">tp12c3</alias>
<alias base="TP12c4">tp12c4</alias>
<alias base="TP12c5">tp12c5</alias>
<alias base="TP12c6">tp12c6</alias>
<alias base="TP12c7">tp12c7</alias>
<alias base="TP12c8">tp12c8</alias>
<alias base="TP12mean">tpmean12</alias>
<alias base="TP12sprd">tpsprd12</alias>
<alias base="TP24c1">tp24c1</alias>
<alias base="TP24c2">tp24c2</alias>
<alias base="TP24c3">tp24c3</alias>
<alias base="TP24c4">tp24c4</alias>
<alias base="TP24c5">tp24c5</alias>
<alias base="TP24c6">tp24c6</alias>
<alias base="TP24c7">tp24c7</alias>
<alias base="TP24c8">tp24c8</alias>
<alias base="TP24mean">tpmean24</alias>
<alias base="TP24sprd">tpsprd24</alias>
<alias base="TP3c1">tp3c1</alias>
<alias base="TP3c2">tp3c2</alias>
<alias base="TP3c3">tp3c3</alias>
<alias base="TP3c4">tp3c4</alias>
<alias base="TP3c5">tp3c5</alias>
<alias base="TP3c6">tp3c6</alias>
<alias base="TP3c7">tp3c7</alias>
<alias base="TP3c8">tp3c8</alias>
<alias base="TP3mean">tpmean3</alias>
<alias base="TP3sprd">tpsprd3</alias>
<alias base="TP6c1">tp6c1</alias>
<alias base="TP6c2">tp6c2</alias>
<alias base="TP6c3">tp6c3</alias>
<alias base="TP6c4">tp6c4</alias>
<alias base="TP6c5">tp6c5</alias>
<alias base="TP6c6">tp6c6</alias>
<alias base="TP6c7">tp6c7</alias>
<alias base="TP6c8">tp6c8</alias>
<alias base="TP6mean">tpmean6</alias>
<alias base="TP6sprd">tpsprd6</alias>
<alias base="TP_ACR">tp_ACR</alias>
<alias base="TP-ACR">tp_ACR</alias>
<alias base="TP_ALR">tp_ALR</alias>
<alias base="TP-ALR">tp_ALR</alias>
<alias base="TPCSG_122E2">PSurge4Ft</alias>
<alias base="TPCSG-122E2">PSurge4Ft</alias>
<alias base="TPCSG_152E2">PSurge5Ft</alias>
<alias base="TPCSG-152E2">PSurge5Ft</alias>
<alias base="TPCSG_183E2">PSurge6Ft</alias>
<alias base="TPCSG-183E2">PSurge6Ft</alias>
<alias base="TPCSG_20">Surge20Pct</alias>
<alias base="TPCSG-20">Surge20Pct</alias> <alias base="TPCSG-20">Surge20Pct</alias>
<alias base="TPCSG_213E2">PSurge7Ft</alias>
<alias base="TPCSG-213E2">PSurge7Ft</alias>
<alias base="TPCSG_244E2">PSurge8Ft</alias>
<alias base="TPCSG-244E2">PSurge8Ft</alias>
<alias base="TPCSG_274E2">PSurge9Ft</alias>
<alias base="TPCSG-274E2">PSurge9Ft</alias>
<alias base="TPCSG_305E2">PSurge10Ft</alias>
<alias base="TPCSG-305E2">PSurge10Ft</alias>
<alias base="TPCSG_30">Surge30Pct</alias>
<alias base="TPCSG-30">Surge30Pct</alias> <alias base="TPCSG-30">Surge30Pct</alias>
<alias base="TPCSG-40">Surge40Pct</alias> <alias base="TPCSG_335E2">PSurge11Ft</alias>
<alias base="TPCSG-50">Surge50Pct</alias>
<alias base="TPCSG-60">Surge60Pct</alias>
<alias base="TPCSG-70">Surge70Pct</alias>
<alias base="TPCSG-80">Surge80Pct</alias>
<alias base="TPCSG-90">Surge90Pct</alias>
<alias base="TPCSG-335E2">PSurge11Ft</alias> <alias base="TPCSG-335E2">PSurge11Ft</alias>
<alias base="TPCSG_366E2">PSurge12Ft</alias>
<alias base="TPCSG-366E2">PSurge12Ft</alias> <alias base="TPCSG-366E2">PSurge12Ft</alias>
<alias base="TPCSG_396E2">PSurge13Ft</alias>
<alias base="TPCSG-396E2">PSurge13Ft</alias> <alias base="TPCSG-396E2">PSurge13Ft</alias>
<alias base="TPCSG_40">Surge40Pct</alias>
<alias base="TPCSG-40">Surge40Pct</alias>
<alias base="TPCSG_427E2">PSurge14Ft</alias>
<alias base="TPCSG-427E2">PSurge14Ft</alias> <alias base="TPCSG-427E2">PSurge14Ft</alias>
<alias base="TPCSG_457E2">PSurge15Ft</alias>
<alias base="TPCSG-457E2">PSurge15Ft</alias> <alias base="TPCSG-457E2">PSurge15Ft</alias>
<alias base="TPCSG_488E2">PSurge16Ft</alias>
<alias base="TPCSG-488E2">PSurge16Ft</alias> <alias base="TPCSG-488E2">PSurge16Ft</alias>
<alias base="TPCSG_50">Surge50Pct</alias>
<alias base="TPCSG-50">Surge50Pct</alias>
<alias base="TPCSG_518E2">PSurge17Ft</alias>
<alias base="TPCSG-518E2">PSurge17Ft</alias> <alias base="TPCSG-518E2">PSurge17Ft</alias>
<alias base="TPCSG_549E2">PSurge18Ft</alias>
<alias base="TPCSG-549E2">PSurge18Ft</alias> <alias base="TPCSG-549E2">PSurge18Ft</alias>
<alias base="TPCSG_579E2">PSurge19Ft</alias>
<alias base="TPCSG-579E2">PSurge19Ft</alias> <alias base="TPCSG-579E2">PSurge19Ft</alias>
<alias base="TPCSG_60">Surge60Pct</alias>
<alias base="TPCSG-60">Surge60Pct</alias>
<alias base="TPCSG_610E2">PSurge20Ft</alias>
<alias base="TPCSG-610E2">PSurge20Ft</alias> <alias base="TPCSG-610E2">PSurge20Ft</alias>
<alias base="TPCSG_61E2">PSurge2Ft</alias>
<alias base="TPCSG-61E2">PSurge2Ft</alias>
<alias base="TPCSG_640E2">PSurge21Ft</alias>
<alias base="TPCSG-640E2">PSurge21Ft</alias> <alias base="TPCSG-640E2">PSurge21Ft</alias>
<alias base="TPCSG_671E2">PSurge22Ft</alias>
<alias base="TPCSG-671E2">PSurge22Ft</alias> <alias base="TPCSG-671E2">PSurge22Ft</alias>
<alias base="TPCSG_701E2">PSurge23Ft</alias>
<alias base="TPCSG-701E2">PSurge23Ft</alias> <alias base="TPCSG-701E2">PSurge23Ft</alias>
<alias base="TPCSG_70">Surge70Pct</alias>
<alias base="TPCSG-70">Surge70Pct</alias>
<alias base="TPCSG_732E2">PSurge24Ft</alias>
<alias base="TPCSG-732E2">PSurge24Ft</alias> <alias base="TPCSG-732E2">PSurge24Ft</alias>
<alias base="TPCSG_762E2">PSurge25Ft</alias>
<alias base="TPCSG-762E2">PSurge25Ft</alias> <alias base="TPCSG-762E2">PSurge25Ft</alias>
<alias base="TPCSG_80">Surge80Pct</alias>
<alias base="TPCSG-80">Surge80Pct</alias>
<alias base="TPCSG_90">Surge90Pct</alias>
<alias base="TPCSG-90">Surge90Pct</alias>
<alias base="TPCSG_91E2">PSurge3Ft</alias>
<alias base="TPCSG-91E2">PSurge3Ft</alias>
<alias base="TPCSG_SLOSH">SloshSurge</alias>
<alias base="TPCSG-SLOSH">SloshSurge</alias>
<alias base="TPCSG">Surge10Pct</alias>
<alias base="TP_ECMWF">tp_ecmwf</alias>
<alias base="TP_FWR">tp_FWR</alias>
<alias base="TP-FWR">tp_FWR</alias>
<alias base="TP_HPC">tp_HPC</alias>
<alias base="TP-HPC">tp_HPC</alias>
<alias base="TP_KRF">tp_KRF</alias>
<alias base="TP-KRF">tp_KRF</alias>
<alias base="TP_MSR">tp_MSR</alias>
<alias base="TP-MSR">tp_MSR</alias>
<alias base="TP_ORN">tp_ORN</alias>
<alias base="TP-ORN">tp_ORN</alias>
<alias base="TP_PTR">tp_PTR</alias>
<alias base="TP-PTR">tp_PTR</alias>
<alias base="TP_RHA">tp_RHA</alias>
<alias base="TP-RHA">tp_RHA</alias>
<alias base="TP_RSA">tp_RSA</alias>
<alias base="TP-RSA">tp_RSA</alias>
<alias base="TP_STR">tp_STR</alias>
<alias base="TP-STR">tp_STR</alias>
<alias base="TP_TAR">tp_TAR</alias>
<alias base="TP-TAR">tp_TAR</alias>
<alias base="TP_TIR">tp_TIR</alias>
<alias base="TP-TIR">tp_TIR</alias>
<alias base="TP_TUA">tp_TUA</alias>
<alias base="TP-TUA">tp_TUA</alias>
<alias base="TPW">tpw</alias>
<alias base="Tsprd">tsprd</alias>
<alias base="tTOT">ttot</alias>
<alias base="TURB">turb</alias>
<alias base="uWerranl">uwerranl</alias>
<alias base="uWmean">uwmean</alias>
<alias base="uWsprd">uwsprd</alias>
<alias base="UZFWC">uzfwc</alias>
<alias base="UZTWC">uztwc</alias>
<alias base="Visc1">visc1</alias>
<alias base="Visc2">visc2</alias>
<alias base="VMCC">vmcc</alias>
<alias base="VSS">vss</alias>
<alias base="VV">ww</alias>
<alias base="vWerranl">vwerranl</alias>
<alias base="vWmean">vwmean</alias>
<alias base="vWsprd">vwsprd</alias>
<alias base="WATER_DEPTH">water_depth</alias>
<alias base="WDerranl">wderranl</alias>
<alias base="WGD">wgd</alias>
<alias base="WOm">wom</alias>
<alias base="WSc1">wsc1</alias>
<alias base="WSc2">wsc2</alias>
<alias base="WSc3">wsc3</alias>
<alias base="WSc4">wsc4</alias>
<alias base="WSerranl">wserranl</alias>
<alias base="WSmean">wsmean</alias>
<alias base="WSp1">wsp1</alias>
<alias base="WSp2">wsp2</alias>
<alias base="WSp3">wsp3</alias>
<alias base="WSsprd">wssprd</alias>
<alias base="wxType">wx</alias>
<alias base="zAGL">zagl</alias>
</aliasList> </aliasList>

View file

@ -115,7 +115,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -115,7 +115,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -63,7 +63,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -64,7 +64,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -115,7 +115,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -217,7 +217,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -115,7 +115,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -43,7 +43,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -77,7 +77,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -64,7 +64,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -22,8 +22,8 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>weasd</short_name> <short_name>weasd</short_name>
<long_name>water equivalent of accumulated snow depth</long_name> <long_name>water equivalent of accumulated snow depth</long_name>
<units>ml</units> <units>mm</units>
<udunits>mil</udunits> <udunits>millimeter</udunits>
<uiname>waterEqvAccSnowDepth</uiname> <uiname>waterEqvAccSnowDepth</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
<valid_range>1000.0</valid_range> <valid_range>1000.0</valid_range>
@ -106,7 +106,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
@ -258,7 +258,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cicep</short_name> <short_name>cicep</short_name>
<long_name>Categorical ice pellets</long_name> <long_name>Categorical ice pellets</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalIcePlt</uiname> <uiname>CategoricalIcePlt</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -333,7 +333,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cfrzr</short_name> <short_name>cfrzr</short_name>
<long_name>Categorical freezing rain</long_name> <long_name>Categorical freezing rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalFrzRain</uiname> <uiname>CategoricalFrzRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -378,7 +378,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>csnow</short_name> <short_name>csnow</short_name>
<long_name>Categorical snow</long_name> <long_name>Categorical snow</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalSnow</uiname> <uiname>CategoricalSnow</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -491,7 +491,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>crain</short_name> <short_name>crain</short_name>
<long_name>Categorical rain</long_name> <long_name>Categorical rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalRain</uiname> <uiname>CategoricalRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>

View file

@ -22,8 +22,8 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>weasd</short_name> <short_name>weasd</short_name>
<long_name>water equivalent of accumulated snow depth</long_name> <long_name>water equivalent of accumulated snow depth</long_name>
<units>ml</units> <units>mm</units>
<udunits>mil</udunits> <udunits>millimeter</udunits>
<uiname>waterEqvAccSnowDepth</uiname> <uiname>waterEqvAccSnowDepth</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
<valid_range>1000.0</valid_range> <valid_range>1000.0</valid_range>
@ -106,7 +106,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
@ -258,7 +258,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cicep</short_name> <short_name>cicep</short_name>
<long_name>Categorical ice pellets</long_name> <long_name>Categorical ice pellets</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalIcePlt</uiname> <uiname>CategoricalIcePlt</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -333,7 +333,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cfrzr</short_name> <short_name>cfrzr</short_name>
<long_name>Categorical freezing rain</long_name> <long_name>Categorical freezing rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalFrzRain</uiname> <uiname>CategoricalFrzRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -378,7 +378,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>csnow</short_name> <short_name>csnow</short_name>
<long_name>Categorical snow</long_name> <long_name>Categorical snow</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalSnow</uiname> <uiname>CategoricalSnow</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -491,7 +491,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>crain</short_name> <short_name>crain</short_name>
<long_name>Categorical rain</long_name> <long_name>Categorical rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalRain</uiname> <uiname>CategoricalRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>

View file

@ -22,8 +22,8 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>weasd</short_name> <short_name>weasd</short_name>
<long_name>water equivalent of accumulated snow depth</long_name> <long_name>water equivalent of accumulated snow depth</long_name>
<units>ml</units> <units>mm</units>
<udunits>mil</udunits> <udunits>millimeter</udunits>
<uiname>waterEqvAccSnowDepth</uiname> <uiname>waterEqvAccSnowDepth</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
<valid_range>1000.0</valid_range> <valid_range>1000.0</valid_range>
@ -106,7 +106,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
@ -258,7 +258,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cicep</short_name> <short_name>cicep</short_name>
<long_name>Categorical ice pellets</long_name> <long_name>Categorical ice pellets</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalIcePlt</uiname> <uiname>CategoricalIcePlt</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -333,7 +333,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cfrzr</short_name> <short_name>cfrzr</short_name>
<long_name>Categorical freezing rain</long_name> <long_name>Categorical freezing rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalFrzRain</uiname> <uiname>CategoricalFrzRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -378,7 +378,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>csnow</short_name> <short_name>csnow</short_name>
<long_name>Categorical snow</long_name> <long_name>Categorical snow</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalSnow</uiname> <uiname>CategoricalSnow</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -491,7 +491,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>crain</short_name> <short_name>crain</short_name>
<long_name>Categorical rain</long_name> <long_name>Categorical rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalRain</uiname> <uiname>CategoricalRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>

View file

@ -22,8 +22,8 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>weasd</short_name> <short_name>weasd</short_name>
<long_name>water equivalent of accumulated snow depth</long_name> <long_name>water equivalent of accumulated snow depth</long_name>
<units>ml</units> <units>mm</units>
<udunits>mil</udunits> <udunits>millimeter</udunits>
<uiname>waterEqvAccSnowDepth</uiname> <uiname>waterEqvAccSnowDepth</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
<valid_range>1000.0</valid_range> <valid_range>1000.0</valid_range>
@ -106,7 +106,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
@ -258,7 +258,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cicep</short_name> <short_name>cicep</short_name>
<long_name>Categorical ice pellets</long_name> <long_name>Categorical ice pellets</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalIcePlt</uiname> <uiname>CategoricalIcePlt</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -333,7 +333,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cfrzr</short_name> <short_name>cfrzr</short_name>
<long_name>Categorical freezing rain</long_name> <long_name>Categorical freezing rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalFrzRain</uiname> <uiname>CategoricalFrzRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -378,7 +378,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>csnow</short_name> <short_name>csnow</short_name>
<long_name>Categorical snow</long_name> <long_name>Categorical snow</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalSnow</uiname> <uiname>CategoricalSnow</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -491,7 +491,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>crain</short_name> <short_name>crain</short_name>
<long_name>Categorical rain</long_name> <long_name>Categorical rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalRain</uiname> <uiname>CategoricalRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>

View file

@ -22,8 +22,8 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>weasd</short_name> <short_name>weasd</short_name>
<long_name>water equivalent of accumulated snow depth</long_name> <long_name>water equivalent of accumulated snow depth</long_name>
<units>ml</units> <units>mm</units>
<udunits>mil</udunits> <udunits>millimeter</udunits>
<uiname>waterEqvAccSnowDepth</uiname> <uiname>waterEqvAccSnowDepth</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
<valid_range>1000.0</valid_range> <valid_range>1000.0</valid_range>
@ -106,7 +106,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
@ -258,7 +258,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cicep</short_name> <short_name>cicep</short_name>
<long_name>Categorical ice pellets</long_name> <long_name>Categorical ice pellets</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalIcePlt</uiname> <uiname>CategoricalIcePlt</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -333,7 +333,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cfrzr</short_name> <short_name>cfrzr</short_name>
<long_name>Categorical freezing rain</long_name> <long_name>Categorical freezing rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalFrzRain</uiname> <uiname>CategoricalFrzRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -378,7 +378,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>csnow</short_name> <short_name>csnow</short_name>
<long_name>Categorical snow</long_name> <long_name>Categorical snow</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalSnow</uiname> <uiname>CategoricalSnow</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -491,7 +491,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>crain</short_name> <short_name>crain</short_name>
<long_name>Categorical rain</long_name> <long_name>Categorical rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalRain</uiname> <uiname>CategoricalRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>

View file

@ -22,8 +22,8 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>weasd</short_name> <short_name>weasd</short_name>
<long_name>water equivalent of accumulated snow depth</long_name> <long_name>water equivalent of accumulated snow depth</long_name>
<units>ml</units> <units>mm</units>
<udunits>mil</udunits> <udunits>millimeter</udunits>
<uiname>waterEqvAccSnowDepth</uiname> <uiname>waterEqvAccSnowDepth</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
<valid_range>1000.0</valid_range> <valid_range>1000.0</valid_range>
@ -106,7 +106,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
@ -258,7 +258,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cicep</short_name> <short_name>cicep</short_name>
<long_name>Categorical ice pellets</long_name> <long_name>Categorical ice pellets</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalIcePlt</uiname> <uiname>CategoricalIcePlt</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -333,7 +333,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cfrzr</short_name> <short_name>cfrzr</short_name>
<long_name>Categorical freezing rain</long_name> <long_name>Categorical freezing rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalFrzRain</uiname> <uiname>CategoricalFrzRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -378,7 +378,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>csnow</short_name> <short_name>csnow</short_name>
<long_name>Categorical snow</long_name> <long_name>Categorical snow</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalSnow</uiname> <uiname>CategoricalSnow</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -491,7 +491,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>crain</short_name> <short_name>crain</short_name>
<long_name>Categorical rain</long_name> <long_name>Categorical rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalRain</uiname> <uiname>CategoricalRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>

View file

@ -22,8 +22,8 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>weasd</short_name> <short_name>weasd</short_name>
<long_name>water equivalent of accumulated snow depth</long_name> <long_name>water equivalent of accumulated snow depth</long_name>
<units>ml</units> <units>mm</units>
<udunits>mil</udunits> <udunits>millimeter</udunits>
<uiname>waterEqvAccSnowDepth</uiname> <uiname>waterEqvAccSnowDepth</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
<valid_range>1000.0</valid_range> <valid_range>1000.0</valid_range>
@ -106,7 +106,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
@ -258,7 +258,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cicep</short_name> <short_name>cicep</short_name>
<long_name>Categorical ice pellets</long_name> <long_name>Categorical ice pellets</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalIcePlt</uiname> <uiname>CategoricalIcePlt</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -333,7 +333,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cfrzr</short_name> <short_name>cfrzr</short_name>
<long_name>Categorical freezing rain</long_name> <long_name>Categorical freezing rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalFrzRain</uiname> <uiname>CategoricalFrzRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -378,7 +378,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>csnow</short_name> <short_name>csnow</short_name>
<long_name>Categorical snow</long_name> <long_name>Categorical snow</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalSnow</uiname> <uiname>CategoricalSnow</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -491,7 +491,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>crain</short_name> <short_name>crain</short_name>
<long_name>Categorical rain</long_name> <long_name>Categorical rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalRain</uiname> <uiname>CategoricalRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>

View file

@ -22,8 +22,8 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>weasd</short_name> <short_name>weasd</short_name>
<long_name>water equivalent of accumulated snow depth</long_name> <long_name>water equivalent of accumulated snow depth</long_name>
<units>ml</units> <units>mm</units>
<udunits>mil</udunits> <udunits>millimeter</udunits>
<uiname>waterEqvAccSnowDepth</uiname> <uiname>waterEqvAccSnowDepth</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
<valid_range>1000.0</valid_range> <valid_range>1000.0</valid_range>
@ -106,7 +106,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
@ -258,7 +258,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cicep</short_name> <short_name>cicep</short_name>
<long_name>Categorical ice pellets</long_name> <long_name>Categorical ice pellets</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalIcePlt</uiname> <uiname>CategoricalIcePlt</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -333,7 +333,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cfrzr</short_name> <short_name>cfrzr</short_name>
<long_name>Categorical freezing rain</long_name> <long_name>Categorical freezing rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalFrzRain</uiname> <uiname>CategoricalFrzRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -378,7 +378,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>csnow</short_name> <short_name>csnow</short_name>
<long_name>Categorical snow</long_name> <long_name>Categorical snow</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalSnow</uiname> <uiname>CategoricalSnow</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -491,7 +491,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>crain</short_name> <short_name>crain</short_name>
<long_name>Categorical rain</long_name> <long_name>Categorical rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalRain</uiname> <uiname>CategoricalRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>

View file

@ -22,8 +22,8 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>weasd</short_name> <short_name>weasd</short_name>
<long_name>water equivalent of accumulated snow depth</long_name> <long_name>water equivalent of accumulated snow depth</long_name>
<units>ml</units> <units>mm</units>
<udunits>mil</udunits> <udunits>millimeter</udunits>
<uiname>waterEqvAccSnowDepth</uiname> <uiname>waterEqvAccSnowDepth</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
<valid_range>1000.0</valid_range> <valid_range>1000.0</valid_range>
@ -106,7 +106,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
@ -258,7 +258,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cicep</short_name> <short_name>cicep</short_name>
<long_name>Categorical ice pellets</long_name> <long_name>Categorical ice pellets</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalIcePlt</uiname> <uiname>CategoricalIcePlt</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -333,7 +333,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cfrzr</short_name> <short_name>cfrzr</short_name>
<long_name>Categorical freezing rain</long_name> <long_name>Categorical freezing rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalFrzRain</uiname> <uiname>CategoricalFrzRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -378,7 +378,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>csnow</short_name> <short_name>csnow</short_name>
<long_name>Categorical snow</long_name> <long_name>Categorical snow</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalSnow</uiname> <uiname>CategoricalSnow</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -491,7 +491,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>crain</short_name> <short_name>crain</short_name>
<long_name>Categorical rain</long_name> <long_name>Categorical rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalRain</uiname> <uiname>CategoricalRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>

View file

@ -22,8 +22,8 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>weasd</short_name> <short_name>weasd</short_name>
<long_name>water equivalent of accumulated snow depth</long_name> <long_name>water equivalent of accumulated snow depth</long_name>
<units>ml</units> <units>mm</units>
<udunits>mil</udunits> <udunits>millimeter</udunits>
<uiname>waterEqvAccSnowDepth</uiname> <uiname>waterEqvAccSnowDepth</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
<valid_range>1000.0</valid_range> <valid_range>1000.0</valid_range>
@ -106,7 +106,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
@ -258,7 +258,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cicep</short_name> <short_name>cicep</short_name>
<long_name>Categorical ice pellets</long_name> <long_name>Categorical ice pellets</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalIcePlt</uiname> <uiname>CategoricalIcePlt</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -333,7 +333,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cfrzr</short_name> <short_name>cfrzr</short_name>
<long_name>Categorical freezing rain</long_name> <long_name>Categorical freezing rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalFrzRain</uiname> <uiname>CategoricalFrzRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -378,7 +378,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>csnow</short_name> <short_name>csnow</short_name>
<long_name>Categorical snow</long_name> <long_name>Categorical snow</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalSnow</uiname> <uiname>CategoricalSnow</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -491,7 +491,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>crain</short_name> <short_name>crain</short_name>
<long_name>Categorical rain</long_name> <long_name>Categorical rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalRain</uiname> <uiname>CategoricalRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>

View file

@ -64,7 +64,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -43,7 +43,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -64,7 +64,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -95,7 +95,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -54,7 +54,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -54,7 +54,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -54,7 +54,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -115,7 +115,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -115,7 +115,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -115,7 +115,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -115,7 +115,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -43,7 +43,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -77,7 +77,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
</gridParamInfo> </gridParamInfo>

View file

@ -87,7 +87,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -160,7 +160,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -72,7 +72,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>av</short_name> <short_name>av</short_name>
<long_name>absolute vorticity</long_name> <long_name>absolute vorticity</long_name>
<units>1/s</units> <units>/s</units>
<udunits>1/second</udunits> <udunits>1/second</udunits>
<uiname>absVort</uiname> <uiname>absVort</uiname>
<valid_range>-0.00999999977648</valid_range> <valid_range>-0.00999999977648</valid_range>
@ -129,7 +129,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -111,7 +111,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>av</short_name> <short_name>av</short_name>
<long_name>absolute vorticity</long_name> <long_name>absolute vorticity</long_name>
<units>1/s</units> <units>/s</units>
<udunits>1/second</udunits> <udunits>1/second</udunits>
<uiname>absVort</uiname> <uiname>absVort</uiname>
<valid_range>-0.00999999977648</valid_range> <valid_range>-0.00999999977648</valid_range>
@ -168,7 +168,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -156,7 +156,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>av</short_name> <short_name>av</short_name>
<long_name>absolute vorticity</long_name> <long_name>absolute vorticity</long_name>
<units>1/s</units> <units>/s</units>
<udunits>1/second</udunits> <udunits>1/second</udunits>
<uiname>absVort</uiname> <uiname>absVort</uiname>
<valid_range>-0.00999999977648</valid_range> <valid_range>-0.00999999977648</valid_range>
@ -244,7 +244,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -93,7 +93,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>av</short_name> <short_name>av</short_name>
<long_name>absolute vorticity</long_name> <long_name>absolute vorticity</long_name>
<units>1/s</units> <units>/s</units>
<udunits>1/second</udunits> <udunits>1/second</udunits>
<uiname>absVort</uiname> <uiname>absVort</uiname>
<valid_range>-0.00999999977648</valid_range> <valid_range>-0.00999999977648</valid_range>
@ -210,7 +210,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -109,7 +109,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>av</short_name> <short_name>av</short_name>
<long_name>absolute vorticity</long_name> <long_name>absolute vorticity</long_name>
<units>1/s</units> <units>/s</units>
<udunits>1/second</udunits> <udunits>1/second</udunits>
<uiname>absVort</uiname> <uiname>absVort</uiname>
<valid_range>-0.00999999977648</valid_range> <valid_range>-0.00999999977648</valid_range>
@ -226,7 +226,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -73,7 +73,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>av</short_name> <short_name>av</short_name>
<long_name>absolute vorticity</long_name> <long_name>absolute vorticity</long_name>
<units>1/s</units> <units>/s</units>
<udunits>1/second</udunits> <udunits>1/second</udunits>
<uiname>absVort</uiname> <uiname>absVort</uiname>
<valid_range>-0.00999999977648</valid_range> <valid_range>-0.00999999977648</valid_range>
@ -145,7 +145,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -73,7 +73,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>av</short_name> <short_name>av</short_name>
<long_name>absolute vorticity</long_name> <long_name>absolute vorticity</long_name>
<units>1/s</units> <units>/s</units>
<udunits>1/second</udunits> <udunits>1/second</udunits>
<uiname>absVort</uiname> <uiname>absVort</uiname>
<valid_range>-0.00999999977648</valid_range> <valid_range>-0.00999999977648</valid_range>
@ -145,7 +145,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -134,7 +134,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -134,7 +134,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -56,7 +56,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -56,7 +56,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -185,7 +185,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -87,7 +87,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -407,7 +407,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -407,7 +407,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -113,7 +113,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>av</short_name> <short_name>av</short_name>
<long_name>absolute vorticity</long_name> <long_name>absolute vorticity</long_name>
<units>1/s</units> <units>/s</units>
<udunits>1/second</udunits> <udunits>1/second</udunits>
<uiname>absVort</uiname> <uiname>absVort</uiname>
<valid_range>-0.00999999977648</valid_range> <valid_range>-0.00999999977648</valid_range>
@ -231,7 +231,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -113,7 +113,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>av</short_name> <short_name>av</short_name>
<long_name>absolute vorticity</long_name> <long_name>absolute vorticity</long_name>
<units>1/s</units> <units>/s</units>
<udunits>1/second</udunits> <udunits>1/second</udunits>
<uiname>absVort</uiname> <uiname>absVort</uiname>
<valid_range>-0.00999999977648</valid_range> <valid_range>-0.00999999977648</valid_range>
@ -231,7 +231,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -113,7 +113,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -34,8 +34,8 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>weasd</short_name> <short_name>weasd</short_name>
<long_name>water equivalent of accumulated snow depth</long_name> <long_name>water equivalent of accumulated snow depth</long_name>
<units>ml</units> <units>mm</units>
<udunits>mil</udunits> <udunits>millimeter</udunits>
<uiname>waterEqvAccSnowDepth</uiname> <uiname>waterEqvAccSnowDepth</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
<valid_range>1000.0</valid_range> <valid_range>1000.0</valid_range>
@ -138,7 +138,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
@ -446,7 +446,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cicep</short_name> <short_name>cicep</short_name>
<long_name>Categorical ice pellets</long_name> <long_name>Categorical ice pellets</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalIcePlt</uiname> <uiname>CategoricalIcePlt</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -521,7 +521,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cfrzr</short_name> <short_name>cfrzr</short_name>
<long_name>Categorical freezing rain</long_name> <long_name>Categorical freezing rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalFrzRain</uiname> <uiname>CategoricalFrzRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -566,7 +566,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>csnow</short_name> <short_name>csnow</short_name>
<long_name>Categorical snow</long_name> <long_name>Categorical snow</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalSnow</uiname> <uiname>CategoricalSnow</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -685,7 +685,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>crain</short_name> <short_name>crain</short_name>
<long_name>Categorical rain</long_name> <long_name>Categorical rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalRain</uiname> <uiname>CategoricalRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -700,7 +700,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>av</short_name> <short_name>av</short_name>
<long_name>absolute vorticity</long_name> <long_name>absolute vorticity</long_name>
<units>1/s</units> <units>/s</units>
<udunits>1/second</udunits> <udunits>1/second</udunits>
<uiname>absVort</uiname> <uiname>absVort</uiname>
<valid_range>-0.00999999977648</valid_range> <valid_range>-0.00999999977648</valid_range>

View file

@ -34,8 +34,8 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>weasd</short_name> <short_name>weasd</short_name>
<long_name>water equivalent of accumulated snow depth</long_name> <long_name>water equivalent of accumulated snow depth</long_name>
<units>ml</units> <units>mm</units>
<udunits>mil</udunits> <udunits>millimeter</udunits>
<uiname>waterEqvAccSnowDepth</uiname> <uiname>waterEqvAccSnowDepth</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
<valid_range>1000.0</valid_range> <valid_range>1000.0</valid_range>
@ -138,7 +138,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
@ -446,7 +446,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cicep</short_name> <short_name>cicep</short_name>
<long_name>Categorical ice pellets</long_name> <long_name>Categorical ice pellets</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalIcePlt</uiname> <uiname>CategoricalIcePlt</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -521,7 +521,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cfrzr</short_name> <short_name>cfrzr</short_name>
<long_name>Categorical freezing rain</long_name> <long_name>Categorical freezing rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalFrzRain</uiname> <uiname>CategoricalFrzRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -566,7 +566,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>csnow</short_name> <short_name>csnow</short_name>
<long_name>Categorical snow</long_name> <long_name>Categorical snow</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalSnow</uiname> <uiname>CategoricalSnow</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -685,7 +685,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>crain</short_name> <short_name>crain</short_name>
<long_name>Categorical rain</long_name> <long_name>Categorical rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalRain</uiname> <uiname>CategoricalRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -700,7 +700,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>av</short_name> <short_name>av</short_name>
<long_name>absolute vorticity</long_name> <long_name>absolute vorticity</long_name>
<units>1/s</units> <units>/s</units>
<udunits>1/second</udunits> <udunits>1/second</udunits>
<uiname>absVort</uiname> <uiname>absVort</uiname>
<valid_range>-0.00999999977648</valid_range> <valid_range>-0.00999999977648</valid_range>

View file

@ -170,7 +170,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -81,7 +81,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -46,7 +46,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>crain</short_name> <short_name>crain</short_name>
<long_name>Categorical rain</long_name> <long_name>Categorical rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalRain</uiname> <uiname>CategoricalRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -61,7 +61,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cfrzr</short_name> <short_name>cfrzr</short_name>
<long_name>Categorical freezing rain</long_name> <long_name>Categorical freezing rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalFrzRain</uiname> <uiname>CategoricalFrzRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -191,8 +191,8 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>weasd</short_name> <short_name>weasd</short_name>
<long_name>water equivalent of accumulated snow depth</long_name> <long_name>water equivalent of accumulated snow depth</long_name>
<units>ml</units> <units>mm</units>
<udunits>mil</udunits> <udunits>millimeter</udunits>
<uiname>waterEqvAccSnowDepth</uiname> <uiname>waterEqvAccSnowDepth</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
<valid_range>1000.0</valid_range> <valid_range>1000.0</valid_range>
@ -212,7 +212,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>av</short_name> <short_name>av</short_name>
<long_name>absolute vorticity</long_name> <long_name>absolute vorticity</long_name>
<units>1/s</units> <units>/s</units>
<udunits>1/second</udunits> <udunits>1/second</udunits>
<uiname>absVort</uiname> <uiname>absVort</uiname>
<valid_range>-0.00999999977648</valid_range> <valid_range>-0.00999999977648</valid_range>
@ -366,13 +366,13 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>csnow</short_name> <short_name>csnow</short_name>
<long_name>Categorical snow</long_name> <long_name>Categorical snow</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalSnow</uiname> <uiname>CategoricalSnow</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -453,7 +453,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cicep</short_name> <short_name>cicep</short_name>
<long_name>Categorical ice pellets</long_name> <long_name>Categorical ice pellets</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalIcePlt</uiname> <uiname>CategoricalIcePlt</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>

View file

@ -46,7 +46,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>crain</short_name> <short_name>crain</short_name>
<long_name>Categorical rain</long_name> <long_name>Categorical rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalRain</uiname> <uiname>CategoricalRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -61,7 +61,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cfrzr</short_name> <short_name>cfrzr</short_name>
<long_name>Categorical freezing rain</long_name> <long_name>Categorical freezing rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalFrzRain</uiname> <uiname>CategoricalFrzRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -191,8 +191,8 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>weasd</short_name> <short_name>weasd</short_name>
<long_name>water equivalent of accumulated snow depth</long_name> <long_name>water equivalent of accumulated snow depth</long_name>
<units>ml</units> <units>mm</units>
<udunits>mil</udunits> <udunits>millimeter</udunits>
<uiname>waterEqvAccSnowDepth</uiname> <uiname>waterEqvAccSnowDepth</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
<valid_range>1000.0</valid_range> <valid_range>1000.0</valid_range>
@ -212,7 +212,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>av</short_name> <short_name>av</short_name>
<long_name>absolute vorticity</long_name> <long_name>absolute vorticity</long_name>
<units>1/s</units> <units>/s</units>
<udunits>1/second</udunits> <udunits>1/second</udunits>
<uiname>absVort</uiname> <uiname>absVort</uiname>
<valid_range>-0.00999999977648</valid_range> <valid_range>-0.00999999977648</valid_range>
@ -366,13 +366,13 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>csnow</short_name> <short_name>csnow</short_name>
<long_name>Categorical snow</long_name> <long_name>Categorical snow</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalSnow</uiname> <uiname>CategoricalSnow</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -453,7 +453,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cicep</short_name> <short_name>cicep</short_name>
<long_name>Categorical ice pellets</long_name> <long_name>Categorical ice pellets</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalIcePlt</uiname> <uiname>CategoricalIcePlt</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>

View file

@ -117,7 +117,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>av</short_name> <short_name>av</short_name>
<long_name>absolute vorticity</long_name> <long_name>absolute vorticity</long_name>
<units>1/s</units> <units>/s</units>
<udunits>1/second</udunits> <udunits>1/second</udunits>
<uiname>absVort</uiname> <uiname>absVort</uiname>
<valid_range>-0.00999999977648</valid_range> <valid_range>-0.00999999977648</valid_range>
@ -204,7 +204,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -46,7 +46,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>crain</short_name> <short_name>crain</short_name>
<long_name>Categorical rain</long_name> <long_name>Categorical rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalRain</uiname> <uiname>CategoricalRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -61,7 +61,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cfrzr</short_name> <short_name>cfrzr</short_name>
<long_name>Categorical freezing rain</long_name> <long_name>Categorical freezing rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalFrzRain</uiname> <uiname>CategoricalFrzRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -191,8 +191,8 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>weasd</short_name> <short_name>weasd</short_name>
<long_name>water equivalent of accumulated snow depth</long_name> <long_name>water equivalent of accumulated snow depth</long_name>
<units>ml</units> <units>mm</units>
<udunits>mil</udunits> <udunits>millimeter</udunits>
<uiname>waterEqvAccSnowDepth</uiname> <uiname>waterEqvAccSnowDepth</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
<valid_range>1000.0</valid_range> <valid_range>1000.0</valid_range>
@ -212,7 +212,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>av</short_name> <short_name>av</short_name>
<long_name>absolute vorticity</long_name> <long_name>absolute vorticity</long_name>
<units>1/s</units> <units>/s</units>
<udunits>1/second</udunits> <udunits>1/second</udunits>
<uiname>absVort</uiname> <uiname>absVort</uiname>
<valid_range>-0.00999999977648</valid_range> <valid_range>-0.00999999977648</valid_range>
@ -366,13 +366,13 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>csnow</short_name> <short_name>csnow</short_name>
<long_name>Categorical snow</long_name> <long_name>Categorical snow</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalSnow</uiname> <uiname>CategoricalSnow</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -453,7 +453,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cicep</short_name> <short_name>cicep</short_name>
<long_name>Categorical ice pellets</long_name> <long_name>Categorical ice pellets</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalIcePlt</uiname> <uiname>CategoricalIcePlt</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>

View file

@ -117,7 +117,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>av</short_name> <short_name>av</short_name>
<long_name>absolute vorticity</long_name> <long_name>absolute vorticity</long_name>
<units>1/s</units> <units>/s</units>
<udunits>1/second</udunits> <udunits>1/second</udunits>
<uiname>absVort</uiname> <uiname>absVort</uiname>
<valid_range>-0.00999999977648</valid_range> <valid_range>-0.00999999977648</valid_range>
@ -240,7 +240,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -46,7 +46,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>crain</short_name> <short_name>crain</short_name>
<long_name>Categorical rain</long_name> <long_name>Categorical rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalRain</uiname> <uiname>CategoricalRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -61,7 +61,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cfrzr</short_name> <short_name>cfrzr</short_name>
<long_name>Categorical freezing rain</long_name> <long_name>Categorical freezing rain</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalFrzRain</uiname> <uiname>CategoricalFrzRain</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -191,8 +191,8 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>weasd</short_name> <short_name>weasd</short_name>
<long_name>water equivalent of accumulated snow depth</long_name> <long_name>water equivalent of accumulated snow depth</long_name>
<units>ml</units> <units>mm</units>
<udunits>mil</udunits> <udunits>millimeter</udunits>
<uiname>waterEqvAccSnowDepth</uiname> <uiname>waterEqvAccSnowDepth</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
<valid_range>1000.0</valid_range> <valid_range>1000.0</valid_range>
@ -212,7 +212,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>av</short_name> <short_name>av</short_name>
<long_name>absolute vorticity</long_name> <long_name>absolute vorticity</long_name>
<units>1/s</units> <units>/s</units>
<udunits>1/second</udunits> <udunits>1/second</udunits>
<uiname>absVort</uiname> <uiname>absVort</uiname>
<valid_range>-0.00999999977648</valid_range> <valid_range>-0.00999999977648</valid_range>
@ -366,13 +366,13 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>csnow</short_name> <short_name>csnow</short_name>
<long_name>Categorical snow</long_name> <long_name>Categorical snow</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalSnow</uiname> <uiname>CategoricalSnow</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
@ -453,7 +453,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>cicep</short_name> <short_name>cicep</short_name>
<long_name>Categorical ice pellets</long_name> <long_name>Categorical ice pellets</long_name>
<units>yes=1, no=0</units> <units>yn</units>
<udunits/> <udunits/>
<uiname>CategoricalIcePlt</uiname> <uiname>CategoricalIcePlt</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>

View file

@ -66,7 +66,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -111,7 +111,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
</gridParamInfo> </gridParamInfo>

View file

@ -87,7 +87,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -79,7 +79,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">

View file

@ -1,4 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!--
Mar 20, 2013 #1774 randerso Fixed wx definition
-->
<gridParamInfo xmlns:ns2="group"> <gridParamInfo xmlns:ns2="group">
<valtimeMINUSreftime> <valtimeMINUSreftime>
<fcst>302400</fcst> <fcst>302400</fcst>
@ -105,7 +108,7 @@
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name> <short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name> <long_name>Coriolis parameter</long_name>
<units>/second</units> <units>/s</units>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
@ -124,13 +127,13 @@
</levels> </levels>
</gridParameterInfo> </gridParameterInfo>
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo"> <gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
<short_name>wxType</short_name> <short_name>wx</short_name>
<long_name>Weather</long_name> <long_name>Weather</long_name>
<units/> <units/>
<udunits/> <udunits/>
<uiname>Weather</uiname> <uiname>Weather</uiname>
<valid_range>0.0</valid_range> <valid_range>0.0</valid_range>
<valid_range>12.0</valid_range> <valid_range>10.0</valid_range>
<fillValue>-99999.0</fillValue> <fillValue>-99999.0</fillValue>
<n3D>0</n3D> <n3D>0</n3D>
<levelsDesc>SFC</levelsDesc> <levelsDesc>SFC</levelsDesc>

Some files were not shown because too many files have changed in this diff Show more