Issue #1847 Merged NPP NUCAPS changes from omaha_13.2.1-NPP into development.
Change-Id: I37c3135794c991e2405d556823a22768dd491f00 Conflicts: cave/com.raytheon.uf.viz.npp.viirs/src/com/raytheon/uf/viz/npp/viirs/rsc/VIIRSDataCallback.java Former-commit-id: ed981dc2487d169a502f7396520899fc55ff3299
This commit is contained in:
parent
15c4f53172
commit
b042037a67
89 changed files with 2302 additions and 818 deletions
|
@ -5,50 +5,26 @@ Bundle-SymbolicName: com.raytheon.uf.viz.npp.crimss;singleton:=true
|
|||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-Activator: com.raytheon.uf.viz.npp.crimss.Activator
|
||||
Bundle-Vendor: RAYTHEON
|
||||
Eclipse-BuddyPolicy: registered, ext, global
|
||||
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization
|
||||
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization
|
||||
Require-Bundle: org.eclipse.core.runtime,
|
||||
org.eclipse.ui;bundle-version="3.6.1",
|
||||
com.raytheon.uf.viz.core;bundle-version="1.12.1174",
|
||||
com.raytheon.viz.ui;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.dataplugin.npp.crimss;bundle-version="1.0.0",
|
||||
com.raytheon.uf.common.dataplugin;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.time;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.serialization;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.geospatial;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.viz.npp;bundle-version="1.0.0",
|
||||
com.raytheon.uf.viz.npp.sounding;bundle-version="1.0.0",
|
||||
com.raytheon.uf.viz.points;bundle-version="1.0.0",
|
||||
gov.noaa.nws.ncep.ui.nsharp;bundle-version="1.0.0"
|
||||
com.raytheon.uf.common.pointdata;bundle-version="1.12.1174",
|
||||
com.raytheon.viz.core.graphing;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.viz.d2d.nsharp;bundle-version="1.0.0",
|
||||
gov.noaa.nws.ncep.ui.nsharp;bundle-version="1.0.0",
|
||||
com.raytheon.uf.viz.productbrowser;bundle-version="1.12.1174",
|
||||
javax.measure;bundle-version="1.0.0"
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Import-Package: com.raytheon.uf.common.dataplugin,
|
||||
com.raytheon.uf.common.dataplugin.npp.crimss,
|
||||
com.raytheon.uf.common.dataquery.requests,
|
||||
com.raytheon.uf.common.dataquery.responses,
|
||||
com.raytheon.uf.common.geospatial,
|
||||
com.raytheon.uf.common.pointdata,
|
||||
com.raytheon.uf.common.serialization,
|
||||
com.raytheon.uf.common.serialization.comm,
|
||||
com.raytheon.uf.common.status,
|
||||
com.raytheon.uf.common.time,
|
||||
com.raytheon.uf.viz.core,
|
||||
com.raytheon.uf.viz.core.drawables,
|
||||
com.raytheon.uf.viz.core.exception,
|
||||
com.raytheon.uf.viz.core.map,
|
||||
com.raytheon.uf.viz.core.maps.display,
|
||||
com.raytheon.uf.viz.core.procedures,
|
||||
com.raytheon.uf.viz.core.requests,
|
||||
com.raytheon.uf.viz.core.rsc,
|
||||
com.raytheon.uf.viz.core.rsc.capabilities,
|
||||
com.raytheon.uf.viz.d2d.core,
|
||||
com.raytheon.uf.viz.d2d.core.map,
|
||||
com.raytheon.uf.viz.d2d.nsharp.display,
|
||||
com.raytheon.uf.viz.d2d.nsharp.rsc,
|
||||
com.raytheon.uf.viz.productbrowser,
|
||||
com.raytheon.viz.core.graphing,
|
||||
com.raytheon.viz.pointdata,
|
||||
com.raytheon.viz.ui,
|
||||
com.raytheon.viz.ui.editor,
|
||||
com.raytheon.viz.ui.input,
|
||||
com.vividsolutions.jts.geom,
|
||||
gov.noaa.nws.ncep.edex.common.sounding,
|
||||
gov.noaa.nws.ncep.ui.nsharp,
|
||||
gov.noaa.nws.ncep.ui.nsharp.natives,
|
||||
javax.measure.converter,
|
||||
javax.measure.unit,
|
||||
org.eclipse.swt.graphics,
|
||||
org.eclipse.swt.widgets
|
||||
Export-Package: com.raytheon.uf.viz.npp.crimss,
|
||||
com.raytheon.uf.viz.npp.crimss.map
|
||||
Export-Package: com.raytheon.uf.viz.npp.crimss
|
||||
Import-Package: gov.noaa.nws.ncep.edex.common.sounding
|
||||
|
|
|
@ -1,2 +1 @@
|
|||
com.raytheon.uf.viz.npp.crimss.CrimssNSharpResourceData
|
||||
com.raytheon.uf.viz.npp.crimss.map.CrimssMapResourceData
|
||||
com.raytheon.uf.viz.npp.crimss.CrimssNSharpResourceData
|
|
@ -19,10 +19,10 @@
|
|||
further_licensing_information.
|
||||
-->
|
||||
<menuTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<contribute xsi:type="separator" id="beforeCRIMSS" visible="false"/>
|
||||
<contribute xsi:type="titleItem" titleText="------ CrIMSS ------" id="SoundingLine"/>
|
||||
<contribute xsi:type="bundleItem" file="bundles/crimssAvailability.xml"
|
||||
menuText="Sounding Availability" id="CrIMSSAvailability">
|
||||
<contribute xsi:type="bundleItem" file="bundles/npp/soundingAvailability.xml"
|
||||
menuText="CrIMSS Sounding Availability" id="CrIMSSAvailability">
|
||||
<substitute key="name" value="CrIMSS"/>
|
||||
<substitute key="pluginName" value="crimss"/>
|
||||
<substitute key="soundingResourceData" value="com.raytheon.uf.viz.npp.crimss.CrimssNSharpResourceData"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="separator" id="afterCRIMSS" visible="false"/>
|
||||
</menuTemplate>
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
<menuContributionFile>
|
||||
<include installTo="menu:NPPProducts?after=Soundings" fileName="menus/npp/crimss/crimssMenuItems.xml"/>
|
||||
</menuContributionFile>
|
|
@ -44,7 +44,7 @@ import com.raytheon.uf.viz.core.rsc.LoadProperties;
|
|||
import com.raytheon.uf.viz.core.rsc.ResourceType;
|
||||
import com.raytheon.uf.viz.d2d.nsharp.display.D2DNSharpDescriptor;
|
||||
import com.raytheon.uf.viz.d2d.nsharp.display.D2DNSharpDisplay;
|
||||
import com.raytheon.uf.viz.npp.crimss.map.CrimssMapResourceData;
|
||||
import com.raytheon.uf.viz.npp.sounding.rsc.NPPSoundingMapResourceData;
|
||||
import com.raytheon.uf.viz.points.PointsDataManager;
|
||||
import com.raytheon.uf.viz.productbrowser.AbstractRequestableProductBrowserDataDefinition;
|
||||
import com.raytheon.uf.viz.productbrowser.ProductBrowserLabel;
|
||||
|
@ -229,7 +229,10 @@ public class CrimssDataDefinition
|
|||
for (int i = 0; i < selection.length; i++) {
|
||||
if (order[i].equals(POINT)) {
|
||||
if (selection[i].equals(MAP_RESOURCE)) {
|
||||
resourceData = new CrimssMapResourceData();
|
||||
NPPSoundingMapResourceData nsmrd = new NPPSoundingMapResourceData();
|
||||
nsmrd.setNsharpResourceData(CrimssNSharpResourceData.class);
|
||||
nsmrd.setResourceName("CrIMSS");
|
||||
resourceData = nsmrd;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,15 +19,10 @@
|
|||
**/
|
||||
package com.raytheon.uf.viz.npp.crimss;
|
||||
|
||||
import gov.noaa.nws.ncep.edex.common.sounding.NcSoundingCube;
|
||||
import gov.noaa.nws.ncep.edex.common.sounding.NcSoundingCube.QueryStatus;
|
||||
import gov.noaa.nws.ncep.edex.common.sounding.NcSoundingLayer;
|
||||
import gov.noaa.nws.ncep.edex.common.sounding.NcSoundingProfile;
|
||||
import gov.noaa.nws.ncep.ui.nsharp.NsharpStationInfo;
|
||||
import gov.noaa.nws.ncep.ui.nsharp.natives.NsharpDataHandling;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
@ -39,19 +34,12 @@ import javax.xml.bind.annotation.XmlAccessType;
|
|||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
|
||||
import com.raytheon.uf.common.dataplugin.npp.crimss.CrimssRecord;
|
||||
import com.raytheon.uf.common.pointdata.PointDataContainer;
|
||||
import com.raytheon.uf.common.pointdata.PointDataView;
|
||||
import com.raytheon.uf.common.status.IUFStatusHandler;
|
||||
import com.raytheon.uf.common.status.UFStatus;
|
||||
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||
import com.raytheon.uf.common.time.DataTime;
|
||||
import com.raytheon.uf.viz.core.exception.VizException;
|
||||
import com.raytheon.uf.viz.d2d.nsharp.rsc.D2DNSharpResourceData;
|
||||
import com.raytheon.viz.pointdata.PointDataRequest;
|
||||
import com.vividsolutions.jts.geom.Coordinate;
|
||||
import com.raytheon.uf.viz.npp.sounding.rsc.AbstractNPPNSharpResourceData;
|
||||
|
||||
/**
|
||||
* TODO Add Description
|
||||
* NSharp resource data capable of loading CrIMSS data
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
|
@ -68,9 +56,7 @@ import com.vividsolutions.jts.geom.Coordinate;
|
|||
*/
|
||||
|
||||
@XmlAccessorType(XmlAccessType.NONE)
|
||||
public class CrimssNSharpResourceData extends D2DNSharpResourceData {
|
||||
private static final transient IUFStatusHandler statusHandler = UFStatus
|
||||
.getHandler(CrimssNSharpResourceData.class);
|
||||
public class CrimssNSharpResourceData extends AbstractNPPNSharpResourceData {
|
||||
|
||||
private static final String PLUGIN = "crimss";
|
||||
|
||||
|
@ -80,95 +66,28 @@ public class CrimssNSharpResourceData extends D2DNSharpResourceData {
|
|||
CrimssRecord.PDV_H2O, CrimssRecord.PDV_P_H2O,
|
||||
CrimssRecord.PDV_TEMPERATURE, CrimssRecord.PDV_P_TEMPERATURE };
|
||||
|
||||
private static final Unit<?> PRESSURE_UNIT = SI.HECTO(SI.PASCAL);
|
||||
|
||||
private static final Unit<?> HEIGHT_UNIT = SI.METER;
|
||||
|
||||
private static final Unit<?> TEMPERATURE_UNIT = SI.CELSIUS;
|
||||
|
||||
private static final Unit<?> H2O_UNIT = SI.GRAM.divide(SI.KILOGRAM);
|
||||
|
||||
private static final Unit<?> DEWPOINT_UNIT = SI.CELSIUS;
|
||||
|
||||
public CrimssNSharpResourceData() {
|
||||
super("CRiMSS");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void preparePointInfo() throws VizException {
|
||||
// everything should already be set
|
||||
return;
|
||||
super("CrIMSS", PLUGIN, PARAMETERS);
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.uf.viz.d2d.nsharp.rsc.D2DNSharpResourceData#getSoundingCube
|
||||
* (gov.noaa.nws.ncep.ui.nsharp.NsharpStationInfo)
|
||||
* @see com.raytheon.uf.viz.npp.sounding.rsc.AbstractNPPNSharpResourceData#
|
||||
* getSoundingLayers(com.raytheon.uf.common.pointdata.PointDataView)
|
||||
*/
|
||||
@Override
|
||||
protected NcSoundingCube getSoundingCube(NsharpStationInfo stnInfo) {
|
||||
DataTime time = new DataTime(stnInfo.getReftime());
|
||||
try {
|
||||
PointDataContainer pdc = PointDataRequest
|
||||
.requestPointDataAllLevels(time, PLUGIN, PARAMETERS, null,
|
||||
getMetadataMap());
|
||||
PointDataView pdv = null;
|
||||
Coordinate closest = null;
|
||||
for (int i = 0; i < pdc.getCurrentSz(); i++) {
|
||||
PointDataView testPdv = pdc.readRandom(i);
|
||||
Coordinate p = new Coordinate(
|
||||
testPdv.getFloat(CrimssRecord.LONGITUDE),
|
||||
testPdv.getFloat(CrimssRecord.LATITUDE));
|
||||
if (closest == null
|
||||
|| coordinate.distance(p) < coordinate
|
||||
.distance(closest)) {
|
||||
pdv = testPdv;
|
||||
closest = p;
|
||||
}
|
||||
}
|
||||
if (pdv == null) {
|
||||
return null;
|
||||
}
|
||||
List<NcSoundingLayer> layers = new ArrayList<NcSoundingLayer>();
|
||||
layers.add(getSurfacePressureLayer(pdv));
|
||||
layers.addAll(getHeightLayers(pdv));
|
||||
layers.addAll(getTemperatureLayers(pdv));
|
||||
layers.addAll(getDewpointLayers(pdv));
|
||||
Collections.sort(layers,
|
||||
NsharpDataHandling.reversePressureHeightWindComparator());
|
||||
mergeDuplicates(layers);
|
||||
// We have to interpolate everything so that height,temperature, and
|
||||
// dewpoint are available on all levels.
|
||||
interpolateHeight(layers);
|
||||
interpolateTemperature(layers);
|
||||
interpolateDewpoint(layers);
|
||||
Iterator<NcSoundingLayer> iter = layers.iterator();
|
||||
while (iter.hasNext()) {
|
||||
NcSoundingLayer layer = iter.next();
|
||||
if (layer.getPressure() < 0) {
|
||||
iter.remove();
|
||||
} else if (layer.getGeoHeight() < 0) {
|
||||
iter.remove();
|
||||
|
||||
} else if (layer.getTemperature() < -300) {
|
||||
iter.remove();
|
||||
|
||||
} else if (layer.getDewpoint() < -300) {
|
||||
iter.remove();
|
||||
}
|
||||
}
|
||||
NcSoundingProfile profile = new NcSoundingProfile();
|
||||
profile.setSoundingLyLst(layers);
|
||||
// TODO populate other fields in profile
|
||||
NcSoundingCube cube = new NcSoundingCube(Arrays.asList(profile));
|
||||
cube.setRtnStatus(QueryStatus.OK);
|
||||
return cube;
|
||||
} catch (VizException e) {
|
||||
statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e);
|
||||
}
|
||||
return null;
|
||||
protected List<NcSoundingLayer> getSoundingLayers(PointDataView pdv)
|
||||
throws VizException {
|
||||
List<NcSoundingLayer> layers = new ArrayList<NcSoundingLayer>();
|
||||
layers.add(getSurfacePressureLayer(pdv));
|
||||
layers.addAll(getHeightLayers(pdv));
|
||||
layers.addAll(getTemperatureLayers(pdv));
|
||||
layers.addAll(getDewpointLayers(pdv));
|
||||
Collections.sort(layers,
|
||||
NsharpDataHandling.reversePressureHeightWindComparator());
|
||||
mergeDuplicates(layers);
|
||||
return layers;
|
||||
}
|
||||
|
||||
private static NcSoundingLayer getSurfacePressureLayer(PointDataView pdv) {
|
||||
|
@ -278,7 +197,6 @@ public class CrimssNSharpResourceData extends D2DNSharpResourceData {
|
|||
float pressure = pressureArray[j].floatValue();
|
||||
pressure = (float) pressureConverter.convert(pressure);
|
||||
float h2o = h2oArray[j].floatValue();
|
||||
h2o = (float) h2oConverter.convert(h2o);
|
||||
float dpt = convertH2OtoDewpoint(h2o, pressure);
|
||||
dpt = (float) dewpointConverter.convert(dpt);
|
||||
NcSoundingLayer layer = new NcSoundingLayer(pressure,
|
||||
|
@ -292,13 +210,6 @@ public class CrimssNSharpResourceData extends D2DNSharpResourceData {
|
|||
return layers;
|
||||
}
|
||||
|
||||
// convert h2o in g/kg and pressure in hPa to dewpoint in kelvin.
|
||||
private static float convertH2OtoDewpoint(float h2o, float pressure) {
|
||||
double eee = pressure * h2o / (622.0 + 0.378 * h2o);
|
||||
double b = 26.66082 - Math.log(eee);
|
||||
return (float) ((b - Math.sqrt(b * b - 223.1986)) / 0.0182758048);
|
||||
}
|
||||
|
||||
private static void mergeDuplicates(List<NcSoundingLayer> layers) {
|
||||
// Merge any soundings at same pressure.
|
||||
Iterator<NcSoundingLayer> iter = layers.iterator();
|
||||
|
@ -322,80 +233,4 @@ public class CrimssNSharpResourceData extends D2DNSharpResourceData {
|
|||
}
|
||||
}
|
||||
|
||||
private static void interpolateHeight(List<NcSoundingLayer> layers) {
|
||||
int belowIndex = -1;
|
||||
for (int i = 0; i < layers.size(); i++) {
|
||||
NcSoundingLayer layerAbove = layers.get(i);
|
||||
if (layerAbove.getGeoHeight() < 0) {
|
||||
continue;
|
||||
}
|
||||
if (belowIndex == -1) {
|
||||
belowIndex = i;
|
||||
continue;
|
||||
}
|
||||
NcSoundingLayer layerBelow = layers.get(belowIndex);
|
||||
double diff = layerAbove.getGeoHeight() - layerBelow.getGeoHeight();
|
||||
double pchg1 = Math.log(layerBelow.getPressure()
|
||||
/ layerAbove.getPressure());
|
||||
for (int j = belowIndex + 1; j < i; j += 1) {
|
||||
NcSoundingLayer layer = layers.get(j);
|
||||
double pchg2 = Math.log(layerBelow.getPressure()
|
||||
/ layer.getPressure());
|
||||
layer.setGeoHeight((float) (layerBelow.getGeoHeight() + ((pchg2 / pchg1) * diff)));
|
||||
}
|
||||
belowIndex = i;
|
||||
}
|
||||
}
|
||||
|
||||
private static void interpolateTemperature(List<NcSoundingLayer> layers) {
|
||||
int belowIndex = -1;
|
||||
for (int i = 0; i < layers.size(); i++) {
|
||||
NcSoundingLayer layerAbove = layers.get(i);
|
||||
if (layerAbove.getTemperature() < -300) {
|
||||
continue;
|
||||
}
|
||||
if (belowIndex == -1) {
|
||||
belowIndex = i;
|
||||
continue;
|
||||
}
|
||||
NcSoundingLayer layerBelow = layers.get(belowIndex);
|
||||
double diff = layerAbove.getTemperature()
|
||||
- layerBelow.getTemperature();
|
||||
double pchg1 = Math.log(layerBelow.getPressure()
|
||||
/ layerAbove.getPressure());
|
||||
for (int j = belowIndex + 1; j < i; j += 1) {
|
||||
NcSoundingLayer layer = layers.get(j);
|
||||
double pchg2 = Math.log(layerBelow.getPressure()
|
||||
/ layer.getPressure());
|
||||
layer.setTemperature((float) (layerBelow.getTemperature() + ((pchg2 / pchg1) * diff)));
|
||||
}
|
||||
belowIndex = i;
|
||||
}
|
||||
}
|
||||
|
||||
private static void interpolateDewpoint(List<NcSoundingLayer> layers) {
|
||||
int belowIndex = -1;
|
||||
for (int i = 0; i < layers.size(); i++) {
|
||||
NcSoundingLayer layerAbove = layers.get(i);
|
||||
if (layerAbove.getDewpoint() < -300) {
|
||||
continue;
|
||||
}
|
||||
if (belowIndex == -1) {
|
||||
belowIndex = i;
|
||||
continue;
|
||||
}
|
||||
NcSoundingLayer layerBelow = layers.get(belowIndex);
|
||||
double diff = layerAbove.getDewpoint() - layerBelow.getDewpoint();
|
||||
double pchg1 = Math.log(layerBelow.getPressure()
|
||||
/ layerAbove.getPressure());
|
||||
for (int j = belowIndex + 1; j < i; j += 1) {
|
||||
NcSoundingLayer layer = layers.get(j);
|
||||
double pchg2 = Math.log(layerBelow.getPressure()
|
||||
/ layer.getPressure());
|
||||
layer.setDewpoint((float) (layerBelow.getDewpoint() + ((pchg2 / pchg1) * diff)));
|
||||
}
|
||||
belowIndex = i;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,65 +0,0 @@
|
|||
/**
|
||||
* 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.uf.viz.npp.crimss.map;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
|
||||
import com.raytheon.uf.common.dataplugin.PluginDataObject;
|
||||
import com.raytheon.uf.common.dataplugin.npp.crimss.CrimssRecord;
|
||||
import com.raytheon.uf.viz.core.exception.VizException;
|
||||
import com.raytheon.uf.viz.core.rsc.AbstractRequestableResourceData;
|
||||
import com.raytheon.uf.viz.core.rsc.AbstractVizResource;
|
||||
import com.raytheon.uf.viz.core.rsc.LoadProperties;
|
||||
|
||||
/**
|
||||
* TODO Add Description
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Dec 7, 2011 bsteffen Initial creation
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author bsteffen
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
@XmlAccessorType(XmlAccessType.NONE)
|
||||
public class CrimssMapResourceData extends AbstractRequestableResourceData {
|
||||
|
||||
@Override
|
||||
protected AbstractVizResource<?, ?> constructResource(
|
||||
LoadProperties loadProperties, PluginDataObject[] objects)
|
||||
throws VizException {
|
||||
CrimssMapResource resource = new CrimssMapResource(this, loadProperties);
|
||||
for (PluginDataObject pdo : objects) {
|
||||
if (pdo instanceof CrimssRecord) {
|
||||
resource.addRecord((CrimssRecord) pdo);
|
||||
}
|
||||
}
|
||||
return resource;
|
||||
}
|
||||
|
||||
}
|
|
@ -38,14 +38,33 @@
|
|||
version="0.0.0"/>
|
||||
|
||||
<plugin
|
||||
id="com.raytheon.uf.common.dataplugin.npp.crimss"
|
||||
id="com.raytheon.uf.common.dataplugin.npp.sounding"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="com.raytheon.uf.viz.npp.crimss"
|
||||
id="com.raytheon.uf.viz.npp"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"/>
|
||||
|
||||
<plugin
|
||||
id="com.raytheon.uf.viz.npp.sounding"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"/>
|
||||
|
||||
<plugin
|
||||
id="com.raytheon.uf.common.dataplugin.npp.nucaps"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="com.raytheon.uf.viz.npp.nucaps"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"/>
|
||||
|
|
7
cave/com.raytheon.uf.viz.npp.nucaps/.classpath
Normal file
7
cave/com.raytheon.uf.viz.npp.nucaps/.classpath
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
28
cave/com.raytheon.uf.viz.npp.nucaps/.project
Normal file
28
cave/com.raytheon.uf.viz.npp.nucaps/.project
Normal file
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>com.raytheon.uf.viz.npp.nucaps</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.PluginNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -0,0 +1,8 @@
|
|||
#Thu Jan 17 15:46:54 CST 2013
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
||||
org.eclipse.jdt.core.compiler.compliance=1.6
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.source=1.6
|
26
cave/com.raytheon.uf.viz.npp.nucaps/META-INF/MANIFEST.MF
Normal file
26
cave/com.raytheon.uf.viz.npp.nucaps/META-INF/MANIFEST.MF
Normal file
|
@ -0,0 +1,26 @@
|
|||
Manifest-Version: 1.0
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: NUCAPS Viz Plugin
|
||||
Bundle-SymbolicName: com.raytheon.uf.viz.npp.nucaps
|
||||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-Activator: com.raytheon.uf.viz.npp.nucaps.Activator
|
||||
Bundle-Vendor: RAYTHEON
|
||||
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization
|
||||
Require-Bundle: org.eclipse.core.runtime,
|
||||
com.raytheon.uf.viz.core;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.dataplugin.npp.nucaps;bundle-version="1.0.0",
|
||||
com.raytheon.uf.common.dataplugin;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.time;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.serialization;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.geospatial;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.viz.npp;bundle-version="1.0.0",
|
||||
com.raytheon.uf.viz.npp.sounding;bundle-version="1.0.0",
|
||||
com.raytheon.viz.pointdata;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.pointdata;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.viz.d2d.nsharp;bundle-version="1.0.0",
|
||||
gov.noaa.nws.ncep.ui.nsharp;bundle-version="1.0.0",
|
||||
javax.measure;bundle-version="1.0.0",
|
||||
meteolib.jni;bundle-version="1.0.0"
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Import-Package: gov.noaa.nws.ncep.edex.common.sounding
|
|
@ -0,0 +1 @@
|
|||
com.raytheon.uf.viz.npp.nucaps.NucapsNSharpResourceData
|
5
cave/com.raytheon.uf.viz.npp.nucaps/build.properties
Normal file
5
cave/com.raytheon.uf.viz.npp.nucaps/build.properties
Normal file
|
@ -0,0 +1,5 @@
|
|||
source.. = src/
|
||||
output.. = bin/
|
||||
bin.includes = META-INF/,\
|
||||
.,\
|
||||
localization/
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
<menuContributionFile>
|
||||
<include installTo="menu:NPPProducts?after=Soundings" fileName="menus/npp/nucaps/nucapsMenuItems.xml"/>
|
||||
</menuContributionFile>
|
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
<menuTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<contribute xsi:type="bundleItem" file="bundles/npp/soundingAvailability.xml"
|
||||
menuText="NUCAPS Sounding Availability" id="NUCAPSAvailability">
|
||||
<substitute key="name" value="NUCAPS"/>
|
||||
<substitute key="pluginName" value="nucaps"/>
|
||||
<substitute key="soundingResourceData" value="com.raytheon.uf.viz.npp.nucaps.NucapsNSharpResourceData"/>
|
||||
</contribute>
|
||||
</menuTemplate>
|
|
@ -0,0 +1,30 @@
|
|||
package com.raytheon.uf.viz.npp.nucaps;
|
||||
|
||||
import org.osgi.framework.BundleActivator;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
public class Activator implements BundleActivator {
|
||||
|
||||
private static BundleContext context;
|
||||
|
||||
static BundleContext getContext() {
|
||||
return context;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void start(BundleContext bundleContext) throws Exception {
|
||||
Activator.context = bundleContext;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void stop(BundleContext bundleContext) throws Exception {
|
||||
Activator.context = null;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,141 @@
|
|||
/**
|
||||
* 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.uf.viz.npp.nucaps;
|
||||
|
||||
import gov.noaa.nws.ncep.edex.common.sounding.NcSoundingLayer;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.measure.converter.UnitConverter;
|
||||
import javax.measure.unit.SI;
|
||||
import javax.measure.unit.Unit;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
|
||||
import com.raytheon.edex.meteolibrary.Meteolibrary;
|
||||
import com.raytheon.uf.common.dataplugin.npp.nucaps.NucapsRecord;
|
||||
import com.raytheon.uf.common.pointdata.PointDataView;
|
||||
import com.raytheon.uf.viz.core.exception.VizException;
|
||||
import com.raytheon.uf.viz.npp.sounding.rsc.AbstractNPPNSharpResourceData;
|
||||
|
||||
/**
|
||||
* NSharp resource data capable of loading NUCAPS data
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Jan 15, 2013 mschenke Initial creation
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author mschenke
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
@XmlAccessorType(XmlAccessType.NONE)
|
||||
public class NucapsNSharpResourceData extends AbstractNPPNSharpResourceData {
|
||||
|
||||
private static final String PLUGIN = "nucaps";
|
||||
|
||||
private static final String[] PARAMETERS = { NucapsRecord.LONGITUDE,
|
||||
NucapsRecord.LATITUDE, NucapsRecord.PDV_SURFACE_PRESSURE,
|
||||
NucapsRecord.PDV_PRESSURE, NucapsRecord.PDV_TEMPERATURE,
|
||||
NucapsRecord.PDV_WATER_VAPOR_MIXING_RATIO };
|
||||
|
||||
public NucapsNSharpResourceData() {
|
||||
super("NUCAPS", PLUGIN, PARAMETERS);
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see com.raytheon.uf.viz.npp.sounding.rsc.AbstractNPPNSharpResourceData#
|
||||
* getSoundingLayers(com.raytheon.uf.common.pointdata.PointDataView)
|
||||
*/
|
||||
@Override
|
||||
protected List<NcSoundingLayer> getSoundingLayers(PointDataView pdv)
|
||||
throws VizException {
|
||||
Number[] pressures = pdv.getNumberAllLevels(NucapsRecord.PDV_PRESSURE);
|
||||
UnitConverter pressureConverter = getConverter(
|
||||
pdv.getUnit(NucapsRecord.PDV_PRESSURE), PRESSURE_UNIT);
|
||||
Number[] temperatures = pdv
|
||||
.getNumberAllLevels(NucapsRecord.PDV_TEMPERATURE);
|
||||
UnitConverter temperatureConverter = getConverter(
|
||||
pdv.getUnit(NucapsRecord.PDV_TEMPERATURE), TEMPERATURE_UNIT);
|
||||
UnitConverter temperatureCalcConverter = getConverter(
|
||||
pdv.getUnit(NucapsRecord.PDV_TEMPERATURE),
|
||||
TEMPERATURE_CALC_UNIT);
|
||||
Number[] wvMixingRatios = pdv
|
||||
.getNumberAllLevels(NucapsRecord.PDV_WATER_VAPOR_MIXING_RATIO);
|
||||
UnitConverter wvMixingRatioConverter = getConverter(
|
||||
pdv.getUnit(NucapsRecord.PDV_WATER_VAPOR_MIXING_RATIO),
|
||||
H2O_UNIT);
|
||||
UnitConverter dewPointConverter = getConverter(SI.KELVIN, SI.CELSIUS);
|
||||
|
||||
if (pressures.length != temperatures.length
|
||||
|| pressures.length != wvMixingRatios.length) {
|
||||
throw new VizException("NUCAPS PointData sizes incorrect");
|
||||
}
|
||||
int length = pressures.length;
|
||||
|
||||
List<NcSoundingLayer> soundingLayers = new ArrayList<NcSoundingLayer>(
|
||||
length);
|
||||
float surfacePressure = pdv.getFloat(NucapsRecord.PDV_SURFACE_PRESSURE);
|
||||
for (int i = 0; i < length; ++i) {
|
||||
int idx = i;
|
||||
float pressure = (float) pressureConverter.convert(pressures[idx]
|
||||
.doubleValue());
|
||||
if (pressure <= surfacePressure) {
|
||||
// Don't add entries where pressure indicates below ground
|
||||
float gh = Meteolibrary.ptozsa(new float[] { pressure }, 0);
|
||||
Number temperature = temperatures[idx];
|
||||
float h20 = (float) wvMixingRatioConverter
|
||||
.convert(wvMixingRatios[idx].doubleValue());
|
||||
float dewpoint = convertH2OtoDewpoint(h20, pressure);
|
||||
float rh = convertH20ToRelativeHumidity(h20,
|
||||
(float) temperatureCalcConverter.convert(temperature
|
||||
.doubleValue()), pressure);
|
||||
soundingLayers.add(new NcSoundingLayer(pressure, gh,
|
||||
(float) temperatureConverter.convert(temperature
|
||||
.doubleValue()), (float) dewPointConverter
|
||||
.convert(dewpoint), NcSoundingLayer.MISSING,
|
||||
NcSoundingLayer.MISSING, NcSoundingLayer.MISSING,
|
||||
NcSoundingLayer.MISSING, NcSoundingLayer.MISSING, h20,
|
||||
rh));
|
||||
}
|
||||
}
|
||||
|
||||
return soundingLayers;
|
||||
}
|
||||
|
||||
private UnitConverter getConverter(Unit<?> fromUnit, Unit<?> toUnit)
|
||||
throws VizException {
|
||||
if (fromUnit.isCompatible(toUnit)) {
|
||||
return fromUnit.getConverterTo(toUnit);
|
||||
}
|
||||
throw new VizException("Unable to convert " + fromUnit + " to "
|
||||
+ toUnit);
|
||||
}
|
||||
|
||||
}
|
7
cave/com.raytheon.uf.viz.npp.sounding/.classpath
Normal file
7
cave/com.raytheon.uf.viz.npp.sounding/.classpath
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
28
cave/com.raytheon.uf.viz.npp.sounding/.project
Normal file
28
cave/com.raytheon.uf.viz.npp.sounding/.project
Normal file
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>com.raytheon.uf.viz.npp.sounding</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.PluginNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -0,0 +1,8 @@
|
|||
#Mon Jan 14 13:20:29 CST 2013
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
||||
org.eclipse.jdt.core.compiler.compliance=1.6
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.source=1.6
|
28
cave/com.raytheon.uf.viz.npp.sounding/META-INF/MANIFEST.MF
Normal file
28
cave/com.raytheon.uf.viz.npp.sounding/META-INF/MANIFEST.MF
Normal file
|
@ -0,0 +1,28 @@
|
|||
Manifest-Version: 1.0
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: NPP Viz Sounding
|
||||
Bundle-SymbolicName: com.raytheon.uf.viz.npp.sounding;singleton:=true
|
||||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-Activator: com.raytheon.uf.viz.npp.sounding.Activator
|
||||
Bundle-Vendor: RAYTHEON
|
||||
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization
|
||||
Require-Bundle: org.eclipse.core.runtime,
|
||||
org.eclipse.ui;bundle-version="3.6.1",
|
||||
com.raytheon.uf.common.dataplugin.npp.sounding;bundle-version="1.0.0",
|
||||
com.raytheon.uf.common.dataplugin;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.time;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.viz.npp;bundle-version="1.0.0",
|
||||
com.raytheon.uf.common.serialization;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.viz.core;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.viz.d2d.nsharp;bundle-version="1.0.0",
|
||||
gov.noaa.nws.ncep.ui.nsharp;bundle-version="1.0.0",
|
||||
com.raytheon.viz.ui;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.geospatial;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.pointdata;bundle-version="1.12.1174",
|
||||
com.raytheon.viz.pointdata;bundle-version="1.12.1174",
|
||||
com.raytheon.viz.core.graphing;bundle-version="1.12.1174",
|
||||
javax.measure;bundle-version="1.0.0"
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Import-Package: gov.noaa.nws.ncep.edex.common.sounding
|
||||
Export-Package: com.raytheon.uf.viz.npp.sounding.rsc
|
|
@ -0,0 +1 @@
|
|||
com.raytheon.uf.viz.npp.sounding.rsc.NPPSoundingMapResourceData
|
5
cave/com.raytheon.uf.viz.npp.sounding/build.properties
Normal file
5
cave/com.raytheon.uf.viz.npp.sounding/build.properties
Normal file
|
@ -0,0 +1,5 @@
|
|||
source.. = src/
|
||||
output.. = bin/
|
||||
bin.includes = META-INF/,\
|
||||
.,\
|
||||
localization/
|
|
@ -24,11 +24,12 @@
|
|||
<descriptor xsi:type="mapDescriptor">
|
||||
<resource>
|
||||
<loadProperties/>
|
||||
<properties isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="true"/>
|
||||
<resourceData xsi:type="crimssMapResourceData" retrieveData="true" isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true">
|
||||
<resourceData xsi:type="nppSoundingMapResourceData">
|
||||
<nsharpResourceData>${soundingResourceData}</nsharpResourceData>
|
||||
<resourceName>${name;Unknown}</resourceName>
|
||||
<metadataMap>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="crimss" constraintType="EQUALS"/>
|
||||
<constraint constraintValue="${pluginName}" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
</metadataMap>
|
||||
</resourceData>
|
|
@ -0,0 +1,41 @@
|
|||
package com.raytheon.uf.viz.npp.sounding;
|
||||
|
||||
import org.osgi.framework.BundleActivator;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
import com.raytheon.uf.common.status.IUFStatusHandler;
|
||||
import com.raytheon.uf.common.status.UFStatus;
|
||||
|
||||
public class Activator implements BundleActivator {
|
||||
|
||||
public static final IUFStatusHandler statusHandler = UFStatus
|
||||
.getHandler(Activator.class);
|
||||
|
||||
private static BundleContext context;
|
||||
|
||||
static BundleContext getContext() {
|
||||
return context;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext
|
||||
* )
|
||||
*/
|
||||
public void start(BundleContext bundleContext) throws Exception {
|
||||
Activator.context = bundleContext;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void stop(BundleContext bundleContext) throws Exception {
|
||||
Activator.context = null;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,339 @@
|
|||
/**
|
||||
* 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.uf.viz.npp.sounding.rsc;
|
||||
|
||||
import gov.noaa.nws.ncep.edex.common.sounding.NcSoundingCube;
|
||||
import gov.noaa.nws.ncep.edex.common.sounding.NcSoundingCube.QueryStatus;
|
||||
import gov.noaa.nws.ncep.edex.common.sounding.NcSoundingLayer;
|
||||
import gov.noaa.nws.ncep.edex.common.sounding.NcSoundingProfile;
|
||||
import gov.noaa.nws.ncep.ui.nsharp.NsharpStationInfo;
|
||||
import gov.noaa.nws.ncep.ui.nsharp.natives.NsharpDataHandling;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import javax.measure.unit.SI;
|
||||
import javax.measure.unit.Unit;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
|
||||
import com.raytheon.uf.common.dataplugin.npp.sounding.NPPSoundingRecord;
|
||||
import com.raytheon.uf.common.pointdata.PointDataContainer;
|
||||
import com.raytheon.uf.common.pointdata.PointDataView;
|
||||
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||
import com.raytheon.uf.common.time.DataTime;
|
||||
import com.raytheon.uf.common.time.DataTime.FLAG;
|
||||
import com.raytheon.uf.common.time.TimeRange;
|
||||
import com.raytheon.uf.viz.core.exception.VizException;
|
||||
import com.raytheon.uf.viz.d2d.nsharp.rsc.D2DNSharpResourceData;
|
||||
import com.raytheon.uf.viz.npp.sounding.Activator;
|
||||
import com.raytheon.viz.pointdata.PointDataRequest;
|
||||
import com.vividsolutions.jts.geom.Coordinate;
|
||||
|
||||
/**
|
||||
* Abstract NPP Sounding resource data
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Jan 14, 2013 mschenke Initial creation
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author mschenke
|
||||
* @version 1.0
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.NONE)
|
||||
public abstract class AbstractNPPNSharpResourceData extends
|
||||
D2DNSharpResourceData {
|
||||
|
||||
public static class NPPNsharpStationInfo extends NsharpStationInfo {
|
||||
|
||||
private TimeRange timeRange;
|
||||
|
||||
public NPPNsharpStationInfo(NsharpStationInfo info, DataTime time) {
|
||||
this.latitude = info.getLatitude();
|
||||
this.longitude = info.getLongitude();
|
||||
this.reftime = new Timestamp(info.getReftime().getTime());
|
||||
if (info.getRangestarttime() != null) {
|
||||
this.rangestarttime = new Timestamp(info.getRangestarttime()
|
||||
.getTime());
|
||||
}
|
||||
this.sndType = info.getSndType();
|
||||
this.stnDisplayInfo = info.getStnDisplayInfo();
|
||||
this.timeLineSpList = new ArrayList<NsharpStationInfo.timeLineSpecific>(
|
||||
info.getTimeLineSpList());
|
||||
setDataTime(time);
|
||||
}
|
||||
|
||||
public void setDataTime(DataTime time) {
|
||||
this.reftime = new Timestamp(time.getMatchRef());
|
||||
if (time.getUtilityFlags().contains(FLAG.PERIOD_USED)) {
|
||||
this.timeRange = time.getValidPeriod();
|
||||
}
|
||||
}
|
||||
|
||||
public DataTime getDataTime() {
|
||||
if (timeRange != null) {
|
||||
return new DataTime(getReftime().getTime(), timeRange);
|
||||
} else {
|
||||
return new DataTime(new Date(getReftime().getTime()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected static final Unit<?> PRESSURE_UNIT = SI.HECTO(SI.PASCAL);
|
||||
|
||||
protected static final Unit<?> HEIGHT_UNIT = SI.METER;
|
||||
|
||||
protected static final Unit<?> TEMPERATURE_UNIT = SI.CELSIUS;
|
||||
|
||||
protected static final Unit<?> TEMPERATURE_CALC_UNIT = SI.KELVIN;
|
||||
|
||||
protected static final Unit<?> H2O_UNIT = SI.GRAM.divide(SI.KILOGRAM);
|
||||
|
||||
protected static final Unit<?> DEWPOINT_UNIT = SI.CELSIUS;
|
||||
|
||||
private final String plugin;
|
||||
|
||||
private final String[] parameters;
|
||||
|
||||
public AbstractNPPNSharpResourceData() {
|
||||
// This constructor only exists so JAXB won't complain
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
protected AbstractNPPNSharpResourceData(String name, String plugin,
|
||||
String[] parameters) {
|
||||
super(name);
|
||||
this.plugin = plugin;
|
||||
this.parameters = parameters;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void preparePointInfo() throws VizException {
|
||||
// everything should already be set
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.uf.viz.d2d.nsharp.rsc.D2DNSharpResourceData#createStationInfo
|
||||
* (com.raytheon.uf.common.time.DataTime)
|
||||
*/
|
||||
@Override
|
||||
protected NsharpStationInfo createStationInfo(DataTime time) {
|
||||
return new NPPNsharpStationInfo(super.createStationInfo(time), time);
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.uf.viz.d2d.nsharp.rsc.D2DNSharpResourceData#getSoundingCube
|
||||
* (gov.noaa.nws.ncep.ui.nsharp.NsharpStationInfo)
|
||||
*/
|
||||
@Override
|
||||
protected NcSoundingCube getSoundingCube(NsharpStationInfo stnInfo) {
|
||||
DataTime time = new DataTime(stnInfo.getReftime());
|
||||
if (stnInfo instanceof NPPNsharpStationInfo) {
|
||||
time = ((NPPNsharpStationInfo) stnInfo).getDataTime();
|
||||
}
|
||||
try {
|
||||
PointDataContainer pdc = PointDataRequest
|
||||
.requestPointDataAllLevels(time, plugin, parameters, null,
|
||||
getMetadataMap());
|
||||
PointDataView pdv = null;
|
||||
Coordinate closest = null;
|
||||
for (int i = 0; i < pdc.getCurrentSz(); i++) {
|
||||
PointDataView testPdv = pdc.readRandom(i);
|
||||
Coordinate p = new Coordinate(
|
||||
testPdv.getFloat(NPPSoundingRecord.LONGITUDE),
|
||||
testPdv.getFloat(NPPSoundingRecord.LATITUDE));
|
||||
if (closest == null
|
||||
|| coordinate.distance(p) < coordinate
|
||||
.distance(closest)) {
|
||||
pdv = testPdv;
|
||||
closest = p;
|
||||
}
|
||||
}
|
||||
if (pdv == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
List<NcSoundingLayer> layers = getSoundingLayers(pdv);
|
||||
Collections.sort(layers,
|
||||
NsharpDataHandling.reversePressureHeightWindComparator());
|
||||
|
||||
// We have to interpolate everything so that height,temperature, and
|
||||
// dewpoint are available on all levels.
|
||||
interpolateHeight(layers);
|
||||
interpolateTemperature(layers);
|
||||
interpolateDewpoint(layers);
|
||||
Iterator<NcSoundingLayer> iter = layers.iterator();
|
||||
while (iter.hasNext()) {
|
||||
NcSoundingLayer layer = iter.next();
|
||||
if (layer.getPressure() < 0) {
|
||||
iter.remove();
|
||||
} else if (layer.getGeoHeight() < 0) {
|
||||
// TODO: Needed?
|
||||
// iter.remove();
|
||||
} else if (layer.getTemperature() < -300) {
|
||||
iter.remove();
|
||||
|
||||
} else if (layer.getDewpoint() < -300) {
|
||||
iter.remove();
|
||||
}
|
||||
}
|
||||
NcSoundingProfile profile = new NcSoundingProfile();
|
||||
profile.setSoundingLyLst(layers);
|
||||
// TODO populate other fields in profile
|
||||
NcSoundingCube cube = new NcSoundingCube(Arrays.asList(profile));
|
||||
cube.setRtnStatus(QueryStatus.OK);
|
||||
return cube;
|
||||
} catch (VizException e) {
|
||||
Activator.statusHandler.handle(Priority.PROBLEM,
|
||||
e.getLocalizedMessage(), e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param pdv
|
||||
* @return
|
||||
*/
|
||||
protected abstract List<NcSoundingLayer> getSoundingLayers(PointDataView pdv)
|
||||
throws VizException;
|
||||
|
||||
private static void interpolateHeight(List<NcSoundingLayer> layers) {
|
||||
int belowIndex = -1;
|
||||
for (int i = 0; i < layers.size(); i++) {
|
||||
NcSoundingLayer layerAbove = layers.get(i);
|
||||
if (layerAbove.getGeoHeight() < 0) {
|
||||
continue;
|
||||
}
|
||||
if (belowIndex == -1) {
|
||||
belowIndex = i;
|
||||
continue;
|
||||
}
|
||||
NcSoundingLayer layerBelow = layers.get(belowIndex);
|
||||
double diff = layerAbove.getGeoHeight() - layerBelow.getGeoHeight();
|
||||
double pchg1 = Math.log(layerBelow.getPressure()
|
||||
/ layerAbove.getPressure());
|
||||
for (int j = belowIndex + 1; j < i; j += 1) {
|
||||
NcSoundingLayer layer = layers.get(j);
|
||||
double pchg2 = Math.log(layerBelow.getPressure()
|
||||
/ layer.getPressure());
|
||||
layer.setGeoHeight((float) (layerBelow.getGeoHeight() + ((pchg2 / pchg1) * diff)));
|
||||
}
|
||||
belowIndex = i;
|
||||
}
|
||||
}
|
||||
|
||||
private static void interpolateTemperature(List<NcSoundingLayer> layers) {
|
||||
int belowIndex = -1;
|
||||
for (int i = 0; i < layers.size(); i++) {
|
||||
NcSoundingLayer layerAbove = layers.get(i);
|
||||
if (layerAbove.getTemperature() < -300) {
|
||||
continue;
|
||||
}
|
||||
if (belowIndex == -1) {
|
||||
belowIndex = i;
|
||||
continue;
|
||||
}
|
||||
NcSoundingLayer layerBelow = layers.get(belowIndex);
|
||||
double diff = layerAbove.getTemperature()
|
||||
- layerBelow.getTemperature();
|
||||
double pchg1 = Math.log(layerBelow.getPressure()
|
||||
/ layerAbove.getPressure());
|
||||
for (int j = belowIndex + 1; j < i; j += 1) {
|
||||
NcSoundingLayer layer = layers.get(j);
|
||||
double pchg2 = Math.log(layerBelow.getPressure()
|
||||
/ layer.getPressure());
|
||||
layer.setTemperature((float) (layerBelow.getTemperature() + ((pchg2 / pchg1) * diff)));
|
||||
}
|
||||
belowIndex = i;
|
||||
}
|
||||
}
|
||||
|
||||
private static void interpolateDewpoint(List<NcSoundingLayer> layers) {
|
||||
int belowIndex = -1;
|
||||
for (int i = 0; i < layers.size(); i++) {
|
||||
NcSoundingLayer layerAbove = layers.get(i);
|
||||
if (layerAbove.getDewpoint() < -300) {
|
||||
continue;
|
||||
}
|
||||
if (belowIndex == -1) {
|
||||
belowIndex = i;
|
||||
continue;
|
||||
}
|
||||
NcSoundingLayer layerBelow = layers.get(belowIndex);
|
||||
double diff = layerAbove.getDewpoint() - layerBelow.getDewpoint();
|
||||
double pchg1 = Math.log(layerBelow.getPressure()
|
||||
/ layerAbove.getPressure());
|
||||
for (int j = belowIndex + 1; j < i; j += 1) {
|
||||
NcSoundingLayer layer = layers.get(j);
|
||||
double pchg2 = Math.log(layerBelow.getPressure()
|
||||
/ layer.getPressure());
|
||||
layer.setDewpoint((float) (layerBelow.getDewpoint() + ((pchg2 / pchg1) * diff)));
|
||||
}
|
||||
belowIndex = i;
|
||||
}
|
||||
}
|
||||
|
||||
// convert h2o in g/kg and pressure in hPa to dewpoint in kelvin.
|
||||
protected static float convertH2OtoDewpoint(float h2o, float pressure) {
|
||||
double eee = pressure * h2o / (622.0 + 0.378 * h2o);
|
||||
double b = 26.66082 - Math.log(eee);
|
||||
return (float) ((b - Math.sqrt(b * b - 223.1986)) / 0.0182758048);
|
||||
}
|
||||
|
||||
// convert h2o in g/kg and pressure in hPa to relative humidity.
|
||||
protected static float convertH20ToRelativeHumidity(float h20,
|
||||
float temperature, float pressure) {
|
||||
double a = 22.05565;
|
||||
double b = 0.0091379024;
|
||||
double c = 6106.396;
|
||||
double epsilonx1k = 622.0;
|
||||
|
||||
double shxDenom = h20 * 0.378;
|
||||
shxDenom += epsilonx1k;
|
||||
|
||||
double tDenom = -b * temperature;
|
||||
tDenom += a;
|
||||
tDenom -= c / temperature;
|
||||
|
||||
double RH = pressure * h20;
|
||||
RH /= shxDenom;
|
||||
RH /= Math.exp(tDenom);
|
||||
|
||||
return (float) RH;
|
||||
}
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
* further licensing information.
|
||||
**/
|
||||
package com.raytheon.uf.viz.npp.crimss.map;
|
||||
package com.raytheon.uf.viz.npp.sounding.rsc;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
|
@ -28,14 +28,14 @@ import org.eclipse.swt.widgets.Event;
|
|||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.ui.IWorkbenchPart;
|
||||
|
||||
import com.raytheon.uf.common.dataplugin.npp.crimss.CrimssRecord;
|
||||
import com.raytheon.uf.common.dataplugin.npp.sounding.NPPSoundingRecord;
|
||||
import com.raytheon.uf.viz.core.IDisplayPaneContainer;
|
||||
import com.raytheon.viz.ui.VizWorkbenchManager;
|
||||
import com.raytheon.viz.ui.input.InputAdapter;
|
||||
import com.vividsolutions.jts.geom.Coordinate;
|
||||
|
||||
/**
|
||||
* Input manager for the CrimssMapResource
|
||||
* Input handler for npp sounding availability resource
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
|
@ -43,7 +43,7 @@ import com.vividsolutions.jts.geom.Coordinate;
|
|||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Jan 9, 2012 mschenke Initial creation
|
||||
* Jan 14, 2013 mschenke Initial creation
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -51,28 +51,24 @@ import com.vividsolutions.jts.geom.Coordinate;
|
|||
* @version 1.0
|
||||
*/
|
||||
|
||||
public class CrimssMapInputManager extends InputAdapter {
|
||||
public class NPPSoundingMapInputHandler extends InputAdapter {
|
||||
|
||||
private NPPSoundingMapResource resource;
|
||||
|
||||
private Cursor handCursor;
|
||||
|
||||
private Cursor arrowCursor;
|
||||
|
||||
private CrimssMapResource resource;
|
||||
|
||||
private CrimssRecord closestRecord;
|
||||
private NPPSoundingRecord closestRecord;
|
||||
|
||||
private int downX, downY;
|
||||
|
||||
public CrimssMapInputManager(CrimssMapResource resource) {
|
||||
public NPPSoundingMapInputHandler(NPPSoundingMapResource resource) {
|
||||
this.resource = resource;
|
||||
Display display = Display.getCurrent();
|
||||
handCursor = new Cursor(display, SWT.CURSOR_HAND);
|
||||
arrowCursor = new Cursor(display, SWT.CURSOR_ARROW);
|
||||
}
|
||||
|
||||
public void dispose() {
|
||||
handCursor.dispose();
|
||||
arrowCursor.dispose();
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -86,12 +82,13 @@ public class CrimssMapInputManager extends InputAdapter {
|
|||
closestRecord = null;
|
||||
|
||||
if (resource.isEditable()) {
|
||||
Collection<CrimssRecord> records = resource.getCurrentRecords();
|
||||
Collection<NPPSoundingRecord> records = resource
|
||||
.getCurrentRecords();
|
||||
if (records != null) {
|
||||
double radius = resource.getRadius();
|
||||
Coordinate c = new Coordinate(x, y);
|
||||
double bestDist = Double.MAX_VALUE;
|
||||
for (CrimssRecord record : records) {
|
||||
for (NPPSoundingRecord record : records) {
|
||||
double lat = record.getLatitude();
|
||||
double lon = record.getLongitude();
|
||||
double[] pixel = resource.getResourceContainer()
|
||||
|
@ -107,7 +104,7 @@ public class CrimssMapInputManager extends InputAdapter {
|
|||
}
|
||||
|
||||
if (wasClosest && closestRecord == null) {
|
||||
getShell().setCursor(arrowCursor);
|
||||
getShell().setCursor(null);
|
||||
} else if (!wasClosest && closestRecord != null) {
|
||||
getShell().setCursor(handCursor);
|
||||
}
|
||||
|
@ -159,7 +156,7 @@ public class CrimssMapInputManager extends InputAdapter {
|
|||
@Override
|
||||
public boolean handleMouseExit(Event event) {
|
||||
closestRecord = null;
|
||||
getShell().setCursor(arrowCursor);
|
||||
getShell().setCursor(null);
|
||||
return super.handleMouseExit(event);
|
||||
}
|
||||
|
|
@ -17,26 +17,25 @@
|
|||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
* further licensing information.
|
||||
**/
|
||||
package com.raytheon.uf.viz.npp.crimss.map;
|
||||
package com.raytheon.uf.viz.npp.sounding.rsc;
|
||||
|
||||
import gov.noaa.nws.ncep.ui.nsharp.display.NsharpSkewTPaneDescriptor;
|
||||
import gov.noaa.nws.ncep.ui.nsharp.display.NsharpSkewTPaneDisplay;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.eclipse.core.runtime.jobs.Job;
|
||||
import org.eclipse.swt.graphics.RGB;
|
||||
|
||||
import com.raytheon.uf.common.dataplugin.PluginDataObject;
|
||||
import com.raytheon.uf.common.dataplugin.npp.crimss.CrimssRecord;
|
||||
import com.raytheon.uf.common.dataplugin.npp.sounding.NPPSoundingRecord;
|
||||
import com.raytheon.uf.common.dataquery.requests.RequestConstraint;
|
||||
import com.raytheon.uf.common.dataquery.requests.RequestConstraint.ConstraintType;
|
||||
import com.raytheon.uf.common.time.BinOffset;
|
||||
import com.raytheon.uf.common.time.DataTime;
|
||||
import com.raytheon.uf.viz.core.DescriptorMap;
|
||||
import com.raytheon.uf.viz.core.DrawableCircle;
|
||||
|
@ -53,7 +52,6 @@ import com.raytheon.uf.viz.core.rsc.LoadProperties;
|
|||
import com.raytheon.uf.viz.core.rsc.capabilities.ColorableCapability;
|
||||
import com.raytheon.uf.viz.core.rsc.capabilities.EditableCapability;
|
||||
import com.raytheon.uf.viz.core.rsc.capabilities.MagnificationCapability;
|
||||
import com.raytheon.uf.viz.npp.crimss.CrimssNSharpResourceData;
|
||||
import com.raytheon.viz.ui.BundleProductLoader;
|
||||
import com.raytheon.viz.ui.UiUtil;
|
||||
import com.raytheon.viz.ui.editor.AbstractEditor;
|
||||
|
@ -61,7 +59,7 @@ import com.raytheon.viz.ui.input.EditableManager;
|
|||
import com.vividsolutions.jts.geom.Coordinate;
|
||||
|
||||
/**
|
||||
* TODO Add Description
|
||||
* Sounding available resource. Draws points on map where data is available
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
|
@ -69,66 +67,72 @@ import com.vividsolutions.jts.geom.Coordinate;
|
|||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Dec 7, 2011 bsteffen Initial creation
|
||||
* Jan 14, 2013 mschenke Initial creation
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author bsteffen
|
||||
* @author mschenke
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
public class CrimssMapResource extends
|
||||
AbstractVizResource<CrimssMapResourceData, IMapDescriptor> {
|
||||
public class NPPSoundingMapResource extends
|
||||
AbstractVizResource<NPPSoundingMapResourceData, IMapDescriptor> {
|
||||
|
||||
private CrimssMapInputManager inputManager;
|
||||
private NPPSoundingMapInputHandler inputManager;
|
||||
|
||||
private Map<DataTime, Set<CrimssRecord>> records = new HashMap<DataTime, Set<CrimssRecord>>();
|
||||
private Collection<NPPSoundingRecord> allRecords = new ArrayList<NPPSoundingRecord>();
|
||||
|
||||
protected CrimssMapResource(CrimssMapResourceData resourceData,
|
||||
private Map<DataTime, Collection<NPPSoundingRecord>> groupedRecords = new HashMap<DataTime, Collection<NPPSoundingRecord>>();
|
||||
|
||||
/**
|
||||
* @param resourceData
|
||||
* @param loadProperties
|
||||
*/
|
||||
protected NPPSoundingMapResource(NPPSoundingMapResourceData resourceData,
|
||||
LoadProperties loadProperties) {
|
||||
super(resourceData, loadProperties);
|
||||
this.inputManager = new CrimssMapInputManager(this);
|
||||
this.inputManager = new NPPSoundingMapInputHandler(this);
|
||||
this.dataTimes = new ArrayList<DataTime>();
|
||||
getCapability(EditableCapability.class).setEditable(true);
|
||||
resourceData.addChangeListener(new IResourceDataChanged() {
|
||||
|
||||
@Override
|
||||
public void resourceChanged(ChangeType type, Object object) {
|
||||
if (type == ChangeType.DATA_UPDATE) {
|
||||
if (object instanceof PluginDataObject[]) {
|
||||
for (PluginDataObject pdo : (PluginDataObject[]) object) {
|
||||
addRecord((CrimssRecord) pdo);
|
||||
}
|
||||
addRecords((PluginDataObject[]) object);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Collection<CrimssRecord> getCurrentRecords() {
|
||||
return records.get(descriptor.getTimeForResource(this));
|
||||
Collection<NPPSoundingRecord> getCurrentRecords() {
|
||||
return groupedRecords.get(descriptor.getTimeForResource(this));
|
||||
}
|
||||
|
||||
public void addRecord(CrimssRecord record) {
|
||||
DataTime time = record.getDataTime();
|
||||
BinOffset binOffset = resourceData.getBinOffset();
|
||||
if (binOffset != null) {
|
||||
time = binOffset.getNormalizedTime(time);
|
||||
public synchronized void addRecords(PluginDataObject... records) {
|
||||
for (PluginDataObject record : records) {
|
||||
if (record instanceof NPPSoundingRecord) {
|
||||
if (allRecords.contains(record) == false) {
|
||||
allRecords.add((NPPSoundingRecord) record);
|
||||
}
|
||||
}
|
||||
}
|
||||
Set<CrimssRecord> pdos = this.records.get(time);
|
||||
if (pdos == null) {
|
||||
pdos = new HashSet<CrimssRecord>();
|
||||
this.records.put(time, pdos);
|
||||
}
|
||||
if (!this.dataTimes.contains(time)) {
|
||||
this.dataTimes.add(time);
|
||||
}
|
||||
pdos.add(record);
|
||||
Map<DataTime, Collection<NPPSoundingRecord>> groupedRecords = resourceData
|
||||
.groupRecordTimes(allRecords);
|
||||
List<DataTime> dataTimes = new ArrayList<DataTime>(
|
||||
groupedRecords.keySet());
|
||||
Collections.sort(dataTimes);
|
||||
this.dataTimes = dataTimes;
|
||||
this.groupedRecords = groupedRecords;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove(DataTime dataTime) {
|
||||
records.remove(dataTime);
|
||||
public synchronized void remove(DataTime dataTime) {
|
||||
Collection<NPPSoundingRecord> records = groupedRecords.remove(dataTime);
|
||||
if (records != null) {
|
||||
allRecords.removeAll(records);
|
||||
}
|
||||
super.remove(dataTime);
|
||||
}
|
||||
|
||||
|
@ -145,20 +149,21 @@ public class CrimssMapResource extends
|
|||
if (time == null) {
|
||||
return;
|
||||
}
|
||||
Set<CrimssRecord> records = this.records.get(time);
|
||||
Collection<NPPSoundingRecord> records = this.groupedRecords.get(time);
|
||||
if (records == null) {
|
||||
return;
|
||||
}
|
||||
RGB color = getCapability(ColorableCapability.class).getColor();
|
||||
List<DrawableCircle> circles = new ArrayList<DrawableCircle>(
|
||||
records.size());
|
||||
for (CrimssRecord record : records) {
|
||||
for (NPPSoundingRecord record : records) {
|
||||
double lat = record.getLatitude();
|
||||
double lon = record.getLongitude();
|
||||
double[] pixel = descriptor.worldToPixel(new double[] { lon, lat });
|
||||
DrawableCircle circle = new DrawableCircle();
|
||||
circle.setCoordinates(pixel[0], pixel[1]);
|
||||
circle.screenRadius = getRadius() - 1;
|
||||
circle.screenRadius = getRadius();
|
||||
circle.numberOfPoints = (int) (circle.screenRadius * 4);
|
||||
circle.basics.color = color;
|
||||
circle.filled = true;
|
||||
circles.add(circle);
|
||||
|
@ -183,11 +188,20 @@ public class CrimssMapResource extends
|
|||
}
|
||||
|
||||
double getRadius() {
|
||||
return 8 * getCapability(MagnificationCapability.class)
|
||||
return 5 * getCapability(MagnificationCapability.class)
|
||||
.getMagnification();
|
||||
}
|
||||
|
||||
void loadSoundingResource(CrimssRecord record) {
|
||||
@Override
|
||||
public String getName() {
|
||||
return resourceData.getResourceName() + " Availability";
|
||||
}
|
||||
|
||||
/**
|
||||
* @param closestRecord
|
||||
*/
|
||||
void loadSoundingResource(NPPSoundingRecord record) {
|
||||
// Build metadata map for sounding resource
|
||||
HashMap<String, RequestConstraint> metadataMap = new HashMap<String, RequestConstraint>(
|
||||
resourceData.getMetadataMap());
|
||||
RequestConstraint rc = new RequestConstraint(null,
|
||||
|
@ -195,22 +209,24 @@ public class CrimssMapResource extends
|
|||
rc.setBetweenValueList(new String[] {
|
||||
String.valueOf(record.getLongitude() - 0.01),
|
||||
String.valueOf(record.getLongitude() + 0.01) });
|
||||
metadataMap.put(CrimssRecord.LONGITUDE, rc);
|
||||
metadataMap.put(NPPSoundingRecord.LONGITUDE, rc);
|
||||
rc = new RequestConstraint(null, ConstraintType.BETWEEN);
|
||||
rc.setBetweenValueList(new String[] {
|
||||
String.valueOf(record.getLatitude() - 0.01),
|
||||
String.valueOf(record.getLatitude() + 0.01) });
|
||||
metadataMap.put(CrimssRecord.LATITUDE, rc);
|
||||
CrimssNSharpResourceData resourceData = new CrimssNSharpResourceData();
|
||||
resourceData.setCoordinate(new Coordinate(record.getLongitude(), record
|
||||
.getLatitude()));
|
||||
resourceData.setPointName(String.format("CrIMSS-%.2f,%.2f",
|
||||
record.getLongitude(), record.getLatitude()));
|
||||
resourceData.setMetadataMap(metadataMap);
|
||||
metadataMap.put(NPPSoundingRecord.LATITUDE, rc);
|
||||
|
||||
// Construct nsharp resource data for loading
|
||||
AbstractNPPNSharpResourceData nsResourceData = resourceData
|
||||
.newNsharpResourceData();
|
||||
nsResourceData.setCoordinate(new Coordinate(record.getLongitude(),
|
||||
record.getLatitude()));
|
||||
nsResourceData.setMetadataMap(metadataMap);
|
||||
ResourcePair pair = new ResourcePair();
|
||||
pair.setResourceData(resourceData);
|
||||
pair.setResourceData(nsResourceData);
|
||||
pair.setLoadProperties(new LoadProperties());
|
||||
NsharpSkewTPaneDisplay display = new NsharpSkewTPaneDisplay();
|
||||
display.setDescriptor(new NsharpSkewTPaneDescriptor());
|
||||
display.getDescriptor().getResourceList().add(pair);
|
||||
String editorId = DescriptorMap.getEditorId(display.getDescriptor()
|
||||
.getClass().getName());
|
||||
|
@ -221,10 +237,4 @@ public class CrimssMapResource extends
|
|||
Job j = new BundleProductLoader(editor, b);
|
||||
j.schedule();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "CrIMSS Availability";
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,161 @@
|
|||
/**
|
||||
* 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.uf.viz.npp.sounding.rsc;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
|
||||
import com.raytheon.uf.common.dataplugin.PluginDataObject;
|
||||
import com.raytheon.uf.viz.core.exception.VizException;
|
||||
import com.raytheon.uf.viz.core.rsc.AbstractVizResource;
|
||||
import com.raytheon.uf.viz.core.rsc.LoadProperties;
|
||||
import com.raytheon.uf.viz.npp.AbstractNppResourceData;
|
||||
|
||||
/**
|
||||
* Resource data for availability map of npp soundings
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Jan 14, 2013 mschenke Initial creation
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author mschenke
|
||||
* @version 1.0
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.NONE)
|
||||
public class NPPSoundingMapResourceData extends AbstractNppResourceData {
|
||||
|
||||
@XmlElement
|
||||
private Class<? extends AbstractNPPNSharpResourceData> nsharpResourceData;
|
||||
|
||||
@XmlElement
|
||||
private String resourceName;
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see com.raytheon.uf.viz.core.rsc.AbstractRequestableResourceData#
|
||||
* constructResource(com.raytheon.uf.viz.core.rsc.LoadProperties,
|
||||
* com.raytheon.uf.viz.core.rsc.PluginDataObject[])
|
||||
*/
|
||||
@Override
|
||||
protected AbstractVizResource<?, ?> constructResource(
|
||||
LoadProperties loadProperties, PluginDataObject[] objects)
|
||||
throws VizException {
|
||||
NPPSoundingMapResource resource = new NPPSoundingMapResource(this,
|
||||
loadProperties);
|
||||
if (objects instanceof PluginDataObject[]) {
|
||||
resource.addRecords((PluginDataObject[]) objects);
|
||||
}
|
||||
return resource;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the nsharpResourceData
|
||||
*/
|
||||
public Class<? extends AbstractNPPNSharpResourceData> getNsharpResourceData() {
|
||||
return nsharpResourceData;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param nsharpResourceData
|
||||
* the nsharpResourceData to set
|
||||
*/
|
||||
public void setNsharpResourceData(
|
||||
Class<? extends AbstractNPPNSharpResourceData> nsharpResourceData) {
|
||||
this.nsharpResourceData = nsharpResourceData;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the resourceName
|
||||
*/
|
||||
public String getResourceName() {
|
||||
return resourceName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param resourceName
|
||||
* the resourceName to set
|
||||
*/
|
||||
public void setResourceName(String resourceName) {
|
||||
this.resourceName = resourceName;
|
||||
}
|
||||
|
||||
public AbstractNPPNSharpResourceData newNsharpResourceData() {
|
||||
try {
|
||||
return getNsharpResourceData().newInstance();
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Unable to create new instance of: "
|
||||
+ getNsharpResourceData());
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see java.lang.Object#hashCode()
|
||||
*/
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = super.hashCode();
|
||||
result = prime
|
||||
* result
|
||||
+ ((nsharpResourceData == null) ? 0 : nsharpResourceData
|
||||
.hashCode());
|
||||
result = prime * result
|
||||
+ ((resourceName == null) ? 0 : resourceName.hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see java.lang.Object#equals(java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj)
|
||||
return true;
|
||||
if (!super.equals(obj))
|
||||
return false;
|
||||
if (getClass() != obj.getClass())
|
||||
return false;
|
||||
NPPSoundingMapResourceData other = (NPPSoundingMapResourceData) obj;
|
||||
if (nsharpResourceData == null) {
|
||||
if (other.nsharpResourceData != null)
|
||||
return false;
|
||||
} else if (!nsharpResourceData.equals(other.nsharpResourceData))
|
||||
return false;
|
||||
if (resourceName == null) {
|
||||
if (other.resourceName != null)
|
||||
return false;
|
||||
} else if (!resourceName.equals(other.resourceName))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
|
@ -24,6 +24,7 @@ Require-Bundle: org.eclipse.ui,
|
|||
com.raytheon.uf.common.derivparam;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.dataplugin.level;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.comm;bundle-version="1.12.1174",
|
||||
com.raytheon.viz.alerts;bundle-version="1.12.1174"
|
||||
com.raytheon.viz.alerts;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.viz.npp;bundle-version="1.0.0"
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Bundle-ActivationPolicy: lazy
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
<menuContributionFile>
|
||||
<include installTo="menu:NPPProducts?after=Imagery" fileName="menus/npp/viirs/viirsMenuItems.xml"/>
|
||||
</menuContributionFile>
|
|
@ -19,7 +19,6 @@
|
|||
further_licensing_information.
|
||||
-->
|
||||
<menuTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<contribute xsi:type="separator" id="beforeVIIRS" visible="false"/>
|
||||
<contribute xsi:type="titleItem" titleText="------ VIIRS ------" id="ImageryLine"/>
|
||||
<contribute xsi:type="subMenu" menuText="CONUS Imagery" id="CONUSid">
|
||||
<contribute xsi:type="subinclude" fileName="menus/npp/viirs/viirsBundleItems.xml">
|
||||
|
@ -36,5 +35,4 @@
|
|||
<substitute key="region" value="Pacific"/>
|
||||
</contribute>
|
||||
</contribute>
|
||||
<contribute xsi:type="separator" id="afterVIIRS" visible="false"/>
|
||||
</menuTemplate>
|
|
@ -24,6 +24,7 @@ import java.nio.Buffer;
|
|||
import java.nio.FloatBuffer;
|
||||
import java.nio.ShortBuffer;
|
||||
|
||||
import com.raytheon.uf.common.colormap.image.ColorMapData.ColorMapDataType;
|
||||
import com.raytheon.uf.common.dataplugin.npp.viirs.VIIRSDataRecord;
|
||||
import com.raytheon.uf.common.datastorage.Request;
|
||||
import com.raytheon.uf.common.datastorage.records.FloatDataRecord;
|
||||
|
|
|
@ -19,33 +19,18 @@
|
|||
**/
|
||||
package com.raytheon.uf.viz.npp.viirs.rsc;
|
||||
|
||||
import java.util.ArrayDeque;
|
||||
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;
|
||||
import java.util.Map;
|
||||
import java.util.Queue;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
|
||||
import com.raytheon.uf.common.dataplugin.PluginDataObject;
|
||||
import com.raytheon.uf.common.dataplugin.npp.viirs.VIIRSDataRecord;
|
||||
import com.raytheon.uf.common.dataquery.requests.RequestConstraint;
|
||||
import com.raytheon.uf.common.dataquery.requests.RequestConstraint.ConstraintType;
|
||||
import com.raytheon.uf.common.time.DataTime;
|
||||
import com.raytheon.uf.common.time.TimeRange;
|
||||
import com.raytheon.uf.viz.core.catalog.LayerProperty;
|
||||
import com.raytheon.uf.viz.core.datastructure.DataCubeContainer;
|
||||
import com.raytheon.uf.viz.core.exception.VizException;
|
||||
import com.raytheon.uf.viz.core.rsc.AbstractRequestableResourceData;
|
||||
import com.raytheon.uf.viz.core.rsc.AbstractVizResource;
|
||||
import com.raytheon.uf.viz.core.rsc.LoadProperties;
|
||||
import com.raytheon.uf.viz.npp.AbstractNppResourceData;
|
||||
|
||||
/**
|
||||
* VIIRS Resource data
|
||||
|
@ -66,38 +51,7 @@ import com.raytheon.uf.viz.core.rsc.LoadProperties;
|
|||
* @version 1.0
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.NONE)
|
||||
public class VIIRSResourceData extends AbstractRequestableResourceData {
|
||||
|
||||
private static class DataTimeIterator<T extends PluginDataObject>
|
||||
implements Iterator<DataTime> {
|
||||
|
||||
private Iterator<T> pdoIter;
|
||||
|
||||
private T lastAccesed;
|
||||
|
||||
private DataTimeIterator(Iterator<T> pdoIter) {
|
||||
this.pdoIter = pdoIter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasNext() {
|
||||
return pdoIter.hasNext();
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataTime next() {
|
||||
lastAccesed = pdoIter.next();
|
||||
return lastAccesed.getDataTime();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove() {
|
||||
pdoIter.remove();
|
||||
}
|
||||
}
|
||||
|
||||
@XmlElement
|
||||
private int groupTimeRangeMinutes = 3;
|
||||
public class VIIRSResourceData extends AbstractNppResourceData {
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
|
@ -119,176 +73,4 @@ public class VIIRSResourceData extends AbstractRequestableResourceData {
|
|||
return new VIIRSResource(this, loadProperties, viirsRecords);
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see com.raytheon.uf.viz.core.rsc.AbstractRequestableResourceData#
|
||||
* requestPluginDataObjects(java.util.Collection)
|
||||
*/
|
||||
@Override
|
||||
protected PluginDataObject[] requestPluginDataObjects(
|
||||
Collection<DataTime> loadSet) throws VizException {
|
||||
List<DataTime> timesToLoad = new ArrayList<DataTime>(loadSet);
|
||||
Collections.sort(timesToLoad);
|
||||
DataTime first = timesToLoad.get(0);
|
||||
DataTime last = timesToLoad.get(timesToLoad.size() - 1);
|
||||
Map<String, RequestConstraint> requestMap = new HashMap<String, RequestConstraint>(
|
||||
getMetadataMap());
|
||||
RequestConstraint timeConst = new RequestConstraint();
|
||||
timeConst.setConstraintType(ConstraintType.BETWEEN);
|
||||
timeConst.setBetweenValueList(new String[] {
|
||||
new DataTime(first.getValidPeriod().getStart()).toString(),
|
||||
new DataTime(last.getValidPeriod().getEnd()).toString() });
|
||||
requestMap.put("dataTime.refTime", timeConst);
|
||||
|
||||
LayerProperty property = new LayerProperty();
|
||||
property.setEntryQueryParameters(requestMap, false);
|
||||
property.setNumberOfImages(9999);
|
||||
|
||||
List<Object> pdos = DataCubeContainer.getData(property, 60000);
|
||||
List<PluginDataObject> finalList = new ArrayList<PluginDataObject>(
|
||||
pdos != null ? pdos.size() : 0);
|
||||
|
||||
if (pdos != null) {
|
||||
for (Object obj : pdos) {
|
||||
PluginDataObject pdo = (PluginDataObject) obj;
|
||||
for (DataTime dt : loadSet) {
|
||||
if (withinRange(dt.getValidPeriod(), pdo.getDataTime())) {
|
||||
finalList.add(pdo);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Collections.sort(finalList, layerComparator);
|
||||
}
|
||||
return finalList.toArray(new PluginDataObject[finalList.size()]);
|
||||
}
|
||||
|
||||
public static boolean withinRange(TimeRange range, DataTime time) {
|
||||
long refTime = time.getMatchRef();
|
||||
return range.getStart().getTime() <= refTime
|
||||
&& range.getEnd().getTime() >= refTime;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see com.raytheon.uf.viz.core.rsc.AbstractRequestableResourceData#
|
||||
* getAvailableTimes()
|
||||
*/
|
||||
@Override
|
||||
public DataTime[] getAvailableTimes() throws VizException {
|
||||
Collection<DataTime> dts = groupTimes(Arrays.asList(super
|
||||
.getAvailableTimes()));
|
||||
return dts.toArray(new DataTime[dts.size()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Group times for a {@link PluginDataObject} collection based on
|
||||
* {@link #groupTimeRangeMinutes}
|
||||
*
|
||||
* @param records
|
||||
* @return
|
||||
*/
|
||||
public <T extends PluginDataObject> Map<DataTime, Collection<T>> groupRecordTimes(
|
||||
Collection<T> records) {
|
||||
long groupTimeInMillis = groupTimeRangeMinutes * 60 * 1000;
|
||||
Map<DataTime, Collection<T>> grouped = new HashMap<DataTime, Collection<T>>();
|
||||
Queue<T> objects = new ArrayDeque<T>(records);
|
||||
while (objects.size() > 0) {
|
||||
T record = objects.remove();
|
||||
DataTime current = record.getDataTime();
|
||||
TimeRange prev, curr;
|
||||
prev = curr = current.getValidPeriod();
|
||||
|
||||
List<T> group = new ArrayList<T>();
|
||||
while (curr != null) {
|
||||
prev = curr;
|
||||
DataTimeIterator<T> iter = new DataTimeIterator<T>(
|
||||
objects.iterator());
|
||||
curr = match(iter, current.getValidPeriod(), groupTimeInMillis);
|
||||
if (curr != null) {
|
||||
group.add(iter.lastAccesed);
|
||||
}
|
||||
}
|
||||
|
||||
grouped.put(new DataTime(prev.getStart().getTime(), prev), group);
|
||||
}
|
||||
return grouped;
|
||||
}
|
||||
|
||||
/**
|
||||
* Group the {@link DataTime} collection based on
|
||||
* {@link #groupTimeRangeMinutes}
|
||||
*
|
||||
* @param dataTimes
|
||||
* @return
|
||||
*/
|
||||
public Collection<DataTime> groupTimes(Collection<DataTime> dataTimes) {
|
||||
long groupTimeInMillis = groupTimeRangeMinutes * 60 * 1000;
|
||||
List<DataTime> grouped = new ArrayList<DataTime>(dataTimes.size());
|
||||
Queue<DataTime> objects = new ArrayDeque<DataTime>(dataTimes);
|
||||
while (objects.size() > 0) {
|
||||
DataTime current = objects.remove();
|
||||
TimeRange prev, curr;
|
||||
prev = curr = current.getValidPeriod();
|
||||
while (curr != null) {
|
||||
prev = curr;
|
||||
curr = match(objects.iterator(), current.getValidPeriod(),
|
||||
groupTimeInMillis);
|
||||
}
|
||||
|
||||
grouped.add(new DataTime(prev.getStart().getTime(), prev));
|
||||
}
|
||||
return grouped;
|
||||
}
|
||||
|
||||
private TimeRange match(Iterator<DataTime> iter, TimeRange time,
|
||||
long groupTimeInMillis) {
|
||||
long startT = time.getStart().getTime();
|
||||
long endT = time.getEnd().getTime();
|
||||
while (iter.hasNext()) {
|
||||
DataTime dt = iter.next();
|
||||
TimeRange dtRange = dt.getValidPeriod();
|
||||
long s = dtRange.getStart().getTime();
|
||||
long e = dtRange.getEnd().getTime();
|
||||
long startCheck = s - groupTimeInMillis;
|
||||
long endCheck = e + groupTimeInMillis;
|
||||
if ((startT <= startCheck && endT >= startCheck)
|
||||
|| (startCheck <= startT && endCheck >= startT)) {
|
||||
iter.remove();
|
||||
return new TimeRange(Math.min(s, startT), Math.max(e, endT));
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the groupTimeRangeMinutes
|
||||
*/
|
||||
public int getGroupTimeRangeMinutes() {
|
||||
return groupTimeRangeMinutes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param groupTimeRangeMinutes
|
||||
* the groupTimeRangeMinutes to set
|
||||
*/
|
||||
public void setGroupTimeRangeMinutes(int groupTimeRangeMinutes) {
|
||||
this.groupTimeRangeMinutes = groupTimeRangeMinutes;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.uf.viz.core.rsc.AbstractRequestableResourceData#update(java
|
||||
* .lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public void update(Object updateData) {
|
||||
super.update(updateData);
|
||||
invalidateAvailableTimesCache();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
7
cave/com.raytheon.uf.viz.npp/.classpath
Normal file
7
cave/com.raytheon.uf.viz.npp/.classpath
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
28
cave/com.raytheon.uf.viz.npp/.project
Normal file
28
cave/com.raytheon.uf.viz.npp/.project
Normal file
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>com.raytheon.uf.viz.npp</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.PluginNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -0,0 +1,8 @@
|
|||
#Tue Jan 08 13:23:52 CST 2013
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
||||
org.eclipse.jdt.core.compiler.compliance=1.6
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.source=1.6
|
14
cave/com.raytheon.uf.viz.npp/META-INF/MANIFEST.MF
Normal file
14
cave/com.raytheon.uf.viz.npp/META-INF/MANIFEST.MF
Normal file
|
@ -0,0 +1,14 @@
|
|||
Manifest-Version: 1.0
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: NPP Viz
|
||||
Bundle-SymbolicName: com.raytheon.uf.viz.npp
|
||||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-Activator: com.raytheon.uf.viz.npp.Activator
|
||||
Bundle-Vendor: RAYTHEON
|
||||
Require-Bundle: org.eclipse.core.runtime,
|
||||
com.raytheon.uf.viz.core;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.dataplugin;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.time;bundle-version="1.12.1174"
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Export-Package: com.raytheon.uf.viz.npp
|
5
cave/com.raytheon.uf.viz.npp/build.properties
Normal file
5
cave/com.raytheon.uf.viz.npp/build.properties
Normal file
|
@ -0,0 +1,5 @@
|
|||
source.. = src/
|
||||
output.. = bin/
|
||||
bin.includes = META-INF/,\
|
||||
.,\
|
||||
localization/
|
|
@ -20,7 +20,8 @@
|
|||
-->
|
||||
<menuTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<contribute xsi:type="subMenu" id="NPPProducts" menuText="NPP Products">
|
||||
<contribute xsi:type="subinclude" fileName="menus/npp/viirs/viirsMenuItems.xml"/>
|
||||
<contribute xsi:type="subinclude" fileName="menus/npp/crimss/crimssMenuItems.xml"/>
|
||||
<contribute xsi:type="separator" id="Imagery" visible="false"/>
|
||||
<contribute xsi:type="titleItem" id="SoundingsTitle" titleText="------ Soundings ------"/>
|
||||
<contribute xsi:type="separator" id="Soundings" visible="false"/>
|
||||
</contribute>
|
||||
</menuTemplate>
|
|
@ -0,0 +1,269 @@
|
|||
/**
|
||||
* 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.uf.viz.npp;
|
||||
|
||||
import java.util.ArrayDeque;
|
||||
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;
|
||||
import java.util.Map;
|
||||
import java.util.Queue;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
|
||||
import com.raytheon.uf.common.dataplugin.PluginDataObject;
|
||||
import com.raytheon.uf.common.dataquery.requests.RequestConstraint;
|
||||
import com.raytheon.uf.common.dataquery.requests.RequestConstraint.ConstraintType;
|
||||
import com.raytheon.uf.common.time.DataTime;
|
||||
import com.raytheon.uf.common.time.TimeRange;
|
||||
import com.raytheon.uf.viz.core.catalog.LayerProperty;
|
||||
import com.raytheon.uf.viz.core.datastructure.DataCubeContainer;
|
||||
import com.raytheon.uf.viz.core.exception.VizException;
|
||||
import com.raytheon.uf.viz.core.rsc.AbstractRequestableResourceData;
|
||||
|
||||
/**
|
||||
* Abstract resource data for all NPP data. Groups frame times close together
|
||||
* (within {@link #groupTimeRangeMinutes} minutes).
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Jan 8, 2013 mschenke Initial creation
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author mschenke
|
||||
* @version 1.0
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.NONE)
|
||||
public abstract class AbstractNppResourceData extends
|
||||
AbstractRequestableResourceData {
|
||||
|
||||
private static class DataTimeIterator<T extends PluginDataObject>
|
||||
implements Iterator<DataTime> {
|
||||
|
||||
private Iterator<T> pdoIter;
|
||||
|
||||
private T lastAccesed;
|
||||
|
||||
private DataTimeIterator(Iterator<T> pdoIter) {
|
||||
this.pdoIter = pdoIter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasNext() {
|
||||
return pdoIter.hasNext();
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataTime next() {
|
||||
lastAccesed = pdoIter.next();
|
||||
return lastAccesed.getDataTime();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove() {
|
||||
pdoIter.remove();
|
||||
}
|
||||
}
|
||||
|
||||
@XmlElement
|
||||
private int groupTimeRangeMinutes = 15;
|
||||
|
||||
/**
|
||||
* @return the groupTimeRangeMinutes
|
||||
*/
|
||||
public int getGroupTimeRangeMinutes() {
|
||||
return groupTimeRangeMinutes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param groupTimeRangeMinutes
|
||||
* the groupTimeRangeMinutes to set
|
||||
*/
|
||||
public void setGroupTimeRangeMinutes(int groupTimeRangeMinutes) {
|
||||
this.groupTimeRangeMinutes = groupTimeRangeMinutes;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see com.raytheon.uf.viz.core.rsc.AbstractRequestableResourceData#
|
||||
* requestPluginDataObjects(java.util.Collection)
|
||||
*/
|
||||
@Override
|
||||
protected PluginDataObject[] requestPluginDataObjects(
|
||||
Collection<DataTime> loadSet) throws VizException {
|
||||
List<DataTime> timesToLoad = new ArrayList<DataTime>(loadSet);
|
||||
Collections.sort(timesToLoad);
|
||||
DataTime first = timesToLoad.get(0);
|
||||
DataTime last = timesToLoad.get(timesToLoad.size() - 1);
|
||||
Map<String, RequestConstraint> requestMap = new HashMap<String, RequestConstraint>(
|
||||
getMetadataMap());
|
||||
RequestConstraint timeConst = new RequestConstraint();
|
||||
timeConst.setConstraintType(ConstraintType.BETWEEN);
|
||||
timeConst.setBetweenValueList(new String[] {
|
||||
new DataTime(first.getValidPeriod().getStart()).toString(),
|
||||
new DataTime(last.getValidPeriod().getEnd()).toString() });
|
||||
requestMap.put("dataTime.refTime", timeConst);
|
||||
|
||||
LayerProperty property = new LayerProperty();
|
||||
property.setEntryQueryParameters(requestMap, false);
|
||||
property.setNumberOfImages(9999);
|
||||
|
||||
List<Object> pdos = DataCubeContainer.getData(property, 60000);
|
||||
List<PluginDataObject> finalList = new ArrayList<PluginDataObject>(
|
||||
pdos != null ? pdos.size() : 0);
|
||||
|
||||
if (pdos != null) {
|
||||
for (Object obj : pdos) {
|
||||
PluginDataObject pdo = (PluginDataObject) obj;
|
||||
for (DataTime dt : loadSet) {
|
||||
if (withinRange(dt.getValidPeriod(), pdo.getDataTime())) {
|
||||
finalList.add(pdo);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Collections.sort(finalList, layerComparator);
|
||||
}
|
||||
return finalList.toArray(new PluginDataObject[finalList.size()]);
|
||||
}
|
||||
|
||||
public static boolean withinRange(TimeRange range, DataTime time) {
|
||||
long refTime = time.getMatchRef();
|
||||
return range.getStart().getTime() <= refTime
|
||||
&& range.getEnd().getTime() >= refTime;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see com.raytheon.uf.viz.core.rsc.AbstractRequestableResourceData#
|
||||
* getAvailableTimes()
|
||||
*/
|
||||
@Override
|
||||
public DataTime[] getAvailableTimes() throws VizException {
|
||||
Collection<DataTime> dts = groupTimes(Arrays.asList(super
|
||||
.getAvailableTimes()));
|
||||
return dts.toArray(new DataTime[dts.size()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Group times for a {@link PluginDataObject} collection based on
|
||||
* {@link #groupTimeRangeMinutes}
|
||||
*
|
||||
* @param records
|
||||
* @return
|
||||
*/
|
||||
public <T extends PluginDataObject> Map<DataTime, Collection<T>> groupRecordTimes(
|
||||
Collection<T> records) {
|
||||
long groupTimeInMillis = groupTimeRangeMinutes * 60 * 1000;
|
||||
Map<DataTime, Collection<T>> grouped = new HashMap<DataTime, Collection<T>>();
|
||||
Queue<T> objects = new ArrayDeque<T>(records);
|
||||
while (objects.size() > 0) {
|
||||
T record = objects.remove();
|
||||
DataTime current = record.getDataTime();
|
||||
TimeRange prev, curr;
|
||||
prev = curr = current.getValidPeriod();
|
||||
|
||||
List<T> group = new ArrayList<T>();
|
||||
while (curr != null) {
|
||||
prev = curr;
|
||||
DataTimeIterator<T> iter = new DataTimeIterator<T>(
|
||||
objects.iterator());
|
||||
curr = match(iter, prev, groupTimeInMillis);
|
||||
if (curr != null) {
|
||||
group.add(iter.lastAccesed);
|
||||
}
|
||||
}
|
||||
|
||||
grouped.put(new DataTime(prev.getStart().getTime(), prev), group);
|
||||
}
|
||||
return grouped;
|
||||
}
|
||||
|
||||
/**
|
||||
* Group the {@link DataTime} collection based on
|
||||
* {@link #groupTimeRangeMinutes}
|
||||
*
|
||||
* @param dataTimes
|
||||
* @return
|
||||
*/
|
||||
public Collection<DataTime> groupTimes(Collection<DataTime> dataTimes) {
|
||||
long groupTimeInMillis = groupTimeRangeMinutes * 60 * 1000;
|
||||
List<DataTime> grouped = new ArrayList<DataTime>(dataTimes.size());
|
||||
Queue<DataTime> objects = new ArrayDeque<DataTime>(dataTimes);
|
||||
while (objects.size() > 0) {
|
||||
DataTime current = objects.remove();
|
||||
TimeRange prev, curr;
|
||||
prev = curr = current.getValidPeriod();
|
||||
while (curr != null) {
|
||||
prev = curr;
|
||||
curr = match(objects.iterator(), prev, groupTimeInMillis);
|
||||
}
|
||||
|
||||
grouped.add(new DataTime(prev.getStart().getTime(), prev));
|
||||
}
|
||||
return grouped;
|
||||
}
|
||||
|
||||
private TimeRange match(Iterator<DataTime> iter, TimeRange time,
|
||||
long groupTimeInMillis) {
|
||||
long startT = time.getStart().getTime();
|
||||
long endT = time.getEnd().getTime();
|
||||
while (iter.hasNext()) {
|
||||
DataTime dt = iter.next();
|
||||
TimeRange dtRange = dt.getValidPeriod();
|
||||
long s = dtRange.getStart().getTime();
|
||||
long e = dtRange.getEnd().getTime();
|
||||
long startCheck = s - groupTimeInMillis;
|
||||
long endCheck = e + groupTimeInMillis;
|
||||
if ((startT <= startCheck && endT >= startCheck)
|
||||
|| (startCheck <= startT && endCheck >= startT)) {
|
||||
iter.remove();
|
||||
return new TimeRange(Math.min(s, startT), Math.max(e, endT));
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.uf.viz.core.rsc.AbstractRequestableResourceData#update(java
|
||||
* .lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public void update(Object updateData) {
|
||||
super.update(updateData);
|
||||
invalidateAvailableTimesCache();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package com.raytheon.uf.viz.npp;
|
||||
|
||||
import org.osgi.framework.BundleActivator;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
public class Activator implements BundleActivator {
|
||||
|
||||
private static BundleContext context;
|
||||
|
||||
static BundleContext getContext() {
|
||||
return context;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void start(BundleContext bundleContext) throws Exception {
|
||||
Activator.context = bundleContext;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void stop(BundleContext bundleContext) throws Exception {
|
||||
Activator.context = null;
|
||||
}
|
||||
|
||||
}
|
|
@ -7,10 +7,10 @@ Eclipse-BuddyPolicy: registered, ext, global
|
|||
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization
|
||||
Bundle-Vendor: RAYTHEON
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Import-Package: com.raytheon.uf.common.dataplugin,
|
||||
com.raytheon.uf.common.dataplugin.annotations,
|
||||
com.raytheon.uf.common.dataplugin.persist,
|
||||
com.raytheon.uf.common.pointdata,
|
||||
com.raytheon.uf.common.serialization.annotations,
|
||||
javax.persistence
|
||||
Export-Package: com.raytheon.uf.common.dataplugin.npp.crimss
|
||||
Require-Bundle: com.raytheon.uf.common.dataplugin;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.dataplugin.npp.sounding;bundle-version="1.0.0";visibility:=reexport,
|
||||
com.raytheon.uf.common.pointdata;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.serialization;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.time;bundle-version="1.12.1174",
|
||||
javax.persistence;bundle-version="1.0.0"
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
<project basedir="." default="deploy" name="com.raytheon.uf.common.dataplugin.npp.crimss">
|
||||
<available file="../build.edex" property="build.dir.location" value="../build.edex"/>
|
||||
<available file="../../../../../build.edex" property="build.dir.location" value="../../../../../build.edex"/>
|
||||
|
||||
<import file="${build.dir.location}/basebuilds/component_deploy_base.xml" />
|
||||
|
||||
</project>
|
|
@ -19,30 +19,18 @@
|
|||
**/
|
||||
package com.raytheon.uf.common.dataplugin.npp.crimss;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Embedded;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Table;
|
||||
import javax.persistence.UniqueConstraint;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
import com.raytheon.uf.common.dataplugin.IDecoderGettable;
|
||||
import com.raytheon.uf.common.dataplugin.annotations.DataURI;
|
||||
import com.raytheon.uf.common.dataplugin.persist.PersistablePluginDataObject;
|
||||
import com.raytheon.uf.common.pointdata.IPointData;
|
||||
import com.raytheon.uf.common.pointdata.PointDataView;
|
||||
import com.raytheon.uf.common.dataplugin.npp.sounding.NPPSoundingRecord;
|
||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
|
||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
|
||||
|
||||
/**
|
||||
* TODO Add Description
|
||||
* PluginDataObject record for NPP CrIMSS data
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
|
@ -62,8 +50,9 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
|
|||
@DynamicSerialize
|
||||
@XmlRootElement
|
||||
@XmlAccessorType(XmlAccessType.NONE)
|
||||
public class CrimssRecord extends PersistablePluginDataObject implements
|
||||
IPointData {
|
||||
public class CrimssRecord extends NPPSoundingRecord {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public static final String PDV_SURFACE_PRESSURE = "SurfacePressure";
|
||||
|
||||
|
@ -79,77 +68,4 @@ public class CrimssRecord extends PersistablePluginDataObject implements
|
|||
|
||||
public static final String PDV_P_H2O = "PressureLevels_H2O";
|
||||
|
||||
public static final String LATITUDE = "latitude";
|
||||
|
||||
public static final String LONGITUDE = "longitude";
|
||||
|
||||
@Embedded
|
||||
private PointDataView pdv;
|
||||
|
||||
@DataURI(position = 1)
|
||||
@Column
|
||||
@XmlAttribute
|
||||
@DynamicSerializeElement
|
||||
private Double latitude;
|
||||
|
||||
@DataURI(position = 2)
|
||||
@Column
|
||||
@XmlAttribute
|
||||
@DynamicSerializeElement
|
||||
private Double longitude;
|
||||
|
||||
public CrimssRecord() {
|
||||
super();
|
||||
}
|
||||
|
||||
public CrimssRecord(String uri) {
|
||||
super(uri);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Date getPersistenceTime() {
|
||||
Calendar c = getInsertTime();
|
||||
if (c == null)
|
||||
return null;
|
||||
|
||||
return c.getTime();
|
||||
}
|
||||
|
||||
public void setPersistenceTime(Date persistTime) {
|
||||
Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
|
||||
c.setTime(persistTime);
|
||||
setInsertTime(c);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IDecoderGettable getDecoderGettable() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Double getLatitude() {
|
||||
return latitude;
|
||||
}
|
||||
|
||||
public void setLatitude(Double latitude) {
|
||||
this.latitude = latitude;
|
||||
}
|
||||
|
||||
public Double getLongitude() {
|
||||
return longitude;
|
||||
}
|
||||
|
||||
public void setLongitude(Double longitude) {
|
||||
this.longitude = longitude;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PointDataView getPointDataView() {
|
||||
return pdv;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPointDataView(PointDataView pdv) {
|
||||
this.pdv = pdv;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>com.raytheon.uf.common.dataplugin.npp.nucaps</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.PluginNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -0,0 +1,8 @@
|
|||
#Tue Jan 15 10:15:18 CST 2013
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
||||
org.eclipse.jdt.core.compiler.compliance=1.6
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.source=1.6
|
|
@ -0,0 +1,14 @@
|
|||
Manifest-Version: 1.0
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: NUCAPS Common Plugin
|
||||
Bundle-SymbolicName: com.raytheon.uf.common.dataplugin.npp.nucaps
|
||||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-Vendor: RAYTHEON
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Require-Bundle: com.raytheon.uf.common.dataplugin;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.dataplugin.npp.sounding;bundle-version="1.0.0";visibility:=reexport,
|
||||
com.raytheon.uf.common.pointdata;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.serialization;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.time;bundle-version="1.12.1174",
|
||||
javax.persistence;bundle-version="1.0.0"
|
||||
Export-Package: com.raytheon.uf.common.dataplugin.npp.nucaps
|
|
@ -0,0 +1 @@
|
|||
com.raytheon.uf.common.dataplugin.npp.nucaps.NucapsRecord
|
|
@ -0,0 +1,4 @@
|
|||
source.. = src/
|
||||
output.. = bin/
|
||||
bin.includes = META-INF/,\
|
||||
.
|
|
@ -0,0 +1,79 @@
|
|||
/**
|
||||
* 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.uf.common.dataplugin.npp.nucaps;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Table;
|
||||
import javax.persistence.UniqueConstraint;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
import com.raytheon.uf.common.dataplugin.npp.sounding.NPPSoundingRecord;
|
||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
|
||||
|
||||
/**
|
||||
* PDO for NPP NUCAPS data
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Jan 15, 2013 mschenke Initial creation
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author mschenke
|
||||
* @version 1.0
|
||||
*/
|
||||
@Entity
|
||||
@Table(name = "nucaps", uniqueConstraints = { @UniqueConstraint(columnNames = { "dataURI" }) })
|
||||
@DynamicSerialize
|
||||
@XmlRootElement
|
||||
@XmlAccessorType(XmlAccessType.NONE)
|
||||
public class NucapsRecord extends NPPSoundingRecord {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public static final String PDV_SURFACE_PRESSURE = "Surface_Pressure";
|
||||
|
||||
public static final String PDV_PRESSURE = "Pressure";
|
||||
|
||||
public static final String PDV_SKIN_TEMPERATURE = "Skin_Temperature";
|
||||
|
||||
public static final String PDV_TEMPERATURE = "Temperature";
|
||||
|
||||
public static final String PDV_TOPOGRAPHY = "Topography";
|
||||
|
||||
public static final String PDV_EFFECTIVE_PRESSURE = "Effective_Pressure";
|
||||
|
||||
public static final String PDV_WATER_VAPOR_MIXING_RATIO = "H2O_MR";
|
||||
|
||||
public static final String PDV_LIQUID_WATER_MIXING_RATIO = "Liquid_H2O_MR";
|
||||
|
||||
public static final String PDV_OZONE_MIXING_RATIO = "O3_MR";
|
||||
|
||||
public static final String PDV_SULFER_DIOXIDE_MIXING_RATIO = "SO2_MR";
|
||||
|
||||
public static final String PDV_QUALITY_FLAG = "Quality_Flag";
|
||||
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>com.raytheon.uf.common.dataplugin.npp.sounding</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.PluginNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -0,0 +1,8 @@
|
|||
#Thu Jan 03 14:58:27 CST 2013
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
||||
org.eclipse.jdt.core.compiler.compliance=1.6
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.source=1.6
|
|
@ -0,0 +1,12 @@
|
|||
Manifest-Version: 1.0
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: NPP Sounding DataPlugin
|
||||
Bundle-SymbolicName: com.raytheon.uf.common.dataplugin.npp.sounding
|
||||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-Vendor: RAYTHEON
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Require-Bundle: com.raytheon.uf.common.dataplugin;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.serialization;bundle-version="1.12.1174",
|
||||
javax.persistence;bundle-version="1.0.0",
|
||||
com.raytheon.uf.common.pointdata;bundle-version="1.12.1174"
|
||||
Export-Package: com.raytheon.uf.common.dataplugin.npp.sounding
|
|
@ -0,0 +1,4 @@
|
|||
source.. = src/
|
||||
output.. = bin/
|
||||
bin.includes = META-INF/,\
|
||||
.
|
|
@ -0,0 +1,137 @@
|
|||
/**
|
||||
* 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.uf.common.dataplugin.npp.sounding;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Embedded;
|
||||
import javax.persistence.Entity;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
|
||||
import com.raytheon.uf.common.dataplugin.IDecoderGettable;
|
||||
import com.raytheon.uf.common.dataplugin.annotations.DataURI;
|
||||
import com.raytheon.uf.common.dataplugin.persist.PersistablePluginDataObject;
|
||||
import com.raytheon.uf.common.pointdata.IPointData;
|
||||
import com.raytheon.uf.common.pointdata.PointDataView;
|
||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
|
||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
|
||||
|
||||
/**
|
||||
* Abstract NPP sounding record class
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Jan 3, 2013 mschenke Initial creation
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author mschenke
|
||||
* @version 1.0
|
||||
*/
|
||||
@Entity
|
||||
@DynamicSerialize
|
||||
@XmlAccessorType(XmlAccessType.NONE)
|
||||
public abstract class NPPSoundingRecord extends PersistablePluginDataObject
|
||||
implements IPointData {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public static final String LATITUDE = "latitude";
|
||||
|
||||
public static final String LONGITUDE = "longitude";
|
||||
|
||||
@Embedded
|
||||
private PointDataView pointDataView;
|
||||
|
||||
@DataURI(position = 1)
|
||||
@Column
|
||||
@XmlAttribute
|
||||
@DynamicSerializeElement
|
||||
private Double latitude;
|
||||
|
||||
@DataURI(position = 2)
|
||||
@Column
|
||||
@XmlAttribute
|
||||
@DynamicSerializeElement
|
||||
private Double longitude;
|
||||
|
||||
@Override
|
||||
public IDecoderGettable getDecoderGettable() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the latitude
|
||||
*/
|
||||
public Double getLatitude() {
|
||||
return latitude;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param latitude
|
||||
* the latitude to set
|
||||
*/
|
||||
public void setLatitude(Double latitude) {
|
||||
this.latitude = latitude;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the longitude
|
||||
*/
|
||||
public Double getLongitude() {
|
||||
return longitude;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param longitude
|
||||
* the longitude to set
|
||||
*/
|
||||
public void setLongitude(Double longitude) {
|
||||
this.longitude = longitude;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see com.raytheon.uf.common.pointdata.IPointData#getPointDataView()
|
||||
*/
|
||||
@Override
|
||||
public PointDataView getPointDataView() {
|
||||
return pointDataView;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.uf.common.pointdata.IPointData#setPointDataView(com.raytheon
|
||||
* .uf.common.pointdata.PointDataView)
|
||||
*/
|
||||
@Override
|
||||
public void setPointDataView(PointDataView pointDataView) {
|
||||
this.pointDataView = pointDataView;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
<project basedir="." default="deploy" name="com.raytheon.uf.common.dataplugin.npp.viirs">
|
||||
<available file="../build.edex" property="build.dir.location" value="../build.edex"/>
|
||||
<available file="../../../../../build.edex" property="build.dir.location" value="../../../../../build.edex"/>
|
||||
|
||||
<import file="${build.dir.location}/basebuilds/component_deploy_base.xml" />
|
||||
|
||||
</project>
|
|
@ -19,6 +19,7 @@
|
|||
**/
|
||||
package com.raytheon.uf.common.dataplugin.npp.viirs.projection;
|
||||
|
||||
import org.geotools.referencing.crs.DefaultProjectedCRS;
|
||||
import org.geotools.referencing.operation.DefaultMathTransformFactory;
|
||||
import org.opengis.parameter.ParameterValueGroup;
|
||||
import org.opengis.referencing.FactoryException;
|
||||
|
@ -49,8 +50,7 @@ public class VIIRSMapProjectionFactory {
|
|||
/** Using single factory is faster due to internal caching */
|
||||
private static DefaultMathTransformFactory dmtFactory = new DefaultMathTransformFactory();
|
||||
|
||||
public static synchronized ProjectedCRS construct(
|
||||
VIIRSSpatialCoverage record)
|
||||
public static ProjectedCRS construct(VIIRSSpatialCoverage record)
|
||||
throws FactoryException {
|
||||
try {
|
||||
ParameterValueGroup group = dmtFactory
|
||||
|
|
|
@ -23,13 +23,6 @@
|
|||
<import feature="com.raytheon.uf.edex.core.feature" version="1.0.0.qualifier"/>
|
||||
</requires>
|
||||
|
||||
<plugin
|
||||
id="com.raytheon.uf.common.dataplugin.npp.crimss"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="com.raytheon.uf.common.dataplugin.npp.viirs"
|
||||
download-size="0"
|
||||
|
@ -44,13 +37,6 @@
|
|||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="com.raytheon.uf.edex.plugin.npp.crimss"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="com.raytheon.uf.edex.plugin.npp.viirs"
|
||||
download-size="0"
|
||||
|
@ -58,4 +44,32 @@
|
|||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="com.raytheon.uf.common.dataplugin.npp.sounding"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="com.raytheon.uf.edex.plugin.npp.sounding"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="com.raytheon.uf.common.dataplugin.npp.nucaps"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
<plugin
|
||||
id="com.raytheon.uf.edex.plugin.npp.nucaps"
|
||||
download-size="0"
|
||||
install-size="0"
|
||||
version="0.0.0"
|
||||
unpack="false"/>
|
||||
|
||||
</feature>
|
||||
|
|
|
@ -5,15 +5,8 @@ Bundle-SymbolicName: com.raytheon.uf.edex.plugin.npp.crimss
|
|||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-Vendor: RAYTHEON
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Require-Bundle: com.raytheon.edex.common;bundle-version="1.12.1174",
|
||||
org.geotools;bundle-version="2.6.4",
|
||||
javax.measure;bundle-version="1.0.0",
|
||||
javax.persistence;bundle-version="1.0.0",
|
||||
com.raytheon.uf.common.dataplugin.npp.crimss;bundle-version="1.0.0",
|
||||
org.apache.commons.logging;bundle-version="1.1.1",
|
||||
ucar.nc2;bundle-version="1.0.0",
|
||||
org.apache.commons.lang;bundle-version="2.3.0",
|
||||
com.raytheon.uf.edex.plugin.npp;bundle-version="1.0.0",
|
||||
com.raytheon.uf.common.pointdata;bundle-version="1.12.1174",
|
||||
Require-Bundle: com.raytheon.uf.edex.plugin.npp;bundle-version="1.0.0",
|
||||
com.raytheon.uf.edex.plugin.npp.sounding;bundle-version="1.0.0",
|
||||
com.raytheon.uf.common.dataplugin.npp.crimss;bundle-version="1.0.0";visibility:=reexport,
|
||||
com.raytheon.uf.common.status;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.edex.pointdata;bundle-version="1.12.1174"
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
<project basedir="." default="deploy" name="com.raytheon.uf.edex.plugin.npp.crimss">
|
||||
<available file="../build.edex" property="build.dir.location" value="../build.edex" />
|
||||
<available file="../../../../../build.edex" property="build.dir.location" value="../../../../../build.edex" />
|
||||
|
||||
<import file="${build.dir.location}/basebuilds/component_deploy_base.xml" />
|
||||
|
||||
</project>
|
|
@ -9,7 +9,7 @@
|
|||
<bean id="crimssProperties" class="com.raytheon.uf.common.dataplugin.PluginProperties">
|
||||
<property name="pluginName" ref="crimssPluginName" />
|
||||
<property name="pluginFQN" value="com.raytheon.uf.common.dataplugin.npp.crimss" />
|
||||
<property name="dao" value="com.raytheon.uf.edex.plugin.npp.crimss.dao.CrimssDao" />
|
||||
<property name="dao" value="com.raytheon.uf.edex.plugin.npp.sounding.NPPSoundingDao" />
|
||||
<property name="record" value="com.raytheon.uf.common.dataplugin.npp.crimss.CrimssRecord" />
|
||||
</bean>
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
|
||||
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
|
||||
|
||||
<bean id="crimssDecoder" class=" com.raytheon.uf.edex.plugin.npp.crimss.CrimssDecoder">
|
||||
<bean id="crimssDecoder" class="com.raytheon.uf.edex.plugin.npp.sounding.NPPSoundingDecoder">
|
||||
<constructor-arg ref="crimssPluginName" />
|
||||
</bean>
|
||||
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
/**
|
||||
* 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.uf.edex.plugin.npp.crimss;
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
28
edexOsgi/com.raytheon.uf.edex.plugin.npp.nucaps/.project
Normal file
28
edexOsgi/com.raytheon.uf.edex.plugin.npp.nucaps/.project
Normal file
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>com.raytheon.uf.edex.plugin.npp.nucaps</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.PluginNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -0,0 +1,8 @@
|
|||
#Tue Jan 15 10:22:03 CST 2013
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
||||
org.eclipse.jdt.core.compiler.compliance=1.6
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.source=1.6
|
|
@ -0,0 +1,12 @@
|
|||
Manifest-Version: 1.0
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: NUCAPS EDEX Plugin
|
||||
Bundle-SymbolicName: com.raytheon.uf.edex.plugin.npp.nucaps
|
||||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-Vendor: RAYTHEON
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Require-Bundle: com.raytheon.uf.edex.plugin.npp;bundle-version="1.0.0",
|
||||
com.raytheon.uf.edex.plugin.npp.sounding;bundle-version="1.0.0",
|
||||
com.raytheon.uf.common.dataplugin.npp.nucaps;bundle-version="1.0.0";visibility:=reexport,
|
||||
com.raytheon.uf.common.status;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.edex.pointdata;bundle-version="1.12.1174"
|
|
@ -0,0 +1,5 @@
|
|||
source.. = src/
|
||||
output.. = bin/
|
||||
bin.includes = META-INF/,\
|
||||
.,\
|
||||
res/
|
|
@ -0,0 +1,52 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
<pointDataDescription>
|
||||
<!-- Need to check if this is really the max number of levels -->
|
||||
<dimension name="maxLevels" length="100"/>
|
||||
|
||||
<!-- Surface weather parameters, 1 per point -->
|
||||
<parameter name="Skin_Temperature" numDims="1" unit="K" type="FLOAT" />
|
||||
<parameter name="Surface_Pressure" numDims="1" unit="hPa" type="FLOAT" />
|
||||
<parameter name="Topography" numDims="1" unit="m" type="FLOAT" />
|
||||
|
||||
<!-- Pressure parameters -->
|
||||
<parameter name="Pressure" numDims="2" unit="hPa" type="FLOAT" dimension="maxLevels" />
|
||||
<parameter name="Effective_Pressure" numDims="2" unit="hPa" type="FLOAT" dimension="maxLevels" />
|
||||
|
||||
<!-- Temperature parameter -->
|
||||
<parameter name="Temperature" numDims="2" unit="K" type="FLOAT" dimension="maxLevels" />
|
||||
|
||||
<!-- Water vapor mixing ratio -->
|
||||
<parameter name="H2O_MR" numDims="2" unit="g/g" type="FLOAT" dimension="maxLevels" />
|
||||
|
||||
<!-- Liquid water mixing ratio -->
|
||||
<parameter name="Liquid_H2O_MR" numDims="2" unit="g/g" type="FLOAT" dimension="maxLevels" />
|
||||
|
||||
<!-- Ozone mixing ratio -->
|
||||
<parameter name="O3_MR" numDims="2" unit="ppb" type="FLOAT" dimension="maxLevels" />
|
||||
|
||||
<!-- Quality flags -->
|
||||
<parameter name="Quality_Flag" numDims="1" type="INT" />
|
||||
|
||||
<!-- Sulfer dioxide mixing ratio -->
|
||||
<parameter name="SO2_MR" numDims="2" unit="ppb" type="FLOAT" dimension="maxLevels" />
|
||||
|
||||
</pointDataDescription>
|
|
@ -0,0 +1,25 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
<pointDataDbDescription>
|
||||
<parameter name="latitude" queryName="latitude" type="FLOAT" unit="°" />
|
||||
<parameter name="longitude" queryName="longitude" type="FLOAT" unit="°" />
|
||||
<parameter name="dataURI" queryName="dataURI" type="STRING" />
|
||||
</pointDataDbDescription>
|
|
@ -0,0 +1,21 @@
|
|||
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
|
||||
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
|
||||
|
||||
<bean id="nucapsPluginName" class="java.lang.String">
|
||||
<constructor-arg type="java.lang.String" value="nucaps" />
|
||||
</bean>
|
||||
|
||||
<bean id="nucapsProperties" class="com.raytheon.uf.common.dataplugin.PluginProperties">
|
||||
<property name="pluginName" ref="nucapsPluginName" />
|
||||
<property name="pluginFQN" value="com.raytheon.uf.common.dataplugin.npp.nucaps" />
|
||||
<property name="dao" value="com.raytheon.uf.edex.plugin.npp.sounding.NPPSoundingDao" />
|
||||
<property name="record" value="com.raytheon.uf.common.dataplugin.npp.nucaps.NucapsRecord" />
|
||||
</bean>
|
||||
|
||||
<bean factory-bean="pluginRegistry" factory-method="register">
|
||||
<constructor-arg ref="nucapsPluginName"/>
|
||||
<constructor-arg ref="nucapsProperties"/>
|
||||
</bean>
|
||||
|
||||
</beans>
|
|
@ -0,0 +1,45 @@
|
|||
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
|
||||
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
|
||||
|
||||
<bean id="nucapsDecoder" class="com.raytheon.uf.edex.plugin.npp.sounding.NPPSoundingDecoder">
|
||||
<constructor-arg ref="nucapsPluginName" />
|
||||
</bean>
|
||||
|
||||
<bean id="nucapsDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg ref="nucapsPluginName" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.nucaps" />
|
||||
</bean>
|
||||
|
||||
<bean id="nucapsCamelRegistered" factory-bean="contextManager"
|
||||
factory-method="register" depends-on="persistCamelRegistered">
|
||||
<constructor-arg ref="nucaps-camel"/>
|
||||
</bean>
|
||||
|
||||
<camelContext id="nucaps-camel"
|
||||
xmlns="http://camel.apache.org/schema/spring"
|
||||
errorHandlerRef="errorHandler"
|
||||
autoStartup="false">
|
||||
|
||||
<!-- Begin nucaps routes -->
|
||||
<route id="nucapsIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.nucaps?destinationResolver=#qpidDurableResolver" />
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>nucaps</constant>
|
||||
</setHeader>
|
||||
<doTry>
|
||||
<pipeline>
|
||||
<bean ref="stringToFile" />
|
||||
<bean ref="extractWMOHeader" method="remove"/>
|
||||
<bean ref="nucapsDecoder" method="decode" />
|
||||
<to uri="directvm:persistIndexAlert" />
|
||||
</pipeline>
|
||||
<doCatch>
|
||||
<exception>java.lang.Throwable</exception>
|
||||
<to uri="log:nucaps?level=ERROR&showBody=false&showCaughtException=true&showStackTrace=true"/>
|
||||
</doCatch>
|
||||
</doTry>
|
||||
</route>
|
||||
</camelContext>
|
||||
</beans>
|
|
@ -0,0 +1,21 @@
|
|||
/**
|
||||
* 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.uf.edex.plugin.npp.nucaps;
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
<requestPatterns xmlns:ns2="group">
|
||||
<regex>^IUTN0[0-9] KNES*</regex>
|
||||
</requestPatterns>
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
28
edexOsgi/com.raytheon.uf.edex.plugin.npp.sounding/.project
Normal file
28
edexOsgi/com.raytheon.uf.edex.plugin.npp.sounding/.project
Normal file
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>com.raytheon.uf.edex.plugin.npp.sounding</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.PluginNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -0,0 +1,8 @@
|
|||
#Thu Jan 03 14:37:22 CST 2013
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
||||
org.eclipse.jdt.core.compiler.compliance=1.6
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.source=1.6
|
|
@ -0,0 +1,14 @@
|
|||
Manifest-Version: 1.0
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: NPP Sounding
|
||||
Bundle-SymbolicName: com.raytheon.uf.edex.plugin.npp.sounding
|
||||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-Vendor: RAYTHEON
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Require-Bundle: com.raytheon.uf.edex.plugin.npp;bundle-version="1.0.0",
|
||||
com.raytheon.uf.common.dataplugin.npp.sounding;bundle-version="1.0.0";visibility:=reexport,
|
||||
com.raytheon.uf.common.dataplugin;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.pointdata;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.edex.pointdata;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.status;bundle-version="1.12.1174"
|
||||
Export-Package: com.raytheon.uf.edex.plugin.npp.sounding
|
|
@ -0,0 +1,4 @@
|
|||
source.. = src/
|
||||
output.. = bin/
|
||||
bin.includes = META-INF/,\
|
||||
.
|
|
@ -17,14 +17,15 @@
|
|||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
* further licensing information.
|
||||
**/
|
||||
package com.raytheon.uf.edex.plugin.npp.crimss.dao;
|
||||
package com.raytheon.uf.edex.plugin.npp.sounding;
|
||||
|
||||
import com.raytheon.uf.common.dataplugin.PluginDataObject;
|
||||
import com.raytheon.uf.common.dataplugin.PluginException;
|
||||
import com.raytheon.uf.common.dataplugin.npp.crimss.CrimssRecord;
|
||||
import com.raytheon.uf.edex.database.plugin.PluginFactory;
|
||||
import com.raytheon.uf.edex.pointdata.PointDataPluginDao;
|
||||
|
||||
/**
|
||||
* TODO Add Description
|
||||
* Dao for all NPP Soundings
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
|
@ -32,27 +33,46 @@ import com.raytheon.uf.edex.pointdata.PointDataPluginDao;
|
|||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Dec 2, 2011 bsteffen Initial creation
|
||||
* Jan 4, 2013 mschenke Initial creation
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author bsteffen
|
||||
* @author mschenke
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
public class CrimssDao extends PointDataPluginDao<CrimssRecord> {
|
||||
public class NPPSoundingDao extends PointDataPluginDao<PluginDataObject> {
|
||||
|
||||
private String[] fileNameKeys = new String[] { "dataTime.refTime" };
|
||||
|
||||
private Class<? extends PluginDataObject> recordClass;
|
||||
|
||||
/**
|
||||
* @param pluginName
|
||||
* @throws PluginException
|
||||
*/
|
||||
public CrimssDao(String pluginName) throws PluginException {
|
||||
public NPPSoundingDao(String pluginName) throws PluginException {
|
||||
super(pluginName);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param fileNameKeys
|
||||
* the fileNameKeys to set
|
||||
*/
|
||||
public void setFileNameKeys(String[] fileNameKeys) {
|
||||
this.fileNameKeys = fileNameKeys;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.uf.edex.pointdata.PointDataPluginDao#getKeysRequiredForFileName
|
||||
* ()
|
||||
*/
|
||||
@Override
|
||||
public String[] getKeysRequiredForFileName() {
|
||||
return new String[] { "dataTime.refTime" };
|
||||
return fileNameKeys;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -61,8 +81,21 @@ public class CrimssDao extends PointDataPluginDao<CrimssRecord> {
|
|||
* @see com.raytheon.uf.edex.pointdata.PointDataPluginDao#newObject()
|
||||
*/
|
||||
@Override
|
||||
public CrimssRecord newObject() {
|
||||
return new CrimssRecord();
|
||||
public PluginDataObject newObject() {
|
||||
if (recordClass == null) {
|
||||
try {
|
||||
recordClass = PluginFactory.getInstance().getPluginRecordClass(
|
||||
pluginName);
|
||||
} catch (PluginException e) {
|
||||
throw new RuntimeException(
|
||||
"Error getting record class for plugin: " + pluginName);
|
||||
}
|
||||
}
|
||||
try {
|
||||
return recordClass.newInstance();
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e.getLocalizedMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -73,8 +106,8 @@ public class CrimssDao extends PointDataPluginDao<CrimssRecord> {
|
|||
* (com.raytheon.uf.common.dataplugin.PluginDataObject)
|
||||
*/
|
||||
@Override
|
||||
public String getPointDataFileName(CrimssRecord p) {
|
||||
return pluginName + ".h5";
|
||||
public String getPointDataFileName(PluginDataObject p) {
|
||||
return pluginName;
|
||||
}
|
||||
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
* further licensing information.
|
||||
**/
|
||||
package com.raytheon.uf.edex.plugin.npp.crimss;
|
||||
package com.raytheon.uf.edex.plugin.npp.sounding;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
@ -35,7 +35,7 @@ import com.raytheon.edex.esb.Headers;
|
|||
import com.raytheon.edex.exception.DecoderException;
|
||||
import com.raytheon.uf.common.dataplugin.PluginDataObject;
|
||||
import com.raytheon.uf.common.dataplugin.PluginException;
|
||||
import com.raytheon.uf.common.dataplugin.npp.crimss.CrimssRecord;
|
||||
import com.raytheon.uf.common.dataplugin.npp.sounding.NPPSoundingRecord;
|
||||
import com.raytheon.uf.common.pointdata.ParameterDescription;
|
||||
import com.raytheon.uf.common.pointdata.PointDataContainer;
|
||||
import com.raytheon.uf.common.pointdata.PointDataDescription;
|
||||
|
@ -44,11 +44,12 @@ import com.raytheon.uf.common.status.IUFStatusHandler;
|
|||
import com.raytheon.uf.common.status.UFStatus;
|
||||
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||
import com.raytheon.uf.common.time.DataTime;
|
||||
import com.raytheon.uf.edex.database.plugin.PluginFactory;
|
||||
import com.raytheon.uf.edex.plugin.npp.AbstractNPPDecoder;
|
||||
import com.raytheon.uf.edex.plugin.npp.crimss.dao.CrimssDao;
|
||||
|
||||
/**
|
||||
* TODO Add Description
|
||||
* Common decoder for all NPP Soundings. Uses point data definition to find data
|
||||
* records in netcdf file for persisting
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
|
@ -56,32 +57,36 @@ import com.raytheon.uf.edex.plugin.npp.crimss.dao.CrimssDao;
|
|||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Dec 2, 2011 bsteffen Initial creation
|
||||
* Jan 4, 2013 mschenke Initial creation
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author bsteffen
|
||||
* @author mschenke
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
public class CrimssDecoder extends AbstractNPPDecoder {
|
||||
public class NPPSoundingDecoder extends AbstractNPPDecoder {
|
||||
|
||||
private static final IUFStatusHandler statusHandler = UFStatus
|
||||
.getHandler(CrimssDecoder.class);
|
||||
private IUFStatusHandler statusHandler = UFStatus
|
||||
.getHandler(NPPSoundingDecoder.class);
|
||||
|
||||
private final String pluginName;
|
||||
private static final String LATITUDE_DATASET_ID = "Latitude@";
|
||||
|
||||
private final CrimssDao dao;
|
||||
private static final String LONGITUDE_DATASET_ID = "Longitude@";
|
||||
|
||||
public CrimssDecoder(String pluginName) {
|
||||
private String pluginName;
|
||||
|
||||
private NPPSoundingDao pluginDao;
|
||||
|
||||
public NPPSoundingDecoder(String pluginName) {
|
||||
this.pluginName = pluginName;
|
||||
CrimssDao dao = null;
|
||||
try {
|
||||
dao = new CrimssDao(pluginName);
|
||||
this.pluginDao = (NPPSoundingDao) PluginFactory.getInstance()
|
||||
.getPluginDao(pluginName);
|
||||
} catch (PluginException e) {
|
||||
statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e);
|
||||
throw new RuntimeException("Could not get DAO from pluginName: "
|
||||
+ pluginName, e);
|
||||
}
|
||||
this.dao = dao;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -90,65 +95,79 @@ public class CrimssDecoder extends AbstractNPPDecoder {
|
|||
* @see
|
||||
* com.raytheon.uf.edex.plugin.npp.AbstractNPPDecoder#decodeNetcdf(ucar.
|
||||
* nc2.NetcdfFile, com.raytheon.uf.common.time.DataTime,
|
||||
* com.raytheon.edex.esb.Headers)
|
||||
* com.raytheon.uf.edex.plugin.npp.Headers)
|
||||
*/
|
||||
@Override
|
||||
protected Object decodeNetcdf(NetcdfFile dataFile, DataTime dataTime,
|
||||
Headers headers) {
|
||||
PluginDataObject[] pdos = new PluginDataObject[0];
|
||||
try {
|
||||
Group root = dataFile.getRootGroup();
|
||||
CrimssRecord[] records = decodeMetadata(root, dataTime);
|
||||
decodeData(records, root);
|
||||
return records;
|
||||
NPPSoundingRecord[] metadata = decodeMetadata(root, dataTime);
|
||||
decodePointData(root, metadata);
|
||||
pdos = metadata;
|
||||
} catch (Exception e) {
|
||||
statusHandler.handle(Priority.PROBLEM, "Error decoding CrIMSS", e);
|
||||
statusHandler.handle(
|
||||
Priority.WARN,
|
||||
"Could not decode sounding file: "
|
||||
+ e.getLocalizedMessage(), e);
|
||||
}
|
||||
return new PluginDataObject[0];
|
||||
|
||||
return pdos;
|
||||
}
|
||||
|
||||
private CrimssRecord[] decodeMetadata(Group root, DataTime time)
|
||||
protected NPPSoundingRecord[] decodeMetadata(Group root, DataTime dataTime)
|
||||
throws DecoderException, PluginException, IOException {
|
||||
NPPSoundingRecord[] pdos = new NPPSoundingRecord[0];
|
||||
Variable latitude = null;
|
||||
Variable longitude = null;
|
||||
for (Variable var : root.getVariables()) {
|
||||
if (var.getFullName().startsWith("Latitude@")) {
|
||||
if (var.getFullName().startsWith(LATITUDE_DATASET_ID)) {
|
||||
latitude = var;
|
||||
} else if (var.getFullName().startsWith("Longitude@")) {
|
||||
} else if (var.getFullName().startsWith(LONGITUDE_DATASET_ID)) {
|
||||
longitude = var;
|
||||
}
|
||||
}
|
||||
if (latitude == null || longitude == null) {
|
||||
throw new DecoderException("Unable to find lat/lon information");
|
||||
}
|
||||
Map<File, PointDataContainer> containerMap = new HashMap<File, PointDataContainer>();
|
||||
|
||||
Map<File, PointDataContainer> containerMap = new HashMap<File, PointDataContainer>();
|
||||
Array latArray = latitude.read();
|
||||
Array lonArray = longitude.read();
|
||||
int numRecs = latitude.getDimension(0).getLength();
|
||||
CrimssRecord[] records = new CrimssRecord[numRecs];
|
||||
NPPSoundingRecord[] records = new NPPSoundingRecord[numRecs];
|
||||
|
||||
for (int i = 0; i < numRecs; i++) {
|
||||
records[i] = new CrimssRecord();
|
||||
records[i].setPluginName(pluginName);
|
||||
records[i].setDataTime(time);
|
||||
records[i].setLatitude((double) latArray.getFloat(i));
|
||||
records[i].setLongitude((double) lonArray.getFloat(i));
|
||||
records[i].constructDataURI();
|
||||
File storageFile = dao.getFullFilePath(records[i]);
|
||||
// Create PDO for lat/lon entry
|
||||
NPPSoundingRecord record = (NPPSoundingRecord) pluginDao
|
||||
.newObject();
|
||||
record.setPluginName(pluginName);
|
||||
record.setDataTime(dataTime);
|
||||
record.setLatitude((double) latArray.getFloat(i));
|
||||
record.setLongitude((double) lonArray.getFloat(i));
|
||||
record.constructDataURI();
|
||||
|
||||
File storageFile = pluginDao.getFullFilePath(record);
|
||||
PointDataContainer pdc = containerMap.get(storageFile);
|
||||
if (pdc == null) {
|
||||
pdc = PointDataContainer.build(dao
|
||||
pdc = PointDataContainer.build(pluginDao
|
||||
.getPointDataDescription(null));
|
||||
containerMap.put(storageFile, pdc);
|
||||
}
|
||||
PointDataView pdv = pdc.append();
|
||||
records[i].setPointDataView(pdv);
|
||||
record.setPointDataView(pdv);
|
||||
|
||||
records[i] = record;
|
||||
}
|
||||
return records;
|
||||
pdos = records;
|
||||
|
||||
return pdos;
|
||||
}
|
||||
|
||||
private void decodeData(CrimssRecord[] records, Group root)
|
||||
private void decodePointData(Group root, NPPSoundingRecord[] records)
|
||||
throws IOException {
|
||||
PointDataDescription desc = dao.getPointDataDescription(null);
|
||||
PointDataDescription desc = pluginDao.getPointDataDescription(null);
|
||||
for (Variable var : root.getVariables()) {
|
||||
String name = var.getFullName().split("@")[0];
|
||||
for (ParameterDescription param : desc.parameters) {
|
||||
|
@ -171,7 +190,7 @@ public class CrimssDecoder extends AbstractNPPDecoder {
|
|||
}
|
||||
}
|
||||
|
||||
private static void read1D(CrimssRecord[] records, Variable var,
|
||||
private static void read1D(NPPSoundingRecord[] records, Variable var,
|
||||
String parameter) throws IOException {
|
||||
Array data = var.read();
|
||||
for (int i = 0; i < records.length; i++) {
|
||||
|
@ -186,7 +205,7 @@ public class CrimssDecoder extends AbstractNPPDecoder {
|
|||
* stored in one dimensional data. We need this pressure information stored
|
||||
* for each location so it becomes two dimensional in our storage.
|
||||
*/
|
||||
private static void read1Dto2D(CrimssRecord[] records, Variable var,
|
||||
private static void read1Dto2D(NPPSoundingRecord[] records, Variable var,
|
||||
String parameter) throws IOException {
|
||||
int numLevels = var.getDimension(0).getLength();
|
||||
Array data = var.read();
|
||||
|
@ -199,7 +218,7 @@ public class CrimssDecoder extends AbstractNPPDecoder {
|
|||
}
|
||||
}
|
||||
|
||||
private static void read2D(CrimssRecord[] records, Variable var,
|
||||
private static void read2D(NPPSoundingRecord[] records, Variable var,
|
||||
String parameter) throws IOException {
|
||||
int numLevels = var.getDimension(1).getLength();
|
||||
Array data = var.read();
|
|
@ -1,7 +0,0 @@
|
|||
<project basedir="." default="deploy" name="com.raytheon.uf.edex.plugin.npp.viirs">
|
||||
<available file="../build.edex" property="build.dir.location" value="../build.edex"/>
|
||||
<available file="../../../../../build.edex" property="build.dir.location" value="../../../../../build.edex"/>
|
||||
|
||||
<import file="${build.dir.location}/basebuilds/component_deploy_base.xml" />
|
||||
|
||||
</project>
|
|
@ -5,11 +5,9 @@ Bundle-SymbolicName: com.raytheon.uf.edex.plugin.npp
|
|||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-Vendor: RAYTHEON
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Require-Bundle: com.raytheon.edex.common;bundle-version="1.12.1174",
|
||||
Require-Bundle: com.raytheon.edex.common;bundle-version="1.12.1174";visibility:=reexport,
|
||||
ucar.nc2;bundle-version="1.0.0";visibility:=reexport,
|
||||
org.geotools;bundle-version="2.6.4",
|
||||
javax.measure;bundle-version="1.0.0",
|
||||
javax.persistence;bundle-version="1.0.0",
|
||||
org.apache.commons.logging;bundle-version="1.1.1",
|
||||
ucar.nc2;bundle-version="1.0.0",
|
||||
org.apache.commons.lang;bundle-version="2.3.0"
|
||||
Export-Package: com.raytheon.uf.edex.plugin.npp
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
<project basedir="." default="deploy" name="com.raytheon.uf.edex.plugin.npp">
|
||||
<available file="../build.edex" property="build.dir.location" value="../build.edex" />
|
||||
<available file="../../../../../build.edex" property="build.dir.location" value="../../../../../build.edex" />
|
||||
|
||||
<import file="${build.dir.location}/basebuilds/component_deploy_base.xml" />
|
||||
|
||||
</project>
|
Loading…
Add table
Reference in a new issue