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
[formerly5ec1c01d3a
] [formerly736bb45741
] [formerly736bb45741
[formerly140765a43e
]] [formerly437a04011a
[formerly736bb45741
[formerly140765a43e
] [formerly437a04011a
[formerly 4a7059ac9b104116fef4d0dab9a0108fb61b5a5c]]]] Former-commit-id:437a04011a
Former-commit-id: ba02abb01d1c45e71a88538e220dd9927dcb8c5a [formerly 0f6adbe76d6a5926e99d6caab1841fd3e7bd7349] [formerly7b27767d7e
[formerly0b48e96314
]] Former-commit-id:7b27767d7e
Former-commit-id:47c7f66f2b
This commit is contained in:
commit
9aca3ab74a
190 changed files with 5293 additions and 2987 deletions
|
@ -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>
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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;
|
||||||
|
@ -53,7 +54,8 @@ import com.vividsolutions.jts.geom.Coordinate;
|
||||||
* SOFTWARE HISTORY
|
* SOFTWARE HISTORY
|
||||||
* 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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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,19 +110,28 @@ public class ModalToolManager {
|
||||||
*/
|
*/
|
||||||
public synchronized void activateToolSet(String defaultTool)
|
public synchronized void activateToolSet(String defaultTool)
|
||||||
throws VizException {
|
throws VizException {
|
||||||
try {
|
boolean found = false;
|
||||||
ICommandService service = (ICommandService) PlatformUI
|
for (AbstractModalTool tool : toolMap.values()) {
|
||||||
.getWorkbench().getService(ICommandService.class);
|
if (tool != null && tool.commandId.equals(defaultTool)) {
|
||||||
if (defaultTool != null) {
|
found = true;
|
||||||
Command c = service.getCommand(defaultTool);
|
break;
|
||||||
c.executeWithChecks(new ExecutionEvent(c,
|
|
||||||
new HashMap<Object, Object>(), null, null));
|
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
}
|
||||||
statusHandler.handle(Priority.CRITICAL,
|
if (!found) {
|
||||||
"Error loading tool set", e);
|
try {
|
||||||
|
ICommandService service = (ICommandService) PlatformUI
|
||||||
|
.getWorkbench().getService(ICommandService.class);
|
||||||
|
if (defaultTool != null) {
|
||||||
|
Command c = service.getCommand(defaultTool);
|
||||||
|
c.executeWithChecks(new ExecutionEvent(c,
|
||||||
|
new HashMap<Object, Object>(), null, null));
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
statusHandler.handle(Priority.CRITICAL,
|
||||||
|
"Error loading tool set", e);
|
||||||
|
|
||||||
throw new VizException("Error loading tool set", e);
|
throw new VizException("Error loading tool set", e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -134,7 +134,8 @@ 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>
|
||||||
*
|
*
|
||||||
* @author chammack
|
* @author chammack
|
||||||
|
@ -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) {
|
||||||
|
|
|
@ -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()) {
|
||||||
continue;
|
if (selectedFips == null
|
||||||
|
|| !selectedFips.contains(getFips(f))) {
|
||||||
|
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,31 +1491,51 @@ 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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (areas.size() != newHatchedArea.getNumGeometries()) {
|
selectedGids.removeAll(seenGids);
|
||||||
// Areas were removed, recreate newHatchedArea
|
if (!selectedGids.isEmpty()) {
|
||||||
newHatchedArea = GeometryUtil.union(areas
|
for (int n = 0; n < selectedArea.getNumGeometries(); ++n) {
|
||||||
.toArray(new Geometry[0]));
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
newHatchedArea = GeometryUtil.union(areas
|
||||||
|
.toArray(new Geometry[0]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1470,6 +1584,94 @@ public class WarngenLayer extends AbstractStormTrackResource {
|
||||||
warningAreaChanged();
|
warningAreaChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 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);
|
||||||
}
|
}
|
||||||
state.setWarningArea(GeometryUtil.union(
|
if (filterArea(f, geom, false)) {
|
||||||
state.getWarningArea(), geom));
|
state.setWarningArea(GeometryUtil.union(
|
||||||
for (String gid : gids) {
|
state.getWarningArea(), geom));
|
||||||
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
|
|
||||||
|
|
|
@ -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.
|
@ -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);
|
||||||
|
|
|
@ -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>(
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -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;
|
||||||
|
@ -112,7 +90,8 @@ import com.raytheon.uf.edex.database.query.DatabaseQuery;
|
||||||
* 01/21/12 #1504 randerso Back ported change to use ParameterMapper into 13.1.2
|
* 01/21/12 #1504 randerso Back ported change to use ParameterMapper into 13.1.2
|
||||||
* 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.
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -41,7 +45,9 @@ import com.raytheon.uf.common.time.TimeRange;
|
||||||
* SOFTWARE HISTORY
|
* SOFTWARE HISTORY
|
||||||
* 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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,8 +56,10 @@ import com.raytheon.uf.common.util.mapping.MultipleMappingException;
|
||||||
* Jan 25, 2012 DR 14305 ryu Read site parameterInfo files
|
* Jan 25, 2012 DR 14305 ryu Read site parameterInfo files
|
||||||
* Sep 12, 2012 #1117 dgilling Implement method to retrieve all
|
* Sep 12, 2012 #1117 dgilling Implement method to retrieve all
|
||||||
* 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");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -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();
|
||||||
schema = dataStore.getSchema(this.tableName);
|
try {
|
||||||
|
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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) {
|
||||||
newestSource = Math.max(newestSource, map.getLastUpdated()
|
try {
|
||||||
.getTime());
|
newestSource = Math.max(newestSource, map.getLastUpdated()
|
||||||
|
.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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) {
|
||||||
DBInvChangeNotification notify = new DBInvChangeNotification(dbs,
|
|
||||||
additions, deletions, siteID);
|
|
||||||
|
|
||||||
if (!additions.isEmpty() || !deletions.isEmpty()) {
|
if (!additions.isEmpty() || !deletions.isEmpty()) {
|
||||||
|
DBInvChangeNotification notify = new DBInvChangeNotification(dbs,
|
||||||
|
additions, deletions, siteID);
|
||||||
SendNotifications.send(notify);
|
SendNotifications.send(notify);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -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"));
|
|
||||||
pd.setStdParallelTwo((Float) dataAttributes
|
|
||||||
.get("gridLoc.projection.stdParallelTwo"));
|
|
||||||
pd.setGridPointLL(new Point((Integer) dataAttributes
|
|
||||||
.get("gridLoc.projection.gridPointLL.x"),
|
|
||||||
(Integer) dataAttributes
|
(Integer) dataAttributes
|
||||||
.get("gridLoc.projection.gridPointLL.y")));
|
.get("gridLoc.projection.gridPointLL.x"),
|
||||||
pd.setGridPointUR(new Point((Integer) dataAttributes
|
|
||||||
.get("gridLoc.projection.gridPointUR.x"),
|
|
||||||
(Integer) dataAttributes
|
(Integer) dataAttributes
|
||||||
.get("gridLoc.projection.gridPointUR.y")));
|
.get("gridLoc.projection.gridPointLL.y"));
|
||||||
pd.setLatIntersect((Float) dataAttributes
|
Point gridUR = new Point(
|
||||||
.get("gridLoc.projection.latIntersect"));
|
(Integer) dataAttributes
|
||||||
pd.setLonCenter((Float) dataAttributes
|
.get("gridLoc.projection.gridPointUR.x"),
|
||||||
.get("gridLoc.projection.lonCenter"));
|
(Integer) dataAttributes
|
||||||
pd.setLonOrigin((Float) dataAttributes
|
.get("gridLoc.projection.gridPointUR.y"));
|
||||||
.get("gridLoc.projection.lonOrigin"));
|
Float latInt = (Float) dataAttributes
|
||||||
|
.get("gridLoc.projection.latIntersect");
|
||||||
|
Float lonCenter = (Float) dataAttributes
|
||||||
|
.get("gridLoc.projection.lonCenter");
|
||||||
|
Float lonOrig = (Float) dataAttributes
|
||||||
|
.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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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="CAPE">cape</alias>
|
||||||
<alias base="CRAIN">crain</alias>
|
<alias base="CFRZR">cfrzr</alias>
|
||||||
<alias base="CFRZR">cfrzr</alias>
|
<alias base="CICEP">cicep</alias>
|
||||||
<alias base="CICEP">cicep</alias>
|
<alias base="CIn">cin</alias>
|
||||||
<alias base="CSNOW">csnow</alias>
|
<alias base="CP3hr">cp3hr</alias>
|
||||||
<alias base="CAPE">cape</alias>
|
<alias base="CP">cp</alias>
|
||||||
<alias base="CIn">cin</alias>
|
<alias base="CPOFP">cpofp</alias>
|
||||||
<alias base="CP">cp</alias>
|
<alias base="CPOZP">cpozp</alias>
|
||||||
<alias base="CP3hr">cp3hr</alias>
|
<alias base="CRAIN">crain</alias>
|
||||||
<alias base="DpD">dpd</alias>
|
<alias base="CSNOW">csnow</alias>
|
||||||
<alias base="DpT">dpt</alias>
|
<alias base="DIRPW">dirpw</alias>
|
||||||
<alias base="WVDIR">wvdir</alias>
|
<alias base="DIRSW">dirsw</alias>
|
||||||
<alias base="SWDIR">swdir</alias>
|
<alias base="DpD">dpd</alias>
|
||||||
<alias base="EPT">ept</alias>
|
<alias base="DpT">dpt</alias>
|
||||||
<alias base="GeH">geh</alias>
|
<alias base="EMSP">emsp</alias>
|
||||||
<alias base="GH">gh</alias>
|
<alias base="EPT">ept</alias>
|
||||||
<alias base="HIdx">hidx</alias>
|
<alias base="GeH">geh</alias>
|
||||||
<alias base="LgSP">lgsp</alias>
|
<alias base="GH">gh</alias>
|
||||||
<alias base="LgSP3hr">lgsp3hr</alias>
|
<alias base="GVV">gvv</alias>
|
||||||
<alias base="LHF">lhf</alias>
|
<alias base="Heli">heli</alias>
|
||||||
<alias base="MnT">mnt</alias>
|
<alias base="HIdx">hidx</alias>
|
||||||
<alias base="WVPER">wvper</alias>
|
<alias base="HTSGW">htsgw</alias>
|
||||||
<alias base="SWPER">swper</alias>
|
<alias base="KI">ki</alias>
|
||||||
<alias base="MxT">mxt</alias>
|
<alias base="LgSP3hr">lgsp3hr</alias>
|
||||||
<alias base="PLI">pli</alias>
|
<alias base="LgSP">lgsp</alias>
|
||||||
<alias base="PoT">pot</alias>
|
<alias base="LHF">lhf</alias>
|
||||||
<alias base="P">p</alias>
|
<alias base="MMSP">mmsp</alias>
|
||||||
<alias base="PMSL">pmsl</alias>
|
<alias base="MnT">mnt</alias>
|
||||||
<alias base="EMSP">emsp</alias>
|
<alias base="MSG">msg</alias>
|
||||||
<alias base="MMSP">mmsp</alias>
|
<alias base="MxT">mxt</alias>
|
||||||
<alias base="DIRPW">dirpw</alias>
|
<alias base="PERPW">perpw</alias>
|
||||||
<alias base="PERPW">perpw</alias>
|
<alias base="PERSW">persw</alias>
|
||||||
<alias base="HTSGW">htsgw</alias>
|
<alias base="PLI">pli</alias>
|
||||||
<alias base="PR">pr</alias>
|
<alias base="PMSL">pmsl</alias>
|
||||||
<alias base="CPOFP">cpofp</alias>
|
<alias base="PoT">pot</alias>
|
||||||
<alias base="CPOZP">cpozp</alias>
|
<alias base="P">p</alias>
|
||||||
<alias base="PW">pw</alias>
|
<alias base="PR">pr</alias>
|
||||||
<alias base="RH">rh</alias>
|
<alias base="PVV">pvv</alias>
|
||||||
<alias base="SHF">shf</alias>
|
<alias base="PW">pw</alias>
|
||||||
<alias base="DIRSW">dirsw</alias>
|
<alias base="RH">rh</alias>
|
||||||
<alias base="PERSW">persw</alias>
|
<alias base="SCP">scp</alias>
|
||||||
<alias base="WVHGT">wvhgt</alias>
|
<alias base="SHF">shf</alias>
|
||||||
<alias base="SWELL">swell</alias>
|
<alias base="SH">sh</alias>
|
||||||
<alias base="SCP">scp</alias>
|
<alias base="SLI">sli</alias>
|
||||||
<alias base="SnD">snd</alias>
|
<alias base="SnD">snd</alias>
|
||||||
<alias base="SH">sh</alias>
|
<alias base="SVV">svv</alias>
|
||||||
<alias base="Heli">heli</alias>
|
<alias base="SWDIR">swdir</alias>
|
||||||
<alias base="SLI">sli</alias>
|
<alias base="SWELL">swell</alias>
|
||||||
<alias base="BLI">bli</alias>
|
<alias base="SWPER">swper</alias>
|
||||||
<alias base="T">t</alias>
|
<alias base="TCC">tcc</alias>
|
||||||
<alias base="TCC">tcc</alias>
|
<alias base="ThP">thp</alias>
|
||||||
<alias base="ThP">thp</alias>
|
<alias base="TKE">tke</alias>
|
||||||
<alias base="TP">tp</alias>
|
<alias base="TP12hr">tp12hr</alias>
|
||||||
<alias base="TP3hr">tp3hr</alias>
|
<alias base="TP24hr">tp24hr</alias>
|
||||||
<alias base="TP6hr">tp6hr</alias>
|
<alias base="TP3hr">tp3hr</alias>
|
||||||
<alias base="TP12hr">tp12hr</alias>
|
<alias base="TP48hr">tp48hr</alias>
|
||||||
<alias base="TP24hr">tp24hr</alias>
|
<alias base="TP6hr">tp6hr</alias>
|
||||||
<alias base="TP48hr">tp48hr</alias>
|
<alias base="TP">tp</alias>
|
||||||
<alias base="USTM">ustm</alias>
|
<alias base="T">t</alias>
|
||||||
<alias base="VSTM">vstm</alias>
|
<alias base="USTM">ustm</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="Vis">vis</alias>
|
||||||
<alias base="PVV">pvv</alias>
|
<alias base="VPT">vpt</alias>
|
||||||
<alias base="Vis">vis</alias>
|
<alias base="VSTM">vstm</alias>
|
||||||
<alias base="VPT">vpt</alias>
|
<alias base="vW">vw</alias>
|
||||||
<alias base="WEASD">weasd</alias>
|
<alias base="WD">wd</alias>
|
||||||
<alias base="WD">wd</alias>
|
<alias base="WEASD">weasd</alias>
|
||||||
<alias base="WS">ws</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="CCP">ccpc</alias>
|
<alias base="Alti">alti</alias>
|
||||||
<alias base="Pchg">pt3</alias>
|
<alias base="BH">bh</alias>
|
||||||
<alias base="VV">ww</alias>
|
<alias base="BLI">bli</alias>
|
||||||
<alias base="TP-HPC">tp_HPC</alias>
|
<alias base="BPVV">bpvv</alias>
|
||||||
<alias base="TP-ACR">tp_ACR</alias>
|
<alias base="BWu">bwu</alias>
|
||||||
<alias base="TP-ALR">tp_ALR</alias>
|
<alias base="BWv">bwv</alias>
|
||||||
<alias base="TP-FWR">tp_FWR</alias>
|
<alias base="CAPEc1">capec1</alias>
|
||||||
<alias base="TP-KRF">tp_KRF</alias>
|
<alias base="CAPEc2">capec2</alias>
|
||||||
<alias base="TP-MSR">tp_MSR</alias>
|
<alias base="CAPEc3">capec3</alias>
|
||||||
<alias base="TP-ORN">tp_ORN</alias>
|
<alias base="CAPEc4">capec4</alias>
|
||||||
<alias base="TP-PTR">tp_PTR</alias>
|
<alias base="CAPEc5">capec5</alias>
|
||||||
<alias base="TP-RHA">tp_RHA</alias>
|
<alias base="CB">cb</alias>
|
||||||
<alias base="TP-RSA">tp_RSA</alias>
|
<alias base="CC">cc</alias>
|
||||||
<alias base="TP-STR">tp_STR</alias>
|
<alias base="CCOV">ccov</alias>
|
||||||
<alias base="TP-TAR">tp_TAR</alias>
|
<alias base="CCP">ccpc</alias>
|
||||||
<alias base="TP-TIR">tp_TIR</alias>
|
<alias base="CFRZRc1">cfrzrc1</alias>
|
||||||
<alias base="TP-TUA">tp_TUA</alias>
|
<alias base="CFRZRmean">cfrzrmean</alias>
|
||||||
<alias base="TP3mean">tpmean3</alias>
|
<alias base="CFRZRsprd">cfrzrsprd</alias>
|
||||||
<alias base="TP6mean">tpmean6</alias>
|
<alias base="CIce">cice</alias>
|
||||||
<alias base="TP12mean">tpmean12</alias>
|
<alias base="CICEPc1">cicepc1</alias>
|
||||||
<alias base="TP24mean">tpmean24</alias>
|
<alias base="CICEPmean">cicepmean</alias>
|
||||||
<alias base="SNOL12mean">snolmean12</alias>
|
<alias base="CICEPsprd">cicepsprd</alias>
|
||||||
<alias base="TP3sprd">tpsprd3</alias>
|
<alias base="Cigc1">cigc1</alias>
|
||||||
<alias base="TP6sprd">tpsprd6</alias>
|
<alias base="Cigc2">cigc2</alias>
|
||||||
<alias base="TP12sprd">tpsprd12</alias>
|
<alias base="Cigc3">cigc3</alias>
|
||||||
<alias base="TP24sprd">tpsprd24</alias>
|
<alias base="CP2hr">cp2hr</alias>
|
||||||
<alias base="SNOL12sprd">snolsprd12</alias>
|
<alias base="CPVV">cpvv</alias>
|
||||||
<alias base="QPE01">qpe1</alias>
|
<alias base="CRAINc1">crainc1</alias>
|
||||||
<alias base="QPE06">qpe6</alias>
|
<alias base="CRAINmean">crainmean</alias>
|
||||||
<alias base="TPCSG">Surge10Pct</alias>
|
<alias base="CRAINsprd">crainsprd</alias>
|
||||||
<alias base="TPCSG-305E2">PSurge10Ft</alias>
|
<alias base="CSNOWc1">csnowc1</alias>
|
||||||
<alias base="TPCSG-274E2">PSurge9Ft</alias>
|
<alias base="CSNOWmean">csnowmean</alias>
|
||||||
<alias base="TPCSG-244E2">PSurge8Ft</alias>
|
<alias base="CSNOWsprd">csnowsprd</alias>
|
||||||
<alias base="TPCSG-213E2">PSurge7Ft</alias>
|
<alias base="CSSI">cssi</alias>
|
||||||
<alias base="TPCSG-183E2">PSurge6Ft</alias>
|
<alias base="CTop">ctop</alias>
|
||||||
<alias base="TPCSG-152E2">PSurge5Ft</alias>
|
<alias base="CTSTM">ctstm</alias>
|
||||||
<alias base="TPCSG-122E2">PSurge4Ft</alias>
|
<alias base="CTyp">ctyp</alias>
|
||||||
<alias base="TPCSG-91E2">PSurge3Ft</alias>
|
<alias base="CW">cw</alias>
|
||||||
<alias base="TPCSG-61E2">PSurge2Ft</alias>
|
<alias base="CXR">cxr</alias>
|
||||||
<alias base="SIPD">sld</alias>
|
<alias base="DpTerranl">dpterranl</alias>
|
||||||
<alias base="MAXRH3hr">maxRH3hr</alias>
|
<alias base="DpTmean">dptmean</alias>
|
||||||
<alias base="MAXRH12hr">maxRH12hr</alias>
|
<alias base="DpTsprd">dptsprd</alias>
|
||||||
<alias base="MINRH3hr">minRH3hr</alias>
|
<alias base="ELON">elon</alias>
|
||||||
<alias base="MINRH12hr">minRH12hr</alias>
|
<alias base="FD">fd</alias>
|
||||||
<alias base="TPCSG-SLOSH">SloshSurge</alias>
|
<alias base="FZNP">fznp</alias>
|
||||||
<alias base="TPCSG-20">Surge20Pct</alias>
|
<alias base="GHmean">ghmean</alias>
|
||||||
<alias base="TPCSG-30">Surge30Pct</alias>
|
<alias base="GHsprd">ghsprd</alias>
|
||||||
<alias base="TPCSG-40">Surge40Pct</alias>
|
<alias base="HyC">hyc</alias>
|
||||||
<alias base="TPCSG-50">Surge50Pct</alias>
|
<alias base="ICEC">icec</alias>
|
||||||
<alias base="TPCSG-60">Surge60Pct</alias>
|
<alias base="ICEG">iceg</alias>
|
||||||
<alias base="TPCSG-70">Surge70Pct</alias>
|
<alias base="ICNG">icng</alias>
|
||||||
<alias base="TPCSG-80">Surge80Pct</alias>
|
<alias base="ICPRB">icprb</alias>
|
||||||
<alias base="TPCSG-90">Surge90Pct</alias>
|
<alias base="ICSEV">icsev</alias>
|
||||||
<alias base="TPCSG-335E2">PSurge11Ft</alias>
|
<alias base="IIdx">iidx</alias>
|
||||||
<alias base="TPCSG-366E2">PSurge12Ft</alias>
|
<alias base="ILW">ilw</alias>
|
||||||
<alias base="TPCSG-396E2">PSurge13Ft</alias>
|
<alias base="IP">ip</alias>
|
||||||
<alias base="TPCSG-427E2">PSurge14Ft</alias>
|
<alias base="LgSP2hr">lgsp2hr</alias>
|
||||||
<alias base="TPCSG-457E2">PSurge15Ft</alias>
|
<alias base="LLIP">llip</alias>
|
||||||
<alias base="TPCSG-488E2">PSurge16Ft</alias>
|
<alias base="LLR">llr</alias>
|
||||||
<alias base="TPCSG-518E2">PSurge17Ft</alias>
|
<alias base="LZFPC">lzfpc</alias>
|
||||||
<alias base="TPCSG-549E2">PSurge18Ft</alias>
|
<alias base="LZFSC">lzfsc</alias>
|
||||||
<alias base="TPCSG-579E2">PSurge19Ft</alias>
|
<alias base="LZTWC">lztwc</alias>
|
||||||
<alias base="TPCSG-610E2">PSurge20Ft</alias>
|
<alias base="MAdv">madv</alias>
|
||||||
<alias base="TPCSG-640E2">PSurge21Ft</alias>
|
<alias base="MAXRH12hr">maxRH12hr</alias>
|
||||||
<alias base="TPCSG-671E2">PSurge22Ft</alias>
|
<alias base="MAXRH3hr">maxRH3hr</alias>
|
||||||
<alias base="TPCSG-701E2">PSurge23Ft</alias>
|
<alias base="MCDD">mcdd</alias>
|
||||||
<alias base="TPCSG-732E2">PSurge24Ft</alias>
|
<alias base="MCon">mcon</alias>
|
||||||
<alias base="TPCSG-762E2">PSurge25Ft</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="PC">pc</alias>
|
||||||
|
<alias base="Perranl">perranl</alias>
|
||||||
|
<alias base="PICE">pice</alias>
|
||||||
|
<alias base="PLIxc1">plixc1</alias>
|
||||||
|
<alias base="PLIxc2">plixc2</alias>
|
||||||
|
<alias base="PLIxc3">plixc3</alias>
|
||||||
|
<alias base="PLIxc4">plixc4</alias>
|
||||||
|
<alias base="PLIxc5">plixc5</alias>
|
||||||
|
<alias base="PMSLmean">pmslmean</alias>
|
||||||
|
<alias base="PMSLsprd">pmslsprd</alias>
|
||||||
|
<alias base="POP12hr">pop12hr</alias>
|
||||||
|
<alias base="POP3hr">pop3hr</alias>
|
||||||
|
<alias base="POP6hr">pop6hr</alias>
|
||||||
|
<alias base="POP">pop</alias>
|
||||||
|
<alias base="PPAM">ppam</alias>
|
||||||
|
<alias base="PPAN">ppan</alias>
|
||||||
|
<alias base="PPAS">ppas</alias>
|
||||||
|
<alias base="PPBM">ppbm</alias>
|
||||||
|
<alias base="PPBN">ppbn</alias>
|
||||||
|
<alias base="PPBS">ppbs</alias>
|
||||||
|
<alias base="PPFFG">ppffg</alias>
|
||||||
|
<alias base="PPNN">ppnn</alias>
|
||||||
|
<alias base="prcp12hr">prcp12hr</alias>
|
||||||
|
<alias base="prcp3hr">prcp3hr</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="QPE06">qpe6</alias>
|
||||||
|
<alias base="QPE24">qpe24</alias>
|
||||||
|
<alias base="RAIN">rain</alias>
|
||||||
|
<alias base="REFC">refc</alias>
|
||||||
|
<alias base="REFD">refd</alias>
|
||||||
|
<alias base="RHmean">rhmean</alias>
|
||||||
|
<alias base="RHsprd">rhsprd</alias>
|
||||||
|
<alias base="ROUTED_FLOW_C">routed_flow_c</alias>
|
||||||
|
<alias base="ROUTED_FLOW_H">routed_flow_h</alias>
|
||||||
|
<alias base="ROUTED_FLOW_M">routed_flow_m</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="SI">si</alias>
|
||||||
|
<alias base="SMC">smc</alias>
|
||||||
|
<alias base="SNOL12c10">snol12c10</alias>
|
||||||
|
<alias base="SNOL12c1">snol12c1</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_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_335E2">PSurge11Ft</alias>
|
||||||
|
<alias base="TPCSG-335E2">PSurge11Ft</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_40">Surge40Pct</alias>
|
||||||
|
<alias base="TPCSG-40">Surge40Pct</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_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_549E2">PSurge18Ft</alias>
|
||||||
|
<alias base="TPCSG-549E2">PSurge18Ft</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_61E2">PSurge2Ft</alias>
|
||||||
|
<alias base="TPCSG-61E2">PSurge2Ft</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_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_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>
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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
Loading…
Add table
Reference in a new issue