diff --git a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/database/D2DGridDatabase.java b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/database/D2DGridDatabase.java index c830a34bad..6b9d00a565 100644 --- a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/database/D2DGridDatabase.java +++ b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/database/D2DGridDatabase.java @@ -173,14 +173,15 @@ public class D2DGridDatabase extends VGridDatabase { - subdomain.height; if (subdomain.isEmpty()) { - valid = false; - throw new GfeException("Unable to create " + this.dbId - + ". GFE domain does not overlap dataset domain."); + statusHandler.warn(this.dbId + + ": GFE domain does not overlap dataset domain."); + this.remap = null; + } else { + this.remap = new RemapGrid(NetCDFUtils.subGridGL( + dbId.toString(), this.inputLoc, subdomain), + this.outputLoc); } - this.remap = new RemapGrid(NetCDFUtils.subGridGL(dbId.toString(), - this.inputLoc, subdomain), this.outputLoc); - } } @@ -475,7 +476,14 @@ public class D2DGridDatabase extends VGridDatabase { switch (gpi.getGridType()) { case SCALAR: - Grid2DFloat data = getGrid(parmId, time, gpi, convertUnit); + Grid2DFloat data = null; + if (this.remap == null) { + // GFE domain does not overlap D2D grid, return default grid + data = new Grid2DFloat(gpi.getGridLoc().getNx(), gpi + .getGridLoc().getNy(), gpi.getMinValue()); + } else { + data = getGrid(parmId, time, gpi, convertUnit); + } gs = new ScalarGridSlice(time, gpi, gdh, data); break; case VECTOR: @@ -483,7 +491,14 @@ public class D2DGridDatabase extends VGridDatabase { .getGridLoc().getNy()); Grid2DFloat dir = new Grid2DFloat(gpi.getGridLoc().getNx(), gpi .getGridLoc().getNy()); - getWindGrid(parmId, time, gpi, mag, dir); + + if (this.remap == null) { + // GFE domain does not overlap D2D grid, return default grid + mag.setAllValues(gpi.getMinValue()); + dir.setAllValues(0.0f); + } else { + getWindGrid(parmId, time, gpi, mag, dir); + } gs = new VectorGridSlice(time, gpi, gdh, mag, dir); break; default: @@ -511,6 +526,7 @@ public class D2DGridDatabase extends VGridDatabase { */ private Grid2DFloat getGrid(ParmID parmId, TimeRange time, GridParmInfo gpi, boolean convertUnit) throws GfeException { + Grid2DFloat bdata = null; GribRecord d2dRecord = null; @@ -628,6 +644,7 @@ public class D2DGridDatabase extends VGridDatabase { */ private void getWindGrid(ParmID parmId, TimeRange time, GridParmInfo gpi, Grid2DFloat mag, Grid2DFloat dir) throws GfeException { + GFEDao dao = null; try { dao = (GFEDao) PluginFactory.getInstance().getPluginDao("gfe"); diff --git a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/database/NetCDFGridDatabase.java b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/database/NetCDFGridDatabase.java index c455567523..21f05b500f 100644 --- a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/database/NetCDFGridDatabase.java +++ b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/database/NetCDFGridDatabase.java @@ -201,14 +201,14 @@ public class NetCDFGridDatabase extends VGridDatabase { this.outputGloc); if (this.subdomain.isEmpty()) { - valid = false; - throw new GfeException("Unable to create " + this.dbId - + ". GFE domain does not overlap dataset domain."); + statusHandler.warn(this.dbId + + ": GFE domain does not overlap dataset domain."); + this.remap = null; + } else { + this.remap = new RemapGrid(NetCDFUtils.subGridGL( + this.dbId.toString(), this.inputGloc, this.subdomain), + this.outputGloc); } - - this.remap = new RemapGrid(NetCDFUtils.subGridGL( - this.dbId.toString(), this.inputGloc, this.subdomain), - this.outputGloc); loadParms(); } } @@ -584,35 +584,51 @@ public class NetCDFGridDatabase extends VGridDatabase { GridDataHistory gdh = new GridDataHistory(OriginType.INITIALIZED, p.getPid(), p.getInv().get(index)); - switch (p.getGpi().getGridType()) { + GridParmInfo gpi = p.getGpi(); + GridLocation gloc = gpi.getGridLoc(); + + switch (gpi.getGridType()) { case SCALAR: { - Grid2DFloat data = new Grid2DFloat(getGrid(p.getVarName(), - p.getIndices()[index], p.getLevel(), p.getGpi() - .getMinValue(), p.getGpi().getMaxValue())); + Grid2DFloat data = null; + if (this.remap == null) { + // GFE domain does not overlap D2D grid, return default grid + data = new Grid2DFloat(gloc.getNx(), gloc.getNy(), + gpi.getMinValue()); + + } else { + data = new Grid2DFloat(getGrid(p.getVarName(), + p.getIndices()[index], p.getLevel(), gpi.getMinValue(), + gpi.getMaxValue())); + } if (!data.isValid()) { return null; } - gs = new ScalarGridSlice(p.getInv().get(index), p.getGpi(), + gs = new ScalarGridSlice(p.getInv().get(index), gpi, Arrays.asList(gdh), data); break; } case VECTOR: { - Grid2DFloat mag = new Grid2DFloat(p.getGpi().getGridLoc().getNx(), - p.getGpi().getGridLoc().getNy()); - Grid2DFloat dir = new Grid2DFloat(p.getGpi().getGridLoc().getNx(), - p.getGpi().getGridLoc().getNy()); - getWindGrid(p.getIndices()[index], p.getLevel(), p.getGpi() - .getMinValue(), p.getGpi().getMaxValue(), mag, dir); + Grid2DFloat mag = new Grid2DFloat(gloc.getNx(), gloc.getNy()); + Grid2DFloat dir = new Grid2DFloat(gloc.getNx(), gloc.getNy()); + + if (this.remap == null) { + // GFE domain does not overlap D2D grid, return default grid + mag.setAllValues(gpi.getMinValue()); + dir.setAllValues(0.0f); + } else { + getWindGrid(p.getIndices()[index], p.getLevel(), + gpi.getMinValue(), gpi.getMaxValue(), mag, dir); + } if (!mag.isValid() || !dir.isValid()) { return null; } - gs = new VectorGridSlice(p.getInv().get(index), p.getGpi(), + gs = new VectorGridSlice(p.getInv().get(index), gpi, Arrays.asList(gdh), mag, dir); break; } default: statusHandler.handle(Priority.PROBLEM, - "unsupported parm type for: " + p.getGpi()); + "unsupported parm type for: " + gpi); } return gs;