diff --git a/cave/build/static/common/cave/etc/pyViz/GFEPainter.py b/cave/build/static/common/cave/etc/pyViz/GFEPainter.py index f00727ee16..8389f62ea1 100644 --- a/cave/build/static/common/cave/etc/pyViz/GFEPainter.py +++ b/cave/build/static/common/cave/etc/pyViz/GFEPainter.py @@ -1,19 +1,19 @@ ## # 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. ## @@ -38,25 +38,25 @@ from java.util import HashSet # # GFE Painter for painting GFE data from scripts -# -# +# +# # SOFTWARE HISTORY -# +# # Date Ticket# Engineer Description # ------------ ---------- ----------- -------------------------- # 04/01/09 njensen Initial Creation. # 08/20/2012 #1077 randerso Fixed backgroundColor setting # 09/13/2012 #1147 dgilling Allow map labels to be disabled. -# -# +# 11/6/2012 15406 ryu Correction for computing domain from mask +# # import VizPainter class GFEPainter(VizPainter.VizPainter): - - def __init__(self, imageWidth=None, imageHeight=None, expandLeft=25.0, expandRight=25.0, expandTop=25.0, expandBottom=25.0, mask=None, wholeDomain=0, bgColor=None): - self.dataMgr = DataManager.getInstance(None) + + def __init__(self, imageWidth=None, imageHeight=None, expandLeft=25.0, expandRight=25.0, expandTop=25.0, expandBottom=25.0, mask=None, wholeDomain=0, bgColor=None): + self.dataMgr = DataManager.getInstance(None) self.refId = None envelope = None gloc = self.dataMgr.getParmManager().compositeGridLocation() @@ -64,7 +64,7 @@ class GFEPainter(VizPainter.VizPainter): from com.raytheon.uf.common.dataplugin.gfe.reference import ReferenceData_CoordinateType as CoordinateType self.refId = ReferenceID(mask) if wholeDomain == 0: - envelope = self.dataMgr.getRefManager().loadRefSet(self.refId).overallDomain(CoordinateType.LATLON) + envelope = self.dataMgr.getRefManager().loadRefSet(self.refId).overallDomain(CoordinateType.GRID) if imageWidth is not None: imageWidth = Integer(int(imageWidth)) if imageHeight is not None: @@ -75,16 +75,16 @@ class GFEPainter(VizPainter.VizPainter): desc = display.getDescriptor() self.dataMgr.getSpatialDisplayManager().setDescriptor(desc) VizPainter.VizPainter.__init__(self, display, backgroundColor=bgColor) - + gfeSystem = GFESystemResource(self.dataMgr) self.addVizResource(gfeSystem) - desc.getResourceList().getProperties(gfeSystem).setSystemResource(True) + desc.getResourceList().getProperties(gfeSystem).setSystemResource(True) self.primaryRsc = None - + def __del__(self): VizPainter.VizPainter.__del__(self) - + def setupLegend(self, localTime=False, snapshotTime=False, snapshot='', descriptiveName='SHORT', duration='', start='', end='', override={}, lang=''): legend = ImageLegendResource(self.dataMgr) legend.setLocalTime(localTime) @@ -100,22 +100,22 @@ class GFEPainter(VizPainter.VizPainter): legend.setColorOverride(parm, override[parm]) self.addVizResource(legend) self.getDescriptor().getResourceList().getProperties(legend).setSystemResource(True) - + def enableColorbar(self): from com.raytheon.viz.gfe.rsc.colorbar import GFEColorbarResource colorBar = GFEColorbarResource(self.dataMgr) self.addVizResource(colorBar) self.getDescriptor().getResourceList().getProperties(colorBar).setSystemResource(True) - + def __makeGFEResource(self, parm): - parm.getParmState().setPickUpValue(None) + parm.getParmState().setPickUpValue(None) gfeRsc = GFEResource(parm, self.dataMgr) self.addVizResource(gfeRsc) if not parm.getDisplayAttributes().getBaseColor(): from com.raytheon.viz.core import ColorUtil parm.getDisplayAttributes().setBaseColor(ColorUtil.getNewColor(self.getDescriptor())) - return gfeRsc - + return gfeRsc + def addGfeResource(self, parm, colormap=None, colorMin=None, colorMax=None, smooth=False, color=None, lineWidth=None): gfeRsc = self.__makeGFEResource(parm) # jvisType = VisualizationType.valueOf('IMAGE') @@ -127,8 +127,8 @@ class GFEPainter(VizPainter.VizPainter): parm.getDisplayAttributes().setDisplayMask(self.refId) self.primaryRsc = gfeRsc params = gfeRsc.getCapability(ColorMapCapability).getColorMapParameters() - if colormap is not None: - from com.raytheon.uf.viz.core.drawables import ColorMapLoader + if colormap is not None: + from com.raytheon.uf.viz.core.drawables import ColorMapLoader params.setColorMap(ColorMapLoader.loadColorMap(colormap)) if colorMax is not None and colorMin is not None: params.setDataMin(colorMin) @@ -145,9 +145,9 @@ class GFEPainter(VizPainter.VizPainter): gfeRsc.getCapability(ColorableCapability).setColor(color) if lineWidth is not None: gfeRsc.getCapability(OutlineCapability).setOutlineWidth(lineWidth) - + def addMapBackground(self, mapName, color=None, lineWidth=None, - linePattern=None, xOffset=None, yOffset=None, + linePattern=None, xOffset=None, yOffset=None, labelAttribute=None, fontOffset=None): from com.raytheon.uf.viz.core.maps import MapManager rsc = MapManager.getInstance(self.getDescriptor()).loadMapByBundleName(mapName).getResource() @@ -165,10 +165,10 @@ class GFEPainter(VizPainter.VizPainter): if fontOffset is not None: mag = Double(1.26 ** fontOffset) rsc.getCapability(MagnificationCapability).setMagnification(mag) - + def getDataManager(self): return self.dataMgr - + def outputFiles(self, filename, attachLogo=False, logoText=None): rendered = self.getTarget().screenshot() if attachLogo: @@ -176,7 +176,7 @@ class GFEPainter(VizPainter.VizPainter): from com.raytheon.uf.common.localization import PathManagerFactory noaa = 'pyViz/logos/noaalogo2.png' nws = 'pyViz/logos/nwslogo.png' - pathMgr = PathManagerFactory.getPathManager() + pathMgr = PathManagerFactory.getPathManager() noaa = pathMgr.getStaticFile(noaa) nws = pathMgr.getStaticFile(nws) noaaImage = ImageIO.read(noaa) @@ -195,12 +195,12 @@ class GFEPainter(VizPainter.VizPainter): fm = graphics.getFontMetrics() textBounds = fm.getStringBounds(logoText, graphics) graphics.drawString(logoText, int((rendered.getWidth() - textBounds.getWidth()) / 2), \ - int(rendered.getHeight() + (noaaImage.getHeight() / 2) + textBounds.getHeight() / 2)) + int(rendered.getHeight() + (noaaImage.getHeight() / 2) + textBounds.getHeight() / 2)) graphics.drawImage(nwsImage, finalBuf.getWidth() - nwsImage.getWidth(), rendered.getHeight(), None) finalBuf.flush() self.outputImage(finalBuf, filename) else: self.outputImage(rendered, filename) - + def _changeTime(self, time): - pass \ No newline at end of file + pass diff --git a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/edittool/sample/SamplePainter.java b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/edittool/sample/SamplePainter.java index 802fcf52bb..6f87d88013 100644 --- a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/edittool/sample/SamplePainter.java +++ b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/edittool/sample/SamplePainter.java @@ -69,8 +69,8 @@ import com.vividsolutions.jts.geom.Coordinate; * 04/08/2008 chammack Initial Port from AWIPS I (minus ISC support) * 07/23/2012 #936 dgilling Reinstate config-handling code to * calcGridLabels(). - * 11/05/2012 #14566 jzeng Reverse the order of grids - * in calcGridLabels () + * 11/05/2012 #14566 jzeng Paint the sample points with the order of grids + * in calcGridLabels () * * * @author chammack @@ -254,12 +254,16 @@ public class SamplePainter { * @param colors * The color list */ - private void calcGridLabels(Coordinate worldLoc, final List grids, + private void calcGridLabels(Coordinate worldLoc, final List Grids, final GridID imageGrid, List sampleLabels, List colors) { - if (grids.isEmpty()) { + if (Grids.isEmpty()) { return; } + + List grids = Grids; + + Collections.reverse(grids); // if list is not defined, then all samples will be painted for // all parms @@ -284,8 +288,6 @@ public class SamplePainter { inGrid = true; } - Collections.reverse(grids); - // get the list of samples that should be painted and in the // order for (GridID grid : grids) { @@ -340,6 +342,7 @@ public class SamplePainter { sampleLabels.add(label); colors.add(labelColor); } + Collections.reverse(grids); } /** diff --git a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/ifpimage/GfeImageUtil.java b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/ifpimage/GfeImageUtil.java index ff26a863b4..a28844ce15 100644 --- a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/ifpimage/GfeImageUtil.java +++ b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/ifpimage/GfeImageUtil.java @@ -1,48 +1,48 @@ /** * 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.viz.gfe.ifpimage; + import org.geotools.coverage.grid.GeneralGridEnvelope; import org.geotools.coverage.grid.GridGeometry2D; import org.geotools.geometry.GeneralEnvelope; import org.opengis.geometry.Envelope; -import org.opengis.referencing.FactoryException; -import org.opengis.referencing.operation.TransformException; import com.raytheon.uf.common.dataplugin.gfe.db.objects.GridLocation; import com.raytheon.uf.common.geospatial.MapUtil; -import com.vividsolutions.jts.geom.Point; +import com.vividsolutions.jts.geom.Coordinate; /** * Static methods to support IFP Image or generating GFE images off screen. - * + * *
- * 
+ *
  * SOFTWARE HISTORY
  * Date         Ticket#    Engineer    Description
  * ------------ ---------- ----------- --------------------------
  * Mar 12, 2009            njensen     Initial creation
  * 21May2009          6309 garmendariz Modified path for Geotools 2.6.4
- * 
+ * 11/6/2012    15406      ryu         Modified computing domain from mask
+ *
  * 
- * + * * @author njensen * @version 1.0 */ @@ -57,25 +57,15 @@ public class GfeImageUtil { Envelope envelope = null; GridGeometry2D newGridGeometry = null; - try { - if (env != null) { - Point[] points = new Point[2]; - points[0] = MapUtil.getPoint(env.getMinY(), env.getMinX()); - points[1] = MapUtil.getPoint(env.getMaxY(), env.getMaxX()); - envelope = MapUtil.extractProjectedEnvelope(gloc.getCrs(), - points, MapUtil.getTransformFromLatLon(gloc.getCrs())); - } - } catch (TransformException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (FactoryException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } finally { - if (envelope == null) { - GridGeometry2D gridGeometry = MapUtil.getGridGeometry(gloc); - envelope = gridGeometry.getEnvelope(); - } + if (env != null) { + Coordinate ll = new Coordinate(env.getMinX(), env.getMinY()); + Coordinate ur = new Coordinate(env.getMaxX(), env.getMaxY()); + envelope = MapUtil.convertToNativeEnvelope(ll, ur, gloc); + } + + if (envelope == null) { + GridGeometry2D gridGeometry = MapUtil.getGridGeometry(gloc); + envelope = gridGeometry.getEnvelope(); } double dLeft = envelope.getSpan(0) * percentLeft; diff --git a/cave/com.raytheon.viz.hydro/src/com/raytheon/viz/hydro/timeseries/TimeSeriesDisplayCanvas.java b/cave/com.raytheon.viz.hydro/src/com/raytheon/viz/hydro/timeseries/TimeSeriesDisplayCanvas.java index adcdb70247..b63d3dc5df 100644 --- a/cave/com.raytheon.viz.hydro/src/com/raytheon/viz/hydro/timeseries/TimeSeriesDisplayCanvas.java +++ b/cave/com.raytheon.viz.hydro/src/com/raytheon/viz/hydro/timeseries/TimeSeriesDisplayCanvas.java @@ -128,6 +128,9 @@ import com.raytheon.viz.hydrocommon.util.DbUtils; * 06 Nov 2012 15399 wkwock Fix refine the plot algorithm and sampling algorithm * 06 Nov 2012 15459 lbousaidi update data when page/up or page/down is pressed without having * to click in graph button again. + * 06 Nov 2012 15400 lbousaidi Changed logic in buildPointString routine, added discharge2stage + * to display stage value, also added checking for rating curve for both + * stage and discharge. * @author lvenable * @version 1.0 * @@ -1599,31 +1602,57 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements double yValue = pixel2y(graphData, y); String units = FEET; boolean isRiverData = true; + boolean isStage= true; ArrayList traces = graphData.getTraces(); for (TraceData trace : traces) { if (!trace.getPe().toUpperCase().startsWith("H") && !trace.getPe().toUpperCase().startsWith("Q")) { isRiverData = false; } - } - - if (isRiverData) { - sb.append(" value=" + twoDecimalFormat.format(yValue) + " " - + units + " "); - - double q = StageDischargeUtils.stage2discharge(lid, yValue); - if (q != HydroConstants.MISSING_VALUE) { - units = CFS; - if (q > 10000) { - units = KCFS; - q = q / 1000; - } - sb.append(String.format("%8.1f", q) + " " + units); + if (trace.getPe().toUpperCase().startsWith("Q")) { + isStage=false; } - } else { - units = INCH; - sb.append(" value=" + twoDecimalFormat.format(yValue) + " " - + units + " "); + } + + if (isRiverData) { + + if (isStage) { + /** + * Convert the stage to discharge for the location and stage value passed in. + */ + double q = StageDischargeUtils.stage2discharge(lid, yValue); + //check for rating curve + if (q != HydroConstants.RATING_CONVERT_FAILED) { + if (q > 10000) { + units = KCFS; + q = q / 1000; + }else { + units = CFS; + } + sb.append(" value=" + twoDecimalFormat.format(yValue) + + " " + FEET + " "); + sb.append(String.format("%8.1f", q) + " " + units); + }else { + sb.append(" value=" + twoDecimalFormat.format(yValue)); + } + + }else { + /** + * Convert the discharge to stage for the location and discharge value passed in. + */ + double q = StageDischargeUtils.discharge2stage(lid, yValue); + //check for rating curve + if (q != HydroConstants.RATING_CONVERT_FAILED) { + sb.append(" value=" + twoDecimalFormat.format(yValue) + + " " + CFS + " "); + sb.append(String.format("%8.1f", q) + " " + FEET); + }else { + sb.append(" value=" + twoDecimalFormat.format(yValue)); + } + } + + }else { + sb.append(" value=" + twoDecimalFormat.format(yValue)); } return sb.toString(); diff --git a/cave/com.raytheon.viz.hydro/src/com/raytheon/viz/hydro/timeseries/graph/TimeSeriesGraphCanvas.java b/cave/com.raytheon.viz.hydro/src/com/raytheon/viz/hydro/timeseries/graph/TimeSeriesGraphCanvas.java index d2bc279daf..f38c587e1a 100644 --- a/cave/com.raytheon.viz.hydro/src/com/raytheon/viz/hydro/timeseries/graph/TimeSeriesGraphCanvas.java +++ b/cave/com.raytheon.viz.hydro/src/com/raytheon/viz/hydro/timeseries/graph/TimeSeriesGraphCanvas.java @@ -63,7 +63,8 @@ import com.raytheon.viz.hydrocommon.HydroConstants; * July 12 2011 9709 djingtao draw right Y axis for showPP is true. add new * function adjust_pcymax() * Aug. 10, 2011 10457 djingtao allow the red rubberband box to be drawn for setMissing in Edit - * Jul. 24, 2012 15195 mpduff Fix x axis scales. + * Jul. 24, 2012 15195 mpduff Fix x axis scales. + * 06 Nov 2012 15399 wkwock Fix refine the plot algorithm and sampling algorithm * * * @@ -500,11 +501,11 @@ public class TimeSeriesGraphCanvas extends Canvas { int x = -999; int dy = 5; int dx = 4; - long startMillis = gd.getXMin().getTime(); + long startMillis = ((long)Math.ceil(gd.getXMin().getTime()/HydroConstants.MILLIS_PER_HOUR))*HydroConstants.MILLIS_PER_HOUR; long endMillis = gd.getXMax().getTime(); for (long i = startMillis; i <= endMillis; i += HydroConstants.MILLIS_PER_HOUR) { - x = x2pixel(gd, i); + x = x2pixel(gd, i+59000); //59 seconds for better sampling Date d = SimulatedTime.getSystemTime().getTime(); d.setTime(i); dy = 5; @@ -667,8 +668,8 @@ public class TimeSeriesGraphCanvas extends Canvas { long xMin = gd.getXMin().getTime(); long xMax = gd.getXMax().getTime(); long xDiff = xMax - xMin; - long millisPerPixel = xDiff / graphAreaWidth; - long millisTime = (xpix - GRAPHBORDER_LEFT) * millisPerPixel + xMin; + double millisPerPixel = xDiff / graphAreaWidth; + long millisTime = (long)(xpix * millisPerPixel) + xMin; Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); cal.setTimeInMillis(millisTime); diff --git a/cave/com.raytheon.viz.hydrocommon/src/com/raytheon/viz/hydrocommon/textreport/E19AReport.java b/cave/com.raytheon.viz.hydrocommon/src/com/raytheon/viz/hydrocommon/textreport/E19AReport.java index 4bc32ad21f..dd253bcd36 100644 --- a/cave/com.raytheon.viz.hydrocommon/src/com/raytheon/viz/hydrocommon/textreport/E19AReport.java +++ b/cave/com.raytheon.viz.hydrocommon/src/com/raytheon/viz/hydrocommon/textreport/E19AReport.java @@ -39,6 +39,7 @@ import com.raytheon.viz.hydrocommon.whfslib.GeoUtil; * Sep 18, 2009 2260 mpduff Initial creation * Apr 25, 2012 14499 wkwock Refine format, query, etc * Sep 11, 2012 13781 wkwock add print menu + * Oct 19, 2012 15454 wkwock Fix missing River mile, Zero Datum, Check bar * * * @@ -141,14 +142,14 @@ public class E19AReport extends E19Report { buffer.append(String.format("STATION NO: %-11s\n", locData.getLocation().getSn())); String mile = null; - if (data.getRiverstat().getDa() != HydroConstants.MISSING_VALUE) { + if (data.getRiverstat().getMile() != HydroConstants.MISSING_VALUE) { mile = String.format("%8.2f", data.getRiverstat().getMile()); } else { mile = " "; } String wstg = null; - if (data.getRiverstat().getFs() != HydroConstants.MISSING_VALUE) { + if (data.getRiverstat().getWstg() != HydroConstants.MISSING_VALUE) { wstg = String.format("%8.2f", data.getRiverstat().getWstg()); } else { wstg = " "; @@ -158,14 +159,14 @@ public class E19AReport extends E19Report { buffer.append(String.format(" USGS NO: %-11s\n", data.getRiverstat().getGsno())); String zd = null; - if (data.getRiverstat().getDa() != HydroConstants.MISSING_VALUE) { + if (data.getRiverstat().getZd() != HydroConstants.MISSING_VALUE) { zd = String.format("%8.3f", data.getRiverstat().getZd()); } else { zd = " "; } String bf = null; - if (data.getRiverstat().getFs() != HydroConstants.MISSING_VALUE) { + if (data.getRiverstat().getBf() != HydroConstants.MISSING_VALUE) { bf = String.format("%8.2f", data.getRiverstat().getBf()); } else { bf = " "; @@ -175,7 +176,7 @@ public class E19AReport extends E19Report { buffer.append(String.format(" NESS ID: %-8s\n", dataDcpTelem.getDcp().getGoes())); String cb = null; - if (data.getRiverstat().getDa() != HydroConstants.MISSING_VALUE) { + if (data.getRiverstat().getCb() != HydroConstants.MISSING_VALUE) { cb = String.format("%8.3f", data.getRiverstat().getCb()); } else { cb = " "; @@ -277,7 +278,7 @@ public class E19AReport extends E19Report { buffer.append(" LATEST GAGE TYPE START DATE OWNER OF GAGE\n"); if (dataG.getGageList() != null && dataG.getGageList().size() > 0) { - Gage gage=dataG.getGageList().get(dataG.getGageList().size()-1); + Gage gage=dataG.getGageList().get(0); buffer.append(String.format(" %-11s %10s %-11s\n", gage.getType(), sdf.format(gage.getBegin()), gage.getOwner())); } diff --git a/cave/com.raytheon.viz.hydrocommon/src/com/raytheon/viz/hydrocommon/textreport/E19Report.java b/cave/com.raytheon.viz.hydrocommon/src/com/raytheon/viz/hydrocommon/textreport/E19Report.java index a19a09f4f2..6114c0a8c2 100644 --- a/cave/com.raytheon.viz.hydrocommon/src/com/raytheon/viz/hydrocommon/textreport/E19Report.java +++ b/cave/com.raytheon.viz.hydrocommon/src/com/raytheon/viz/hydrocommon/textreport/E19Report.java @@ -46,6 +46,7 @@ import com.raytheon.viz.hydrocommon.whfslib.GeoUtil; * ------------ ---------- ----------- -------------------------- * Sep 18, 2009 2260 mpduff Initial creation * Apr 25, 2012 14499 wkwock Refine format, query, etc + * Oct 14, 2012 15454 wkwock Fix can not generate e19 if damage filed is empty * * * @@ -1392,9 +1393,13 @@ public class E19Report extends TextReport { tmp1 = String.format("%7.2f", floodList.get(floodIndex).getStage()); } - thisLineStr=" " + tmp1 + " - " + lines[lineIndex]; + if (lines==null || lines[lineIndex]==null) { + thisLineStr=" " + tmp1 + " -"; + } else { + thisLineStr=" " + tmp1 + " - " + lines[lineIndex]; + } }else { - thisLineStr=" " + lines[lineIndex]; + thisLineStr=" "; } int spaces = flood_filler - thisLineStr.length(); @@ -1410,7 +1415,7 @@ public class E19Report extends TextReport { lineIndex++; - if (lineIndex == lines.length - 1) { // No more lines in this record + if (lines !=null && lineIndex == lines.length - 1) { // No more lines in this record floodIndex++; // Get the next record if ((floodList.size() > floodIndex) && (floodList.get(floodIndex) != null)) { diff --git a/cave/com.raytheon.viz.hydrocommon/src/com/raytheon/viz/hydrocommon/textreport/TextReportDataManager.java b/cave/com.raytheon.viz.hydrocommon/src/com/raytheon/viz/hydrocommon/textreport/TextReportDataManager.java index 959177258c..d3aeb4af11 100644 --- a/cave/com.raytheon.viz.hydrocommon/src/com/raytheon/viz/hydrocommon/textreport/TextReportDataManager.java +++ b/cave/com.raytheon.viz.hydrocommon/src/com/raytheon/viz/hydrocommon/textreport/TextReportDataManager.java @@ -48,6 +48,7 @@ import com.raytheon.viz.hydrocommon.textreport.TextReportData.StaffGageData; * Nov 09, 2010 5416 lbousaid changed gageQuery * Dec 08, 2011 11728 lbousaidi changed the routines that retrieve data * Apr 25, 2012 14499 wkwock Refine format, query, etc + * Nov 06, 2012 15454 wkwock Fix query for get data from gage table * * * @@ -356,7 +357,7 @@ public class TextReportDataManager extends HydroDataManager { public TextReportData getGageQueryList(String lid) { TextReportData data = new TextReportData(); String gageQuery = "select gbegin, type, owner, remark, maint, gend from gage where lid = '" - + lid + "' order by gbegin,type"; + + lid + "' and gend is null ORDER BY gbegin desc"; ArrayList rs = runQuery(gageQuery); ArrayList gageList = new ArrayList(); int i = 0; diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/SaveLevel2Data.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/SaveLevel2Data.java index 9eb70d0010..eab564312b 100644 --- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/SaveLevel2Data.java +++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/SaveLevel2Data.java @@ -75,6 +75,7 @@ import com.raytheon.viz.mpe.util.WriteQPFGrids; * ------------ ---------- ----------- -------------------------- * Mar 24, 2009 snaples Initial creation * Sep 19, 2011 10955 rferrel Use RunProcess + * Nov 06, 2012 15481 wkwock Fix save 6 hours precipitation files * * * @@ -649,6 +650,81 @@ public class SaveLevel2Data { } } + //save for each 6 hour periods + for (l = 0; l < 5; l++) { + + if (DailyQcUtils.pdata[j].used[l] == 0 || qctype_flag[0] == -1) { + continue; + } + + /* + * this needs to be fixed to ensure that the gridded temperature + * files are named correctly. + */ + if (l < 2) { + old_time = DailyQcUtils.pdata[j].data_time; + Calendar od = Calendar.getInstance(); + od.setTime(old_time); + od.add(Calendar.SECOND, -86400); + old_time = od.getTime(); + } else { + old_time = DailyQcUtils.pdata[j].data_time; + } + + gm.setTime(old_time); + + if (l < 4) { + ll = 0; + } else { + ll = 1; + } + + RenderPcp rcp = new RenderPcp(); + rcp.render_pcp(j, l, ll, max_stations, + DailyQcUtils.precip_stations, hrap_grid, + DailyQcUtils.pdata, DailyQcUtils.pcp_in_use); + + String dbuf = String.format("%s%s_%04d%02d%02d", grid_file, + timefile[2][l], gm.get(Calendar.YEAR), + gm.get(Calendar.MONTH) + 1, + gm.get(Calendar.DAY_OF_MONTH)); + + /* output grid to file in ascii xmrg format */ + WriteQPFGrids wqg = new WriteQPFGrids(); + wqg.write_qpf_grids(dbuf); + + if (DailyQcUtils.mpe_dqc_save_grib == true) { + WriteDQCNetCDFGrids wng = new WriteDQCNetCDFGrids(); + String ncfile = String.format("%s.nc", dbuf); + wng.write_dqc_netcdf_grids(ncfile, l, 1, 1, + ga.getCommonGridAttributes(), datavals); + WriteDQCGribGrids wgg = new WriteDQCGribGrids(); + String fname_grib = String.format("%s.grb", dbuf); + int status = wgg + .write_dqc_grib_grids(ncfile, fname_grib, 1); + if (status != 0) { + statusHandler + .handle(Priority.WARN, + String.format( + "problem with writing GRIB file in write_dqc_grib_grids. status=%d\n", + status)); + } + + } + + if (l < 4) { + num = j * 4 + 3 - l; + } else { + num = 40 + j; + } + + /* Create the MAP. */ + CreateMap cm = new CreateMap(); + cm.create_map(num); + + } + + //save the whole days for (l = 0; l < 5; l++) { if (DailyQcUtils.pdata[j].used[l] == 0 || qctype_flag[0] == -1) { @@ -698,25 +774,6 @@ public class SaveLevel2Data { ga.getCommonGridAttributes(), datavals); } - if (DailyQcUtils.mpe_dqc_save_grib == true) { - WriteDQCNetCDFGrids wng = new WriteDQCNetCDFGrids(); - String ncfile = String.format("%s.nc", dbuf); - wng.write_dqc_netcdf_grids(ncfile, l, 1, 1, - ga.getCommonGridAttributes(), datavals); - WriteDQCGribGrids wgg = new WriteDQCGribGrids(); - String fname_grib = String.format("%s.grb", dbuf); - int status = wgg - .write_dqc_grib_grids(ncfile, fname_grib, 1); - if (status != 0) { - statusHandler - .handle(Priority.WARN, - String.format( - "problem with writing GRIB file in write_dqc_grib_grids. status=%d\n", - status)); - } - - } - if (l < 4) { num = j * 4 + 3 - l; } else { diff --git a/cave/com.raytheon.viz.satellite/localization/bundles/DefaultCompositeSatellite.xml b/cave/com.raytheon.viz.satellite/localization/bundles/DefaultCompositeSatellite.xml index 94627ee57d..d9877662e1 100644 --- a/cave/com.raytheon.viz.satellite/localization/bundles/DefaultCompositeSatellite.xml +++ b/cave/com.raytheon.viz.satellite/localization/bundles/DefaultCompositeSatellite.xml @@ -15,7 +15,8 @@ + isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true" + inclusionFactor="${inclusionFactor;0.4}"> * @@ -82,6 +83,9 @@ public class SatBestResResourceData extends AbstractRequestableResourceData { @XmlElement(name = "resource") protected ResourceList resourceList = new ResourceList(); + @XmlAttribute + protected Double inclusionFactor; + private ResourcePair resourceToDraw; /** @@ -156,12 +160,14 @@ public class SatBestResResourceData extends AbstractRequestableResourceData { Map percentOfIntersection = new HashMap(); if (disclosedResource != null) { + final double inclusionPercentageToUse = inclusionFactor != null ? + inclusionFactor : DESIRED_PERCENTAGE; // check inclusion percentage of the disclosed resource Double inclusion = getInclusionPercentage(descriptor, disclosedResource, extent); if (inclusion != Double.NaN) { percentOfIntersection.put(disclosedResource, inclusion); - if (inclusion < DESIRED_PERCENTAGE) { + if (inclusion < inclusionPercentageToUse) { disclosedResource = null; } } else { @@ -335,7 +341,7 @@ public class SatBestResResourceData extends AbstractRequestableResourceData { for (Polygon last : prevs) { // Don't want to double include percentage areas - totalPercentage -= last.intersection(polygon).intersection(extent) + totalPercentage -= last.intersection(polygon) .getArea() / extent.getArea(); } } @@ -347,4 +353,12 @@ public class SatBestResResourceData extends AbstractRequestableResourceData { } return totalPercentage; } + + public Double getInclusionFactor() { + return inclusionFactor; + } + + public void setInclusionFactor(Double inclusionFactor) { + this.inclusionFactor = inclusionFactor; + } } diff --git a/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/dialogs/TextEditorDialog.java b/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/dialogs/TextEditorDialog.java index 6ed0692300..07e85110ff 100644 --- a/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/dialogs/TextEditorDialog.java +++ b/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/dialogs/TextEditorDialog.java @@ -302,6 +302,7 @@ import com.raytheon.viz.ui.dialogs.SWTMessageBox; * 12OCT2012 15418 D.Friedman Do not store product when sending in operational mode. * Do not use changed BBB from OUPResponse. * 17OCT2012 1229 rferrel Changes for non-blocking SWTMessageBox. + * 05Nov2012 15560 S. Naples Added check to see if we are in edit mode before capturing keys. * * * @author lvenable @@ -3530,6 +3531,10 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener, textEditor.addVerifyKeyListener(new VerifyKeyListener() { public void verifyKey(VerifyEvent event) { + // Ignore edit keys when not in edit mode. + if (textEditor.getEditable() == false){ + return; + } if (event.keyCode == SWT.DEL || event.character == SWT.BS || event.keyCode == SWT.SHIFT) { // Do nothing... diff --git a/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/qc/TextSegmentCheck.java b/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/qc/TextSegmentCheck.java index b07f02c0cf..fd13486582 100644 --- a/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/qc/TextSegmentCheck.java +++ b/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/qc/TextSegmentCheck.java @@ -52,6 +52,7 @@ import com.raytheon.viz.texteditor.util.VtecUtil; * Add vtec to checkHeadline signature * 20 JUL 2012 15006 mgamazaychikov Do not perform search for a list of * county/zones names in the MWS segment heading. + * 07 NOV 2012 15003 mgamazaychikov Do not perform QC check on standalone MWS headline. * * * @@ -500,18 +501,13 @@ public class TextSegmentCheck implements IQCCheck { return errorMsg; } /* - * DR15003 standalone MWS can have no headline. + * DR15003: no headline QC on standalone MWS. * To distinguish between standalone and follow up MWS * the VTEC check is performed as standalone MWS * do not contain VTEC */ if (nnn.equals("MWS") && vtec == null) { - if (headline.length() == 0) { - return errorMsg; - } else if (!headline.endsWith("...")) { - errorMsg += "Headline should end with '...'.\n"; - } - return errorMsg; + return ""; } if (headline.length() == 0) { diff --git a/edexOsgi/com.raytheon.uf.common.geospatial/src/com/raytheon/uf/common/geospatial/MapUtil.java b/edexOsgi/com.raytheon.uf.common.geospatial/src/com/raytheon/uf/common/geospatial/MapUtil.java index f71f344d93..a7d02af7b7 100644 --- a/edexOsgi/com.raytheon.uf.common.geospatial/src/com/raytheon/uf/common/geospatial/MapUtil.java +++ b/edexOsgi/com.raytheon.uf.common.geospatial/src/com/raytheon/uf/common/geospatial/MapUtil.java @@ -94,6 +94,7 @@ import com.vividsolutions.jts.geom.Polygon; * reprojectGeometry. * 06/19/2012 14988 D. Friedman Make oversampling more like AWIPS 1 * 09/18/2012 #1091 randerso corrected getBoundingEnvelope + * 11/06/2012 15406 ryu Added convertToNativeEnvelope() * * * @@ -269,6 +270,55 @@ public class MapUtil { return generalEnvelope; } + /** + * Construct a native envelope from the grid domain represented + * by the lower left and the upper right corners. + * + * @param ll + * lower left of the grid envelope + * @param ur + * upper right of the grid envelope + * @param gloc + * grid location object + * @return a native envelope + * + */ + public static GeneralEnvelope convertToNativeEnvelope( + Coordinate ll, Coordinate ur, ISpatialObject gloc) { + GeneralEnvelope generalEnvelope = new GeneralEnvelope(2); + generalEnvelope.setCoordinateReferenceSystem(gloc.getCrs()); + + double minX = Double.POSITIVE_INFINITY; + double maxX = Double.NEGATIVE_INFINITY; + double minY = Double.POSITIVE_INFINITY; + double maxY = Double.NEGATIVE_INFINITY; + + for (Coordinate p : new Coordinate[]{ll, ur}) { + Coordinate translated = gridCoordinateToNative(p, + PixelOrientation.CENTER, gloc); + double x = translated.x; + double y = translated.y; + + if (x < minX) { + minX = x; + } + if (x > maxX) { + maxX = x; + } + if (y < minY) { + minY = y; + } + if (y > maxY) { + maxY = y; + } + } + + generalEnvelope.setRange(0, minX, maxX); + generalEnvelope.setRange(1, minY, maxY); + + return generalEnvelope; + } + /** * Reproject a grid coverage into a different coordinate reference system * diff --git a/rpms/awips2.core/Installer.httpd-pypies/component.spec b/rpms/awips2.core/Installer.httpd-pypies/component.spec index d4f304df99..6f972341f7 100644 --- a/rpms/awips2.core/Installer.httpd-pypies/component.spec +++ b/rpms/awips2.core/Installer.httpd-pypies/component.spec @@ -8,7 +8,7 @@ Summary: Pypies Apache HTTP Server Name: awips2-httpd-pypies Version: 2.2.3 # This Is Officially Release: 22%{?dist} -Release: 28%{?dist} +Release: 29%{?dist} URL: http://httpd.apache.org/ Prefix: /awips2/httpd_pypies Source0: http://www.apache.org/dist/httpd/httpd-%{version}.tar.gz diff --git a/rpms/awips2.core/Installer.ldm/component.spec b/rpms/awips2.core/Installer.ldm/component.spec index ca151e229e..536a480d9a 100644 --- a/rpms/awips2.core/Installer.ldm/component.spec +++ b/rpms/awips2.core/Installer.ldm/component.spec @@ -5,7 +5,7 @@ Name: awips2-ldm Summary: AWIPS II LDM Distribution Version: 6.8.1 -Release: 23 +Release: 24 Group: AWIPSII BuildRoot: /tmp URL: N/A diff --git a/rpms/awips2.core/Installer.ldm/patch/etc/ldmd.conf.gum b/rpms/awips2.core/Installer.ldm/patch/etc/ldmd.conf.gum index 7e316fd229..74ceead833 100644 --- a/rpms/awips2.core/Installer.ldm/patch/etc/ldmd.conf.gum +++ b/rpms/awips2.core/Installer.ldm/patch/etc/ldmd.conf.gum @@ -59,12 +59,14 @@ EXEC "dvbs_multicast -b 40000 -m 224.0.1.1" EXEC "dvbs_multicast -b 40000 -m 224.0.1.2" EXEC "dvbs_multicast -b 40000 -m 224.0.1.3" EXEC "dvbs_multicast -b 40000 -m 224.0.1.4" +EXEC "dvbs_multicast -b 40000 -m 224.0.1.5" # # readnoaaport shared memory readers EXEC "readnoaaport -m 224.0.1.1 -n -u 3 -t mhs -r 1" EXEC "readnoaaport -m 224.0.1.2 -n -u 4 -t mhs -r 1" EXEC "readnoaaport -m 224.0.1.3 -n -u 5 -t mhs -r 1" EXEC "readnoaaport -m 224.0.1.4 -n -u 6 -t mhs -r 1" +EXEC "readnoaaport -m 224.0.1.5 -n -u 7 -t mhs -r 1" # # rtstats uses the LDM to send product latency statistics to the UPC. # For more info on rtstats please see the man page. diff --git a/rpms/awips2.core/Installer.ldm/patch/etc/ldmd.conf.hfo b/rpms/awips2.core/Installer.ldm/patch/etc/ldmd.conf.hfo index 7e316fd229..74ceead833 100644 --- a/rpms/awips2.core/Installer.ldm/patch/etc/ldmd.conf.hfo +++ b/rpms/awips2.core/Installer.ldm/patch/etc/ldmd.conf.hfo @@ -59,12 +59,14 @@ EXEC "dvbs_multicast -b 40000 -m 224.0.1.1" EXEC "dvbs_multicast -b 40000 -m 224.0.1.2" EXEC "dvbs_multicast -b 40000 -m 224.0.1.3" EXEC "dvbs_multicast -b 40000 -m 224.0.1.4" +EXEC "dvbs_multicast -b 40000 -m 224.0.1.5" # # readnoaaport shared memory readers EXEC "readnoaaport -m 224.0.1.1 -n -u 3 -t mhs -r 1" EXEC "readnoaaport -m 224.0.1.2 -n -u 4 -t mhs -r 1" EXEC "readnoaaport -m 224.0.1.3 -n -u 5 -t mhs -r 1" EXEC "readnoaaport -m 224.0.1.4 -n -u 6 -t mhs -r 1" +EXEC "readnoaaport -m 224.0.1.5 -n -u 7 -t mhs -r 1" # # rtstats uses the LDM to send product latency statistics to the UPC. # For more info on rtstats please see the man page. diff --git a/rpms/awips2.core/Installer.ldm/patch/etc/ldmd.conf.pbp b/rpms/awips2.core/Installer.ldm/patch/etc/ldmd.conf.pbp index 7e316fd229..74ceead833 100644 --- a/rpms/awips2.core/Installer.ldm/patch/etc/ldmd.conf.pbp +++ b/rpms/awips2.core/Installer.ldm/patch/etc/ldmd.conf.pbp @@ -59,12 +59,14 @@ EXEC "dvbs_multicast -b 40000 -m 224.0.1.1" EXEC "dvbs_multicast -b 40000 -m 224.0.1.2" EXEC "dvbs_multicast -b 40000 -m 224.0.1.3" EXEC "dvbs_multicast -b 40000 -m 224.0.1.4" +EXEC "dvbs_multicast -b 40000 -m 224.0.1.5" # # readnoaaport shared memory readers EXEC "readnoaaport -m 224.0.1.1 -n -u 3 -t mhs -r 1" EXEC "readnoaaport -m 224.0.1.2 -n -u 4 -t mhs -r 1" EXEC "readnoaaport -m 224.0.1.3 -n -u 5 -t mhs -r 1" EXEC "readnoaaport -m 224.0.1.4 -n -u 6 -t mhs -r 1" +EXEC "readnoaaport -m 224.0.1.5 -n -u 7 -t mhs -r 1" # # rtstats uses the LDM to send product latency statistics to the UPC. # For more info on rtstats please see the man page. diff --git a/rpms/awips2.core/Installer.ldm/patch/etc/ldmd.conf.vrh b/rpms/awips2.core/Installer.ldm/patch/etc/ldmd.conf.vrh index 40bda8660d..42da2e133d 100644 --- a/rpms/awips2.core/Installer.ldm/patch/etc/ldmd.conf.vrh +++ b/rpms/awips2.core/Installer.ldm/patch/etc/ldmd.conf.vrh @@ -59,12 +59,14 @@ EXEC "dvbs_multicast -b 40000 -m 224.0.1.1" EXEC "dvbs_multicast -b 40000 -m 224.0.1.2" EXEC "dvbs_multicast -b 40000 -m 224.0.1.3" EXEC "dvbs_multicast -b 40000 -m 224.0.1.4" +EXEC "dvbs_multicast -b 40000 -m 224.0.1.5" # # readnoaaport shared memory readers EXEC "readnoaaport -m 224.0.1.1 -n -u 3 -t mhs -r 1" EXEC "readnoaaport -m 224.0.1.2 -n -u 4 -t mhs -r 1" EXEC "readnoaaport -m 224.0.1.3 -n -u 5 -t mhs -r 1" EXEC "readnoaaport -m 224.0.1.4 -n -u 6 -t mhs -r 1" +EXEC "readnoaaport -m 224.0.1.5 -n -u 7 -t mhs -r 1" # # rtstats uses the LDM to send product latency statistics to the UPC. # For more info on rtstats please see the man page. diff --git a/rpms/build/i386/build.sh b/rpms/build/i386/build.sh index 5e976c9f7b..ca743fa7da 100644 --- a/rpms/build/i386/build.sh +++ b/rpms/build/i386/build.sh @@ -311,6 +311,12 @@ if [ "${1}" = "-ade" ]; then exit 1 fi + # Build the source jar file + ade_work_dir="/home/dmsys/Dim12/build/AWIPS2/AWIPS2-ADE-OB12.11.2-CM" + cd $ade_work_dir + ./build_source_jar.sh + cp -v /tmp/awips2-ade-baseline-SOURCES.jar ${WORKSPACE}/${ade_directory} + # Tar the directory. pushd . > /dev/null 2>&1 cd ${WORKSPACE}