Merge tag 'OB_14.3.1-19m' into omaha_14.4.1
Conflicts: cave/com.raytheon.viz.core.gl/src/com/raytheon/viz/core/gl/ext/imaging/GLColormappedImageExtension.java cave/com.raytheon.viz.satellite/src/com/raytheon/viz/satellite/rsc/SatResource.java cave/com.raytheon.viz.volumebrowser/localization/menus/xml/planesMenusPlanView.xml edexOsgi/com.raytheon.edex.plugin.satellite/src/com/raytheon/edex/util/satellite/SatSpatialFactory.java edexOsgi/com.raytheon.uf.common.colormap/src/com/raytheon/uf/common/colormap/prefs/DataMappingPreferences.java edexOsgi/com.raytheon.uf.common.derivparam/utility/common_static/base/derivedParameters/definitions/mmp.xml nativeLib/files.native/awipsShare/hydroapps/lib/native/linux32/library.ohd.pproc.so nativeLib/files.native/edex/lib/native/linux32/library.ohd.pproc.so ohd/gov.noaa.nws.ohd.edex.plugin.hydrodualpol/src/gov/noaa/nws/ohd/edex/plugin/hydrodualpol/DSAProductProcessor.java Former-commit-id: 72f387d2802c12eedfe5643616fe5a54420aef66
This commit is contained in:
commit
b979960b7b
32 changed files with 474 additions and 165 deletions
|
@ -150,7 +150,7 @@
|
|||
<substitute key="stationId" value="72248"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/UpperAirRaob.xml"
|
||||
menuText="Tallahasee, FL (KTAE)" id="raobTallahasee_FL"
|
||||
menuText="Tallahassee, FL (KTAE)" id="raobTallahassee_FL"
|
||||
editorType="gov.noaa.nws.ncep.ui.nsharp.display.NsharpEditor">
|
||||
<substitute key="stationId" value="72214"/>
|
||||
</contribute>
|
||||
|
@ -179,4 +179,4 @@
|
|||
editorType="gov.noaa.nws.ncep.ui.nsharp.display.NsharpEditor">
|
||||
<substitute key="stationId" value="74001"/>
|
||||
</contribute>
|
||||
</menuTemplate>
|
||||
</menuTemplate>
|
||||
|
|
|
@ -178,7 +178,7 @@ public class SyncLocalizationEditor extends BooleanFieldEditor {
|
|||
MessageBox msgBox = new MessageBox(button.getShell(), SWT.YES
|
||||
| SWT.NO | SWT.CANCEL | SWT.ICON_WARNING);
|
||||
msgBox.setText("Do you want to synchronize?");
|
||||
msgBox.setMessage("If there are files missing locally, your CAVE might not work correctly. It is recommended that you synchronize all localization files with edex before enabling this option. Synchronizing will take lots of time and bandwidth.\n\n Would you like to syncronize now?");
|
||||
msgBox.setMessage("If there are files missing locally, your CAVE might not work correctly. It is recommended that you synchronize all localization files with edex before enabling this option. Synchronizing will take lots of time and bandwidth.\n\n Would you like to synchronize now?");
|
||||
int result = msgBox.open();
|
||||
if (result == SWT.CANCEL) {
|
||||
getChangeControl(button.getParent()).setSelection(false);
|
||||
|
|
|
@ -28,6 +28,7 @@ import javax.xml.bind.annotation.XmlAccessorType;
|
|||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
|
||||
import com.raytheon.uf.common.colormap.prefs.ColorMapParameters;
|
||||
import com.raytheon.uf.viz.truecolor.extension.ITrueColorImagingExtension.Channel;
|
||||
|
||||
/**
|
||||
|
@ -41,7 +42,7 @@ import com.raytheon.uf.viz.truecolor.extension.ITrueColorImagingExtension.Channe
|
|||
* ------------- -------- ----------- --------------------------
|
||||
* Aug 20, 2012 mschenke Initial creation
|
||||
* Apr 18, 2014 2947 bsteffen Support unitless data.
|
||||
*
|
||||
* Sep 9, 2014 DR 17313 jgerth Support for ColorMapParameters
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -60,7 +61,9 @@ public class ChannelInfo {
|
|||
@XmlElement
|
||||
private double rangeMax = 1.0;
|
||||
|
||||
private Unit<?> unit = Unit.ONE;
|
||||
private Unit<?> unit;
|
||||
|
||||
private ColorMapParameters parameters;
|
||||
|
||||
/**
|
||||
* @return the channel
|
||||
|
@ -144,6 +147,14 @@ public class ChannelInfo {
|
|||
: null;
|
||||
}
|
||||
|
||||
public ColorMapParameters getParameters() {
|
||||
return parameters;
|
||||
}
|
||||
|
||||
public void setParameters(ColorMapParameters parameters) {
|
||||
this.parameters = parameters;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
|
|
|
@ -25,6 +25,7 @@ import javax.xml.bind.annotation.XmlAttribute;
|
|||
import javax.xml.bind.annotation.XmlElement;
|
||||
|
||||
import com.raytheon.uf.viz.core.rsc.AbstractResourceData;
|
||||
import com.raytheon.uf.viz.core.rsc.LoadProperties;
|
||||
import com.raytheon.uf.viz.truecolor.extension.ITrueColorImagingExtension.Channel;
|
||||
|
||||
/**
|
||||
|
@ -37,18 +38,26 @@ import com.raytheon.uf.viz.truecolor.extension.ITrueColorImagingExtension.Channe
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Aug 16, 2012 mschenke Initial creation
|
||||
* Aug 22, 2014 DR 17313 jgerth Support for load properties
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author mschenke
|
||||
* @version 1.0
|
||||
*/
|
||||
/**
|
||||
* @author awips
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.NONE)
|
||||
public class ChannelResource {
|
||||
|
||||
@XmlElement
|
||||
protected AbstractResourceData resourceData;
|
||||
|
||||
@XmlElement
|
||||
protected LoadProperties loadProperties;
|
||||
|
||||
@XmlElement
|
||||
protected Channel channel;
|
||||
|
||||
|
@ -100,6 +109,21 @@ public class ChannelResource {
|
|||
this.channelName = channelName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the loadProperties
|
||||
*/
|
||||
public LoadProperties getLoadProperties() {
|
||||
return loadProperties;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param loadProperties
|
||||
* the loadProperties to set
|
||||
*/
|
||||
public void setLoadProperties(LoadProperties loadProperties) {
|
||||
this.loadProperties = loadProperties;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
|
|
|
@ -25,11 +25,13 @@ import java.util.IdentityHashMap;
|
|||
import java.util.Map;
|
||||
|
||||
import javax.measure.converter.UnitConverter;
|
||||
import javax.measure.unit.Unit;
|
||||
|
||||
import org.eclipse.swt.graphics.Rectangle;
|
||||
import org.opengis.referencing.crs.CoordinateReferenceSystem;
|
||||
|
||||
import com.raytheon.uf.common.colormap.prefs.ColorMapParameters;
|
||||
import com.raytheon.uf.common.geospatial.ReferencedCoordinate;
|
||||
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||
import com.raytheon.uf.common.time.DataTime;
|
||||
import com.raytheon.uf.viz.core.DrawableImage;
|
||||
|
@ -69,6 +71,7 @@ import com.vividsolutions.jts.geom.Coordinate;
|
|||
* ------------- -------- ----------- --------------------------
|
||||
* Aug 06, 2012 mschenke Initial creation
|
||||
* Apr 18, 2014 2947 bsteffen Support unitless data.
|
||||
* Sep 10, 2014 DR 17313 jgerth Add inspect method
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -140,7 +143,7 @@ public class TrueColorResourceGroup extends
|
|||
* Mapping to keep colormap parameters in sync with ChannelInfo in
|
||||
* resourceData
|
||||
*/
|
||||
private Map<ColorMapParameters, ChannelInfo> channelInfoMap = new IdentityHashMap<ColorMapParameters, ChannelInfo>();
|
||||
private Map<ColorMapCapability, ChannelInfo> channelInfoMap = new IdentityHashMap<ColorMapCapability, ChannelInfo>();
|
||||
|
||||
/**
|
||||
* @param resourceData
|
||||
|
@ -246,9 +249,9 @@ public class TrueColorResourceGroup extends
|
|||
for (ChannelResource cr : resourceData.getChannelResources()) {
|
||||
for (ResourcePair rp : resources) {
|
||||
if (cr.getResourceData() == rp.getResourceData()) {
|
||||
DisplayedChannelResource displayedResource = new DisplayedChannelResource(
|
||||
DisplayedChannelResource displayedResource = new DisplayedChannelResource(
|
||||
cr, rp.getResource());
|
||||
AbstractVizResource<?, ?> resource = rp.getResource();
|
||||
AbstractVizResource<?, ?> resource = rp.getResource();
|
||||
resource.init(target);
|
||||
|
||||
// Check resource for required capabilities
|
||||
|
@ -256,16 +259,7 @@ public class TrueColorResourceGroup extends
|
|||
if (resource.hasCapability(ImagingCapability.class)) {
|
||||
ImagingCapability imaging = resource
|
||||
.getCapability(ImagingCapability.class);
|
||||
if (imaging.getProvider() != null) {
|
||||
if (resource
|
||||
.hasCapability(ColorMapCapability.class) == false) {
|
||||
error = "does not have ColorMapCapability";
|
||||
} else if (resource.getCapability(
|
||||
ColorMapCapability.class)
|
||||
.getColorMapParameters() == null) {
|
||||
error = "does not have ColorMapParameters set";
|
||||
}
|
||||
} else {
|
||||
if (imaging.getProvider() == null) {
|
||||
error = "does not have image provider set on the ImagingCapability";
|
||||
}
|
||||
} else {
|
||||
|
@ -279,35 +273,32 @@ public class TrueColorResourceGroup extends
|
|||
|
||||
if (error == null) {
|
||||
// No errors so far, check for ChannelInfo override
|
||||
ColorMapParameters params = resource.getCapability(
|
||||
ColorMapCapability.class)
|
||||
ColorMapCapability cmapCap = resource
|
||||
.getCapability(ColorMapCapability.class);
|
||||
ColorMapParameters params = cmapCap
|
||||
.getColorMapParameters();
|
||||
|
||||
ChannelInfo ci = resourceData
|
||||
.getChannelInfo(displayedResource.getChannel());
|
||||
if (ci == null
|
||||
|| ci.getUnit().isCompatible(
|
||||
params.getDataUnit())) {
|
||||
if (ci == null) {
|
||||
ci = new ChannelInfo();
|
||||
ci.setChannel(displayedResource.getChannel());
|
||||
resourceData.setChannelInfo(ci);
|
||||
} else {
|
||||
params.setDisplayUnit(ci.getUnit());
|
||||
params.setColorMapMin((float) params
|
||||
.getDisplayToDataConverter().convert(
|
||||
ci.getRangeMin()));
|
||||
params.setColorMapMax((float) params
|
||||
.getDisplayToDataConverter().convert(
|
||||
ci.getRangeMax()));
|
||||
if (ci == null) {
|
||||
ci = new ChannelInfo();
|
||||
ci.setChannel(displayedResource.getChannel());
|
||||
if (params != null) {
|
||||
ci.setUnit(params.getColorMapUnit());
|
||||
ci.setRangeMin(params.getColorMapMin());
|
||||
ci.setRangeMax(params.getColorMapMax());
|
||||
}
|
||||
channelInfoMap.put(params, ci);
|
||||
resourceChanged(
|
||||
ChangeType.CAPABILITY,
|
||||
resource.getCapability(ColorMapCapability.class));
|
||||
} else {
|
||||
error = "is not compatible with custom ChannelInfo for Channel="
|
||||
+ displayedResource.getChannel();
|
||||
resourceData.setChannelInfo(ci);
|
||||
}
|
||||
|
||||
channelInfoMap.put(cmapCap, ci);
|
||||
|
||||
if (params != null && params.getColorMapUnit() == null) {
|
||||
// no colormap units set, default to ChannelInfo
|
||||
params.setColorMapUnit(ci.getUnit());
|
||||
}
|
||||
|
||||
initializeParameters(ci, params);
|
||||
}
|
||||
|
||||
if (error != null) {
|
||||
|
@ -317,7 +308,9 @@ public class TrueColorResourceGroup extends
|
|||
+ error);
|
||||
resources.remove(rp);
|
||||
} else {
|
||||
resource.getResourceData().addChangeListener(this);
|
||||
// Listener will handle case where params are changed
|
||||
// after the fact and we will reinitialize
|
||||
resource.getResourceData().addChangeListener(this);
|
||||
displayedResources.put(displayedResource.getChannel(),
|
||||
displayedResource);
|
||||
}
|
||||
|
@ -430,19 +423,90 @@ public class TrueColorResourceGroup extends
|
|||
if (toDisplay == null) {
|
||||
toDisplay = UnitConverter.IDENTITY;
|
||||
}
|
||||
ChannelInfo ci = channelInfoMap.get(params);
|
||||
ChannelInfo ci = channelInfoMap.get(object);
|
||||
if (ci != null) {
|
||||
ci.setRangeMin(toDisplay.convert(
|
||||
params.getColorMapMin()));
|
||||
ci.setRangeMax(toDisplay.convert(
|
||||
params.getColorMapMax()));
|
||||
ci.setUnit(params.getDisplayUnit());
|
||||
if (ci.getParameters() != params) {
|
||||
// Reinitialize params from channel info
|
||||
initializeParameters(ci, params);
|
||||
} else {
|
||||
ci.setRangeMin(toDisplay.convert(params
|
||||
.getColorMapMin()));
|
||||
ci.setRangeMax(toDisplay.convert(params
|
||||
.getColorMapMax()));
|
||||
ci.setUnit(params.getDisplayUnit());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
issueRefresh();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String inspect(ReferencedCoordinate coord) throws VizException {
|
||||
String label = "";
|
||||
for (Channel c : Channel.values()) {
|
||||
DisplayedChannelResource dcr = displayedResources.get(c);
|
||||
if (dcr != null) {
|
||||
String ri = dcr.resource.inspect(coord);
|
||||
label += c.name() + ": " + ri;
|
||||
if (dcr.resource.hasCapability(ColorMapCapability.class) && ri.replaceAll("[^\\d]", "").length() > 0) {
|
||||
ColorMapParameters cmp = dcr.resource.getCapability(ColorMapCapability.class).getColorMapParameters();
|
||||
UnitConverter uc = cmp.getColorMapToDisplayConverter();
|
||||
if (uc == null)
|
||||
uc = UnitConverter.IDENTITY;
|
||||
double cmmax = uc.convert(cmp.getColorMapMax());
|
||||
double cmmin = uc.convert(cmp.getColorMapMin());
|
||||
String rirall;
|
||||
if (ri.charAt(0) == ('-'))
|
||||
rirall = "-" + (ri.substring(1) + "x").replaceAll("[^\\d.]", " ");
|
||||
else
|
||||
rirall = (ri + "x").replaceAll("[^\\d.]", " ");
|
||||
try {
|
||||
double value = Double.parseDouble(rirall.substring(0,rirall.indexOf(" ")));
|
||||
double percent = ((value - cmmin) * 100.0 / (cmmax - cmmin));
|
||||
if (percent < 0)
|
||||
percent = 0.0;
|
||||
else if (percent > 100)
|
||||
percent = 100.0;
|
||||
label += " (" + Math.round(percent) + "%)\n";
|
||||
} catch (Exception e) {
|
||||
label += "\n";
|
||||
}
|
||||
} else
|
||||
label += "\n";
|
||||
}
|
||||
}
|
||||
if (label.length() > 0)
|
||||
return label;
|
||||
else
|
||||
return "NO DATA";
|
||||
}
|
||||
|
||||
private static void initializeParameters(ChannelInfo ci,
|
||||
ColorMapParameters params) {
|
||||
if (params != null) {
|
||||
ci.setParameters(params);
|
||||
if (ci.getUnit() != null && params.getColorMapUnit() != null
|
||||
&& ci.getUnit().isCompatible(params.getColorMapUnit())) {
|
||||
params.setDisplayUnit(ci.getUnit());
|
||||
UnitConverter displayToCmap = params
|
||||
.getDisplayToColorMapConverter();
|
||||
params.setColorMapMin(
|
||||
(float) displayToCmap.convert(ci.getRangeMin()),
|
||||
true);
|
||||
params.setColorMapMax(
|
||||
(float) displayToCmap.convert(ci.getRangeMax()),
|
||||
true);
|
||||
} else {
|
||||
UnitConverter cmapToDisplay = params
|
||||
.getColorMapToDisplayConverter();
|
||||
ci.setRangeMin(cmapToDisplay.convert(params.getColorMapMin()));
|
||||
ci.setRangeMax(cmapToDisplay.convert(params.getColorMapMax()));
|
||||
ci.setUnit(params.getDisplayUnit());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Collection<DisplayedChannelResource> getChannelResources() {
|
||||
return displayedResources.values();
|
||||
}
|
||||
|
|
|
@ -50,6 +50,7 @@ import com.raytheon.uf.viz.truecolor.extension.ITrueColorImagingExtension.Channe
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Aug 6, 2012 mschenke Initial creation
|
||||
* Aug 22, 2014 DR 17313 jgerth Support for load properties
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -94,16 +95,19 @@ public class TrueColorResourceGroupData extends AbstractResourceData implements
|
|||
}
|
||||
};
|
||||
for (ChannelResource resource : channelResources) {
|
||||
addResource(resource.getResourceData());
|
||||
addResource(resource.getResourceData(), resource.getLoadProperties());
|
||||
}
|
||||
}
|
||||
return resourceList;
|
||||
}
|
||||
|
||||
private void addResource(AbstractResourceData resourceData) {
|
||||
private void addResource(AbstractResourceData resourceData, LoadProperties loadProp) {
|
||||
ResourcePair rp = new ResourcePair();
|
||||
rp.setResourceData(resourceData);
|
||||
rp.setLoadProperties(new LoadProperties());
|
||||
if (loadProp == null)
|
||||
rp.setLoadProperties(new LoadProperties());
|
||||
else
|
||||
rp.setLoadProperties(loadProp);
|
||||
rp.setProperties(new ResourceProperties());
|
||||
resourceList.add(rp);
|
||||
}
|
||||
|
|
|
@ -22,6 +22,8 @@ package com.raytheon.viz.grid.rsc.general;
|
|||
import java.text.DecimalFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
@ -64,12 +66,14 @@ import com.raytheon.uf.common.style.contour.ContourPreferences;
|
|||
import com.raytheon.uf.common.style.image.ColorMapParameterFactory;
|
||||
import com.raytheon.uf.common.style.image.ImagePreferences;
|
||||
import com.raytheon.uf.common.time.DataTime;
|
||||
import com.raytheon.uf.viz.core.DrawableImage;
|
||||
import com.raytheon.uf.viz.core.IGraphicsTarget;
|
||||
import com.raytheon.uf.viz.core.VizApp;
|
||||
import com.raytheon.uf.viz.core.drawables.ColorMapLoader;
|
||||
import com.raytheon.uf.viz.core.drawables.IRenderable;
|
||||
import com.raytheon.uf.viz.core.drawables.PaintProperties;
|
||||
import com.raytheon.uf.viz.core.drawables.PaintStatus;
|
||||
import com.raytheon.uf.viz.core.drawables.ext.IImagingExtension.ImageProvider;
|
||||
import com.raytheon.uf.viz.core.exception.VizException;
|
||||
import com.raytheon.uf.viz.core.map.IMapDescriptor;
|
||||
import com.raytheon.uf.viz.core.rsc.AbstractRequestableResourceData;
|
||||
|
@ -125,7 +129,7 @@ import com.vividsolutions.jts.geom.Coordinate;
|
|||
* Jan 14, 2014 2594 bsteffen Switch vector mag/dir to use data source
|
||||
* instead of raw float data.
|
||||
* Feb 28, 2014 2791 bsteffen Switch all data to use data source.
|
||||
*
|
||||
* Aug 21, 2014 DR 17313 jgerth Implements ImageProvider
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -134,7 +138,7 @@ import com.vividsolutions.jts.geom.Coordinate;
|
|||
* @param <T>
|
||||
*/
|
||||
public abstract class AbstractGridResource<T extends AbstractResourceData>
|
||||
extends AbstractVizResource<T, IMapDescriptor> {
|
||||
extends AbstractVizResource<T, IMapDescriptor> implements ImageProvider {
|
||||
private static final transient IUFStatusHandler statusHandler = UFStatus
|
||||
.getHandler(AbstractGridResource.class);
|
||||
|
||||
|
@ -345,6 +349,7 @@ public abstract class AbstractGridResource<T extends AbstractResourceData>
|
|||
this.getCapability(ImagingCapability.class)
|
||||
.setInterpolationState(true);
|
||||
}
|
||||
this.getCapability(ImagingCapability.class).setProvider(this);
|
||||
altDisplayTypes.add(DisplayType.CONTOUR);
|
||||
break;
|
||||
case BARB:
|
||||
|
@ -438,43 +443,6 @@ public abstract class AbstractGridResource<T extends AbstractResourceData>
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void paintInternal(IGraphicsTarget target,
|
||||
PaintProperties paintProps) throws VizException {
|
||||
DataTime time = paintProps.getDataTime();
|
||||
if (time == null) {
|
||||
time = getTimeForResource();
|
||||
}
|
||||
if (time == null) {
|
||||
return;
|
||||
}
|
||||
synchronized (renderableMap) {
|
||||
if (renderableMap.containsKey(time)) {
|
||||
for (IRenderable renderable : renderableMap.get(time)) {
|
||||
renderable.paint(target, paintProps);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
List<GeneralGridData> dataList = requestData(time);
|
||||
if (dataList == null) {
|
||||
updatePaintStatus(PaintStatus.INCOMPLETE);
|
||||
return;
|
||||
}
|
||||
|
||||
List<IRenderable> renderableList = new ArrayList<IRenderable>(
|
||||
dataList.size());
|
||||
for (GeneralGridData data : dataList) {
|
||||
IRenderable renderable = createRenderable(target, data);
|
||||
if (renderable != null) {
|
||||
renderableList.add(renderable);
|
||||
renderable.paint(target, paintProps);
|
||||
}
|
||||
}
|
||||
renderableMap.put(time, renderableList);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a renderable for this data.
|
||||
*
|
||||
|
@ -999,4 +967,63 @@ public abstract class AbstractGridResource<T extends AbstractResourceData>
|
|||
return new ArrayList<PluginDataObject>(list);
|
||||
}
|
||||
|
||||
public Collection<DrawableImage> getImages(IGraphicsTarget target, PaintProperties paintProps) throws VizException {
|
||||
if (getCapability(DisplayTypeCapability.class).getDisplayType() != DisplayType.IMAGE) {
|
||||
throw new VizException("Grid resource not configured for image rendering");
|
||||
}
|
||||
Collection<IRenderable> renderables = getOrCreateRenderables(target, paintProps);
|
||||
if (renderables.isEmpty()) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
List<DrawableImage> images = new ArrayList<DrawableImage>();
|
||||
for (IRenderable renderable : renderables) {
|
||||
images.addAll(((TileSetRenderable)renderable).getImagesToRender(target, paintProps));
|
||||
}
|
||||
return images;
|
||||
}
|
||||
|
||||
protected Collection<IRenderable> getOrCreateRenderables(
|
||||
IGraphicsTarget target, PaintProperties paintProps)
|
||||
throws VizException {
|
||||
DataTime time = paintProps.getDataTime();
|
||||
if (time == null) {
|
||||
time = getTimeForResource();
|
||||
}
|
||||
if (time == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
List<IRenderable> renderables;
|
||||
|
||||
synchronized (renderableMap) {
|
||||
if (renderableMap.containsKey(time)) {
|
||||
renderables = renderableMap.get(time);
|
||||
} else {
|
||||
List<GeneralGridData> dataList = requestData(time);
|
||||
if (dataList == null) {
|
||||
updatePaintStatus(PaintStatus.INCOMPLETE);
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
renderables = new ArrayList<IRenderable>(dataList.size());
|
||||
for (GeneralGridData data : dataList) {
|
||||
IRenderable renderable = createRenderable(target, data);
|
||||
if (renderable != null) {
|
||||
renderables.add(renderable);
|
||||
}
|
||||
}
|
||||
renderableMap.put(time, renderables);
|
||||
}
|
||||
}
|
||||
return renderables;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void paintInternal(IGraphicsTarget target,
|
||||
PaintProperties paintProps) throws VizException {
|
||||
for (IRenderable renderable : getOrCreateRenderables(target, paintProps)) {
|
||||
renderable.paint(target, paintProps);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,7 +49,7 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
|
|||
* 6/27/06 lvenable Initial Creation.
|
||||
* 04/07/2010 4671 mpduff Have the map update upon closure of the dialog.
|
||||
* 07/02/2013 2088 rferrel Changes for non-blocking ColorScaleMgrDlg.
|
||||
*
|
||||
* 9/4/2014 14448 cgobs Make HydroView redisplay after save of color settings in ColorScaleMgr
|
||||
* </pre>
|
||||
*
|
||||
* @author lvenable
|
||||
|
@ -97,6 +97,25 @@ public class ColorScaleMgrAction extends AbstractHandler {
|
|||
}
|
||||
}
|
||||
});
|
||||
|
||||
colorScaleDlg.setSaveCallback(new ColorScaleMgrDlg.ISaveCallback() {
|
||||
|
||||
public void execute() {
|
||||
|
||||
HydroDisplayManager displayManager = HydroDisplayManager
|
||||
.getInstance();
|
||||
|
||||
boolean dataChanged = true;
|
||||
displayManager.setColorChanged(dataChanged);
|
||||
|
||||
// redraw the main display
|
||||
displayManager.setDataChanged(dataChanged);
|
||||
StationDisplay sd = StationDisplay.getInstance();
|
||||
sd.redraw();
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
colorScaleDlg.open();
|
||||
} else {
|
||||
colorScaleDlg.bringToTop();
|
||||
|
|
|
@ -73,7 +73,8 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
|
|||
* disappearing after save
|
||||
* 01 Jul 2013 2088 rferrel Changes for non-blocking dialogs.
|
||||
* 06 Sep 2013 #2342 lvenable Fixed color memory leaks and a null point exception.
|
||||
* </pre>
|
||||
* 04 Sep 2014 14448 cgobs Make MPE redisplay after save of color settings in ColorScaleMgr
|
||||
* </pre>
|
||||
*
|
||||
* @author lvenable
|
||||
* @version 1.0
|
||||
|
@ -96,6 +97,19 @@ public class ColorScaleMgrDlg extends CaveSWTDialog {
|
|||
*/
|
||||
private ColorChooserDlg colorDlg;
|
||||
|
||||
/**
|
||||
* callback to be execute upon saving of a color set
|
||||
* generally used to update the display with the newly-saved color set
|
||||
*/
|
||||
private ISaveCallback saveCallback;
|
||||
|
||||
public interface ISaveCallback {
|
||||
|
||||
public void execute();
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* User's name.
|
||||
*/
|
||||
|
@ -915,6 +929,7 @@ public class ColorScaleMgrDlg extends CaveSWTDialog {
|
|||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Update the color label on the display
|
||||
*
|
||||
|
@ -2016,9 +2031,17 @@ public class ColorScaleMgrDlg extends CaveSWTDialog {
|
|||
|
||||
updateDurationCombo();
|
||||
updateColorValueLabelBar();
|
||||
|
||||
|
||||
if (this.saveCallback != null) {
|
||||
this.saveCallback.execute();
|
||||
}
|
||||
setReturnValue(true);
|
||||
}
|
||||
|
||||
public void setSaveCallback(ISaveCallback iSaveCallback)
|
||||
{
|
||||
this.saveCallback = iSaveCallback;
|
||||
}
|
||||
|
||||
/**
|
||||
* dataType has changed, update dialog
|
||||
|
|
|
@ -1278,4 +1278,9 @@ public class MPEDisplayManager {
|
|||
|
||||
return type;
|
||||
}
|
||||
|
||||
public int getDisplayedAccumHrs() {
|
||||
|
||||
return displayedAccumHrs;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ import com.vividsolutions.jts.geom.Coordinate;
|
|||
* ------------ ---------- ----------- --------------------------
|
||||
* Jun 17, 2009 snaples Initial creation
|
||||
* May 06, 2011 #8994 jpiatt Added set precipitation value as zero
|
||||
*
|
||||
* Sep 04, 2014 283 cgobs Fixed possible selection of filtered-out gages
|
||||
* </pre>
|
||||
*
|
||||
* @author snaples
|
||||
|
@ -80,11 +80,25 @@ public class GroupEditPrecipStns {
|
|||
continue;
|
||||
}
|
||||
|
||||
//precip filter
|
||||
if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[i].frain[time_pos].data < QcPrecipOptionsDialog
|
||||
.getPointFilterValue()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
//reverse precip filter
|
||||
if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[i].frain[time_pos].data > QcPrecipOptionsDialog
|
||||
.getPointFilterReverseValue()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
//elevation filter
|
||||
if (DailyQcUtils.precip_stations.get(i).elev < DailyQcUtils.elevation_filter_value)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
/* Retrieve the latitude and longitude of this station. */
|
||||
lat = DailyQcUtils.precip_stations.get(i).lat;
|
||||
lon = DailyQcUtils.precip_stations.get(i).lon;
|
||||
|
|
|
@ -48,6 +48,7 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
|
|||
* Jan 16, 2014 #2691 lvenable Fixed null pointer exception that occurs when closing
|
||||
* the MPE perspective while the ColorScaleMgrDlg is
|
||||
* visible.
|
||||
* 04 Sep 2014 14448 cgobs Make MPE redisplay after save of color settings in ColorScaleMgr
|
||||
* </pre>
|
||||
*
|
||||
* @author mschenke
|
||||
|
@ -103,10 +104,54 @@ public class MPEColorScaleMgrAction extends AbstractHandler {
|
|||
DisplayFieldData dt = MPEDisplayManager.getCurrent()
|
||||
.getDisplayFieldType();
|
||||
|
||||
MPEDisplayManager.getCurrent().displayFieldData(dt);
|
||||
int displayedAccumHrs = mdm.getDisplayedAccumHrs();
|
||||
mdm.displayFieldData(dt,displayedAccumHrs );
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
//anonymous class declaration for the purposes of a callback execute upon save to database
|
||||
colorScaleDlg.setSaveCallback(new ColorScaleMgrDlg.ISaveCallback() {
|
||||
|
||||
public void execute() {
|
||||
|
||||
MPEDisplayManager mdm = MPEDisplayManager.getCurrent();
|
||||
|
||||
// If the MPE Display Manager is null then return as no
|
||||
// action is needed.
|
||||
if (mdm == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
MPEFieldResource displayedFieldResource = mdm
|
||||
.getDisplayedFieldResource();
|
||||
|
||||
if (displayedFieldResource != null) {
|
||||
MPEFieldResourceData resourceData = displayedFieldResource
|
||||
.getResourceData();
|
||||
displayedFieldResource
|
||||
.getCapability(ColorMapCapability.class)
|
||||
.setColorMapParameters(
|
||||
MPEDisplayManager.createColorMap(
|
||||
resourceData.getCvUseString(),
|
||||
resourceData
|
||||
.getDurationInHours(),
|
||||
resourceData.getDataUnits(),
|
||||
resourceData.getDisplayUnits()));
|
||||
DisplayFieldData dt = MPEDisplayManager.getCurrent()
|
||||
.getDisplayFieldType();
|
||||
|
||||
int displayedAccumHrs = mdm.getDisplayedAccumHrs();
|
||||
|
||||
|
||||
mdm.displayFieldData(dt, displayedAccumHrs);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
colorScaleDlg.open();
|
||||
} else {
|
||||
colorScaleDlg.bringToTop();
|
||||
|
|
|
@ -62,6 +62,7 @@ import com.vividsolutions.jts.geom.Coordinate;
|
|||
* May 20, 2013 15962 lbousaidi Added a new routine getRadarIdsTrue()
|
||||
* for Radar Sites dialog.
|
||||
* Mar 05, 2014 17114 lbousaidi display PC data in gage table.
|
||||
* Sep 04, 2014 16699 cgobs Fixed 14.3.1 issue with reading MPE field data.
|
||||
* </pre>
|
||||
*
|
||||
* @author mpduff
|
||||
|
@ -1136,10 +1137,9 @@ public class GageTableDataManager {
|
|||
double returnValue = -999.0;
|
||||
|
||||
try {
|
||||
String cv_use = dataType.getCv_use();
|
||||
String dirname = appsDefaults.getToken(dataType.getDirToken());
|
||||
String fname = FileUtil.join(dirname,
|
||||
cv_use + sdf.format(displayManager.getCurrentEditDate()) + "z");
|
||||
dataType.getFileNamePrefix() + sdf.format(displayManager.getCurrentEditDate()) + "z");
|
||||
|
||||
Rectangle extent = dataManager.getHRAPExtent();
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/DefaultRadarMosaic.xml"
|
||||
menuText="Hybrid Scan Refl" id="RadarHybridScanRefl">
|
||||
<substitute key="product" value="33" />
|
||||
<substitute key="product" value="32,33" />
|
||||
<substitute key="elevation" value="0.0" />
|
||||
<substitute key="name" value="Hybrid Scan Refl" />
|
||||
</contribute>
|
||||
|
@ -113,4 +113,4 @@
|
|||
<contribute xsi:type="subinclude" fileName="menus/radar/dialRadars.xml" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude" fileName="menus/radar/baseRadarApplications.xml" />
|
||||
</menuTemplate>
|
||||
</menuTemplate>
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
further_licensing_information.
|
||||
-->
|
||||
<menuTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<contribute xsi:type="titleItem" titleText="------ Best Res Z+V ------"
|
||||
<contribute xsi:type="titleItem" titleText="------ Best Res Z+V combo------"
|
||||
id="BestResZV" />
|
||||
<contribute xsi:type="bundleItem"
|
||||
file="bundles/DefaultRadarBlendedBestRes.xml" menuText="0.5 Z+V"
|
||||
|
@ -295,4 +295,4 @@
|
|||
<substitute key="elevation" value="19.5--19.5" />
|
||||
</contribute>
|
||||
</contribute>
|
||||
</menuTemplate>
|
||||
</menuTemplate>
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
further_licensing_information.
|
||||
-->
|
||||
<menuTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<contribute xsi:type="titleItem" titleText="------ Best Res Z+V ------"
|
||||
<contribute xsi:type="titleItem" titleText="------ Best Res Z+V combo ------"
|
||||
id="BestResZV" />
|
||||
<contribute xsi:type="bundleItem"
|
||||
file="bundles/DefaultRadarBlendedBestRes.xml" menuText="0.0 Z+V"
|
||||
|
|
|
@ -121,6 +121,7 @@ import com.vividsolutions.jts.geom.Coordinate;
|
|||
* parameters, implement ImageProvider
|
||||
* May 06, 2014 njensen Improve error message
|
||||
* Jun 12, 2014 3238 bsteffen Implement Interrogatable
|
||||
* Aug 21, 2014 DR 17313 jgerth Set no data value if no data mapping
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -394,7 +395,8 @@ public class SatResource extends
|
|||
if (persisted != null) {
|
||||
colorMapParameters.applyPersistedParameters(persisted);
|
||||
}
|
||||
colorMapParameters.setNoDataValue(0);
|
||||
if (colorMapParameters.getDataMapping() == null)
|
||||
colorMapParameters.setNoDataValue(0);
|
||||
|
||||
getCapability(ColorMapCapability.class).setColorMapParameters(
|
||||
colorMapParameters);
|
||||
|
@ -463,7 +465,7 @@ public class SatResource extends
|
|||
if (dataMapping != null) {
|
||||
// if the pixel value matches the data mapping entry use that
|
||||
// label instead
|
||||
String label = dataMapping.getLabelValueForDataValue(measuredValue);
|
||||
String label = dataMapping.getSampleOrLabelValueForDataValue(measuredValue);
|
||||
if (label != null) {
|
||||
return label;
|
||||
}
|
||||
|
|
|
@ -553,7 +553,7 @@ public class ScriptEditorDialog extends CaveSWTDialog implements IScriptEditor {
|
|||
item.addSelectionListener(listener);
|
||||
|
||||
item = new MenuItem(subMenu, SWT.PUSH);
|
||||
item.setText("Line\tF7");
|
||||
item.setText("Line\tF8");
|
||||
item.setAccelerator(SWT.F8);
|
||||
item.setData(EditMenuSelection.DEL_LINE);
|
||||
item.addSelectionListener(listener);
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
<include installTo="menu:volume?before=VolumeBundles"
|
||||
fileName="menus/volume/ModelFamilies.xml">
|
||||
</include>
|
||||
<include subMenu="4-PanelFamilies" installTo="menu:volume?before=ComparisonFamilies"
|
||||
<include subMenu="4-Panel Families" installTo="menu:volume?before=ComparisonFamilies"
|
||||
fileName="menus/volume/baseFourPanelFamilies.xml">
|
||||
</include>
|
||||
<include installTo="menu:volume?after=ComparisonFamilies"
|
||||
|
|
|
@ -19,6 +19,37 @@
|
|||
further_licensing_information.
|
||||
-->
|
||||
<menuTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
|
||||
<contribute xsi:type="toolbarSubMenu" menuText="100mb Layers">
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="300MB-200MB" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="400-300MB" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="500-400MB" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="600-500MB" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="700-600MB" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="800-700MB" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="900-800MB" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="1000-900MB" indentText="false"/>
|
||||
</contribute>
|
||||
|
||||
<contribute xsi:type="toolbarSubMenu" menuText="50mb Layers">
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="1000-950MB" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="950-900MB" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="900-850MB" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="850-800MB" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="800-750MB" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="750-700MB" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="700-650MB" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="650-600MB" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="600-550MB" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="550-500MB" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="500-450MB" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="450-400MB" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="400-350MB" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="350-300MB" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="300-250MB" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="250-200MB" indentText="false"/>
|
||||
</contribute>
|
||||
|
||||
<!--
|
||||
Don't override this file, it exists only to support legacy overrides.
|
||||
Please override menus/volumebrowser/planes/planViewTime-timeSeries.xml instead.
|
||||
|
|
|
@ -1206,6 +1206,7 @@
|
|||
</Level>
|
||||
<Level displayName="FrzLvl" key="FrzLvl" group="S">
|
||||
<DatabaseLevel levelName="FRZ" levelOneValue="0" />
|
||||
<DatabaseLevel levelName="TEMP" levelOneValue="0" unit="C" />
|
||||
</Level>
|
||||
<Level displayName="HghstTropFrz" key="Htfl" group="S">
|
||||
<DatabaseLevel levelName="HTFL" levelOneValue="0" />
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
<constraint constraintValue="MWS,SMW,FFW,FLW,FLY,SVR,TOR,EWW,SVS,EWS,FFS,FLS" constraintType="IN" />
|
||||
</mapping>
|
||||
<mapping key="phensig">
|
||||
<constraint constraintValue="MA.W,FF.W,FA.W,FA.Y,TO.W,TO.W,EW.W" constraintType="IN" />
|
||||
<constraint constraintValue="MA.W,FF.W,FA.W,FA.Y,TO.W,SV.W,EW.W,FL.Y" constraintType="IN" />
|
||||
</mapping>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="warning" constraintType="EQUALS" />
|
||||
|
@ -198,7 +198,7 @@
|
|||
<constraint constraintValue="FFW,FFS" constraintType="IN" />
|
||||
</mapping>
|
||||
<mapping key="phensig">
|
||||
<constraint constraintValue="FF.W" constraintType="EQUALS" />
|
||||
<constraint constraintValue="FF.W,FL.Y" constraintType="IN" />
|
||||
</mapping>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="warning" constraintType="EQUALS" />
|
||||
|
@ -232,7 +232,7 @@
|
|||
<constraint constraintValue="FLW,FLS" constraintType="IN" />
|
||||
</mapping>
|
||||
<mapping key="phensig">
|
||||
<constraint constraintValue="FA.W" constraintType="EQUALS" />
|
||||
<constraint constraintValue="FA.W,FL.Y" constraintType="IN" />
|
||||
</mapping>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="warning" constraintType="EQUALS" />
|
||||
|
@ -266,7 +266,7 @@
|
|||
<constraint constraintValue="FLY,FLS" constraintType="IN" />
|
||||
</mapping>
|
||||
<mapping key="phensig">
|
||||
<constraint constraintValue="FA.Y" constraintType="EQUALS" />
|
||||
<constraint constraintValue="FA.Y,FL.Y" constraintType="IN" />
|
||||
</mapping>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="warning" constraintType="EQUALS" />
|
||||
|
@ -280,4 +280,4 @@
|
|||
</descriptor>
|
||||
</displays>
|
||||
</displayList>
|
||||
</bundle>
|
||||
</bundle>
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
<constraint constraintValue="FFW,FLW,FLY,FFS,FLS" constraintType="IN" />
|
||||
</mapping>
|
||||
<mapping key="phensig">
|
||||
<constraint constraintValue="FF.W,FA.W,FA.Y" constraintType="IN" />
|
||||
<constraint constraintValue="FF.W,FA.W,FA.Y,FL.Y" constraintType="IN" />
|
||||
</mapping>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="warning" constraintType="EQUALS" />
|
||||
|
@ -62,7 +62,7 @@
|
|||
<constraint constraintValue="FFW,FFS" constraintType="IN" />
|
||||
</mapping>
|
||||
<mapping key="phensig">
|
||||
<constraint constraintValue="FF.W" constraintType="EQUALS" />
|
||||
<constraint constraintValue="FF.W,FL.Y" constraintType="IN" />
|
||||
</mapping>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="warning" constraintType="EQUALS" />
|
||||
|
@ -96,7 +96,7 @@
|
|||
<constraint constraintValue="FLW,FLS" constraintType="IN" />
|
||||
</mapping>
|
||||
<mapping key="phensig">
|
||||
<constraint constraintValue="FA.W" constraintType="EQUALS" />
|
||||
<constraint constraintValue="FA.W,FL.Y" constraintType="IN" />
|
||||
</mapping>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="warning" constraintType="EQUALS" />
|
||||
|
@ -130,7 +130,7 @@
|
|||
<constraint constraintValue="FLY,FLS" constraintType="IN" />
|
||||
</mapping>
|
||||
<mapping key="phensig">
|
||||
<constraint constraintValue="FA.Y" constraintType="EQUALS" />
|
||||
<constraint constraintValue="FA.Y,FL.Y" constraintType="IN" />
|
||||
</mapping>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="warning" constraintType="EQUALS" />
|
||||
|
@ -144,4 +144,4 @@
|
|||
</descriptor>
|
||||
</displays>
|
||||
</displayList>
|
||||
</bundle>
|
||||
</bundle>
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
<constraint constraintValue="FFW,FLW,FLY,FFS,FLS" constraintType="IN" />
|
||||
</mapping>
|
||||
<mapping key="phensig">
|
||||
<constraint constraintValue="FF.W,FA.W,FA.Y" constraintType="IN" />
|
||||
<constraint constraintValue="FF.W,FA.W,FA.Y,FL.Y" constraintType="IN" />
|
||||
</mapping>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="warning" constraintType="EQUALS" />
|
||||
|
@ -61,7 +61,7 @@
|
|||
<constraint constraintValue="FFW,FFS" constraintType="IN" />
|
||||
</mapping>
|
||||
<mapping key="phensig">
|
||||
<constraint constraintValue="FF.W" constraintType="EQUALS" />
|
||||
<constraint constraintValue="FF.W,FL.Y" constraintType="IN" />
|
||||
</mapping>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="warning" constraintType="EQUALS" />
|
||||
|
@ -95,7 +95,7 @@
|
|||
<constraint constraintValue="FLW,FLS" constraintType="IN" />
|
||||
</mapping>
|
||||
<mapping key="phensig">
|
||||
<constraint constraintValue="FA.W" constraintType="EQUALS" />
|
||||
<constraint constraintValue="FA.W,FL.Y" constraintType="IN" />
|
||||
</mapping>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="warning" constraintType="EQUALS" />
|
||||
|
@ -129,7 +129,7 @@
|
|||
<constraint constraintValue="FLY,FLS" constraintType="IN" />
|
||||
</mapping>
|
||||
<mapping key="phensig">
|
||||
<constraint constraintValue="FA.Y" constraintType="EQUALS" />
|
||||
<constraint constraintValue="FA.Y,FL.Y" constraintType="IN" />
|
||||
</mapping>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="warning" constraintType="EQUALS" />
|
||||
|
@ -143,4 +143,4 @@
|
|||
</descriptor>
|
||||
</displays>
|
||||
</displayList>
|
||||
</bundle>
|
||||
</bundle>
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
</model>
|
||||
|
||||
<model>
|
||||
<name>MPE-Mosaic</name>
|
||||
<name>MPE-Local</name>
|
||||
<center>9</center>
|
||||
<subcenter>0</subcenter>
|
||||
<grid>304</grid>
|
||||
|
@ -52,6 +52,7 @@
|
|||
</process>
|
||||
</model>
|
||||
|
||||
|
||||
<!-- END SUBCENTER 0 -->
|
||||
|
||||
<!-- SUBCENTER 105: San Juan PR WFO -->
|
||||
|
|
|
@ -44,7 +44,7 @@ import com.vividsolutions.jts.geom.Envelope;
|
|||
* Apr 15, 2014 3017 bsteffen Add new getCoverage methods to support
|
||||
* either one corner + dx/dy or two corners.
|
||||
* Jun 05, 2014 3243 bsteffen Remove deprecated lambert conformal call.
|
||||
*
|
||||
* Sep 15, 2014 DR 17303 jgerth Support for second standard latitude
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
@ -143,18 +143,20 @@ public class SatSpatialFactory {
|
|||
* @param ny
|
||||
* the number of rows of data.
|
||||
* @param lov
|
||||
* the longitude orientatition, used by
|
||||
* the longitude orientation, used by
|
||||
* {@link #PROJ_CYLIN_EQUIDISTANT}, {@link #PROJ_LAMBERT},
|
||||
* {@link #PROJ_POLAR}.
|
||||
* @param latin
|
||||
* the latitude at which the projection is tangent to the earths
|
||||
* surface, used by {@link #PROJ_CYLIN_EQUIDISTANT},
|
||||
* {@link #PROJ_LAMBERT}, {@link #PROJ_MERCATOR}.
|
||||
* @param latin2
|
||||
* the second standard latitude, used by {@link #PROJ_LAMBERT}.
|
||||
* @param la1
|
||||
* the latitude of a corner of the grid, if dy is positive this
|
||||
* is an upper corner.
|
||||
* @param lo1
|
||||
* the longitide of a corner of the grid, if dx is positive this
|
||||
* the longitude of a corner of the grid, if dx is positive this
|
||||
* is a left corner
|
||||
* @param dx
|
||||
* the distance between columns measured in CRS meters.
|
||||
|
@ -165,10 +167,10 @@ public class SatSpatialFactory {
|
|||
* @throws DecoderException
|
||||
*/
|
||||
public SatMapCoverage getCoverageSingleCorner(int crsType, int nx, int ny,
|
||||
double lov, double latin, double la1, double lo1, double dx,
|
||||
double lov, double latin, double latin2, double la1, double lo1, double dx,
|
||||
double dy) throws DecoderException {
|
||||
try {
|
||||
ProjectedCRS crs = createCRS(crsType, lov, latin, 0.0);
|
||||
ProjectedCRS crs = createCRS(crsType, lov, latin, latin2, 0.0);
|
||||
DirectPosition2D corner = new DirectPosition2D(lo1, la1);
|
||||
MathTransform fromLatLon = MapUtil.getTransformFromLatLon(crs);
|
||||
fromLatLon.transform(corner, corner);
|
||||
|
@ -195,10 +197,19 @@ public class SatSpatialFactory {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see {@link #getCoverageSingleCorner(int, int, int, double, double, double, double, double, double, double)}
|
||||
*/
|
||||
public SatMapCoverage getCoverageSingleCorner(int crsType, int nx, int ny,
|
||||
double lov, double latin, double la1, double lo1, double dx,
|
||||
double dy) throws DecoderException {
|
||||
return getCoverageSingleCorner(crsType, nx, ny, lov, latin, latin, la1, lo1, dx, dy);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Create a {@link SatMapCoverage} with an area defined by two corners. The
|
||||
* two corners must be opposite(diagnol) from eachother. They caan be either
|
||||
* two corners must be opposite (diagonal) from each other. They can be either
|
||||
* the upper left and lower right or the upper right and lower left corners.
|
||||
*
|
||||
* @param crsType
|
||||
|
@ -206,36 +217,38 @@ public class SatSpatialFactory {
|
|||
* {@link #PROJ_CYLIN_EQUIDISTANT}, {@link #PROJ_LAMBERT},
|
||||
* {@link #PROJ_MERCATOR}, {@link #PROJ_POLAR}.
|
||||
* @param lov
|
||||
* the longitude orientatition, used by
|
||||
* the longitude orientation, used by
|
||||
* {@link #PROJ_CYLIN_EQUIDISTANT}, {@link #PROJ_LAMBERT},
|
||||
* {@link #PROJ_POLAR}.
|
||||
* @param latin
|
||||
* the latitude at which the projection is tangent to the earths
|
||||
* surface, used by {@link #PROJ_CYLIN_EQUIDISTANT},
|
||||
* {@link #PROJ_LAMBERT}, {@link #PROJ_MERCATOR}.
|
||||
* @param latin2
|
||||
* the second standard latitude, used by {@link #PROJ_LAMBERT}.
|
||||
* @param la1
|
||||
* the latitude of a corner of the grid.
|
||||
* @param lo1
|
||||
* the longitide of a corner of the grid.
|
||||
* the longitude of a corner of the grid.
|
||||
* @param la2
|
||||
* the latitude of a corner of the grid., should be opposite
|
||||
* corner from la1.
|
||||
* @param lo2
|
||||
* the longitide of a corner of the grid, should be opposite
|
||||
* the longitude of a corner of the grid, should be opposite
|
||||
* corner from lo1
|
||||
* @return a {@link SatMapCoverage} matching these parameters that has been
|
||||
* loaded from or persisted to the database.
|
||||
* @throws DecoderException
|
||||
*/
|
||||
public SatMapCoverage getCoverageTwoCorners(int crsType, int nx, int ny,
|
||||
double lov, double latin, double la1, double lo1, double la2,
|
||||
double lov, double latin, double latin2, double la1, double lo1, double la2,
|
||||
double lo2) throws DecoderException {
|
||||
try {
|
||||
double cm = 0.0;
|
||||
if ((lo1 > 0.0) && (lo2 < 0.0)) {
|
||||
cm = 180.0;
|
||||
}
|
||||
ProjectedCRS crs = createCRS(crsType, lov, latin, cm);
|
||||
ProjectedCRS crs = createCRS(crsType, lov, latin, latin2, cm);
|
||||
DirectPosition2D corner1 = new DirectPosition2D(lo1, la1);
|
||||
DirectPosition2D corner2 = new DirectPosition2D(lo2, la2);
|
||||
MathTransform fromLatLon = MapUtil.getTransformFromLatLon(crs);
|
||||
|
@ -264,6 +277,15 @@ public class SatSpatialFactory {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see {@link #getCoverageTwoCorners(int, int, int, double, double, double, double, double, double, double)}
|
||||
*/
|
||||
public SatMapCoverage getCoverageTwoCorners(int crsType, int nx, int ny,
|
||||
double lov, double latin, double la1, double lo1, double la2,
|
||||
double lo2) throws DecoderException {
|
||||
return getCoverageTwoCorners(crsType, nx, ny, lov, latin, latin, la1, lo1, la2, lo2);
|
||||
}
|
||||
|
||||
/** Load or persist a {@link SatMapCoverage} */
|
||||
private synchronized SatMapCoverage checkPersisted(
|
||||
SatMapCoverage mapCoverage) {
|
||||
|
@ -296,25 +318,27 @@ public class SatSpatialFactory {
|
|||
* {@link #PROJ_CYLIN_EQUIDISTANT}, {@link #PROJ_LAMBERT},
|
||||
* {@link #PROJ_MERCATOR}, {@link #PROJ_POLAR}. * @param lov
|
||||
* @param lov
|
||||
* the longitude orientatition, used by
|
||||
* the longitude orientation, used by
|
||||
* {@link #PROJ_CYLIN_EQUIDISTANT}, {@link #PROJ_LAMBERT},
|
||||
* {@link #PROJ_POLAR}.
|
||||
* @param latin
|
||||
* the latitude at which the projection is tangent to the earths
|
||||
* surface, used by {@link #PROJ_CYLIN_EQUIDISTANT},
|
||||
* {@link #PROJ_LAMBERT}, {@link #PROJ_MERCATOR}.
|
||||
* @param latin2
|
||||
* the second standard latitude, used by {@link #PROJ_LAMBERT}.
|
||||
* @param cm
|
||||
* the central meridian of the projection, only used by
|
||||
* {@link #PROJ_MERCATOR}.
|
||||
* @return
|
||||
*/
|
||||
private static ProjectedCRS createCRS(int crsType, double lov,
|
||||
double latin, double cm) {
|
||||
double latin, double latin2, double cm) {
|
||||
switch (crsType) {
|
||||
case PROJ_MERCATOR:
|
||||
return createMercatorCrs(latin, cm);
|
||||
case PROJ_LAMBERT:
|
||||
return createLambertCrs(latin, lov);
|
||||
return createLambertCrs(latin, latin2, lov);
|
||||
case PROJ_CYLIN_EQUIDISTANT:
|
||||
return createEqCylCrs(latin, lov);
|
||||
default:
|
||||
|
@ -327,9 +351,9 @@ public class SatSpatialFactory {
|
|||
MapUtil.AWIPS_EARTH_RADIUS, latin, cm);
|
||||
}
|
||||
|
||||
private static ProjectedCRS createLambertCrs(double latin, double lov) {
|
||||
private static ProjectedCRS createLambertCrs(double latin, double latin2, double lov) {
|
||||
return MapUtil.constructLambertConformal(MapUtil.AWIPS_EARTH_RADIUS,
|
||||
MapUtil.AWIPS_EARTH_RADIUS, latin, latin, lov, latin);
|
||||
MapUtil.AWIPS_EARTH_RADIUS, latin, latin2, lov, latin);
|
||||
}
|
||||
|
||||
private static ProjectedCRS createEqCylCrs(double latin, double lov) {
|
||||
|
|
|
@ -2242,7 +2242,7 @@
|
|||
</styleRule>
|
||||
<!--
|
||||
* NBE, cCin
|
||||
J/kg | 1 | 0 | 1 | 450 | |,x | 29 | 0 | 100
|
||||
J/kg | 1 | 0 | -1000 | -1 | |,x | 29 | 0 | 100
|
||||
-->
|
||||
<styleRule>
|
||||
<paramLevelMatches>
|
||||
|
@ -2253,8 +2253,8 @@
|
|||
<!-- filterLow="true" -->
|
||||
<displayUnits>J/kg</displayUnits>
|
||||
<range scale="LINEAR">
|
||||
<minValue>1</minValue>
|
||||
<maxValue>450</maxValue>
|
||||
<minValue>-1000</minValue>
|
||||
<maxValue>-1</maxValue>
|
||||
</range>
|
||||
<defaultColormap>Grid/gridded data</defaultColormap>
|
||||
<colorbarLabeling>
|
||||
|
|
|
@ -416,6 +416,7 @@
|
|||
<entry displayValue='20' pixelValue='200' />
|
||||
<entry displayValue='40' pixelValue='227' />
|
||||
<entry displayValue='60' pixelValue='245' />
|
||||
<entry displayValue='80' pixelValue='254' label="" />
|
||||
</dataMapping>
|
||||
</imageStyle>
|
||||
</styleRule>
|
||||
|
@ -672,4 +673,4 @@
|
|||
</imageStyle>
|
||||
</styleRule>
|
||||
|
||||
</styleRuleset>
|
||||
</styleRuleset>
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -776,8 +776,11 @@ void main_mpe_fieldgen_for_calls_from_editor(int num_args, char ** args)
|
|||
break;
|
||||
|
||||
case lsatpre :
|
||||
ptrMPEParams->polarizationType = SinglePol ;
|
||||
runLSatpre ( ptrRunDate,
|
||||
sprintf( message , "STATUS: BEFORE calling MPEFieldGen_runLSatpre in main \n") ;
|
||||
printMessage( message, logFile );
|
||||
|
||||
ptrMPEParams->polarizationType = SinglePol ;
|
||||
MPEFieldGen_runLSatpre ( ptrRunDate,
|
||||
ptrGeoData,
|
||||
ptrMPEParams,
|
||||
gageSize, iug, ivg, zg,
|
||||
|
|
|
@ -61,6 +61,7 @@ import com.raytheon.uf.edex.decodertools.time.TimeTools;
|
|||
* IDataRecord required by the SatelliteDao
|
||||
* Aug 30, 2013 2298 rjpeter Make getPluginName abstract
|
||||
* Apr 15, 2014 3017 bsteffen Call new methods in SatSpatialFactory
|
||||
* Sep 11, 2014 DR 17303 jgerth Support for second standard latitude
|
||||
* </pre>
|
||||
*
|
||||
* @author tk
|
||||
|
@ -116,26 +117,26 @@ public class RegionalSatDecoder extends AbstractDecoder {
|
|||
netCdfFile = NetcdfFile.openInMemory(filename, data);
|
||||
|
||||
// set the source; Alaska Region
|
||||
if (source == null) {
|
||||
source = "Source"; // use to look up source value; default of
|
||||
// Source
|
||||
String gaSourceStr = "Unknown";
|
||||
Attribute gaSource = netCdfFile.findGlobalAttribute("source");
|
||||
if (gaSource != null) {
|
||||
gaSourceStr = gaSource.getStringValue().trim();
|
||||
}
|
||||
record.setSource(getSource(source)); // lookup source value
|
||||
record.setSource(getSource(gaSourceStr).replace("/", " ")); // lookup source value
|
||||
|
||||
// set the creating entity
|
||||
Attribute satName = netCdfFile.findGlobalAttribute("satelliteName");
|
||||
|
||||
String entity = null; // "HRPT"; "GOESR-PG"; "Blended2";
|
||||
if (satName != null) {
|
||||
entity = satName.getStringValue();
|
||||
entity = satName.getStringValue().trim();
|
||||
}
|
||||
|
||||
if (entity != null) {
|
||||
String parsed = getCreatingEntity(entity);
|
||||
if ((parsed != null) && (parsed.length() > 0)) {
|
||||
record.setCreatingEntity(parsed);
|
||||
record.setCreatingEntity(parsed.replace("/", " "));
|
||||
} else {
|
||||
record.setCreatingEntity(entity);
|
||||
record.setCreatingEntity(entity.replace("/", " "));
|
||||
}
|
||||
} else {
|
||||
record.setCreatingEntity("Unknown");
|
||||
|
@ -156,9 +157,9 @@ public class RegionalSatDecoder extends AbstractDecoder {
|
|||
pev = getPhysicalElement(entity, channel);
|
||||
String element = pev.name;
|
||||
if (pev.name != null) {
|
||||
record.setPhysicalElement(element);
|
||||
record.setPhysicalElement(element.replace("/", " "));
|
||||
} else {
|
||||
record.setPhysicalElement(channel);
|
||||
record.setPhysicalElement(channel.replace("/", " "));
|
||||
}
|
||||
} else {
|
||||
record.setPhysicalElement("Imager Visible");
|
||||
|
@ -181,10 +182,10 @@ public class RegionalSatDecoder extends AbstractDecoder {
|
|||
|
||||
// read the valid time in seconds and store the time in milliseconds
|
||||
long time = netCdfFile.findVariable("validTime").readScalarLong(); // time
|
||||
// in
|
||||
// seconds
|
||||
// in
|
||||
// seconds
|
||||
calendar.setTimeInMillis(time * 1000); // need to convert seconds to
|
||||
// milliseconds
|
||||
// milliseconds
|
||||
|
||||
/*
|
||||
* Date date = new Date(); // used for setting the test data time
|
||||
|
@ -199,9 +200,10 @@ public class RegionalSatDecoder extends AbstractDecoder {
|
|||
.getNumericValue().floatValue();
|
||||
|
||||
int mapProjection = SatSpatialFactory.PROJ_POLAR; // STEREOGRAPHIC
|
||||
// projection
|
||||
// default
|
||||
// projection
|
||||
// default
|
||||
float latin = 0.0f; // set to zero for Stereographic projections
|
||||
Attribute rot = netCdfFile.findGlobalAttribute("rotation");
|
||||
float rotation = 0.0f;
|
||||
|
||||
// read the projection
|
||||
|
@ -214,6 +216,9 @@ public class RegionalSatDecoder extends AbstractDecoder {
|
|||
if (projection.equalsIgnoreCase("LAMBERT")
|
||||
|| projection.equalsIgnoreCase("LAMBERT_CONFORMAL")) {
|
||||
mapProjection = SatSpatialFactory.PROJ_LAMBERT;
|
||||
if (rot != null) {
|
||||
rotation = rot.getNumericValue().floatValue();
|
||||
}
|
||||
} else if (projection.equalsIgnoreCase("MERCATOR")) {
|
||||
mapProjection = SatSpatialFactory.PROJ_MERCATOR;
|
||||
} else if (projection
|
||||
|
@ -222,7 +227,6 @@ public class RegionalSatDecoder extends AbstractDecoder {
|
|||
}
|
||||
|
||||
} else {
|
||||
Attribute rot = netCdfFile.findGlobalAttribute("rotation");
|
||||
if (rot != null) {
|
||||
rotation = rot.getNumericValue().floatValue();
|
||||
// STEREOGRAPHIC projection add rotation to lov
|
||||
|
@ -274,9 +278,15 @@ public class RegionalSatDecoder extends AbstractDecoder {
|
|||
"Unable to decode Satellite: Encountered Unknown projection");
|
||||
} // end of if map projection block
|
||||
|
||||
SatMapCoverage mapCoverage = SatSpatialFactory.getInstance()
|
||||
.getCoverageTwoCorners(mapProjection, nx, ny, lov, latin,
|
||||
la1, lo1, la2, lo2);
|
||||
SatMapCoverage mapCoverage;
|
||||
if (mapProjection == SatSpatialFactory.PROJ_LAMBERT && rot != null && rotation != latin)
|
||||
mapCoverage = SatSpatialFactory.getInstance()
|
||||
.getCoverageTwoCorners(mapProjection, nx, ny, lov, latin, rotation,
|
||||
la1, lo1, la2, lo2);
|
||||
else
|
||||
mapCoverage = SatSpatialFactory.getInstance()
|
||||
.getCoverageTwoCorners(mapProjection, nx, ny, lov, latin,
|
||||
la1, lo1, la2, lo2);
|
||||
|
||||
record.setTraceId(traceId);
|
||||
record.setCoverage(mapCoverage);
|
||||
|
@ -357,4 +367,4 @@ public class RegionalSatDecoder extends AbstractDecoder {
|
|||
this.filename = file;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue