rm goesr plugins from awips2-builds revert to use AWIPS2_GOESR repo
This commit is contained in:
parent
a5ec61fd8c
commit
dc746abd0c
122 changed files with 0 additions and 13225 deletions
|
@ -1,17 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>com.raytheon.uf.viz.satellite.goesr.feature</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.pde.FeatureBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>org.eclipse.pde.FeatureNature</nature>
|
|
||||||
</natures>
|
|
||||||
</projectDescription>
|
|
|
@ -1 +0,0 @@
|
||||||
bin.includes = feature.xml
|
|
|
@ -1,39 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<feature
|
|
||||||
id="com.raytheon.uf.viz.satellite.goesr.feature"
|
|
||||||
label="GOESR Feature"
|
|
||||||
version="1.15.0.qualifier"
|
|
||||||
provider-name="RAYTHEON">
|
|
||||||
|
|
||||||
<description>
|
|
||||||
Contains plugin(s) that allow custom visualization for data from the GOES-R series of satellites.
|
|
||||||
</description>
|
|
||||||
|
|
||||||
<license>
|
|
||||||
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.
|
|
||||||
</license>
|
|
||||||
|
|
||||||
<plugin
|
|
||||||
id="com.raytheon.uf.viz.satellite.goesr.legacyprofile"
|
|
||||||
download-size="0"
|
|
||||||
install-size="0"
|
|
||||||
version="0.0.0"
|
|
||||||
unpack="true" />
|
|
||||||
|
|
||||||
</feature>
|
|
|
@ -1,7 +0,0 @@
|
||||||
<?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.7"/>
|
|
||||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
|
||||||
<classpathentry kind="src" path="src"/>
|
|
||||||
<classpathentry kind="output" path="bin"/>
|
|
||||||
</classpath>
|
|
|
@ -1,28 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>com.raytheon.uf.viz.satellite.goesr.legacyprofile</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>
|
|
|
@ -1,23 +0,0 @@
|
||||||
Manifest-Version: 1.0
|
|
||||||
Bundle-ManifestVersion: 2
|
|
||||||
Bundle-Name: GOES-R Legacy Profile Displays
|
|
||||||
Bundle-SymbolicName: com.raytheon.uf.viz.satellite.goesr.legacyprofile;singleton:=true
|
|
||||||
Bundle-Version: 1.15.0.qualifier
|
|
||||||
Bundle-Vendor: Raytheon
|
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
|
||||||
Require-Bundle: com.raytheon.uf.viz.d2d.nsharp;bundle-version="1.14.1",
|
|
||||||
com.raytheon.uf.viz.core;bundle-version="1.14.6",
|
|
||||||
gov.noaa.nws.ncep.edex.common,
|
|
||||||
gov.noaa.nws.ncep.ui.nsharp,
|
|
||||||
com.raytheon.uf.common.dataplugin;bundle-version="1.14.0",
|
|
||||||
com.raytheon.uf.common.dataplugin.satellite;bundle-version="1.14.0",
|
|
||||||
javax.measure;bundle-version="1.0.0",
|
|
||||||
com.raytheon.uf.common.datastorage;bundle-version="1.14.0",
|
|
||||||
com.raytheon.viz.satellite;bundle-version="1.14.0",
|
|
||||||
com.raytheon.uf.viz.points;bundle-version="1.0.0",
|
|
||||||
com.raytheon.uf.viz.sounding;bundle-version="1.14.0",
|
|
||||||
org.eclipse.core.runtime;bundle-version="3.8.0",
|
|
||||||
org.eclipse.ui;bundle-version="3.8.2",
|
|
||||||
com.raytheon.viz.ui;bundle-version="1.14.1",
|
|
||||||
com.raytheon.uf.common.geospatial;bundle-version="1.14.2",
|
|
||||||
com.raytheon.uf.viz.core.grid;bundle-version="1.15.0"
|
|
|
@ -1,6 +0,0 @@
|
||||||
source.. = src/
|
|
||||||
output.. = bin/
|
|
||||||
bin.includes = META-INF/,\
|
|
||||||
.,\
|
|
||||||
localization/,\
|
|
||||||
plugin.xml
|
|
|
@ -1,47 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<bundle>
|
|
||||||
<displayList>
|
|
||||||
<displays xsi:type="nsharpSkewTPaneDisplay" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
||||||
<descriptor xsi:type="nsharpSkewTPaneDescriptor">
|
|
||||||
<resource>
|
|
||||||
<loadProperties loadWithoutData="true" />
|
|
||||||
<resourceData xsi:type="goesrLegacyProfileResourceData" soundingType="GOES" pointName="${pointName;A}">
|
|
||||||
<metadataMap>
|
|
||||||
<mapping key="sectorID">
|
|
||||||
<constraint constraintValue="${sector}" constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="creatingEntity">
|
|
||||||
<constraint constraintValue="GOES%" constraintType="LIKE" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="pluginName">
|
|
||||||
<constraint constraintValue="satellite" constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="physicalElement">
|
|
||||||
<constraint constraintValue="V%P-%hPa" constraintType="LIKE" />
|
|
||||||
</mapping>
|
|
||||||
</metadataMap>
|
|
||||||
</resourceData>
|
|
||||||
</resource>
|
|
||||||
</descriptor>
|
|
||||||
</displays>
|
|
||||||
</displayList>
|
|
||||||
</bundle>
|
|
|
@ -1,47 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<bundle>
|
|
||||||
<displayList>
|
|
||||||
<displays xsi:type="mapRenderableDisplay" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
||||||
<descriptor xsi:type="mapDescriptor">
|
|
||||||
<resource>
|
|
||||||
<loadProperties loadWithoutData="true" />
|
|
||||||
<resourceData xsi:type="goesrProfileMapResourceData">
|
|
||||||
<metadataMap>
|
|
||||||
<mapping key="sectorID">
|
|
||||||
<constraint constraintValue="${sector}" constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="creatingEntity">
|
|
||||||
<constraint constraintValue="GOES%" constraintType="LIKE" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="pluginName">
|
|
||||||
<constraint constraintValue="satellite" constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="physicalElement">
|
|
||||||
<constraint constraintValue="VTP-300.00hPa" constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
</metadataMap>
|
|
||||||
</resourceData>
|
|
||||||
</resource>
|
|
||||||
</descriptor>
|
|
||||||
</displays>
|
|
||||||
</displayList>
|
|
||||||
</bundle>
|
|
|
@ -1,31 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<?eclipse version="3.4"?>
|
|
||||||
<plugin>
|
|
||||||
<extension
|
|
||||||
point="com.raytheon.uf.viz.sounding.verticalSoundingProvider">
|
|
||||||
<verticalSoundingProvider
|
|
||||||
class="com.raytheon.uf.viz.satellite.goesr.legacyprofile.GoesrLegacySoundingProvider"
|
|
||||||
type="goesr">
|
|
||||||
</verticalSoundingProvider>
|
|
||||||
</extension>
|
|
||||||
|
|
||||||
</plugin>
|
|
|
@ -1,162 +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.satellite.goesr.legacyprofile;
|
|
||||||
|
|
||||||
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.NcSoundingProfile;
|
|
||||||
import gov.noaa.nws.ncep.ui.nsharp.NsharpStationInfo;
|
|
||||||
|
|
||||||
import java.awt.Point;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlAccessType;
|
|
||||||
import javax.xml.bind.annotation.XmlAccessorType;
|
|
||||||
|
|
||||||
import org.geotools.geometry.DirectPosition2D;
|
|
||||||
import org.geotools.referencing.CRS;
|
|
||||||
import org.geotools.referencing.crs.DefaultGeographicCRS;
|
|
||||||
import org.opengis.referencing.FactoryException;
|
|
||||||
import org.opengis.referencing.operation.MathTransform;
|
|
||||||
import org.opengis.referencing.operation.TransformException;
|
|
||||||
|
|
||||||
import com.raytheon.uf.common.dataplugin.HDF5Util;
|
|
||||||
import com.raytheon.uf.common.dataplugin.PluginDataObject;
|
|
||||||
import com.raytheon.uf.common.dataplugin.satellite.SatMapCoverage;
|
|
||||||
import com.raytheon.uf.common.dataplugin.satellite.SatelliteRecord;
|
|
||||||
import com.raytheon.uf.common.dataquery.requests.DbQueryRequest;
|
|
||||||
import com.raytheon.uf.common.dataquery.requests.RequestConstraint;
|
|
||||||
import com.raytheon.uf.common.dataquery.responses.DbQueryResponse;
|
|
||||||
import com.raytheon.uf.common.datastorage.DataStoreFactory;
|
|
||||||
import com.raytheon.uf.common.datastorage.IDataStore;
|
|
||||||
import com.raytheon.uf.common.datastorage.Request;
|
|
||||||
import com.raytheon.uf.common.datastorage.records.IDataRecord;
|
|
||||||
import com.raytheon.uf.common.serialization.comm.RequestRouter;
|
|
||||||
import com.raytheon.uf.common.status.IUFStatusHandler;
|
|
||||||
import com.raytheon.uf.common.status.UFStatus;
|
|
||||||
import com.raytheon.uf.common.time.DataTime;
|
|
||||||
import com.raytheon.uf.viz.d2d.nsharp.rsc.D2DNSharpResourceData;
|
|
||||||
import com.raytheon.uf.viz.points.PointsDataManager;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resource data which allows loading GOESR Legacy Moisture/Temperature profiles
|
|
||||||
* into NSharp in the D2D perspective.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------- -------- ----------- --------------------------
|
|
||||||
* Apr 30, 2015 4335 bsteffen Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author bsteffen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
@XmlAccessorType(XmlAccessType.NONE)
|
|
||||||
public class GoesrLegacyProfileResourceData extends D2DNSharpResourceData {
|
|
||||||
private static final transient IUFStatusHandler statusHandler = UFStatus
|
|
||||||
.getHandler(GoesrLegacyProfileResourceData.class);
|
|
||||||
|
|
||||||
public GoesrLegacyProfileResourceData() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void preparePointInfo() {
|
|
||||||
if (coordinate == null && pointName != null) {
|
|
||||||
coordinate = PointsDataManager.getInstance().getCoordinate(
|
|
||||||
pointName);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected NcSoundingCube getSoundingCube(NsharpStationInfo stnInfo) {
|
|
||||||
DataTime time = new DataTime(stnInfo.getReftime());
|
|
||||||
DbQueryRequest pdoRequest = new DbQueryRequest(getMetadataMap());
|
|
||||||
pdoRequest.addConstraint(PluginDataObject.DATATIME_ID,
|
|
||||||
new RequestConstraint(time.toString()));
|
|
||||||
pdoRequest.setEntityClass(SatelliteRecord.class);
|
|
||||||
try {
|
|
||||||
DbQueryResponse response = (DbQueryResponse) RequestRouter
|
|
||||||
.route(pdoRequest);
|
|
||||||
/* This should be of size 1 in all normal circumstances. */
|
|
||||||
Map<SatMapCoverage, Request> requestMap = new HashMap<SatMapCoverage, Request>(
|
|
||||||
2);
|
|
||||||
GoesrProfileBuilder builder = new GoesrProfileBuilder();
|
|
||||||
for (SatelliteRecord record : response
|
|
||||||
.getEntityObjects(SatelliteRecord.class)) {
|
|
||||||
SatMapCoverage coverage = record.getCoverage();
|
|
||||||
Request request = requestMap.get(coverage);
|
|
||||||
if (request == null) {
|
|
||||||
request = getRequest(coverage);
|
|
||||||
requestMap.put(coverage, request);
|
|
||||||
}
|
|
||||||
if (request != null) {
|
|
||||||
IDataStore dataStore = DataStoreFactory
|
|
||||||
.getDataStore(HDF5Util.findHDF5Location(record));
|
|
||||||
IDataRecord dataRecord = dataStore.retrieve(
|
|
||||||
record.getDataURI(),
|
|
||||||
SatelliteRecord.SAT_DATASET_NAME, request);
|
|
||||||
builder.addRecord(record, dataRecord, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (builder.isEmpty()) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
NcSoundingProfile profile = builder.toNcSoundingProfile();
|
|
||||||
NcSoundingCube cube = new NcSoundingCube(Arrays.asList(profile));
|
|
||||||
cube.setRtnStatus(QueryStatus.OK);
|
|
||||||
return cube;
|
|
||||||
} catch (Exception e) {
|
|
||||||
statusHandler.error("Error occured retrieving GOESR profile data.",
|
|
||||||
e);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Request getRequest(SatMapCoverage coverage)
|
|
||||||
throws FactoryException, TransformException {
|
|
||||||
MathTransform ll2crs = CRS.findMathTransform(
|
|
||||||
DefaultGeographicCRS.WGS84, coverage.getCrs(), true);
|
|
||||||
MathTransform crs2grid = coverage.getGridGeometry().getCRSToGrid2D();
|
|
||||||
DirectPosition2D point = new DirectPosition2D(coordinate.x,
|
|
||||||
coordinate.y);
|
|
||||||
ll2crs.transform(point, point);
|
|
||||||
crs2grid.transform(point, point);
|
|
||||||
int nx = coverage.getNx();
|
|
||||||
int ny = coverage.getNy();
|
|
||||||
if (point.y < 0 || point.y >= ny || Double.isNaN(point.y)) {
|
|
||||||
return null;
|
|
||||||
} else if (point.x < 0 || point.x >= nx || Double.isNaN(point.x)) {
|
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
return Request.buildPointRequest(new Point((int) Math
|
|
||||||
.round(point.x), (int) Math.round(point.y)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,171 +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.satellite.goesr.legacyprofile;
|
|
||||||
|
|
||||||
import java.io.FileNotFoundException;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.geotools.geometry.DirectPosition2D;
|
|
||||||
import org.geotools.referencing.CRS;
|
|
||||||
import org.geotools.referencing.crs.DefaultGeographicCRS;
|
|
||||||
import org.opengis.referencing.FactoryException;
|
|
||||||
import org.opengis.referencing.operation.MathTransform;
|
|
||||||
import org.opengis.referencing.operation.TransformException;
|
|
||||||
|
|
||||||
import com.raytheon.uf.common.dataplugin.HDF5Util;
|
|
||||||
import com.raytheon.uf.common.dataplugin.PluginDataObject;
|
|
||||||
import com.raytheon.uf.common.dataplugin.satellite.SatMapCoverage;
|
|
||||||
import com.raytheon.uf.common.dataplugin.satellite.SatelliteRecord;
|
|
||||||
import com.raytheon.uf.common.dataquery.requests.DbQueryRequest;
|
|
||||||
import com.raytheon.uf.common.dataquery.requests.RequestConstraint;
|
|
||||||
import com.raytheon.uf.common.dataquery.responses.DbQueryResponse;
|
|
||||||
import com.raytheon.uf.common.datastorage.DataStoreFactory;
|
|
||||||
import com.raytheon.uf.common.datastorage.IDataStore;
|
|
||||||
import com.raytheon.uf.common.datastorage.Request;
|
|
||||||
import com.raytheon.uf.common.datastorage.StorageException;
|
|
||||||
import com.raytheon.uf.common.datastorage.records.IDataRecord;
|
|
||||||
import com.raytheon.uf.common.serialization.comm.RequestRouter;
|
|
||||||
import com.raytheon.uf.common.sounding.VerticalSounding;
|
|
||||||
import com.raytheon.uf.common.status.IUFStatusHandler;
|
|
||||||
import com.raytheon.uf.common.status.UFStatus;
|
|
||||||
import com.raytheon.uf.common.time.DataTime;
|
|
||||||
import com.raytheon.uf.viz.sounding.providers.AbstractVerticalSoundingProvider;
|
|
||||||
import com.vividsolutions.jts.geom.Coordinate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Provider which allows GOESR Legacy Moisture/Temperature profiles to be used
|
|
||||||
* for popup skewt
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------- -------- ----------- --------------------------
|
|
||||||
* Apr 30, 2015 4335 bsteffen Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author bsteffen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
public class GoesrLegacySoundingProvider extends
|
|
||||||
AbstractVerticalSoundingProvider<SatelliteRecord[]> {
|
|
||||||
private static final transient IUFStatusHandler statusHandler = UFStatus
|
|
||||||
.getHandler(GoesrLegacySoundingProvider.class);
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getSoundingSource() {
|
|
||||||
return "GOES";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected SatelliteRecord[] queryForData(
|
|
||||||
Map<String, RequestConstraint> constraints, DataTime time,
|
|
||||||
Coordinate location) {
|
|
||||||
DbQueryRequest request = new DbQueryRequest(constraints);
|
|
||||||
|
|
||||||
RequestConstraint timeConstraint = new RequestConstraint(
|
|
||||||
time.toString());
|
|
||||||
request.addConstraint(PluginDataObject.DATATIME_ID, timeConstraint);
|
|
||||||
DbQueryResponse response;
|
|
||||||
try {
|
|
||||||
response = (DbQueryResponse) RequestRouter.route(request);
|
|
||||||
} catch (Exception e) {
|
|
||||||
statusHandler.error("Unable to request satellite data.", e);
|
|
||||||
return new SatelliteRecord[0];
|
|
||||||
}
|
|
||||||
SatelliteRecord[] records = response
|
|
||||||
.getEntityObjects(SatelliteRecord.class);
|
|
||||||
for (SatelliteRecord record : records) {
|
|
||||||
IDataStore dataStore = DataStoreFactory.getDataStore(HDF5Util
|
|
||||||
.findHDF5Location(record));
|
|
||||||
try {
|
|
||||||
IDataRecord dataRecord = dataStore.retrieve(
|
|
||||||
record.getDataURI(), SatelliteRecord.SAT_DATASET_NAME,
|
|
||||||
Request.ALL);
|
|
||||||
record.setMessageData(dataRecord);
|
|
||||||
} catch (FileNotFoundException | StorageException e) {
|
|
||||||
statusHandler.error("Unable to retrieve satellite data.", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
return records;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected VerticalSounding createSounding(DataTime time,
|
|
||||||
SatelliteRecord[] records, Coordinate location) {
|
|
||||||
GoesrProfileBuilder builder = new GoesrProfileBuilder();
|
|
||||||
/* This should be of size 1 in normal circumstances. */
|
|
||||||
Map<SatMapCoverage, Integer> indexMap = new HashMap<SatMapCoverage, Integer>(
|
|
||||||
2);
|
|
||||||
for (SatelliteRecord record : records) {
|
|
||||||
IDataRecord dataRecord = (IDataRecord) record.getMessageData();
|
|
||||||
if (dataRecord == null) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
SatMapCoverage coverage = record.getCoverage();
|
|
||||||
Integer index = indexMap.get(coverage);
|
|
||||||
if (index == null) {
|
|
||||||
try {
|
|
||||||
index = getDataIndex(coverage, location);
|
|
||||||
} catch (Exception e) {
|
|
||||||
statusHandler.error(
|
|
||||||
"Error determining satellite data location", e);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
indexMap.put(coverage, index);
|
|
||||||
}
|
|
||||||
if (index >= 0) {
|
|
||||||
builder.addRecord(record, dataRecord, index);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
if (builder.isEmpty()) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
VerticalSounding sounding = builder.toVerticalSounding();
|
|
||||||
sounding.setStationId(getSoundingSource());
|
|
||||||
return sounding;
|
|
||||||
}
|
|
||||||
|
|
||||||
private int getDataIndex(SatMapCoverage coverage, Coordinate coordinate)
|
|
||||||
throws FactoryException, TransformException {
|
|
||||||
MathTransform ll2crs = CRS.findMathTransform(
|
|
||||||
DefaultGeographicCRS.WGS84, coverage.getCrs(), true);
|
|
||||||
MathTransform crs2grid = coverage.getGridGeometry().getCRSToGrid2D();
|
|
||||||
DirectPosition2D point = new DirectPosition2D(coordinate.x,
|
|
||||||
coordinate.y);
|
|
||||||
ll2crs.transform(point, point);
|
|
||||||
crs2grid.transform(point, point);
|
|
||||||
int nx = coverage.getNx();
|
|
||||||
int ny = coverage.getNy();
|
|
||||||
if (point.y < 0 || point.y >= ny || Double.isNaN(point.y)) {
|
|
||||||
return -1;
|
|
||||||
} else if (point.x < 0 || point.x >= nx || Double.isNaN(point.x)) {
|
|
||||||
return -1;
|
|
||||||
} else {
|
|
||||||
return nx * (int) point.y + (int) point.x;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,165 +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.satellite.goesr.legacyprofile;
|
|
||||||
|
|
||||||
import gov.noaa.nws.ncep.edex.common.sounding.NcSoundingLayer;
|
|
||||||
import gov.noaa.nws.ncep.edex.common.sounding.NcSoundingProfile;
|
|
||||||
|
|
||||||
import java.lang.reflect.Array;
|
|
||||||
import java.text.ParseException;
|
|
||||||
import java.text.ParsePosition;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.NavigableMap;
|
|
||||||
import java.util.TreeMap;
|
|
||||||
import java.util.regex.Matcher;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
import javax.measure.quantity.Dimensionless;
|
|
||||||
import javax.measure.quantity.Temperature;
|
|
||||||
import javax.measure.unit.SI;
|
|
||||||
import javax.measure.unit.Unit;
|
|
||||||
import javax.measure.unit.UnitFormat;
|
|
||||||
|
|
||||||
import com.raytheon.uf.common.dataplugin.satellite.SatelliteRecord;
|
|
||||||
import com.raytheon.uf.common.datastorage.records.IDataRecord;
|
|
||||||
import com.raytheon.uf.common.sounding.VerticalSounding;
|
|
||||||
import com.raytheon.uf.common.status.IUFStatusHandler;
|
|
||||||
import com.raytheon.uf.common.status.UFStatus;
|
|
||||||
import com.raytheon.uf.viz.d2d.nsharp.SoundingLayerBuilder;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Common code to build {@link VerticalSounding} or a {@link NcSoundingProfile}
|
|
||||||
* from satellite records which contain GOESR Legacy Moisture/Temperature
|
|
||||||
* profile information.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------- -------- ----------- --------------------------
|
|
||||||
* Apr 30, 2015 4335 bsteffen Initial creation
|
|
||||||
* May 13, 2015 4445 bsteffen Remove GOESR sounding layer builder.
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author bsteffen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
public class GoesrProfileBuilder {
|
|
||||||
private static final transient IUFStatusHandler statusHandler = UFStatus
|
|
||||||
.getHandler(GoesrLegacySoundingProvider.class);
|
|
||||||
|
|
||||||
private final Pattern physicalElementPattern = Pattern
|
|
||||||
.compile("^V([TM])P-(\\d{1,4}\\.\\d{2})hPa$");
|
|
||||||
|
|
||||||
private NavigableMap<Double, SoundingLayerBuilder> map = new TreeMap<>();
|
|
||||||
|
|
||||||
public boolean isEmpty() {
|
|
||||||
return map.isEmpty();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addRecord(SatelliteRecord record, IDataRecord dataRecord,
|
|
||||||
int index) {
|
|
||||||
Matcher paramMatcher = physicalElementPattern.matcher(record
|
|
||||||
.getPhysicalElement());
|
|
||||||
if (!paramMatcher.matches()) {
|
|
||||||
statusHandler.warn("Cannot add " + record + " to the sounding");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
double pressure = Double.parseDouble(paramMatcher.group(2));
|
|
||||||
Unit<?> unit;
|
|
||||||
try {
|
|
||||||
unit = getDataUnit(record, dataRecord.getDataAttributes());
|
|
||||||
} catch (ParseException e) {
|
|
||||||
statusHandler.error("Cannot add " + record + " to the sounding", e);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
int value = (Array.getInt(dataRecord.getDataObject(), index));
|
|
||||||
if (value == dataRecord.getFillValue().doubleValue()) {
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
value = value & 0xFFFF;
|
|
||||||
}
|
|
||||||
SoundingLayerBuilder layer = map.get(pressure);
|
|
||||||
if (layer == null) {
|
|
||||||
layer = new SoundingLayerBuilder();
|
|
||||||
layer.addPressure(pressure, SI.HECTO(SI.PASCAL));
|
|
||||||
map.put(pressure, layer);
|
|
||||||
}
|
|
||||||
if ("T".equals(paramMatcher.group(1))) {
|
|
||||||
layer.addTemperature(value, unit.asType(Temperature.class));
|
|
||||||
} else {
|
|
||||||
layer.addRelativeHumidity(value, unit.asType(Dimensionless.class));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public VerticalSounding toVerticalSounding() {
|
|
||||||
VerticalSounding sounding = new VerticalSounding();
|
|
||||||
for (SoundingLayerBuilder builder : map.values()) {
|
|
||||||
sounding.addLayer(builder.toSoundingLayer());
|
|
||||||
}
|
|
||||||
Collections.reverse(sounding.getLayerData());
|
|
||||||
return sounding;
|
|
||||||
}
|
|
||||||
|
|
||||||
public NcSoundingProfile toNcSoundingProfile() {
|
|
||||||
List<NcSoundingLayer> ncLayers = new ArrayList<>(map.size());
|
|
||||||
for (SoundingLayerBuilder builder : map.descendingMap().values()) {
|
|
||||||
ncLayers.add(builder.toNcSoundingLayer());
|
|
||||||
}
|
|
||||||
NcSoundingProfile profile = new NcSoundingProfile();
|
|
||||||
profile.setSoundingLyLst(ncLayers);
|
|
||||||
return profile;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Unit<?> getDataUnit(SatelliteRecord record,
|
|
||||||
Map<String, Object> dataAttributes) throws ParseException {
|
|
||||||
|
|
||||||
Unit<?> recordUnit = UnitFormat.getUCUMInstance().parseProductUnit(
|
|
||||||
record.getUnits(), new ParsePosition(0));
|
|
||||||
Unit<?> units = recordUnit != null ? recordUnit : Unit.ONE;
|
|
||||||
if (dataAttributes == null) {
|
|
||||||
return units;
|
|
||||||
}
|
|
||||||
Number offset = (Number) dataAttributes
|
|
||||||
.get(SatelliteRecord.SAT_ADD_OFFSET);
|
|
||||||
Number scale = (Number) dataAttributes
|
|
||||||
.get(SatelliteRecord.SAT_SCALE_FACTOR);
|
|
||||||
|
|
||||||
if (offset != null) {
|
|
||||||
double offsetVal = offset.doubleValue();
|
|
||||||
if (offsetVal != 0.0) {
|
|
||||||
units = units.plus(offsetVal);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (scale != null) {
|
|
||||||
double scaleVal = scale.doubleValue();
|
|
||||||
if (scaleVal != 0.0) {
|
|
||||||
units = units.times(scaleVal);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return units;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,170 +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.satellite.goesr.legacyprofile.map;
|
|
||||||
|
|
||||||
import gov.noaa.nws.ncep.ui.nsharp.display.NsharpSkewTPaneDescriptor;
|
|
||||||
import gov.noaa.nws.ncep.ui.nsharp.display.NsharpSkewTPaneDisplay;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
import org.eclipse.core.runtime.jobs.Job;
|
|
||||||
import org.eclipse.swt.SWT;
|
|
||||||
import org.eclipse.swt.graphics.Cursor;
|
|
||||||
import org.eclipse.swt.widgets.Display;
|
|
||||||
import org.eclipse.swt.widgets.Event;
|
|
||||||
import org.eclipse.swt.widgets.Shell;
|
|
||||||
import org.eclipse.ui.IWorkbenchPart;
|
|
||||||
|
|
||||||
import com.raytheon.uf.common.dataquery.requests.RequestConstraint;
|
|
||||||
import com.raytheon.uf.common.dataquery.requests.RequestConstraint.ConstraintType;
|
|
||||||
import com.raytheon.uf.viz.core.DescriptorMap;
|
|
||||||
import com.raytheon.uf.viz.core.IDisplayPaneContainer;
|
|
||||||
import com.raytheon.uf.viz.core.drawables.AbstractRenderableDisplay;
|
|
||||||
import com.raytheon.uf.viz.core.drawables.ResourcePair;
|
|
||||||
import com.raytheon.uf.viz.core.procedures.Bundle;
|
|
||||||
import com.raytheon.uf.viz.core.rsc.LoadProperties;
|
|
||||||
import com.raytheon.uf.viz.satellite.goesr.legacyprofile.GoesrLegacyProfileResourceData;
|
|
||||||
import com.raytheon.viz.ui.BundleProductLoader;
|
|
||||||
import com.raytheon.viz.ui.UiUtil;
|
|
||||||
import com.raytheon.viz.ui.VizWorkbenchManager;
|
|
||||||
import com.raytheon.viz.ui.editor.AbstractEditor;
|
|
||||||
import com.raytheon.viz.ui.input.InputAdapter;
|
|
||||||
import com.vividsolutions.jts.geom.Coordinate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Input handler for GOESR Legacy Moisture/Temperature profiles availability
|
|
||||||
* resource
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------- -------- ----------- --------------------------
|
|
||||||
* Apr 30, 2015 4335 bsteffen Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author bsteffen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
public class GoesrProfileMapInputHandler extends InputAdapter {
|
|
||||||
|
|
||||||
private GoesrProfileMapResource resource;
|
|
||||||
|
|
||||||
private Cursor handCursor;
|
|
||||||
|
|
||||||
private boolean overDataPoint = false;
|
|
||||||
|
|
||||||
private int downX, downY;
|
|
||||||
|
|
||||||
public GoesrProfileMapInputHandler(GoesrProfileMapResource resource) {
|
|
||||||
this.resource = resource;
|
|
||||||
Display display = Display.getCurrent();
|
|
||||||
handCursor = new Cursor(display, SWT.CURSOR_HAND);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void dispose() {
|
|
||||||
handCursor.dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean handleMouseMove(int x, int y) {
|
|
||||||
boolean wasData = overDataPoint;
|
|
||||||
overDataPoint = false;
|
|
||||||
|
|
||||||
if (resource.isEditable()) {
|
|
||||||
Coordinate sampleCoord = resource.getResourceContainer()
|
|
||||||
.translateClick(x, y);
|
|
||||||
if (sampleCoord != null) {
|
|
||||||
overDataPoint = resource.isDataPoint(sampleCoord);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (wasData && !overDataPoint) {
|
|
||||||
getShell().setCursor(null);
|
|
||||||
} else if (!wasData && overDataPoint) {
|
|
||||||
getShell().setCursor(handCursor);
|
|
||||||
}
|
|
||||||
|
|
||||||
return super.handleMouseMove(x, y);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean handleMouseDown(int x, int y, int mouseButton) {
|
|
||||||
if (mouseButton == 1) {
|
|
||||||
downX = x;
|
|
||||||
downY = y;
|
|
||||||
}
|
|
||||||
return super.handleMouseDown(x, y, mouseButton);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean handleMouseUp(int x, int y, int mouseButton) {
|
|
||||||
int downX = this.downX;
|
|
||||||
int downY = this.downY;
|
|
||||||
this.downX = this.downY = -1;
|
|
||||||
if (overDataPoint && mouseButton == 1 && downX == x && downY == y) {
|
|
||||||
HashMap<String, RequestConstraint> metadataMap = new HashMap<>(
|
|
||||||
resource.getResourceData().getMetadataMap());
|
|
||||||
metadataMap.put("physicalElement", new RequestConstraint(
|
|
||||||
"V%P-%hPa", ConstraintType.LIKE));
|
|
||||||
GoesrLegacyProfileResourceData resourceData = new GoesrLegacyProfileResourceData();
|
|
||||||
resourceData.setMetadataMap(metadataMap);
|
|
||||||
resourceData.setSoundingType("GOES");
|
|
||||||
resourceData.setCoordinate(resource.getResourceContainer()
|
|
||||||
.translateClick(x, y));
|
|
||||||
ResourcePair pair = new ResourcePair();
|
|
||||||
pair.setResourceData(resourceData);
|
|
||||||
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());
|
|
||||||
AbstractEditor editor = UiUtil.createOrOpenEditor(editorId,
|
|
||||||
display.cloneDisplay());
|
|
||||||
Bundle b = new Bundle();
|
|
||||||
b.setDisplays(new AbstractRenderableDisplay[] { display });
|
|
||||||
Job j = new BundleProductLoader(editor, b);
|
|
||||||
j.schedule();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return super.handleMouseUp(x, y, mouseButton);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean handleMouseExit(Event event) {
|
|
||||||
overDataPoint = false;
|
|
||||||
getShell().setCursor(null);
|
|
||||||
return super.handleMouseExit(event);
|
|
||||||
}
|
|
||||||
|
|
||||||
private Shell getShell() {
|
|
||||||
IDisplayPaneContainer container = resource.getResourceContainer();
|
|
||||||
if (container instanceof IWorkbenchPart) {
|
|
||||||
return ((IWorkbenchPart) container).getSite().getShell();
|
|
||||||
} else {
|
|
||||||
return VizWorkbenchManager.getInstance().getCurrentWindow()
|
|
||||||
.getShell();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,340 +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.satellite.goesr.legacyprofile.map;
|
|
||||||
|
|
||||||
import java.io.FileNotFoundException;
|
|
||||||
import java.lang.reflect.Array;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.BitSet;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.eclipse.core.runtime.IProgressMonitor;
|
|
||||||
import org.eclipse.core.runtime.IStatus;
|
|
||||||
import org.eclipse.core.runtime.Status;
|
|
||||||
import org.eclipse.core.runtime.jobs.Job;
|
|
||||||
import org.geotools.coverage.grid.GeneralGridGeometry;
|
|
||||||
import org.geotools.geometry.DirectPosition2D;
|
|
||||||
import org.geotools.referencing.CRS;
|
|
||||||
import org.geotools.referencing.crs.DefaultGeographicCRS;
|
|
||||||
import org.opengis.referencing.FactoryException;
|
|
||||||
import org.opengis.referencing.crs.CoordinateReferenceSystem;
|
|
||||||
import org.opengis.referencing.operation.MathTransform;
|
|
||||||
import org.opengis.referencing.operation.TransformException;
|
|
||||||
|
|
||||||
import com.raytheon.uf.common.dataplugin.HDF5Util;
|
|
||||||
import com.raytheon.uf.common.dataplugin.PluginDataObject;
|
|
||||||
import com.raytheon.uf.common.dataplugin.satellite.SatelliteRecord;
|
|
||||||
import com.raytheon.uf.common.datastorage.DataStoreFactory;
|
|
||||||
import com.raytheon.uf.common.datastorage.IDataStore;
|
|
||||||
import com.raytheon.uf.common.datastorage.Request;
|
|
||||||
import com.raytheon.uf.common.datastorage.StorageException;
|
|
||||||
import com.raytheon.uf.common.datastorage.records.IDataRecord;
|
|
||||||
import com.raytheon.uf.common.time.DataTime;
|
|
||||||
import com.raytheon.uf.viz.core.DrawableCircle;
|
|
||||||
import com.raytheon.uf.viz.core.IGraphicsTarget;
|
|
||||||
import com.raytheon.uf.viz.core.drawables.PaintProperties;
|
|
||||||
import com.raytheon.uf.viz.core.drawables.PaintStatus;
|
|
||||||
import com.raytheon.uf.viz.core.exception.VizException;
|
|
||||||
import com.raytheon.uf.viz.core.grid.display.AbstractGriddedDisplay;
|
|
||||||
import com.raytheon.uf.viz.core.map.IMapDescriptor;
|
|
||||||
import com.raytheon.uf.viz.core.rsc.AbstractVizResource;
|
|
||||||
import com.raytheon.uf.viz.core.rsc.IResourceDataChanged.ChangeType;
|
|
||||||
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.DensityCapability;
|
|
||||||
import com.raytheon.uf.viz.core.rsc.capabilities.EditableCapability;
|
|
||||||
import com.raytheon.uf.viz.core.rsc.capabilities.MagnificationCapability;
|
|
||||||
import com.raytheon.viz.ui.input.EditableManager;
|
|
||||||
import com.vividsolutions.jts.geom.Coordinate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* GOESR Legacy Moisture/Temperature profiles availability resource. Draws
|
|
||||||
* points on map where data is available, user can click points to load
|
|
||||||
* sounding.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------- -------- ----------- --------------------------
|
|
||||||
* Apr 30, 2015 4335 bsteffen Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author bsteffen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class GoesrProfileMapResource extends
|
|
||||||
AbstractVizResource<GoesrProfileMapResourceData, IMapDescriptor> {
|
|
||||||
|
|
||||||
private GoesrProfileMapInputHandler inputManager;
|
|
||||||
|
|
||||||
private Map<DataTime, SatelliteRecord> records = new HashMap<>();
|
|
||||||
|
|
||||||
private Map<DataTime, GoesrProfileMapDisplay> displays = new HashMap<>();
|
|
||||||
|
|
||||||
private Job loadJob = new Job("Loading Profile Availability") {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected IStatus run(IProgressMonitor monitor) {
|
|
||||||
DataTime[] timesToLoad = getDataTimes();
|
|
||||||
for (DataTime time : timesToLoad) {
|
|
||||||
SatelliteRecord record = records.get(time);
|
|
||||||
if (record == null) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
IDataStore dataStore = DataStoreFactory.getDataStore(HDF5Util
|
|
||||||
.findHDF5Location(record));
|
|
||||||
IDataRecord dataRecord = null;
|
|
||||||
try {
|
|
||||||
dataRecord = dataStore.retrieve(record.getDataURI(),
|
|
||||||
SatelliteRecord.SAT_DATASET_NAME, Request.ALL);
|
|
||||||
} catch (FileNotFoundException | StorageException e) {
|
|
||||||
statusHandler.error(
|
|
||||||
"Unable to retrieve satellite data for " + record,
|
|
||||||
e);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
GoesrProfileMapDisplay display = new GoesrProfileMapDisplay(
|
|
||||||
dataRecord, descriptor, record.getGridGeometry(), 5);
|
|
||||||
display.setASync(false);
|
|
||||||
displays.put(time, display);
|
|
||||||
issueRefresh();
|
|
||||||
}
|
|
||||||
return Status.OK_STATUS;
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param resourceData
|
|
||||||
* @param loadProperties
|
|
||||||
*/
|
|
||||||
protected GoesrProfileMapResource(GoesrProfileMapResourceData resourceData,
|
|
||||||
LoadProperties loadProperties) {
|
|
||||||
super(resourceData, loadProperties);
|
|
||||||
this.inputManager = new GoesrProfileMapInputHandler(this);
|
|
||||||
this.dataTimes = new ArrayList<DataTime>();
|
|
||||||
getCapability(EditableCapability.class).setEditable(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void resourceDataChanged(ChangeType type, Object updateObject) {
|
|
||||||
if (type == ChangeType.DATA_UPDATE) {
|
|
||||||
if (updateObject instanceof PluginDataObject[]) {
|
|
||||||
addRecords((PluginDataObject[]) updateObject);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
super.resourceDataChanged(type, updateObject);
|
|
||||||
}
|
|
||||||
|
|
||||||
public synchronized void addRecords(PluginDataObject... records) {
|
|
||||||
for (PluginDataObject record : records) {
|
|
||||||
if (record instanceof SatelliteRecord) {
|
|
||||||
this.records
|
|
||||||
.put(record.getDataTime(), (SatelliteRecord) record);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
List<DataTime> dataTimes = new ArrayList<DataTime>(
|
|
||||||
this.records.keySet());
|
|
||||||
Collections.sort(dataTimes);
|
|
||||||
this.dataTimes = dataTimes;
|
|
||||||
loadJob.schedule();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public synchronized void remove(DataTime dataTime) {
|
|
||||||
records.remove(dataTime);
|
|
||||||
GoesrProfileMapDisplay display = displays.remove(dataTime);
|
|
||||||
if (display != null) {
|
|
||||||
display.dispose();
|
|
||||||
}
|
|
||||||
super.remove(dataTime);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void resetDisplays() {
|
|
||||||
Map<DataTime, GoesrProfileMapDisplay> displays = this.displays;
|
|
||||||
this.displays = new HashMap<>();
|
|
||||||
for (GoesrProfileMapDisplay display : displays.values()) {
|
|
||||||
display.dispose();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void disposeInternal() {
|
|
||||||
inputManager.dispose();
|
|
||||||
getResourceContainer().unregisterMouseHandler(inputManager);
|
|
||||||
resetDisplays();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void project(CoordinateReferenceSystem crs) throws VizException {
|
|
||||||
resetDisplays();
|
|
||||||
loadJob.schedule();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void paintInternal(IGraphicsTarget target,
|
|
||||||
PaintProperties paintProps) throws VizException {
|
|
||||||
DataTime time = paintProps.getDataTime();
|
|
||||||
if (time == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
GoesrProfileMapDisplay display = displays.get(time);
|
|
||||||
if (display != null) {
|
|
||||||
display.setColor(getCapability(ColorableCapability.class)
|
|
||||||
.getColor());
|
|
||||||
display.setDensity(getCapability(DensityCapability.class)
|
|
||||||
.getDensity());
|
|
||||||
display.setMagnification(getCapability(
|
|
||||||
MagnificationCapability.class).getMagnification());
|
|
||||||
display.paint(target, paintProps);
|
|
||||||
} else if (loadJob.getState() == Job.RUNNING) {
|
|
||||||
updatePaintStatus(PaintStatus.INCOMPLETE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void initInternal(IGraphicsTarget target) throws VizException {
|
|
||||||
EditableManager.makeEditable(this,
|
|
||||||
getCapability(EditableCapability.class).isEditable());
|
|
||||||
getResourceContainer().registerMouseHandler(inputManager);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isEditable() {
|
|
||||||
return getCapability(EditableCapability.class).isEditable()
|
|
||||||
&& getProperties().isVisible();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return "GOES-R Legacy Temperature/Moisture Availability";
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isDataPoint(Coordinate sampleCoord) {
|
|
||||||
DataTime time = descriptor.getTimeForResource(this);
|
|
||||||
if (time == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
GoesrProfileMapDisplay display = displays.get(time);
|
|
||||||
if (display == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
GeneralGridGeometry dataGeometry = display.getGridGeometryOfData();
|
|
||||||
DirectPosition2D point = new DirectPosition2D(sampleCoord.x,
|
|
||||||
sampleCoord.y);
|
|
||||||
try {
|
|
||||||
MathTransform ll2crs = CRS.findMathTransform(
|
|
||||||
DefaultGeographicCRS.WGS84,
|
|
||||||
dataGeometry.getCoordinateReferenceSystem(), true);
|
|
||||||
MathTransform crs2grid = dataGeometry.getGridToCRS().inverse();
|
|
||||||
ll2crs.transform(point, point);
|
|
||||||
crs2grid.transform(point, point);
|
|
||||||
} catch (TransformException | FactoryException e) {
|
|
||||||
statusHandler.error("", e);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
int nx = dataGeometry.getGridRange().getSpan(0);
|
|
||||||
int ny = dataGeometry.getGridRange().getSpan(1);
|
|
||||||
if (point.y < 0 || point.y >= ny || Double.isNaN(point.y)) {
|
|
||||||
return false;
|
|
||||||
} else if (point.x < 0 || point.x >= nx || Double.isNaN(point.x)) {
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
return display.isDataPoint(point.x, point.y);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static class GoesrProfileMapDisplay extends
|
|
||||||
AbstractGriddedDisplay<DrawableCircle> {
|
|
||||||
|
|
||||||
private final int nx;
|
|
||||||
|
|
||||||
private final BitSet dataMap;
|
|
||||||
|
|
||||||
public GoesrProfileMapDisplay(IDataRecord dataRecord,
|
|
||||||
IMapDescriptor descriptor,
|
|
||||||
GeneralGridGeometry gridGeometryOfGrid, double size) {
|
|
||||||
super(descriptor, gridGeometryOfGrid, size, 6);
|
|
||||||
Object array = dataRecord.getDataObject();
|
|
||||||
int fill = dataRecord.getFillValue().intValue();
|
|
||||||
/* Don't waste space, we only need to know which points have data. */
|
|
||||||
int length = Array.getLength(array);
|
|
||||||
dataMap = new BitSet(length);
|
|
||||||
for (int i = 0; i < length; i += 1) {
|
|
||||||
dataMap.set(i, Array.getInt(array, i) != fill);
|
|
||||||
}
|
|
||||||
this.nx = (int) dataRecord.getSizes()[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isDataPoint(double x, double y) {
|
|
||||||
int index = (int) (nx * Math.round(y) + Math.round(x));
|
|
||||||
return dataMap.get(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
public GeneralGridGeometry getGridGeometryOfData() {
|
|
||||||
return gridGeometryOfGrid;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected DrawableCircle getResource(Coordinate coord) {
|
|
||||||
if (!isDataPoint(coord.x, coord.y)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
DrawableCircle circle = new DrawableCircle();
|
|
||||||
circle.screenRadius = size * magnification;
|
|
||||||
circle.numberOfPoints = (int) (circle.screenRadius * 4);
|
|
||||||
circle.basics.color = color;
|
|
||||||
circle.filled = true;
|
|
||||||
return circle;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected DrawableCircle createResource(Coordinate coord)
|
|
||||||
throws VizException {
|
|
||||||
return getResource(coord);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void paint(PaintProperties paintProps,
|
|
||||||
Collection<GridCellRenderable> renderables) throws VizException {
|
|
||||||
List<DrawableCircle> circles = new ArrayList<DrawableCircle>(
|
|
||||||
renderables.size());
|
|
||||||
for (GridCellRenderable gridCell : renderables) {
|
|
||||||
gridCell.resource.setCoordinates(gridCell.plotLocation.x,
|
|
||||||
gridCell.plotLocation.y);
|
|
||||||
circles.add(gridCell.resource);
|
|
||||||
}
|
|
||||||
target.drawCircle(circles.toArray(new DrawableCircle[0]));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void disposeResources() {
|
|
||||||
/* DrawableCircles do not need to be disposed. */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,61 +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.satellite.goesr.legacyprofile.map;
|
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlAccessType;
|
|
||||||
import javax.xml.bind.annotation.XmlAccessorType;
|
|
||||||
|
|
||||||
import com.raytheon.uf.common.dataplugin.PluginDataObject;
|
|
||||||
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;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* Serialization information for {@link GoesrProfileMapResource}.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------- -------- ----------- --------------------------
|
|
||||||
* Apr 30, 2015 4335 bsteffen Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author bsteffen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
@XmlAccessorType(XmlAccessType.NONE)
|
|
||||||
public class GoesrProfileMapResourceData extends AbstractRequestableResourceData {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected AbstractVizResource<?, ?> constructResource(
|
|
||||||
LoadProperties loadProperties, PluginDataObject[] objects)
|
|
||||||
throws VizException {
|
|
||||||
GoesrProfileMapResource resource = new GoesrProfileMapResource(this,
|
|
||||||
loadProperties);
|
|
||||||
resource.addRecords(objects);
|
|
||||||
return resource;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
<?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.7"/>
|
|
||||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
|
||||||
<classpathentry kind="src" path="src"/>
|
|
||||||
<classpathentry kind="output" path="bin"/>
|
|
||||||
</classpath>
|
|
|
@ -1,28 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>com.raytheon.uf.common.dataplugin.goesr.dmw</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>
|
|
|
@ -1,12 +0,0 @@
|
||||||
Manifest-Version: 1.0
|
|
||||||
Bundle-ManifestVersion: 2
|
|
||||||
Bundle-Name: GOES-R Derived Motion Winds
|
|
||||||
Bundle-SymbolicName: com.raytheon.uf.common.dataplugin.goesr.dmw
|
|
||||||
Bundle-Version: 1.15.0.qualifier
|
|
||||||
Bundle-Vendor: RAYTHEON
|
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
|
||||||
Require-Bundle: com.raytheon.uf.common.dataplugin;bundle-version="1.14.0",
|
|
||||||
com.raytheon.uf.common.serialization;bundle-version="1.14.2",
|
|
||||||
com.raytheon.uf.common.pointdata;bundle-version="1.14.0",
|
|
||||||
com.raytheon.uf.common.geospatial;bundle-version="1.14.2"
|
|
||||||
Export-Package: com.raytheon.uf.common.dataplugin.goesr.dmw
|
|
|
@ -1,5 +0,0 @@
|
||||||
source.. = src/
|
|
||||||
output.. = bin/
|
|
||||||
bin.includes = META-INF/,\
|
|
||||||
.,\
|
|
||||||
utility/
|
|
|
@ -1,337 +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.common.dataplugin.goesr.dmw;
|
|
||||||
|
|
||||||
import javax.persistence.Column;
|
|
||||||
import javax.persistence.Embedded;
|
|
||||||
import javax.persistence.Entity;
|
|
||||||
import javax.persistence.SequenceGenerator;
|
|
||||||
import javax.persistence.Table;
|
|
||||||
import javax.persistence.UniqueConstraint;
|
|
||||||
|
|
||||||
import org.hibernate.annotations.Index;
|
|
||||||
|
|
||||||
import com.raytheon.uf.common.dataplugin.PluginDataObject;
|
|
||||||
import com.raytheon.uf.common.dataplugin.annotations.DataURI;
|
|
||||||
import com.raytheon.uf.common.dataplugin.persist.IPersistable;
|
|
||||||
import com.raytheon.uf.common.dataplugin.persist.PersistablePluginDataObject;
|
|
||||||
import com.raytheon.uf.common.geospatial.ISpatialEnabled;
|
|
||||||
import com.raytheon.uf.common.geospatial.ISpatialObject;
|
|
||||||
import com.raytheon.uf.common.pointdata.PointDataView;
|
|
||||||
import com.raytheon.uf.common.pointdata.spatial.SurfaceObsLocation;
|
|
||||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
|
|
||||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* GOES-R Derived Motion Wind Record. Updated to include "filter" DB column for
|
|
||||||
* pressure-based filtering of GOES-R/Himawari DMWs.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------ ---------- ----------- --------------------------
|
|
||||||
* Apr 6, 2015 4334 nabowle Initial creation
|
|
||||||
* July 14, 2016 19051 mcomerford Added "filter" field (DCS 19051)
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author nabowle
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
@Entity
|
|
||||||
@SequenceGenerator(initialValue = 1, name = PluginDataObject.ID_GEN, sequenceName = "dmwseq")
|
|
||||||
@Table(name = DMWRecord.PLUGIN_NAME, uniqueConstraints = { @UniqueConstraint(columnNames = {
|
|
||||||
"orbitalSlot", "scene", "channel", "refTime", "latitude", "longitude", "filter" }) })
|
|
||||||
@org.hibernate.annotations.Table(appliesTo = DMWRecord.PLUGIN_NAME, indexes = {
|
|
||||||
@Index(name = "%TABLE%_filterandwspd_index", columnNames = {"filter", "windspd"}) })
|
|
||||||
@DynamicSerialize
|
|
||||||
public class DMWRecord extends PersistablePluginDataObject implements
|
|
||||||
ISpatialEnabled, IPersistable {
|
|
||||||
|
|
||||||
/** Serializable id */
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
public static final String PLUGIN_NAME = "dmw";
|
|
||||||
|
|
||||||
@Embedded
|
|
||||||
@DynamicSerializeElement
|
|
||||||
private PointDataView pointDataView;
|
|
||||||
|
|
||||||
@Embedded
|
|
||||||
@DataURI(position = 1, embedded = true)
|
|
||||||
@DynamicSerializeElement
|
|
||||||
private SurfaceObsLocation location;
|
|
||||||
|
|
||||||
@DataURI(position = 2)
|
|
||||||
@DynamicSerializeElement
|
|
||||||
@Column(nullable = false, length = 20)
|
|
||||||
private String orbitalSlot;
|
|
||||||
|
|
||||||
@DataURI(position = 3)
|
|
||||||
@DynamicSerializeElement
|
|
||||||
@Column(nullable = false, length = 20)
|
|
||||||
private String scene;
|
|
||||||
|
|
||||||
@DataURI(position = 4)
|
|
||||||
@DynamicSerializeElement
|
|
||||||
@Column(nullable = false)
|
|
||||||
private int channel;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Required to be in the DataURI for viz updates, but not used for the
|
|
||||||
* unique constraint.
|
|
||||||
*/
|
|
||||||
@DataURI(position = 5)
|
|
||||||
@DynamicSerializeElement
|
|
||||||
@Column
|
|
||||||
private float windSpd;
|
|
||||||
|
|
||||||
@DynamicSerializeElement
|
|
||||||
@Column
|
|
||||||
private float windDir;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Allows for filtering based off of a defined NetCDF-4 Variable
|
|
||||||
* (e.g. Pressure, Altitude, etc.)
|
|
||||||
*/
|
|
||||||
@Column
|
|
||||||
@DynamicSerializeElement
|
|
||||||
private Float filter;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor.
|
|
||||||
*/
|
|
||||||
public DMWRecord() {
|
|
||||||
super();
|
|
||||||
pointDataView = new PointDataView();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a record from a dataURI
|
|
||||||
*
|
|
||||||
* @param uri
|
|
||||||
* The dataURI
|
|
||||||
*/
|
|
||||||
public DMWRecord(String uri) {
|
|
||||||
super(uri);
|
|
||||||
pointDataView = new PointDataView();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* (non-Javadoc)
|
|
||||||
*
|
|
||||||
* @see com.raytheon.uf.common.dataplugin.PluginDataObject#getPluginName()
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getPluginName() {
|
|
||||||
return PLUGIN_NAME;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ISpatialObject getSpatialObject() {
|
|
||||||
return location;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the location
|
|
||||||
*/
|
|
||||||
public SurfaceObsLocation getLocation() {
|
|
||||||
return location;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param location
|
|
||||||
* the location to set
|
|
||||||
*/
|
|
||||||
public void setLocation(SurfaceObsLocation location) {
|
|
||||||
this.location = location;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the channel
|
|
||||||
*/
|
|
||||||
public int getChannel() {
|
|
||||||
return channel;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param channel
|
|
||||||
* the channel to set
|
|
||||||
*/
|
|
||||||
public void setChannel(int channel) {
|
|
||||||
this.channel = channel;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the orbitalSlot
|
|
||||||
*/
|
|
||||||
public String getOrbitalSlot() {
|
|
||||||
return orbitalSlot;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param orbitalSlot
|
|
||||||
* the orbitalSlot to set
|
|
||||||
*/
|
|
||||||
public void setOrbitalSlot(String orbitalSlot) {
|
|
||||||
this.orbitalSlot = orbitalSlot;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the scene
|
|
||||||
*/
|
|
||||||
public String getScene() {
|
|
||||||
return scene;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param scene
|
|
||||||
* the scene to set
|
|
||||||
*/
|
|
||||||
public void setScene(String scene) {
|
|
||||||
this.scene = scene;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the windDir
|
|
||||||
*/
|
|
||||||
public float getWindDir() {
|
|
||||||
return windDir;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param windDir
|
|
||||||
* the windDir to set
|
|
||||||
*/
|
|
||||||
public void setWindDir(float windDir) {
|
|
||||||
this.windDir = windDir;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the windSpd
|
|
||||||
*/
|
|
||||||
public float getWindSpd() {
|
|
||||||
return windSpd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param windSpd
|
|
||||||
* the windSpd to set
|
|
||||||
*/
|
|
||||||
public void setWindSpd(float windSpd) {
|
|
||||||
this.windSpd = windSpd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the pointDataView
|
|
||||||
*/
|
|
||||||
public PointDataView getPointDataView() {
|
|
||||||
return pointDataView;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param pointDataView
|
|
||||||
* the pointDataView to set
|
|
||||||
*/
|
|
||||||
public void setPointDataView(PointDataView pointDataView) {
|
|
||||||
this.pointDataView = pointDataView;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the filter
|
|
||||||
*/
|
|
||||||
public Float getFilter() {
|
|
||||||
return filter;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param filter
|
|
||||||
* the filter to set
|
|
||||||
*/
|
|
||||||
public void setFilter(Float filter) {
|
|
||||||
this.filter = filter;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
|
|
||||||
final int prime = 31;
|
|
||||||
int result = super.hashCode();
|
|
||||||
|
|
||||||
result = prime * result + ((pointDataView == null) ? 0 : pointDataView.hashCode());
|
|
||||||
result = prime * result + ((location == null) ? 0 : location.hashCode());
|
|
||||||
result = prime * result + ((orbitalSlot == null) ? 0 : orbitalSlot.hashCode());
|
|
||||||
result = prime * result + ((scene == null) ? 0 : scene.hashCode());
|
|
||||||
result = prime * result + Integer.valueOf(channel).hashCode();
|
|
||||||
result = prime * result + Float.valueOf(windSpd).hashCode();
|
|
||||||
result = prime * result + Float.valueOf(windDir).hashCode();
|
|
||||||
result = prime * result + ((filter == null) ? 0 : filter.hashCode());
|
|
||||||
|
|
||||||
return result;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object obj){
|
|
||||||
|
|
||||||
if (this == obj)
|
|
||||||
return true;
|
|
||||||
if (!super.equals(obj))
|
|
||||||
return false;
|
|
||||||
if (getClass() != obj.getClass())
|
|
||||||
return false;
|
|
||||||
|
|
||||||
DMWRecord record = (DMWRecord) obj;
|
|
||||||
|
|
||||||
if (pointDataView == null) {
|
|
||||||
if (record.pointDataView != null)
|
|
||||||
return false;
|
|
||||||
} else if (!pointDataView.equals(record.pointDataView))
|
|
||||||
return false;
|
|
||||||
if (location == null) {
|
|
||||||
if (record.location != null)
|
|
||||||
return false;
|
|
||||||
} else if (!location.equals(record.location))
|
|
||||||
return false;
|
|
||||||
if (orbitalSlot == null) {
|
|
||||||
if (record.orbitalSlot != null)
|
|
||||||
return false;
|
|
||||||
} else if (!orbitalSlot.equals(record.orbitalSlot))
|
|
||||||
return false;
|
|
||||||
if (scene == null) {
|
|
||||||
if (record.scene != null)
|
|
||||||
return false;
|
|
||||||
} else if (!scene.equals(record.scene))
|
|
||||||
return false;
|
|
||||||
if (channel != record.channel)
|
|
||||||
return false;
|
|
||||||
if (windSpd != record.windSpd)
|
|
||||||
return false;
|
|
||||||
if (windDir != record.windDir)
|
|
||||||
return false;
|
|
||||||
if (filter != record.filter)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,49 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- TOWRdocs Header
|
|
||||||
Configuration file that controls the text displayed in CAVE when a Derived Motion Wind
|
|
||||||
(DMW) product is sampled.
|
|
||||||
-->
|
|
||||||
<!-- TOWRdocs Description
|
|
||||||
This file formats the output of the string painted to the display upon sampling a
|
|
||||||
DMW product in AWIPS II CAVE. It dsiplays the the time of the observation,
|
|
||||||
followed by the wind direction and speed (knots).
|
|
||||||
-->
|
|
||||||
<!-- TOWRdocs Status
|
|
||||||
This file is a baseline file for the GOES-R Derived Motion Winds (DMW) plugin.
|
|
||||||
-->
|
|
||||||
<!-- TOWRdocs POC
|
|
||||||
Matt Comerford.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<windPlot>
|
|
||||||
<longitude parameter="longitude"/>
|
|
||||||
<latitude parameter="latitude" />
|
|
||||||
<magnitude parameter="windSpd" unit="kn"/>
|
|
||||||
<direction parameter="windDir" />
|
|
||||||
<sample text="%tH%tMZ %3.0f @ %3.0f DMW">
|
|
||||||
<field parameter="validTime" time="true"/>
|
|
||||||
<field parameter="validTime" time="true"/>
|
|
||||||
<field parameter="windDir" />
|
|
||||||
<field parameter="windSpd" unit="kn"/>
|
|
||||||
</sample>
|
|
||||||
</windPlot>
|
|
|
@ -1,7 +0,0 @@
|
||||||
<?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.7"/>
|
|
||||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
|
||||||
<classpathentry kind="src" path="src"/>
|
|
||||||
<classpathentry kind="output" path="bin"/>
|
|
||||||
</classpath>
|
|
|
@ -1,28 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>com.raytheon.uf.edex.plugin.goesr.dmw</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>
|
|
|
@ -1,23 +0,0 @@
|
||||||
Manifest-Version: 1.0
|
|
||||||
Bundle-ManifestVersion: 2
|
|
||||||
Bundle-Name: GOES-R Derived Motion Winds
|
|
||||||
Bundle-SymbolicName: com.raytheon.uf.edex.plugin.goesr.dmw
|
|
||||||
Bundle-Version: 1.15.0.qualifier
|
|
||||||
Bundle-Vendor: RAYTHEON
|
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
|
||||||
Require-Bundle: com.raytheon.uf.common.pointdata;bundle-version="1.14.0",
|
|
||||||
com.raytheon.uf.edex.pointdata,
|
|
||||||
com.raytheon.uf.common.dataplugin;bundle-version="1.14.0",
|
|
||||||
com.raytheon.uf.common.datastorage;bundle-version="1.14.0",
|
|
||||||
com.raytheon.uf.common.status;bundle-version="1.14.1",
|
|
||||||
net.sf.cglib;bundle-version="2.1.3",
|
|
||||||
com.raytheon.uf.edex.database;bundle-version="1.14.1",
|
|
||||||
com.raytheon.uf.common.wmo;bundle-version="1.14.0",
|
|
||||||
com.raytheon.edex.common;bundle-version="1.14.1",
|
|
||||||
ucar.nc2,
|
|
||||||
com.raytheon.uf.common.dataplugin.goesr.dmw,
|
|
||||||
com.raytheon.uf.edex.netcdf,
|
|
||||||
com.raytheon.uf.common.localization;bundle-version="1.15.1"
|
|
||||||
Export-Package: com.raytheon.uf.edex.plugin.goesr.dmw.dao,
|
|
||||||
com.raytheon.uf.edex.plugin.goesr.dmw.decoder,
|
|
||||||
com.raytheon.uf.edex.plugin.goesr.dmw.description
|
|
|
@ -1,6 +0,0 @@
|
||||||
source.. = src/
|
|
||||||
output.. = bin/
|
|
||||||
bin.includes = META-INF/,\
|
|
||||||
.,\
|
|
||||||
res/,\
|
|
||||||
utility/
|
|
|
@ -1,33 +0,0 @@
|
||||||
<?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="validTime" queryName="dataTime.refTime" type="LONG" unit="ms" />
|
|
||||||
<parameter name="latitude" queryName="location.latitude" type="FLOAT" unit="°" />
|
|
||||||
<parameter name="longitude" queryName="location.longitude" type="FLOAT" unit="°" />
|
|
||||||
<parameter name="stationId" queryName="location.stationId" type="STRING" />
|
|
||||||
<parameter name="windSpd" queryName="windSpd" type="FLOAT" unit="m/s" fillValue="-999"/>
|
|
||||||
<parameter name="windDir" queryName="windDir" type="FLOAT" unit="°" fillValue="-999"/>
|
|
||||||
<parameter name="scene" queryName="scene" type="STRING" />
|
|
||||||
<parameter name="channel" queryName="channel" type="INT" />
|
|
||||||
<parameter name="orbitalSlot" queryName="orbitalSlot" type="STRING" />
|
|
||||||
<parameter name="filter" queryName="filter" type="FLOAT" />
|
|
||||||
</pointDataDbDescription>
|
|
||||||
|
|
|
@ -1,38 +0,0 @@
|
||||||
<!-- TOWRdocs Header
|
|
||||||
Configuration file handling the common Spring declaration/instantiations of DMW Plugin
|
|
||||||
Java instances.
|
|
||||||
-->
|
|
||||||
<!-- TOWRdocs Description
|
|
||||||
This configuration file handles the definition and instantiation of instances of
|
|
||||||
DMW Plugin Java objects. The objects defined in this file may be referenced in subsequent Spring
|
|
||||||
configuration files. In this file we define the plugin-name (String), various default properties of the
|
|
||||||
plugin (name, FQN, dao Class, record Class), and register the plugin with the Plugin Registry
|
|
||||||
-->
|
|
||||||
<!-- TOWRdocs Status
|
|
||||||
This file is a baseline file for the GOES-R Derived Motion Winds (DMW) plugin.
|
|
||||||
-->
|
|
||||||
<!-- TOWRdocs POC
|
|
||||||
Matt Comerford.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<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-3.1.xsd">
|
|
||||||
|
|
||||||
<bean id="dmwPluginName" class="java.lang.String">
|
|
||||||
<constructor-arg type="java.lang.String" value="dmw" />
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="dmwProperties" class="com.raytheon.uf.common.dataplugin.PluginProperties">
|
|
||||||
<property name="pluginName" ref="dmwPluginName" />
|
|
||||||
<property name="pluginFQN" value="com.raytheon.uf.common.dataplugin.goesr.dmw" />
|
|
||||||
<property name="dao" value="com.raytheon.uf.edex.plugin.goesr.dmw.dao.DMWDao" />
|
|
||||||
<property name="record" value="com.raytheon.uf.common.dataplugin.goesr.dmw.DMWRecord" />
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean factory-bean="pluginRegistry" factory-method="register">
|
|
||||||
<constructor-arg ref="dmwPluginName"/>
|
|
||||||
<constructor-arg ref="dmwProperties"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
</beans>
|
|
|
@ -1,68 +0,0 @@
|
||||||
<!-- TOWRdocs Header
|
|
||||||
Configuration file handling the more Spring XML instantiations of Java Classes, as well
|
|
||||||
as the ingest of DMW products into EDEX
|
|
||||||
-->
|
|
||||||
<!-- TOWRdocs Description
|
|
||||||
This configuration file handles the definition and instantiation of instances of
|
|
||||||
DMW Plugin Java objects. It also sets up the ingest route that DMW products will take upon being
|
|
||||||
ingested into EDEX (starting at the "route" tag).
|
|
||||||
-->
|
|
||||||
<!-- TOWRdocs Status
|
|
||||||
This file is a baseline file for the GOES-R Derived Motion Winds (DMW) plugin.
|
|
||||||
-->
|
|
||||||
<!-- TOWRdocs POC
|
|
||||||
Matt Comerford.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<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-3.1.xsd
|
|
||||||
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
|
|
||||||
|
|
||||||
<bean class="com.raytheon.uf.common.logback.appender.ThreadBasedAppender"
|
|
||||||
factory-method="registerThreadPattern">
|
|
||||||
<constructor-arg value="satellite" />
|
|
||||||
<constructor-arg value="Ingest.dmw.*" />
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<!-- Set the path manager to handle descriptions files -->
|
|
||||||
<bean id="dmwPathManager" class="com.raytheon.uf.common.localization.PathManagerFactory"
|
|
||||||
factory-method="getPathManager" />
|
|
||||||
|
|
||||||
<!-- Edited to include the newly-added "PathManager" to handler description files. -->
|
|
||||||
<bean id="dmwDecoder" class="com.raytheon.uf.edex.plugin.goesr.dmw.decoder.DMWDecoder">
|
|
||||||
<property name="pathManager" ref="dmwPathManager" />
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="dmwDistRegistry" factory-bean="distributionSrv"
|
|
||||||
factory-method="register">
|
|
||||||
<constructor-arg value="dmw" />
|
|
||||||
<constructor-arg value="jms-durable:queue:Ingest.dmw" />
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<!-- Defining the Camel Context and ingest route of DMW Products through EDEX -->
|
|
||||||
<camelContext id="dmw-camel"
|
|
||||||
xmlns="http://camel.apache.org/schema/spring" errorHandlerRef="errorHandler">
|
|
||||||
|
|
||||||
<route id="dmwIngestRoute">
|
|
||||||
<from uri="jms-durable:queue:Ingest.dmw"/>
|
|
||||||
<setHeader headerName="pluginName">
|
|
||||||
<constant>dmw</constant>
|
|
||||||
</setHeader>
|
|
||||||
<doTry>
|
|
||||||
<pipeline>
|
|
||||||
<bean ref="stringToFile" />
|
|
||||||
<bean ref="getFileWithoutWmoHeader" />
|
|
||||||
<bean ref="dmwDecoder" method="decode" />
|
|
||||||
<to uri="direct-vm:persistIndexAlert" />
|
|
||||||
</pipeline>
|
|
||||||
<doCatch>
|
|
||||||
<exception>java.lang.Throwable</exception>
|
|
||||||
<to uri="log:dmw?level=ERROR"/>
|
|
||||||
</doCatch>
|
|
||||||
</doTry>
|
|
||||||
</route>
|
|
||||||
|
|
||||||
</camelContext>
|
|
||||||
|
|
||||||
</beans>
|
|
|
@ -1,130 +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.edex.plugin.goesr.dmw.dao;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileNotFoundException;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import com.raytheon.uf.common.dataplugin.PluginDataObject;
|
|
||||||
import com.raytheon.uf.common.dataplugin.PluginException;
|
|
||||||
import com.raytheon.uf.common.dataplugin.goesr.dmw.DMWRecord;
|
|
||||||
import com.raytheon.uf.common.datastorage.StorageException;
|
|
||||||
import com.raytheon.uf.common.datastorage.StorageStatus;
|
|
||||||
import com.raytheon.uf.common.pointdata.PointDataContainer;
|
|
||||||
import com.raytheon.uf.common.pointdata.PointDataDescription;
|
|
||||||
import com.raytheon.uf.edex.pointdata.PointDataPluginDao;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Dao for Derived Motion Winds.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------ ---------- ----------- --------------------------
|
|
||||||
* Apr 7, 2015 4334 nabowle Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author nabowle
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class DMWDao extends PointDataPluginDao<DMWRecord> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param pluginName
|
|
||||||
* @throws PluginException
|
|
||||||
*/
|
|
||||||
public DMWDao(String pluginName) throws PluginException {
|
|
||||||
super(pluginName);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* (non-Javadoc)
|
|
||||||
*
|
|
||||||
* @see
|
|
||||||
* com.raytheon.uf.edex.pointdata.PointDataPluginDao#getKeysRequiredForFileName
|
|
||||||
* ()
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String[] getKeysRequiredForFileName() {
|
|
||||||
return new String[] { "dataTime.refTime" };
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* (non-Javadoc)
|
|
||||||
*
|
|
||||||
* @see com.raytheon.uf.edex.pointdata.PointDataPluginDao#newObject()
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public DMWRecord newObject() {
|
|
||||||
return new DMWRecord();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The following methods are overridden to effectively be NOOPs in order to
|
|
||||||
* bypass HDF5.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Does nothing and returns a new StorageStatus.
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public StorageStatus persistToHDF5(PluginDataObject... records) {
|
|
||||||
return new StorageStatus();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Does nothing and returns a new PointDataDescription.
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public PointDataDescription getPointDataDescription(Map<String, Object> obj) {
|
|
||||||
return new PointDataDescription();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Does nothing and returns a new PointDataContainer.
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public PointDataContainer getPointData(File file, int[] indexes, int[] ids,
|
|
||||||
String[] attributes, LevelRequest request) throws StorageException,
|
|
||||||
FileNotFoundException {
|
|
||||||
return new PointDataContainer();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* (non-Javadoc)
|
|
||||||
*
|
|
||||||
* @see
|
|
||||||
* com.raytheon.uf.edex.pointdata.PointDataPluginDao#getPointDataFileName
|
|
||||||
* (com.raytheon.uf.common.dataplugin.PluginDataObject)
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getPointDataFileName(DMWRecord p) {
|
|
||||||
// not needed for this datatype, but must be overridden.
|
|
||||||
return "dmw.h5";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,400 +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.edex.plugin.goesr.dmw.decoder;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.text.ParseException;
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Calendar;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import javax.xml.bind.JAXB;
|
|
||||||
|
|
||||||
import com.raytheon.edex.esb.Headers;
|
|
||||||
import com.raytheon.uf.common.dataplugin.PluginDataObject;
|
|
||||||
import com.raytheon.uf.common.dataplugin.goesr.dmw.DMWRecord;
|
|
||||||
import com.raytheon.uf.common.localization.IPathManager;
|
|
||||||
import com.raytheon.uf.common.localization.LocalizationFile;
|
|
||||||
import com.raytheon.uf.common.localization.exception.LocalizationException;
|
|
||||||
import com.raytheon.uf.common.pointdata.spatial.SurfaceObsLocation;
|
|
||||||
import com.raytheon.uf.common.status.IUFStatusHandler;
|
|
||||||
import com.raytheon.uf.common.status.UFStatus;
|
|
||||||
import com.raytheon.uf.common.time.DataTime;
|
|
||||||
import com.raytheon.uf.common.time.util.TimeUtil;
|
|
||||||
import com.raytheon.uf.edex.netcdf.description.exception.InvalidDescriptionException;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.dmw.description.ProductDescription;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.dmw.description.ProductDescriptions;
|
|
||||||
|
|
||||||
import ucar.ma2.Array;
|
|
||||||
import ucar.nc2.NetcdfFile;
|
|
||||||
import ucar.nc2.Variable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Decoder for Derived Motion Wind products. Updated to handle both GOES-R and
|
|
||||||
* Himawari DMWs through Product Descriptions files
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------ ---------- ----------- --------------------------
|
|
||||||
* Apr 7, 2015 4334 nabowle Initial creation
|
|
||||||
* Sep 28, 2015 4872 bsteffen Decode File instead of byte[]
|
|
||||||
* July 13, 2016 19051 mcomerford Enhanced DMW plugin update (DCS 19051)
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author nabowle
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class DMWDecoder {
|
|
||||||
|
|
||||||
private static final transient IUFStatusHandler statusHandler = UFStatus
|
|
||||||
.getHandler(DMWDecoder.class);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Used to parse the ProductDescription-defined epoch (handling the
|
|
||||||
* dataTime).
|
|
||||||
*/
|
|
||||||
private static final String DATE_STRING = "yyyy-MM-dd HH:mm:ss";
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The ProductDescriptions that will be loaded from the description file.
|
|
||||||
*/
|
|
||||||
private ProductDescriptions descriptions;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Default constructor.
|
|
||||||
*/
|
|
||||||
public DMWDecoder() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Decode a GOES-R/Himawari DMW file.
|
|
||||||
*
|
|
||||||
* @param data
|
|
||||||
* The file data.
|
|
||||||
* @param headers
|
|
||||||
* The headers.
|
|
||||||
* @return The decoded objects.
|
|
||||||
*/
|
|
||||||
public PluginDataObject[] decode(File file, Headers headers) {
|
|
||||||
|
|
||||||
String traceId = "";
|
|
||||||
|
|
||||||
List<PluginDataObject> records = new ArrayList<>();
|
|
||||||
|
|
||||||
if (headers != null) {
|
|
||||||
traceId = (String) headers.get("traceId");
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
if (file != null && file.length() > 0) {
|
|
||||||
try {
|
|
||||||
decodeData(file, traceId, records);
|
|
||||||
} catch (Exception e) {
|
|
||||||
statusHandler.error(traceId + "-Error in decode", e);
|
|
||||||
} finally {
|
|
||||||
if (records.isEmpty()) {
|
|
||||||
statusHandler.info(
|
|
||||||
String.format("%s - Decoded no obs", traceId));
|
|
||||||
} else {
|
|
||||||
statusHandler.info(String.format("%s - Decoded %d obs",
|
|
||||||
traceId, records.size()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
statusHandler.info(traceId + "- No data in file");
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
statusHandler.error(traceId + "- Decoder error", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
return records.toArray(new PluginDataObject[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Decodes the file, adding valid obs to the records list.
|
|
||||||
*
|
|
||||||
* @param file
|
|
||||||
* The file.
|
|
||||||
* @param traceId
|
|
||||||
* The traceId.
|
|
||||||
* @param records
|
|
||||||
* The list to add valid records to.
|
|
||||||
*/
|
|
||||||
private void decodeData(File file, String traceId,
|
|
||||||
List<PluginDataObject> records) throws IOException {
|
|
||||||
|
|
||||||
NetcdfFile dataFile = NetcdfFile.open(file.getAbsolutePath());
|
|
||||||
|
|
||||||
/* Number of descriptions that have generated legimate records. */
|
|
||||||
int descMatch = 0;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Loop through the Product Descriptions file(s) to generate DMWRecords.
|
|
||||||
*/
|
|
||||||
for (ProductDescription description : descriptions.getDescriptions()) {
|
|
||||||
try {
|
|
||||||
processDescription(description, dataFile, records);
|
|
||||||
/*
|
|
||||||
* If we make it here, then the description was valid (although
|
|
||||||
* no records may have been generated).
|
|
||||||
*/
|
|
||||||
descMatch++;
|
|
||||||
} catch (InvalidDescriptionException e) {
|
|
||||||
if (description.isDebugStatus()) {
|
|
||||||
statusHandler.info(
|
|
||||||
"ProductDescription \"" + description.getName()
|
|
||||||
+ "\" -- " + e.getMessage());
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
/* Any Exceptions not thrown as InvalidDescriptionExceptions. */
|
|
||||||
statusHandler
|
|
||||||
.info("An uncaught error occurred while processing description "
|
|
||||||
+ description.getName() + ": "
|
|
||||||
+ e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dataFile.close();
|
|
||||||
|
|
||||||
if (descMatch == 0) {
|
|
||||||
statusHandler
|
|
||||||
.info("No descriptions provided are valid for the file "
|
|
||||||
+ file.getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Processes a ProductDescription to decode file and populate the records
|
|
||||||
* list
|
|
||||||
*
|
|
||||||
* @param description
|
|
||||||
* instance being processed.
|
|
||||||
* @param file
|
|
||||||
* The file to be decoded.
|
|
||||||
* @param records
|
|
||||||
* The list of PluginDataObject to populate w/ valid obs.
|
|
||||||
* @throws Exception
|
|
||||||
* To log the which product description throws the error and
|
|
||||||
* where it is thrown.
|
|
||||||
*/
|
|
||||||
private void processDescription(ProductDescription description,
|
|
||||||
NetcdfFile dataFile, List<PluginDataObject> records)
|
|
||||||
throws IOException, InvalidDescriptionException {
|
|
||||||
|
|
||||||
// Date handling
|
|
||||||
String epochStr = description.getDataTime().getEpoch();
|
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat(DATE_STRING);
|
|
||||||
Date timeDate;
|
|
||||||
try {
|
|
||||||
timeDate = sdf.parse(epochStr);
|
|
||||||
} catch (ParseException e) {
|
|
||||||
throw new InvalidDescriptionException(
|
|
||||||
"The \"epoch\" attribute of the \"<dateTime>\" bean must be of format \"yyyy-MM-dd HH:mm:ss\".");
|
|
||||||
}
|
|
||||||
Calendar epochCal = TimeUtil.newGmtCalendar(timeDate);
|
|
||||||
|
|
||||||
/* Initialize the variable(s) given the ProductDescriptions. */
|
|
||||||
Variable latVar, lonVar, spdVar, dirVar, dqfVar, filVar, epochOffsetVar;
|
|
||||||
try {
|
|
||||||
latVar = dataFile.findVariable(description.getLat().getName());
|
|
||||||
lonVar = dataFile.findVariable(description.getLon().getName());
|
|
||||||
spdVar = dataFile.findVariable(description.getWspd().getName());
|
|
||||||
dirVar = dataFile.findVariable(description.getWdir().getName());
|
|
||||||
dqfVar = dataFile.findVariable(description.getDQF().getName());
|
|
||||||
filVar = dataFile.findVariable(description.getFilter().getName());
|
|
||||||
epochOffsetVar = dataFile.findVariable(
|
|
||||||
description.getDataTime().getDelegate().getName());
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new InvalidDescriptionException(
|
|
||||||
"An error occurred while assigning the NetCDF Variables");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Quick check to see if a valid winds product may exist. */
|
|
||||||
if (latVar == null || lonVar == null || spdVar == null || dirVar == null
|
|
||||||
|| dqfVar == null) {
|
|
||||||
throw new InvalidDescriptionException(
|
|
||||||
"The Product Description could not load the necessary Variables from the file.");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Determine the percentage of valid DQF's in the file (no DMW Records
|
|
||||||
* are created if this is present in the description and its value is <=
|
|
||||||
* 0 in the NetCDF File.
|
|
||||||
*/
|
|
||||||
float percentGoodDQFVal = 0.0f;
|
|
||||||
if (description.getPercentGoodDQF() != null) {
|
|
||||||
percentGoodDQFVal = description.getPercentGoodDQF().getNumber(dataFile).floatValue();
|
|
||||||
|
|
||||||
if (percentGoodDQFVal <= 0.0f) {
|
|
||||||
throw new InvalidDescriptionException(
|
|
||||||
"\"<percentGoodDQF>\" field shows no valid winds in the file");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
String scene = "";
|
|
||||||
if (description.getScene() != null) {
|
|
||||||
scene = description.getScene().getString(dataFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
String orbitalSlot = "";
|
|
||||||
if (description.getOrbitalSlot() != null) {
|
|
||||||
orbitalSlot = description.getOrbitalSlot().getString(dataFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
int channel = dataFile.findVariable(description.getChannel().getName())
|
|
||||||
.readScalarInt();
|
|
||||||
|
|
||||||
Array lats = latVar.read();
|
|
||||||
Array lons = lonVar.read();
|
|
||||||
Array spds = spdVar.read();
|
|
||||||
Array dirs = dirVar.read();
|
|
||||||
Array dqfs = dqfVar.read();
|
|
||||||
Array filters = filVar.read();
|
|
||||||
|
|
||||||
long latsSize = lats.getSize();
|
|
||||||
if (latsSize != lons.getSize() || latsSize != spds.getSize()
|
|
||||||
|| latsSize != dirs.getSize() || latsSize != dqfs.getSize()) {
|
|
||||||
throw new InvalidDescriptionException(
|
|
||||||
"The required data arrays within the file are not of the same length");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Handle setting the epoch/timestamp of the data (GOES-R : Scalar,
|
|
||||||
* Himawari : Array).
|
|
||||||
*/
|
|
||||||
int epochOffsetVal = 0;
|
|
||||||
Array epochOffsets = null;
|
|
||||||
if (epochOffsetVar.isScalar()) {
|
|
||||||
epochOffsetVal = epochOffsetVar.readScalarInt();
|
|
||||||
} else {
|
|
||||||
epochOffsets = epochOffsetVar.read();
|
|
||||||
}
|
|
||||||
|
|
||||||
double lat;
|
|
||||||
double lon;
|
|
||||||
float speed;
|
|
||||||
float direction;
|
|
||||||
byte quality;
|
|
||||||
DMWRecord record;
|
|
||||||
SurfaceObsLocation location;
|
|
||||||
Float filter;
|
|
||||||
|
|
||||||
while (lats.hasNext() && lons.hasNext() && spds.hasNext()
|
|
||||||
&& dirs.hasNext() && dqfs.hasNext()) {
|
|
||||||
|
|
||||||
lat = lats.nextDouble();
|
|
||||||
lon = lons.nextDouble();
|
|
||||||
speed = spds.nextFloat();
|
|
||||||
direction = dirs.nextFloat();
|
|
||||||
quality = dqfs.nextByte();
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Get the next float in the "filters" Array. If there is no next
|
|
||||||
* float in the Array, then default the value.
|
|
||||||
*/
|
|
||||||
if (filters.hasNext()) {
|
|
||||||
try {
|
|
||||||
filter = filters.nextFloat();
|
|
||||||
} catch (Exception e) {
|
|
||||||
filter = (Float) null;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
filter = (Float) null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Now to do the same only for the epoch. */
|
|
||||||
if (!epochOffsetVar.isScalar()) {
|
|
||||||
if (epochOffsets.hasNext()) {
|
|
||||||
try {
|
|
||||||
Number epochOffset = (Number) epochOffsets.next();
|
|
||||||
epochOffsetVal = epochOffset.intValue();
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new InvalidDescriptionException(
|
|
||||||
"An error occurred while decoding \"<dataTime> <variable>\" field; ",
|
|
||||||
e);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
throw new InvalidDescriptionException(
|
|
||||||
"Uncaught error occurred while decoding \"<dataTime>\" field");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Only create records for the description's valid DQF variable. */
|
|
||||||
if (quality == description.getValidDQF()) {
|
|
||||||
|
|
||||||
record = new DMWRecord();
|
|
||||||
|
|
||||||
record.setScene(scene);
|
|
||||||
record.setChannel(channel);
|
|
||||||
record.setOrbitalSlot(orbitalSlot);
|
|
||||||
|
|
||||||
location = new SurfaceObsLocation();
|
|
||||||
location.assignLocation((float) lat, (float) lon);
|
|
||||||
location.generateCoordinateStationId();
|
|
||||||
record.setLocation(location);
|
|
||||||
|
|
||||||
record.setWindSpd(speed);
|
|
||||||
record.setWindDir(direction);
|
|
||||||
|
|
||||||
record.setFilter(filter);
|
|
||||||
|
|
||||||
Calendar datetime = (Calendar) epochCal.clone();
|
|
||||||
datetime.add(Calendar.SECOND, epochOffsetVal);
|
|
||||||
record.setDataTime(new DataTime(datetime));
|
|
||||||
|
|
||||||
records.add(record);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The {@link IPathManager} is used to look up descriptions files.
|
|
||||||
*/
|
|
||||||
public void setPathManager(IPathManager pathManager) {
|
|
||||||
LocalizationFile[] files = pathManager.listStaticFiles(
|
|
||||||
"satellite/dmw/descriptions", new String[] { ".xml" }, true,
|
|
||||||
true);
|
|
||||||
ProductDescriptions descriptions = new ProductDescriptions();
|
|
||||||
for (LocalizationFile file : files) {
|
|
||||||
statusHandler.info(
|
|
||||||
"Loading DMW data description(s) from " + file.getPath());
|
|
||||||
|
|
||||||
try (InputStream inputStream = file.openInputStream()) {
|
|
||||||
ProductDescriptions unmarshalled = JAXB.unmarshal(inputStream,
|
|
||||||
ProductDescriptions.class);
|
|
||||||
descriptions.addDescriptions(unmarshalled);
|
|
||||||
} catch (LocalizationException | IOException e) {
|
|
||||||
statusHandler.error("Unable to load product descriptions from "
|
|
||||||
+ file.getPath(), e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.descriptions = descriptions;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,271 +0,0 @@
|
||||||
package com.raytheon.uf.edex.plugin.goesr.dmw.description;
|
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlAccessType;
|
|
||||||
import javax.xml.bind.annotation.XmlAccessorType;
|
|
||||||
import javax.xml.bind.annotation.XmlAttribute;
|
|
||||||
import javax.xml.bind.annotation.XmlElement;
|
|
||||||
|
|
||||||
import com.raytheon.uf.edex.netcdf.description.field.date.EpochOffsetDateValue;
|
|
||||||
import com.raytheon.uf.edex.netcdf.description.field.direct.VariableDescription;
|
|
||||||
import com.raytheon.uf.edex.netcdf.description.field.indirect.DelegateFieldDescription;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A single Derived Motion Winds (DMW) Product Description. Used by the
|
|
||||||
* DMWDecoder to decode fields from a single NetCDF file into multiple
|
|
||||||
* DMWRecords.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------ ---------- ----------- --------------------------
|
|
||||||
* 07/13/2016 19051 mcomerford Initial creation
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author matt.comerford
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
@XmlAccessorType(XmlAccessType.NONE)
|
|
||||||
public class ProductDescription {
|
|
||||||
|
|
||||||
@XmlAttribute(required = true)
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
@XmlElement
|
|
||||||
private VariableDescription lat;
|
|
||||||
|
|
||||||
@XmlElement
|
|
||||||
private VariableDescription lon;
|
|
||||||
|
|
||||||
@XmlElement
|
|
||||||
private VariableDescription wspd;
|
|
||||||
|
|
||||||
@XmlElement
|
|
||||||
private VariableDescription wdir;
|
|
||||||
|
|
||||||
@XmlElement
|
|
||||||
private VariableDescription dqf;
|
|
||||||
|
|
||||||
@XmlElement
|
|
||||||
private VariableDescription filter = null;
|
|
||||||
|
|
||||||
@XmlElement
|
|
||||||
private VariableDescription channel;
|
|
||||||
|
|
||||||
@XmlElement
|
|
||||||
private EpochOffsetDateValue dataTime;
|
|
||||||
|
|
||||||
@XmlElement
|
|
||||||
private DelegateFieldDescription orbitalSlot = null;
|
|
||||||
|
|
||||||
@XmlElement
|
|
||||||
private DelegateFieldDescription percentGoodDQF = null;
|
|
||||||
|
|
||||||
@XmlElement
|
|
||||||
private DelegateFieldDescription scene;
|
|
||||||
|
|
||||||
@XmlElement
|
|
||||||
private int validDQF;
|
|
||||||
|
|
||||||
@XmlElement(name = "debug")
|
|
||||||
private boolean debugStatus = false;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the name
|
|
||||||
*/
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param name the name to set
|
|
||||||
*/
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the lat
|
|
||||||
*/
|
|
||||||
public VariableDescription getLat() {
|
|
||||||
return lat;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param lat the lat to set
|
|
||||||
*/
|
|
||||||
public void setLat(VariableDescription lat) {
|
|
||||||
this.lat = lat;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the lon
|
|
||||||
*/
|
|
||||||
public VariableDescription getLon() {
|
|
||||||
return lon;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param lon the lon to set
|
|
||||||
*/
|
|
||||||
public void setLon(VariableDescription lon) {
|
|
||||||
this.lon = lon;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the wspd
|
|
||||||
*/
|
|
||||||
public VariableDescription getWspd() {
|
|
||||||
return wspd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param wspd the wspd to set
|
|
||||||
*/
|
|
||||||
public void setWspd(VariableDescription wspd) {
|
|
||||||
this.wspd = wspd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the wdir
|
|
||||||
*/
|
|
||||||
public VariableDescription getWdir() {
|
|
||||||
return wdir;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param wdir the wdir to set
|
|
||||||
*/
|
|
||||||
public void setWdir(VariableDescription wdir) {
|
|
||||||
this.wdir = wdir;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the dqf
|
|
||||||
*/
|
|
||||||
public VariableDescription getDQF() {
|
|
||||||
return dqf;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param dqf the dqf to set
|
|
||||||
*/
|
|
||||||
public void setDQF(VariableDescription dqf) {
|
|
||||||
this.dqf = dqf;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the filter
|
|
||||||
*/
|
|
||||||
public VariableDescription getFilter() {
|
|
||||||
return filter;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param filter the filter to set
|
|
||||||
*/
|
|
||||||
public void setFilter(VariableDescription filter) {
|
|
||||||
this.filter = filter;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the channel
|
|
||||||
*/
|
|
||||||
public VariableDescription getChannel() {
|
|
||||||
return channel;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param channel the channel to set
|
|
||||||
*/
|
|
||||||
public void setChannel(VariableDescription channel) {
|
|
||||||
this.channel = channel;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the dataTime
|
|
||||||
*/
|
|
||||||
public EpochOffsetDateValue getDataTime() {
|
|
||||||
return dataTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param dataTime the dataTime to set
|
|
||||||
*/
|
|
||||||
public void setDataTime(EpochOffsetDateValue dataTime) {
|
|
||||||
this.dataTime = dataTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the orbitalSlot
|
|
||||||
*/
|
|
||||||
public DelegateFieldDescription getOrbitalSlot() {
|
|
||||||
return orbitalSlot;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param orbitalSlot the orbitalSlot to set
|
|
||||||
*/
|
|
||||||
public void setOrbitalSlot(DelegateFieldDescription orbitalSlot) {
|
|
||||||
this.orbitalSlot = orbitalSlot;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the percentGoodDQF
|
|
||||||
*/
|
|
||||||
public DelegateFieldDescription getPercentGoodDQF() {
|
|
||||||
return percentGoodDQF;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param percentGoodDQF the percentGoodDQF to set
|
|
||||||
*/
|
|
||||||
public void setPercentGoodDQF(DelegateFieldDescription percentGoodDQF) {
|
|
||||||
this.percentGoodDQF = percentGoodDQF;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the scene
|
|
||||||
*/
|
|
||||||
public DelegateFieldDescription getScene() {
|
|
||||||
return scene;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param scene the scene to set
|
|
||||||
*/
|
|
||||||
public void setScene(DelegateFieldDescription scene) {
|
|
||||||
this.scene = scene;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the validDQF
|
|
||||||
*/
|
|
||||||
public int getValidDQF() {
|
|
||||||
return validDQF;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param validDQF the validDQF to set
|
|
||||||
*/
|
|
||||||
public void setValidDQF(int validDQF) {
|
|
||||||
this.validDQF = validDQF;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the debugStatus
|
|
||||||
*/
|
|
||||||
public boolean isDebugStatus() {
|
|
||||||
return debugStatus;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param debugStatus the debugStatus to set
|
|
||||||
*/
|
|
||||||
public void setDebugStatus(boolean debugStatus) {
|
|
||||||
this.debugStatus = debugStatus;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,59 +0,0 @@
|
||||||
package com.raytheon.uf.edex.plugin.goesr.dmw.description;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlAccessorType;
|
|
||||||
import javax.xml.bind.annotation.XmlAccessType;
|
|
||||||
import javax.xml.bind.annotation.XmlElement;
|
|
||||||
import javax.xml.bind.annotation.XmlRootElement;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A list of Derived Motion Winds (DMW) Product Descriptions.
|
|
||||||
* See {@link PointSetProductDescriptions}, after which this class is modeled,
|
|
||||||
* for more information.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------ ---------- ----------- --------------------------
|
|
||||||
* 07/13/2016 19051 mcomerford Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author matt.comerford
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
@XmlRootElement
|
|
||||||
@XmlAccessorType(XmlAccessType.NONE)
|
|
||||||
public class ProductDescriptions {
|
|
||||||
|
|
||||||
@XmlElement(name = "description")
|
|
||||||
private List<ProductDescription> descriptions;
|
|
||||||
|
|
||||||
public List<ProductDescription> getDescriptions() {
|
|
||||||
return descriptions;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String listDescriptions() {
|
|
||||||
return descriptions.toArray().toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDescriptions(List<ProductDescription> descriptions) {
|
|
||||||
this.descriptions = descriptions;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addDescription(ProductDescription description) {
|
|
||||||
this.descriptions.add(description);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addDescriptions(ProductDescriptions descriptions) {
|
|
||||||
if (this.descriptions == null) {
|
|
||||||
this.descriptions = new ArrayList<>();
|
|
||||||
}
|
|
||||||
this.descriptions.addAll(descriptions.getDescriptions());
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,46 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- TOWRdocs Header
|
|
||||||
The distribution file for GOES-R and Himawari Derived Motion Winds
|
|
||||||
(DMW) products
|
|
||||||
-->
|
|
||||||
<!-- TOWRdocs Description
|
|
||||||
This file contains regex expressions used to match filename patterns to
|
|
||||||
the appropriate GOES-R or Himawari winds file. Any filename ingested that
|
|
||||||
any of the pattern(s) below will run through the DMWDecoder.
|
|
||||||
-->
|
|
||||||
<!-- TOWRdocs Status
|
|
||||||
This file is currently in the baseline. It has been modified to include Himawari
|
|
||||||
DMW product files as well.
|
|
||||||
-->
|
|
||||||
<!-- TOWRdocs POC
|
|
||||||
Matt Comerford
|
|
||||||
-->
|
|
||||||
|
|
||||||
<requestPatterns xmlns:ns2="group">
|
|
||||||
<!-- Raw GOES-R Products -->
|
|
||||||
<regex>^.*(DMW[A-Z0-9]{1,}-M[0-9]C[0-9]{2}).*\.nc$</regex>
|
|
||||||
<!-- WMO Header for GOES-R DMW -->
|
|
||||||
<regex>^IXTU99.*</regex>
|
|
||||||
<!-- Raw Himawari Products -->
|
|
||||||
<regex>^Himawari_AHI.*AMV_CH[0-9]{2}(_CS)?\.nc$</regex>
|
|
||||||
</requestPatterns>
|
|
|
@ -1,41 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- TOWRdocs Header
|
|
||||||
The Derived Motion Winds (DMW) purge rules file.
|
|
||||||
-->
|
|
||||||
<!-- TOWRdocs Description
|
|
||||||
This file defines EDEX purge rule(s) for the DMW plugin.
|
|
||||||
The default is to purge any DMWRecords with a reftime
|
|
||||||
greater than 12 hours
|
|
||||||
-->
|
|
||||||
<!-- TOWRdocs Status
|
|
||||||
This is a baseline file and has not been modified in any way.
|
|
||||||
-->
|
|
||||||
<!-- TOWRdocs POC
|
|
||||||
Matt Comerford
|
|
||||||
-->
|
|
||||||
|
|
||||||
<purgeRuleSet>
|
|
||||||
<defaultRule>
|
|
||||||
<versionsToKeep>256</versionsToKeep>
|
|
||||||
</defaultRule>
|
|
||||||
</purgeRuleSet>
|
|
|
@ -1,150 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
||||||
|
|
||||||
<!-- TOWRdocs Header
|
|
||||||
The DMW Product Descriptions configuration file for Himawari.
|
|
||||||
-->
|
|
||||||
<!-- TOWRdocs Description
|
|
||||||
This file contains multiple ProductDescription instances relating to the
|
|
||||||
GOES-R Derived Motion Winds (DMW) plugin. It provides the framework for
|
|
||||||
mapping NetCDF-4 Variables/Attributes/Values to DMWRecord fields, which allows
|
|
||||||
for and handles the decoding of DMW files into AWIPS II EDEX.
|
|
||||||
|
|
||||||
See com.raytheon.uf.edex.plugin.goesr.dmw.description.ProductDescription.java for more information.
|
|
||||||
|
|
||||||
~~~~~~~~~~~~~~~~~~ Description of Tags ~~~~~~~~~~~~~~~~~~
|
|
||||||
<description>
|
|
||||||
Specifies the beginning of a new product description. Each new description must
|
|
||||||
contain the tags described below (unless noted otherwise). Each product description
|
|
||||||
is closed off with the closing </description> tag.
|
|
||||||
|
|
||||||
<lat>
|
|
||||||
The "Latitude" Variable
|
|
||||||
|
|
||||||
<lon>
|
|
||||||
The "Longitude" Variable
|
|
||||||
|
|
||||||
<wspd>
|
|
||||||
The "Wind Speed" Variable
|
|
||||||
|
|
||||||
<wdir>
|
|
||||||
The "Wind Direction" Variable
|
|
||||||
|
|
||||||
<dqf>
|
|
||||||
The "Data Quality Flag" Variable. This maps the NetCDF Variable that handles the
|
|
||||||
"quality" of each observation (good obs, bad because ______, etc.)
|
|
||||||
|
|
||||||
<percentGoodDQF>
|
|
||||||
Variable (For Himawari ONLY) that maps the percentage
|
|
||||||
of winds observations that have a "good obs" quality flag associated.
|
|
||||||
|
|
||||||
NOTE: This is an optional variable. If not specified, the decoder will still attempt to
|
|
||||||
decode files even though they may have no valid DQF values (DQF=0).
|
|
||||||
|
|
||||||
Perhaps the best example of this would be if you are interested ingesting
|
|
||||||
winds that may have failed a certain verification test.
|
|
||||||
|
|
||||||
**IMPORTANT** - If this is your case, be sure to modify the <validDQF> tag
|
|
||||||
to match the DQF You are interested in!
|
|
||||||
|
|
||||||
<validDQF>
|
|
||||||
User-set variable that determines which DQF to use to create a DMW Record.
|
|
||||||
This value is default at 0 ("good observation"), but may be altered to ingest
|
|
||||||
other-quality winds into the database.
|
|
||||||
|
|
||||||
NOTE: DMWRecords will only be created for observations with a DWF value
|
|
||||||
matching the one provided. This means that multiple <description>
|
|
||||||
entries will be required to view more than just winds with a DQF=0
|
|
||||||
(one entry per desired "DQF")
|
|
||||||
|
|
||||||
<filter>
|
|
||||||
The Variable that determines what value to insert into the "filter" column for a
|
|
||||||
DMWRecord. This defaults to pressure for DMWs (for altitude-based querying) but
|
|
||||||
realistically may be expanded to handle other NetCDF Variables in the same file.
|
|
||||||
|
|
||||||
<channel>
|
|
||||||
The Variable that maps the "Channel Number" of the satellite associated with
|
|
||||||
the observation
|
|
||||||
|
|
||||||
<orbitalSlot>
|
|
||||||
A User-set value for the "Orbital Slot". This maps to a String, and it is defaulted to
|
|
||||||
"Himawari", as there is no "Orbital Slot" Variable/Attribute in Himawari DMW files.
|
|
||||||
|
|
||||||
This may be used in combination with validDQF above to create custom Orbital Slot
|
|
||||||
Strings, which may allow for DQF-based display and bundling in CAVE
|
|
||||||
|
|
||||||
i.e. <orbitalSlotValue value="HimawariDQF6" /> paired with <validDQF>6</validDQF>
|
|
||||||
|
|
||||||
<scene>
|
|
||||||
A User-set value for the "Scene". This maps to a String, and it is defaulted to
|
|
||||||
"Himawari", as there is no "Scene" Variable/Attribute in Himawari DMW files.
|
|
||||||
|
|
||||||
Much like with <orbitalSlotValue>, This may be modified by the user to allow for more
|
|
||||||
control when building CAVE bundles.
|
|
||||||
|
|
||||||
<dataTime>
|
|
||||||
Variable used to represent the "Time" Variable/Attribute of the NetCDF File. There may
|
|
||||||
be several Variables/Attributes that handle times or dates inside a single file.
|
|
||||||
|
|
||||||
However, for this specific entry we are interested in the Variable/Attribute that handles
|
|
||||||
"time in seconds since the specified epoch date", or something of the like.
|
|
||||||
|
|
||||||
attribute "epoch" - the epoch date specified in the Variable
|
|
||||||
MUST be in the form "yyyy-MM-dd HH:mm:ss"
|
|
||||||
|
|
||||||
attribute "units" - defaulted to SECONDS, as Himawari files provide the offset in
|
|
||||||
seconds.
|
|
||||||
|
|
||||||
<variable>
|
|
||||||
The name of the actual NetCDF Variable that holds the time we are interested in.
|
|
||||||
|
|
||||||
<debug>
|
|
||||||
This tag handles the verbose error logging specific to the <description> tag in which it
|
|
||||||
is specified. It is not a required tag (will automatically default to false).
|
|
||||||
|
|
||||||
If set to true and the description causes an error when creating a database entry, a
|
|
||||||
description of that error will be logged in "/awips2/edex/logs/edex-ingest-yyyyMMDD.log".
|
|
||||||
|
|
||||||
NOTE: Because the DMW plugin now handles both GOES-R and Himawari DMWs, at
|
|
||||||
least one product description will fail and throw and error (running a GOES-R description
|
|
||||||
on a Himawari file, and vice versa). Because of this, it is only suggested to use
|
|
||||||
|
|
||||||
<debug>true</debug>
|
|
||||||
|
|
||||||
when creating/modifying new or existing product descriptions. Otherwise you will see errors propogating
|
|
||||||
through the logs even though valid DMWRecords are being created and ingested properly.
|
|
||||||
-->
|
|
||||||
<!-- TOWRdocs Status
|
|
||||||
This is a new configuration file that will be added to the baseline in 16.4.1
|
|
||||||
-->
|
|
||||||
<!-- TOWRdocs POC
|
|
||||||
Matt Comerford
|
|
||||||
-->
|
|
||||||
|
|
||||||
<dmwProductDescriptions>
|
|
||||||
|
|
||||||
<!-- Himawari Products -->
|
|
||||||
<description name="Himawari">
|
|
||||||
<lat name="Latitude" />
|
|
||||||
<lon name="Longitude" />
|
|
||||||
<wspd name="Wind_Speed" />
|
|
||||||
<wdir name="Wind_Dir" />
|
|
||||||
<dqf name="Flag" />
|
|
||||||
<percendGoodDQF>
|
|
||||||
<variable name="QA_Value_0" />
|
|
||||||
</percendGoodDQF>
|
|
||||||
<validDQF>0</validDQF>
|
|
||||||
<filter name="MedianPress" />
|
|
||||||
<channel name="AMVChannel" />
|
|
||||||
<orbitalSlot>
|
|
||||||
<value value="Himawari" />
|
|
||||||
</orbitalSlot>
|
|
||||||
<scene>
|
|
||||||
<value value="Himawari" />
|
|
||||||
</scene>
|
|
||||||
<dataTime epoch="1970-01-01 00:00:00" units="SECONDS">
|
|
||||||
<variable name="Time" />
|
|
||||||
</dataTime>
|
|
||||||
<debug>false</debug>
|
|
||||||
</description>
|
|
||||||
|
|
||||||
</dmwProductDescriptions>
|
|
|
@ -1,147 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
||||||
|
|
||||||
<!-- TOWRdocs Header
|
|
||||||
The DMW Product Descriptions configuration file for GOES-R.
|
|
||||||
-->
|
|
||||||
<!-- TOWRdocs Description
|
|
||||||
This file contains multiple ProductDescription instances relating to the
|
|
||||||
GOES-R Derived Motion Winds (DMW) plugin. It provides the framework for
|
|
||||||
mapping NetCDF-4 Variables/Attributes/Values to DMWRecord fields, which allows
|
|
||||||
for and handles the decoding of DMW files into AWIPS II EDEX.
|
|
||||||
|
|
||||||
See com.raytheon.uf.edex.plugin.goesr.dmw.description.ProductDescription.java for more information.
|
|
||||||
|
|
||||||
~~~~~~~~~~~~~~~~~~ Description of Tags ~~~~~~~~~~~~~~~~~~
|
|
||||||
<description>
|
|
||||||
Specifies the beginning of a new product description. Each new description must
|
|
||||||
contain the tags described below (unless noted otherwise). Each product description
|
|
||||||
is closed off with the closing </description> tag.
|
|
||||||
|
|
||||||
<lat>
|
|
||||||
The "Latitude" Variable
|
|
||||||
|
|
||||||
<lon>
|
|
||||||
The "Longitude" Variable
|
|
||||||
|
|
||||||
<wspd>
|
|
||||||
The "Wind Speed" Variable
|
|
||||||
|
|
||||||
<wdir>
|
|
||||||
The "Wind Direction" Variable
|
|
||||||
|
|
||||||
<dqf>
|
|
||||||
The "Data Quality Flag" Variable. This maps the NetCDF Variable that handles the
|
|
||||||
"quality" of each observation (good obs, bad because ______, etc.)
|
|
||||||
|
|
||||||
<percentGoodDQF>
|
|
||||||
Attribute (For GOES-R ONLY) of the "DQF" Variable, that maps the percentage
|
|
||||||
of winds observations that have a "good obs" quality flag associated.
|
|
||||||
|
|
||||||
NOTE: This is an optional variable. If not specified, the decoder will still attempt to
|
|
||||||
decode files even though they may have no valid DQF values (DQF=0).
|
|
||||||
|
|
||||||
Perhaps the best example of this would be if you are interested ingesting
|
|
||||||
winds that may have failed a certain verification test.
|
|
||||||
|
|
||||||
**IMPORTANT** - If this is your case, be sure to modify the <validDQF> tag
|
|
||||||
to match the DQF You are interested in!
|
|
||||||
|
|
||||||
<validDQF>
|
|
||||||
User-set variable that determines which DQF to use to create a DMW Record.
|
|
||||||
This value is default at 0 ("good observation"), but may be altered to ingest
|
|
||||||
other-quality winds into the database.
|
|
||||||
|
|
||||||
NOTE: DMWRecords will only be created for observations with a DWF value
|
|
||||||
matching the one provided. This means that multiple <description>
|
|
||||||
entries will be required to view more than just winds with a DQF=0
|
|
||||||
(one entry per desired "DQF")
|
|
||||||
|
|
||||||
<filter>
|
|
||||||
The Variable that determines what value to insert into the "filter" column for a
|
|
||||||
DMWRecord. This defaults to pressure for DMWs (for altitude-based querying) but
|
|
||||||
realistically may be expanded to handle other NetCDF Variables in the same file.
|
|
||||||
|
|
||||||
<channel>
|
|
||||||
The Variable that maps the "Channel Number" of the satellite associated with
|
|
||||||
the observation.
|
|
||||||
|
|
||||||
<orbitalSlot>
|
|
||||||
Maps to the NetCDF Global Attribute "orbital_slot" in GOES-R DMW Files.
|
|
||||||
|
|
||||||
NOTE: Himawari DMW Files are slightly different, and thus this value is user-set in the
|
|
||||||
description instead.
|
|
||||||
|
|
||||||
<scene>
|
|
||||||
Maps to the NetCDF Global Attribute "scene_id" in GOES-R DMW Files.
|
|
||||||
|
|
||||||
NOTE: Himawari DMW Files are slightly different, and thus this value is user-set in the
|
|
||||||
description instead.
|
|
||||||
|
|
||||||
<dataTime>
|
|
||||||
Variable used to represent the "Time" Variable/Attribute of the NetCDF File. There may
|
|
||||||
be several Variables/Attributes that handle times or dates inside a single file.
|
|
||||||
|
|
||||||
However, for this specific entry we are interested in the Variable/Attribute that handles
|
|
||||||
"time in seconds since the specified epoch date", or something of the like.
|
|
||||||
|
|
||||||
attribute "epoch" - the epoch date specified in the Variable
|
|
||||||
MUST be in the form "yyyy-MM-dd HH:mm:ss"
|
|
||||||
|
|
||||||
attribute "units" - defaulted to SECONDS, as GOES-R files provide the offset in
|
|
||||||
seconds.
|
|
||||||
|
|
||||||
<variable>
|
|
||||||
The name of the actual NetCDF Variable that holds the time we are interested in.
|
|
||||||
|
|
||||||
<debug>
|
|
||||||
This tag handles the verbose error logging specific to the <description> tag in which it
|
|
||||||
is specified. It is not a required tag (will automatically default to false).
|
|
||||||
|
|
||||||
If set to true and the description causes an error when creating a database entry, a
|
|
||||||
description of that error will be logged in "/awips2/edex/logs/edex-ingest-yyyyMMDD.log".
|
|
||||||
|
|
||||||
NOTE: Because the DMW plugin now handles both GOES-R and Himawari DMWs, at
|
|
||||||
least one product description will fail and throw and error (running a GOES-R description
|
|
||||||
on a Himawari file, and vice versa). Because of this, it is only suggested to use
|
|
||||||
|
|
||||||
<debug>true</debug>
|
|
||||||
|
|
||||||
when creating/modifying new or existing product descriptions. Otherwise you will see errors propogating
|
|
||||||
through the logs even though valid DMWRecords are being created and ingested properly.
|
|
||||||
-->
|
|
||||||
<!-- TOWRdocs Status
|
|
||||||
This is a new configuration file that will be added to the baseline in 16.4.1
|
|
||||||
-->
|
|
||||||
<!-- TOWRdocs POC
|
|
||||||
Matt Comerford
|
|
||||||
-->
|
|
||||||
|
|
||||||
<dmwProductDescriptions>
|
|
||||||
|
|
||||||
<!-- GOES-R Products -->
|
|
||||||
<description name="GOES-R">
|
|
||||||
<lat name="lat" />
|
|
||||||
<lon name="lon" />
|
|
||||||
<wspd name="wind_speed" />
|
|
||||||
<wdir name="wind_direction" />
|
|
||||||
<dqf name="DQF" />
|
|
||||||
<percentGoodDQF>
|
|
||||||
<variableAttribute attributeName="percent_good_wind_qf"
|
|
||||||
variableName="DQF" />
|
|
||||||
</percentGoodDQF>
|
|
||||||
<filter name="pressure" />
|
|
||||||
<channel name="band_id" />
|
|
||||||
<validDQF>0</validDQF>
|
|
||||||
<orbitalSlot>
|
|
||||||
<attribute name="orbital_slot" />
|
|
||||||
</orbitalSlot>
|
|
||||||
<scene>
|
|
||||||
<attribute name="scene_id" />
|
|
||||||
</scene>
|
|
||||||
<dataTime epoch="2000-01-01 12:00:00" units="SECONDS">
|
|
||||||
<variable name="time" />
|
|
||||||
</dataTime>
|
|
||||||
<debug>false</debug>
|
|
||||||
</description>
|
|
||||||
|
|
||||||
</dmwProductDescriptions>
|
|
|
@ -1,7 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<classpath>
|
|
||||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
|
||||||
<classpathentry kind="src" path="src"/>
|
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
|
||||||
<classpathentry kind="output" path="bin"/>
|
|
||||||
</classpath>
|
|
|
@ -1,28 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>com.raytheon.uf.edex.plugin.goesr</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>
|
|
|
@ -1,23 +0,0 @@
|
||||||
Manifest-Version: 1.0
|
|
||||||
Bundle-ManifestVersion: 2
|
|
||||||
Bundle-Name: GOESR Decoder
|
|
||||||
Bundle-SymbolicName: com.raytheon.uf.edex.plugin.goesr
|
|
||||||
Bundle-Version: 1.16.0.qualifier
|
|
||||||
Bundle-Vendor: RAYTHEON
|
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
|
||||||
Require-Bundle: javax.measure,
|
|
||||||
ucar.nc2,
|
|
||||||
com.raytheon.uf.common.status,
|
|
||||||
com.raytheon.uf.common.dataplugin.satellite,
|
|
||||||
com.raytheon.edex.plugin.satellite,
|
|
||||||
com.raytheon.uf.common.geospatial,
|
|
||||||
com.raytheon.uf.edex.database,
|
|
||||||
com.raytheon.uf.common.dataplugin,
|
|
||||||
com.raytheon.uf.common.datastorage,
|
|
||||||
com.raytheon.uf.edex.core,
|
|
||||||
com.raytheon.uf.common.localization;bundle-version="1.14.1",
|
|
||||||
org.slf4j;bundle-version="1.7.5",
|
|
||||||
com.raytheon.uf.edex.netcdf;bundle-version="1.15.1",
|
|
||||||
com.raytheon.uf.common.serialization;bundle-version="1.15.1",
|
|
||||||
org.apache.commons.beanutils;bundle-version="1.8.3"
|
|
||||||
Export-Package: com.raytheon.uf.edex.plugin.goesr
|
|
|
@ -1,7 +0,0 @@
|
||||||
source.. = src/
|
|
||||||
output.. = bin/
|
|
||||||
bin.includes = META-INF/,\
|
|
||||||
.,\
|
|
||||||
res/,\
|
|
||||||
utility/,\
|
|
||||||
resources/
|
|
|
@ -1,124 +0,0 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
|
||||||
<netcdf xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2 http://www.unidata.ucar.edu/schemas/netcdf/ncml-2.2.xsd" xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2">
|
|
||||||
|
|
||||||
<!-- This NCML defines a sectorized cloud and moisture CONUS product tile. The values for the attributes are representative. -->
|
|
||||||
<!-- Satellite = West -->
|
|
||||||
<!-- Projection = Lambert Conformal -->
|
|
||||||
<!-- Resolution = 2 km -->
|
|
||||||
<!-- Mode = 3 -->
|
|
||||||
<!-- Bit depth = 14 bits -->
|
|
||||||
<!-- Periodicity = 5 minutes -->
|
|
||||||
<!-- Channel 7 (6.19)-->
|
|
||||||
<!-- Tile Size = 1024 x 1024 -->
|
|
||||||
|
|
||||||
<!-- Dimension Statements -->
|
|
||||||
<!-- If the product image is not evenly divisable by the tile size, the residual data going into the edge tiles will have different dimensions than the tile size specified. -->
|
|
||||||
<dimension name="x" length= "1024" isUnlimited ="false"/>
|
|
||||||
<dimension name="y" length= "1024" isUnlimited ="false"/>
|
|
||||||
|
|
||||||
<!-- Variable Statements -->
|
|
||||||
<variable name="sectorized_cmi" type="short" shape="y x">
|
|
||||||
<attribute name="standard_name" value="brightness_temperature" type="string"/>
|
|
||||||
<attribute name="units" value="kelvin" type="string"/>
|
|
||||||
<attribute name="grid_mapping" value="lambert projection" type="string"/>
|
|
||||||
<!-- add_offset and scale_factor will have values that are calculated at the time of creation -->
|
|
||||||
<attribute name="add_offset" value="" type="float"/>
|
|
||||||
<attribute name="scale_factor" value="" type="float"/>
|
|
||||||
<attribute name="_FillValue" value="0" type="short"/>
|
|
||||||
<attribute name="valid_min" value="0" type="int"/>
|
|
||||||
<attribute name="valid_max" value="16383" type="int"/>
|
|
||||||
</variable>
|
|
||||||
|
|
||||||
<!-- Coordinate Variables -->
|
|
||||||
|
|
||||||
<variable name="x" type="short" shape="x">
|
|
||||||
<attribute name="standard_name" value="projection_x_coordinate" type="string"/>
|
|
||||||
<attribute name="units" value="microradian" type="string"/>
|
|
||||||
<!-- add_offset and scale_factor will have values that are calculated at the time of creation. These
|
|
||||||
values will be computed such that the values in the variable will be the position of the corresponding
|
|
||||||
column and row in the full image -->
|
|
||||||
<attribute name="add_offset" value="" type="double"/>
|
|
||||||
<attribute name="scale_factor" value="" type="double"/>
|
|
||||||
|
|
||||||
</variable>
|
|
||||||
|
|
||||||
<variable name="y" type="short" shape="y">
|
|
||||||
<attribute name="standard_name" value="projection_y_coordinate" type="string"/>
|
|
||||||
<attribute name="units" value="microradian" type="string"/>
|
|
||||||
<!-- add_offset and scale_factor will have values that are calculated at the time of creation. These
|
|
||||||
values will be computed such that the values in the variable will be the position of the corresponding
|
|
||||||
column and row in the full image -->
|
|
||||||
<attribute name="add_offset" value="" type="double"/>
|
|
||||||
<attribute name="scale_factor" value="" type="double"/>
|
|
||||||
</variable>
|
|
||||||
|
|
||||||
<!-- Projection Variable -->
|
|
||||||
|
|
||||||
<variable name="lambert_projection">
|
|
||||||
<attribute name="grid_mapping_name" value="lambert_conformal_conic" type="string"/>
|
|
||||||
<!-- The value of standard_parallel,longitude_of_central_meridian, and latitude_of_projection_origin will vary and will be calculated at tile creation.-->
|
|
||||||
<attribute name="standard_parallel" value="" type="double"/>
|
|
||||||
<attribute name="longitude_of_central_meridian" value="" type="double"/>
|
|
||||||
<attribute name="latitude_of_projection_origin" value="" type="double"/>
|
|
||||||
<attribute name="false_easting" value="0" type="double"/>
|
|
||||||
<attribute name="false_northing" value="0" type="double"/>
|
|
||||||
<attribute name="semi_major" value="6371200" type="double"/>
|
|
||||||
<attribute name="semi_minor" value="6371200" type="double"/>
|
|
||||||
</variable>
|
|
||||||
|
|
||||||
<!-- Global Metadata -->
|
|
||||||
<!-- title provides a succinct description of what is in the dataset -->
|
|
||||||
<attribute name="title" value="This is one tile of a CONUS product. The data comes from the west satellite
|
|
||||||
and uses a lambert conformal projection with a resolution of 2 kilometers. The satellite is using mode 3. The bit depth is
|
|
||||||
14 bits. The periodicity is 5 minutes and the tile size is 1024 x 1024."
|
|
||||||
type="string"/>
|
|
||||||
<!-- ICD_version is the file_name of the current GS to AWIPS ICD including the version number -->
|
|
||||||
<attribute name="ICD_version" value="file_name" type="string"/>
|
|
||||||
<attribute name="Conventions" value="CF-1.6" type="string"/>
|
|
||||||
<!-- production_location can have a value of WCDAS or RBU depending on where the product was produced -->
|
|
||||||
<attribute name="production_location" value="WCDAS" type="string"/>
|
|
||||||
<attribute name="product_name" value="WConus1-M3C3-T001" type="string"/>
|
|
||||||
<attribute name="channel_id" value="7" type="integer"/>
|
|
||||||
<attribute name="central_wavelength" value="6.19" type="float"/>
|
|
||||||
<attribute name="satellite_id" value="GOES-16(R)" type="string"/>
|
|
||||||
<attribute name="satellite_mode" value="3" type="integer"/>
|
|
||||||
<!-- periodicity is the delivery rate of the product from GS to AWIPS. It must be a multiple of the refresh rate. -->
|
|
||||||
<attribute name="periodicity" value="5" type="float"/>
|
|
||||||
<!-- bit depth can have values of 8-14 -->
|
|
||||||
<attribute name="bit_depth" value="14" type="int"/>
|
|
||||||
<attribute name="projection" value="Lambert Conformal" type="string"/>
|
|
||||||
<attribute name="source_spatial_resolution" value="2" type="float"/>
|
|
||||||
<attribute name="request_spatial_resolution" value="2" type="float"/>
|
|
||||||
<!-- start_date_time is the start date and time of when the satellite began capturing the Full Disk scene -->
|
|
||||||
<!-- The format is YYYYDDDhhmmss where YYYY = Year DDD = Day of the Year hh = hour of the day mm = minutes of day ss = seconds of day-->
|
|
||||||
<attribute name="start_date_time" value="2011365080000" type="string"/>
|
|
||||||
<!-- the value in number_product_tiles below was taken from the DTWT and is an estimate. The actual
|
|
||||||
value that goes into this attribute will be calculated at tile creation. -->
|
|
||||||
<attribute name="number_product_tiles" value="44" type="integer"/>
|
|
||||||
<!-- The default value of product_tile_size is 1024 but this value can be set to a value from 256 to 2048 -->
|
|
||||||
<attribute name="product_tile_size" value="1024" type="integer"/>
|
|
||||||
<attribute name="product_rows" value="2560" type="integer"/>
|
|
||||||
<attribute name="product_columns" value="2200" type="integer"/>
|
|
||||||
<attribute name="product_tile_width" value="1024" type="integer"/>
|
|
||||||
<attribute name="product_tile_height" value="1024" type="integer"/>
|
|
||||||
<attribute name="tile_row_offset" value="0" type="integer"/>
|
|
||||||
<attribute name="tile_column_offset" value="0" type="integer"/>
|
|
||||||
<attribute name="satellite_latitude" value="0" type="float"/>
|
|
||||||
<attribute name="satellite_longitude" value="-137" type="float"/>
|
|
||||||
<attribute name="satellite_altitude" value="35785831" type="float"/>
|
|
||||||
<attribute name="source_scene" value="CONUS" type="string"/>
|
|
||||||
<attribute name="product_center_latitude" value="0" type="double"/>
|
|
||||||
<attribute name="product_center_longitude" value="-137" type="double"/>
|
|
||||||
<!-- tile_center_latitude and tile_center_longitude values are variable and will be calculated at tile creation-->
|
|
||||||
<attribute name="tile_center_latitude" value="" type="double"/>
|
|
||||||
<attribute name="tile_center_longitude" value="" type="double"/>
|
|
||||||
<attribute name="pixel_x_size" value="2.0" type="double"/>
|
|
||||||
<attribute name="pixel_y_size" value="2.0" type="double"/>
|
|
||||||
|
|
||||||
</netcdf>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,119 +0,0 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
|
||||||
<netcdf xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2 http://www.unidata.ucar.edu/schemas/netcdf/ncml-2.2.xsd" xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2">
|
|
||||||
|
|
||||||
<!-- This NCML defines a sectorized cloud and moisture Full Disk product tile. The values for the attributes are representative. -->
|
|
||||||
<!-- Satellite = West -->
|
|
||||||
<!-- Projection = Fixed Grid(WGS-84) -->
|
|
||||||
<!-- Resolution = 6 km -->
|
|
||||||
<!-- Mode = 4 -->
|
|
||||||
<!-- Bit depth = 12 bits -->
|
|
||||||
<!-- Periodicity = 5 minutes -->
|
|
||||||
<!-- Channel 2 -->
|
|
||||||
<!-- Tile Size = 1024 x 1024 -->
|
|
||||||
<!-- Tile # 1 -->
|
|
||||||
|
|
||||||
<!-- Dimension Statements -->
|
|
||||||
<!-- If the product image is not evenly divisable by the tile size, the residual data going into the edge tiles will have different dimensions than the tile size specified. -->
|
|
||||||
<dimension name="x" length= "1024" isUnlimited ="false"/>
|
|
||||||
<dimension name="y" length= "1024" isUnlimited ="false"/>
|
|
||||||
|
|
||||||
<!-- Variable Statements -->
|
|
||||||
|
|
||||||
<variable name="sectorized_cmi" type="short" shape="y x">
|
|
||||||
<attribute name="standard_name" value="toa_bidirectional_reflectance" type="string"/>
|
|
||||||
<!-- The value "1" for units below is a standard approach to representing quantities that are fractions or parts of a whole -->
|
|
||||||
<attribute name="units" value="1" type="string"/>
|
|
||||||
<attribute name="grid_mapping" value="fixedgrid_projection" type="string"/>
|
|
||||||
<!-- add_offset and scale_factor will have values that are calculated at the time of creation -->
|
|
||||||
<attribute name="add_offset" value="" type="float"/>
|
|
||||||
<attribute name="scale_factor" value="" type="float"/>
|
|
||||||
<attribute name="_FillValue" value="0" type="short"/>
|
|
||||||
<attribute name="valid_min" value="0" type="int"/>
|
|
||||||
<attribute name="valid_max" value="4095" type="int"/>
|
|
||||||
</variable>
|
|
||||||
|
|
||||||
<!-- Coordinate Variables -->
|
|
||||||
|
|
||||||
<variable name="x" type="short" shape="x">
|
|
||||||
<attribute name="standard_name" value="projection_x_coordinate" type="string"/>
|
|
||||||
<attribute name="units" value="microradian" type="string"/>
|
|
||||||
<!-- add_offset and scale_factor will have values that are calculated at the time of creation. These
|
|
||||||
values will be computed such that the values in the variable will be the position of the corresponding
|
|
||||||
column and row in the full image -->
|
|
||||||
<attribute name="add_offset" value="" type="double"/>
|
|
||||||
<attribute name="scale_factor" value="" type="double"/>
|
|
||||||
|
|
||||||
</variable>
|
|
||||||
|
|
||||||
<variable name="y" type="short" shape="y">
|
|
||||||
<attribute name="standard_name" value="projection_y_coordinate" type="string"/>
|
|
||||||
<attribute name="units" value="microradian" type="string"/>
|
|
||||||
<!-- add_offset and scale_factor will have values that are calculated at the time of creation. These
|
|
||||||
values will be computed such that the values in the variable will be the position of the corresponding
|
|
||||||
column and row in the full image -->
|
|
||||||
<attribute name="add_offset" value="" type="double"/>
|
|
||||||
<attribute name="scale_factor" value="" type="double"/>
|
|
||||||
</variable>
|
|
||||||
|
|
||||||
<!-- Projection Variable -->
|
|
||||||
|
|
||||||
<variable name="fixed_projection">
|
|
||||||
<attribute name="grid_mapping_name" value="vertical_perspective" type="string"/>
|
|
||||||
<attribute name="latitude_of_projection_origin" value="0" type="double"/>
|
|
||||||
<attribute name="longitude_of_projection_origin" value="-137" type="double"/>
|
|
||||||
<attribute name="semi_major" value="6378137" type="double"/>
|
|
||||||
<attribute name="semi_minor" value="6356732.314" type="double"/>
|
|
||||||
<attribute name="perspective_point_height" value="35785831" type="double"/>
|
|
||||||
</variable>
|
|
||||||
|
|
||||||
<!-- Global Metadata -->
|
|
||||||
<!-- title provides a succinct description of what is in the dataset -->
|
|
||||||
<attribute name="title" value="This is one tile of a Full Disk product. The data comes from the west satellite
|
|
||||||
and uses a fixed grid projection with a resolution of 6 kilometers. The satellite is using mode 4. The bit depth is
|
|
||||||
12 bits. The peridicity is 5 minutes and the tile size is 1024 x 1024."
|
|
||||||
type="string"/>
|
|
||||||
<!-- ICD_version is the file_name of the current GS to AWIPS ICD including the version number -->
|
|
||||||
<attribute name="ICD_version" value="ICD Filename" type="string"/>
|
|
||||||
<attribute name="Conventions" value="CF-1.6" type="string"/>
|
|
||||||
<!-- production_location can have a value of WCDAS or RBU depending on where the product was produced -->
|
|
||||||
<attribute name="production_location" value="WCDAS" type="string"/>
|
|
||||||
<attribute name="product_name" value="WFD6-M4C02-T001" type="string"/>
|
|
||||||
<attribute name="channel_id" value="2" type="integer"/>
|
|
||||||
<attribute name="central_wavelength" value="0.64" type="float"/>
|
|
||||||
<attribute name="satellite_id" value="GOES-16(R)" type="string"/>
|
|
||||||
<attribute name="satellite_mode" value="4" type="integer"/>
|
|
||||||
<!-- periodicity is the delivery rate of the product from GS to AWIPS. It must be a multiple of the refresh rate. -->
|
|
||||||
<attribute name="periodicity" value="5" type="float"/>
|
|
||||||
<!-- bit depth can have values of 8-14 -->
|
|
||||||
<attribute name="bit_depth" value="12" type="int"/>
|
|
||||||
<attribute name="projection" value="Fixed_Grid" type="string"/>
|
|
||||||
<attribute name="source_spatial_resolution" value=".5" type="float"/>
|
|
||||||
<attribute name="request_spatial_resolution" value="6" type="float"/>
|
|
||||||
<!-- start_date_time is the start date and time of when the satellite began capturing the Full Disk scene -->
|
|
||||||
<!-- The format is YYYYDDDhhmmss where YYYY = Year DDD = Day of the Year hh = hour of the day mm = minutes of day ss = seconds of day-->
|
|
||||||
<attribute name="start_date_time" value="2011365080000" type="string"/>
|
|
||||||
<!-- the value in number_product_tiles below was taken from the DTWT and is an estimate. The actual value that goes into this attribute will be calculated at tile creation. -->
|
|
||||||
<attribute name="number_product_tiles" value="4" type="integer"/>
|
|
||||||
<!-- The default value of product_tile_size is 1024 but this value can be set to a value from 256 to 2048 -->
|
|
||||||
<attribute name="product_tile_size" value="1024" type="integer"/>
|
|
||||||
<attribute name="product_rows" value="1808" type="integer"/>
|
|
||||||
<attribute name="product_columns" value="1808" type="integer"/>
|
|
||||||
<attribute name="product_tile_width" value="1024" type="integer"/>
|
|
||||||
<attribute name="product_tile_height" value="1024" type="integer"/>
|
|
||||||
<attribute name="tile_row_offset" value="0" type="integer"/>
|
|
||||||
<attribute name="tile_column_offset" value="0" type="integer"/>
|
|
||||||
<attribute name="satellite_latitude" value="0" type="float"/>
|
|
||||||
<attribute name="satellite_longitude" value="-137" type="float"/>
|
|
||||||
<attribute name="satellite_altitude" value="35785831" type="float"/>
|
|
||||||
<attribute name="source_scene" value="Full Disk" type="string"/>
|
|
||||||
<attribute name="product_center_latitude" value="0" type="double"/>
|
|
||||||
<attribute name="product_center_longitude" value="-137" type="double"/>
|
|
||||||
<!-- tile_center_latitude tile_center_longitude values are variable and will be calculated at tile creation-->
|
|
||||||
<attribute name="tile_center_latitude" value="" type="double"/>
|
|
||||||
<attribute name="tile_center_longitude" value="" type="double"/>
|
|
||||||
<attribute name="pixel_x_size" value="6.0" type="double"/>
|
|
||||||
<attribute name="pixel_y_size" value="6.0" type="double"/>
|
|
||||||
|
|
||||||
</netcdf>
|
|
||||||
|
|
||||||
|
|
|
@ -1,125 +0,0 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
|
||||||
<netcdf xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2 http://www.unidata.ucar.edu/schemas/netcdf/ncml-2.2.xsd" xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2">
|
|
||||||
|
|
||||||
<!-- This NCML defines a sectorized cloud and moisture meso product tile. The values for the attributes are representative. -->
|
|
||||||
<!-- Satellite = West -->
|
|
||||||
<!-- Projection = Lambert Conformal -->
|
|
||||||
<!-- Resolution = 1 km -->
|
|
||||||
<!-- Mode = 3 -->
|
|
||||||
<!-- Bit depth = 12 bits -->
|
|
||||||
<!-- Periodicity = .5 minutes -->
|
|
||||||
<!-- Channel 1 (0.47) -->
|
|
||||||
<!-- Tile Size = 1024 x 1024 -->
|
|
||||||
<!-- Tile # 1 -->
|
|
||||||
<!-- Center point of meso is lat = 0 lon = -145 -->
|
|
||||||
|
|
||||||
<!-- Dimension Statements -->
|
|
||||||
<!-- If the product image is not evenly divisable by the tile size, the residual data going into the edge tiles will have different dimensions than the tile size specified. -->
|
|
||||||
<dimension name="x" length= "1024" isUnlimited ="false"/>
|
|
||||||
<dimension name="y" length= "1024" isUnlimited ="false"/>
|
|
||||||
|
|
||||||
<!-- Variable Statements -->
|
|
||||||
|
|
||||||
<variable name="sectorized_cmi" type="short" shape="y x">
|
|
||||||
<attribute name="standard_name" value="toa_bidirectional_reflectance" type="string"/>
|
|
||||||
<!-- The value "1" for units below is a standard approach to representing quantities that are fractions or parts of a whole -->
|
|
||||||
<attribute name="units" value="1" type="string"/>
|
|
||||||
<attribute name="grid_mapping" value="lambert_projection" type="string"/>
|
|
||||||
<!-- add_offset and scale_factor will have values that are calculated at the time of creation. These
|
|
||||||
values will be computed such that the values in the variable will be the position of the corresponding
|
|
||||||
column and row in the full image -->
|
|
||||||
<attribute name="add_offset" value="" type="float"/>
|
|
||||||
<attribute name="scale_factor" value="" type="float"/>
|
|
||||||
<attribute name="_FillValue" value="0" type="short"/>
|
|
||||||
<attribute name="valid_min" value="0" type="int"/>
|
|
||||||
<attribute name="valid_max" value="4095" type="int"/>
|
|
||||||
</variable>
|
|
||||||
|
|
||||||
<!-- Coordinate Variables -->
|
|
||||||
|
|
||||||
<variable name="x" type="short" shape="x">
|
|
||||||
<attribute name="standard_name" value="projection_x_coordinate" type="string"/>
|
|
||||||
<attribute name="units" value="microradian" type="string"/>
|
|
||||||
<!-- add_offset and scale_factor will have values that are calculated at the time of creation. These
|
|
||||||
values will be computed such that the values in the variable will be the position of the corresponding
|
|
||||||
column and row in the full image -->
|
|
||||||
<attribute name="add_offset" value="" type="double"/>
|
|
||||||
<attribute name="scale_factor" value="" type="double"/>
|
|
||||||
|
|
||||||
</variable>
|
|
||||||
<variable name="y" type="short" shape="y">
|
|
||||||
<attribute name="standard_name" value="projection_y_coordinate" type="string"/>
|
|
||||||
<attribute name="units" value="microradian" type="string"/>
|
|
||||||
<!-- add_offset and scale_factor will have values that are calculated at the time of creation -->
|
|
||||||
<attribute name="add_offset" value="" type="double"/>
|
|
||||||
<attribute name="scale_factor" value="" type="double"/>
|
|
||||||
</variable>
|
|
||||||
|
|
||||||
<!-- Projection Variable -->
|
|
||||||
|
|
||||||
<variable name="lambert_projection">
|
|
||||||
<attribute name="grid_mapping_name" value="lambert_conformal_conic" type="string"/>
|
|
||||||
<!-- The value of standard_parallel,longitude_of_central_meridian, and latitude_of_projection_origin will vary and will be calculated at tile creation.-->
|
|
||||||
<attribute name="standard_parallel" value="" type="double"/>
|
|
||||||
<attribute name="longitude_of_central_meridian" value="" type="double"/>
|
|
||||||
<attribute name="latitude_of_projection_origin" value="" type="double"/>
|
|
||||||
<attribute name="false_easting" value="0" type="double"/>
|
|
||||||
<attribute name="false_northing" value="0" type="double"/>
|
|
||||||
<attribute name="semi_major" value="6371200" type="double"/>
|
|
||||||
<attribute name="semi_minor" value="6371200" type="double"/>
|
|
||||||
</variable>
|
|
||||||
|
|
||||||
<!-- Global Metadata -->
|
|
||||||
<!-- title provides a succinct description of what is in the dataset -->
|
|
||||||
<attribute name="title" value="This is one tile of a meso product. The data comes from the west satellite
|
|
||||||
and uses a lambert conformal projection with a resolution of 1 kilometer. The satellite is using mode 3. The bit depth is
|
|
||||||
12 bits. The peridicity is .5 minutes and the tile size is 1024 x 1024."
|
|
||||||
type="string"/>
|
|
||||||
<!-- ICD_version is the file_name of the current GS to AWIPS ICD including the version number -->
|
|
||||||
<attribute name="ICD_version" value="file_name" type="string"/>
|
|
||||||
<attribute name="Conventions" value="CF-1.6" type="string"/>
|
|
||||||
<!-- production_location can have a value of WCDAS or RBU depending on where the product was produced -->
|
|
||||||
<attribute name="production_location" value="WCDAS" type="string"/>
|
|
||||||
<attribute name="product_name" value="WMESO5S1-M3C1-T001" type="string"/>
|
|
||||||
<attribute name="channel_id" value="1" type="integer"/>
|
|
||||||
<attribute name="central_wavelength" value="0.47" type="float"/>
|
|
||||||
<attribute name="satellite_id" value="GOES-16(R)" type="string"/>
|
|
||||||
<attribute name="satellite_mode" value="3" type="integer"/>
|
|
||||||
<!-- periodicity is the delivery rate of the product from GS to AWIPS. It must be a multiple of the refresh rate. -->
|
|
||||||
<attribute name="periodicity" value=".5" type="float"/>
|
|
||||||
<!-- bit depth can have values of 8-14 -->
|
|
||||||
<attribute name="bit_depth" value="12" type="int"/>
|
|
||||||
<attribute name="projection" value="Lambert Conformal" type="string"/>
|
|
||||||
<attribute name="source_spatial_resolution" value="1" type="float"/>
|
|
||||||
<attribute name="request_spatial_resolution" value="1" type="float"/>
|
|
||||||
<!-- start_date_time is the start date and time of when the satellite began capturing the Full Disk scene -->
|
|
||||||
<!-- The format is YYYYDDDhhmmss where YYYY = Year DDD = Day of the Year hh = hour of the day mm = minutes of day ss = seconds of day-->
|
|
||||||
<attribute name="start_date_time" value="2011365080000" type="string"/>
|
|
||||||
<!-- the value in number_product_tiles below was taken from the DTWT and is an estimate. The actual value that goes into this attribute will be calculated at tile creation. -->
|
|
||||||
<attribute name="number_product_tiles" value="3" type="integer"/>
|
|
||||||
<!-- The default value of product_tile_size is 1024 but this value can be set to a value from 256 to 2048 -->
|
|
||||||
<attribute name="product_tile_size" value="1024" type="integer"/>
|
|
||||||
<attribute name="product_rows" value="1250" type="integer"/>
|
|
||||||
<attribute name="product_columns" value="1500" type="integer"/>
|
|
||||||
<attribute name="product_tile_width" value="1024" type="integer"/>
|
|
||||||
<attribute name="product_tile_height" value="1024" type="integer"/>
|
|
||||||
<attribute name="tile_row_offset" value="0" type="integer"/>
|
|
||||||
<attribute name="tile_column_offset" value="0" type="integer"/>
|
|
||||||
<attribute name="satellite_latitude" value="0" type="float"/>
|
|
||||||
<attribute name="satellite_longitude" value="-137" type="float"/>
|
|
||||||
<attribute name="satellite_altitude" value="35785831" type="float"/>
|
|
||||||
<attribute name="source_scene" value="Mesoscale-1" type="string"/>
|
|
||||||
<attribute name="product_center_latitude" value="0" type="double"/>
|
|
||||||
<attribute name="product_center_longitude" value="-145" type="double"/>
|
|
||||||
<!-- tile_center_latitude tile_center_longitude values are variable and will be calculated at tile creation-->
|
|
||||||
<attribute name="tile_center_latitude" value="" type="double"/>
|
|
||||||
<attribute name="tile_center_longitude" value="" type="double"/>
|
|
||||||
<attribute name="pixel_x_size" value="1" type="double"/>
|
|
||||||
<attribute name="pixel_y_size" value="1" type="double"/>
|
|
||||||
|
|
||||||
</netcdf>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,273 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<xsd:schema targetNamespace="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2" xmlns:thredds="http://www.unidata.ucar.edu/namespaces/thredds/InvCatalog/v1.0" elementFormDefault="qualified">
|
|
||||||
|
|
||||||
<!-- XML encoding of Netcdf container object -->
|
|
||||||
<xsd:element name="netcdf">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:choice minOccurs="0">
|
|
||||||
<xsd:element name="readMetadata"/>
|
|
||||||
<xsd:element name="explicit"/>
|
|
||||||
</xsd:choice>
|
|
||||||
|
|
||||||
<xsd:choice minOccurs="0" maxOccurs="unbounded">
|
|
||||||
<xsd:element ref="group"/>
|
|
||||||
<xsd:element ref="dimension"/>
|
|
||||||
<xsd:element ref="variable"/>
|
|
||||||
<xsd:element ref="attribute"/>
|
|
||||||
<xsd:element ref="remove"/>
|
|
||||||
</xsd:choice>
|
|
||||||
|
|
||||||
<xsd:element ref="aggregation" minOccurs="0"/>
|
|
||||||
</xsd:sequence>
|
|
||||||
|
|
||||||
<xsd:attribute name="location" type="xsd:anyURI"/>
|
|
||||||
<xsd:attribute name="id" type="xsd:string"/>
|
|
||||||
<xsd:attribute name="title" type="xsd:string"/>
|
|
||||||
<xsd:attribute name="enhance" type="xsd:string"/>
|
|
||||||
<xsd:attribute name="addRecords" type="xsd:boolean"/>
|
|
||||||
|
|
||||||
<!-- iosp class name -->
|
|
||||||
<xsd:attribute name="iosp" type="xsd:string"/>
|
|
||||||
<!-- iosp parameter -->
|
|
||||||
<xsd:attribute name="iospParam" type="xsd:string"/>
|
|
||||||
<!-- raf buffer size -->
|
|
||||||
<xsd:attribute name="bufferSize" type="xsd:int"/>
|
|
||||||
|
|
||||||
<!-- for aggregations -->
|
|
||||||
<xsd:attribute name="ncoords" type="xsd:string"/>
|
|
||||||
<xsd:attribute name="coordValue" type="xsd:string"/>
|
|
||||||
<xsd:attribute name="section" type="xsd:string"/>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
|
|
||||||
<!-- XML encoding of group object -->
|
|
||||||
<xsd:element name="group">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice minOccurs="0" maxOccurs="unbounded">
|
|
||||||
<xsd:element ref="dimension"/>
|
|
||||||
<xsd:element ref="variable"/>
|
|
||||||
<xsd:element ref="attribute"/>
|
|
||||||
<xsd:element ref="group"/>
|
|
||||||
<xsd:element ref="enumTypedef"/>
|
|
||||||
<xsd:element ref="remove"/>
|
|
||||||
</xsd:choice>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
|
||||||
<xsd:attribute name="orgName" type="xsd:string"/>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
|
|
||||||
<!-- XML encoding of dimension object -->
|
|
||||||
<xsd:element name="dimension">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="name" type="xsd:token" use="required"/>
|
|
||||||
<xsd:attribute name="length" type="xsd:nonNegativeInteger"/>
|
|
||||||
<xsd:attribute name="isUnlimited" type="xsd:boolean" default="false"/>
|
|
||||||
<xsd:attribute name="isVariableLength" type="xsd:boolean" default="false"/>
|
|
||||||
<xsd:attribute name="isShared" type="xsd:boolean" default="true"/>
|
|
||||||
<xsd:attribute name="orgName" type="xsd:string"/>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
|
|
||||||
<!-- XML encoding of Variable object -->
|
|
||||||
<xsd:element name="variable">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element ref="attribute" minOccurs="0" maxOccurs="unbounded"/>
|
|
||||||
<xsd:element ref="values" minOccurs="0"/>
|
|
||||||
<xsd:element ref="variable" minOccurs="0" maxOccurs="unbounded"/>
|
|
||||||
<xsd:element ref="logicalSection" minOccurs="0"/>
|
|
||||||
<xsd:element ref="logicalSlice" minOccurs="0"/>
|
|
||||||
<xsd:element ref="remove" minOccurs="0" maxOccurs="unbounded"/>
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:token" use="required"/>
|
|
||||||
<xsd:attribute name="type" type="DataType"/>
|
|
||||||
<xsd:attribute name="shape" type="xsd:token"/>
|
|
||||||
<xsd:attribute name="orgName" type="xsd:string"/>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
|
|
||||||
<!-- XML encoding of values -->
|
|
||||||
<xsd:element name="values">
|
|
||||||
<xsd:complexType mixed="true">
|
|
||||||
<xsd:attribute name="start" type="xsd:float"/>
|
|
||||||
<xsd:attribute name="increment" type="xsd:float"/>
|
|
||||||
<xsd:attribute name="npts" type="xsd:int"/>
|
|
||||||
<xsd:attribute name="separator" type="xsd:string"/>
|
|
||||||
<xsd:attribute name="fromAttribute" type="xsd:string"/>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
|
|
||||||
<!-- XML encoding of Attribute object -->
|
|
||||||
<xsd:element name="attribute">
|
|
||||||
<xsd:complexType mixed="true">
|
|
||||||
<xsd:attribute name="name" type="xsd:token" use="required"/>
|
|
||||||
<xsd:attribute name="type" type="DataType" default="String"/>
|
|
||||||
<xsd:attribute name="value" type="xsd:string"/>
|
|
||||||
<xsd:attribute name="separator" type="xsd:string"/>
|
|
||||||
<xsd:attribute name="orgName" type="xsd:string"/>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
|
|
||||||
<!-- possible data types for Variable, Attribute objects -->
|
|
||||||
<xsd:simpleType name="DataType">
|
|
||||||
<xsd:restriction base="xsd:token">
|
|
||||||
<xsd:enumeration value="byte"/>
|
|
||||||
<xsd:enumeration value="char"/>
|
|
||||||
<xsd:enumeration value="short"/>
|
|
||||||
<xsd:enumeration value="int"/>
|
|
||||||
<xsd:enumeration value="long"/>
|
|
||||||
<xsd:enumeration value="float"/>
|
|
||||||
<xsd:enumeration value="double"/>
|
|
||||||
<xsd:enumeration value="String"/>
|
|
||||||
<xsd:enumeration value="string"/>
|
|
||||||
<xsd:enumeration value="Structure"/>
|
|
||||||
<xsd:enumeration value="Sequence"/>
|
|
||||||
<xsd:enumeration value="opaque"/>
|
|
||||||
<xsd:enumeration value="enum1"/>
|
|
||||||
<xsd:enumeration value="enum2"/>
|
|
||||||
<xsd:enumeration value="enum4"/>
|
|
||||||
</xsd:restriction>
|
|
||||||
</xsd:simpleType>
|
|
||||||
|
|
||||||
<!-- XML encoding of enum typedef object -->
|
|
||||||
<xsd:element name="enumTypedef">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="map" minOccurs="1" maxOccurs="unbounded">
|
|
||||||
<xsd:complexType mixed="true">
|
|
||||||
<xsd:attribute name="value" type="xsd:string" use="required"/>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:token" use="required"/>
|
|
||||||
<xsd:attribute name="type" type="DataType" default="enum1"/>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Dataset **********************************************************************-->
|
|
||||||
|
|
||||||
<xsd:element name="remove">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="type" type="ObjectType" use="required"/>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
|
|
||||||
<xsd:simpleType name="ObjectType">
|
|
||||||
<xsd:restriction base="xsd:string">
|
|
||||||
<xsd:enumeration value="attribute"/>
|
|
||||||
<xsd:enumeration value="dimension"/>
|
|
||||||
<xsd:enumeration value="variable"/>
|
|
||||||
<xsd:enumeration value="group"/>
|
|
||||||
</xsd:restriction>
|
|
||||||
</xsd:simpleType>
|
|
||||||
|
|
||||||
<!-- logical view: use only a section of original -->
|
|
||||||
<xsd:element name="logicalSection">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="section" type="xsd:token" use="required"/> <!-- creates anonymous dimension -->
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
|
|
||||||
<xsd:element name="logicalSlice">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="dimName" type="xsd:token" use="required"/>
|
|
||||||
<xsd:attribute name="index" type="xsd:int" use="required"/>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
|
|
||||||
<!-- aggregation -->
|
|
||||||
<xsd:element name="aggregation">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
|
|
||||||
<!-- experimental - modify each dataset in aggregation -->
|
|
||||||
<xsd:choice minOccurs="0" maxOccurs="unbounded">
|
|
||||||
<xsd:element ref="group"/>
|
|
||||||
<xsd:element ref="dimension"/>
|
|
||||||
<xsd:element ref="variable"/>
|
|
||||||
<xsd:element ref="attribute"/>
|
|
||||||
<xsd:element ref="remove"/>
|
|
||||||
</xsd:choice>
|
|
||||||
|
|
||||||
<xsd:element name="variableAgg" minOccurs="0" maxOccurs="unbounded">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
|
|
||||||
<xsd:element ref="promoteGlobalAttribute" minOccurs="0" maxOccurs="unbounded"/>
|
|
||||||
<xsd:element ref="cacheVariable" minOccurs="0" maxOccurs="unbounded"/>
|
|
||||||
<xsd:element ref="netcdf" minOccurs="0" maxOccurs="unbounded"/>
|
|
||||||
|
|
||||||
<xsd:element name="scan" minOccurs="0" maxOccurs="unbounded">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="location" type="xsd:string" use="required"/>
|
|
||||||
<xsd:attribute name="regExp" type="xsd:string"/>
|
|
||||||
<xsd:attribute name="suffix" type="xsd:string"/>
|
|
||||||
<xsd:attribute name="subdirs" type="xsd:boolean" default="true"/>
|
|
||||||
<xsd:attribute name="olderThan" type="xsd:string"/>
|
|
||||||
|
|
||||||
<xsd:attribute name="dateFormatMark" type="xsd:string"/>
|
|
||||||
<xsd:attribute name="enhance" type="xsd:boolean"/>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
|
|
||||||
<!-- fmrcSingle only -->
|
|
||||||
<xsd:element name="scanFmrc" minOccurs="0" maxOccurs="unbounded">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="location" type="xsd:string" use="required"/>
|
|
||||||
<xsd:attribute name="regExp" type="xsd:string"/>
|
|
||||||
<xsd:attribute name="suffix" type="xsd:string"/>
|
|
||||||
<xsd:attribute name="subdirs" type="xsd:boolean" default="true"/>
|
|
||||||
<xsd:attribute name="olderThan" type="xsd:string"/>
|
|
||||||
|
|
||||||
<xsd:attribute name="runDateMatcher" type="xsd:string"/>
|
|
||||||
<xsd:attribute name="forecastDateMatcher" type="xsd:string"/>
|
|
||||||
<xsd:attribute name="forecastOffsetMatcher" type="xsd:string"/>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
|
|
||||||
</xsd:sequence>
|
|
||||||
|
|
||||||
<xsd:attribute name="type" type="AggregationType" use="required"/>
|
|
||||||
<xsd:attribute name="dimName" type="xsd:token"/>
|
|
||||||
<xsd:attribute name="recheckEvery" type="xsd:string"/>
|
|
||||||
<xsd:attribute name="timeUnitsChange" type="xsd:boolean"/>
|
|
||||||
|
|
||||||
<!-- fmrc, fmrcSingle only -->
|
|
||||||
<xsd:attribute name="fmrcDefinition" type="xsd:string"/>
|
|
||||||
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
|
|
||||||
<!-- type of aggregation -->
|
|
||||||
<xsd:simpleType name="AggregationType">
|
|
||||||
<xsd:restriction base="xsd:string">
|
|
||||||
<xsd:enumeration value="forecastModelRunCollection"/>
|
|
||||||
<xsd:enumeration value="forecastModelRunSingleCollection"/>
|
|
||||||
<xsd:enumeration value="joinExisting"/>
|
|
||||||
<xsd:enumeration value="joinNew"/>
|
|
||||||
<xsd:enumeration value="tiled"/>
|
|
||||||
<xsd:enumeration value="union"/>
|
|
||||||
</xsd:restriction>
|
|
||||||
</xsd:simpleType>
|
|
||||||
|
|
||||||
<!-- promote global attribute to variable -->
|
|
||||||
<xsd:element name="promoteGlobalAttribute">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="name" type="xsd:token" use="required"/>
|
|
||||||
<xsd:attribute name="orgName" type="xsd:string"/>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
|
|
||||||
<!-- cache a Variable for efficiency -->
|
|
||||||
<xsd:element name="cacheVariable">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="name" type="xsd:token" use="required"/>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
|
|
||||||
</xsd:schema>
|
|
|
@ -1,70 +0,0 @@
|
||||||
<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 class="com.raytheon.uf.common.logback.appender.ThreadBasedAppender"
|
|
||||||
factory-method="registerThreadPattern">
|
|
||||||
<constructor-arg value="satellite" />
|
|
||||||
<constructor-arg value="Ingest.GOESR.*" />
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="goesrPluginName" class="java.lang.String">
|
|
||||||
<constructor-arg type="java.lang.String" value="goesr" />
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="goesrDistRegistry" factory-bean="distributionSrv"
|
|
||||||
factory-method="register">
|
|
||||||
<constructor-arg ref="goesrPluginName" />
|
|
||||||
<constructor-arg value="jms-durable:queue:Ingest.GOESR" />
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="goesrPathManager" class="com.raytheon.uf.common.localization.PathManagerFactory" factory-method="getPathManager"/>
|
|
||||||
|
|
||||||
<bean id="goesrProjectionFactory"
|
|
||||||
class="com.raytheon.uf.edex.plugin.goesr.geospatial.GoesrProjectionFactory" />
|
|
||||||
|
|
||||||
<bean id="goesrDecoder" class="com.raytheon.uf.edex.plugin.goesr.GoesrNetcdfDecoder">
|
|
||||||
<constructor-arg ref="goesrProjectionFactory" />
|
|
||||||
<constructor-arg ref="goesrPathManager" />
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<camelContext id="goesr-camel" xmlns="http://camel.apache.org/schema/spring"
|
|
||||||
errorHandlerRef="errorHandler">
|
|
||||||
|
|
||||||
<endpoint id="goesrJmsEndpoint" uri="jms-durable:queue:Ingest.GOESR?concurrentConsumers=${goesr-decode.threads}" />
|
|
||||||
|
|
||||||
<route id="goesrIngestRoute">
|
|
||||||
<from ref="goesrJmsEndpoint" />
|
|
||||||
<setHeader headerName="pluginName">
|
|
||||||
<constant>satellite</constant>
|
|
||||||
</setHeader>
|
|
||||||
<setHeader headerName="dataType">
|
|
||||||
<constant>goes-r</constant>
|
|
||||||
</setHeader>
|
|
||||||
<doTry>
|
|
||||||
<pipeline>
|
|
||||||
<bean ref="stringToFile" />
|
|
||||||
<bean ref="getFileWithoutWmoHeader" />
|
|
||||||
<split streaming="true">
|
|
||||||
<method bean="goesrDecoder" method="split"/>
|
|
||||||
<doTry>
|
|
||||||
<pipeline>
|
|
||||||
<bean ref="goesrDecoder" method="decode" />
|
|
||||||
<to uri="direct-vm:persistIndexAlert" />
|
|
||||||
</pipeline>
|
|
||||||
<doCatch>
|
|
||||||
<exception>java.lang.Throwable</exception>
|
|
||||||
<to uri="log:goesr?level=ERROR" />
|
|
||||||
</doCatch>
|
|
||||||
</doTry>
|
|
||||||
</split>
|
|
||||||
</pipeline>
|
|
||||||
<doCatch>
|
|
||||||
<exception>java.lang.Throwable</exception>
|
|
||||||
<to uri="log:goesr?level=ERROR" />
|
|
||||||
</doCatch>
|
|
||||||
</doTry>
|
|
||||||
</route>
|
|
||||||
</camelContext>
|
|
||||||
</beans>
|
|
|
@ -1,2 +0,0 @@
|
||||||
# Number threads for decoding GOES-R data
|
|
||||||
goesr-decode.threads=2
|
|
|
@ -1,419 +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.edex.plugin.goesr;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.nio.Buffer;
|
|
||||||
import java.nio.ByteBuffer;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import javax.measure.unit.SI;
|
|
||||||
import javax.xml.bind.JAXBException;
|
|
||||||
|
|
||||||
import org.opengis.referencing.crs.CoordinateReferenceSystem;
|
|
||||||
|
|
||||||
import ucar.nc2.Attribute;
|
|
||||||
import ucar.nc2.NetcdfFile;
|
|
||||||
import ucar.nc2.Variable;
|
|
||||||
|
|
||||||
import com.raytheon.uf.common.dataplugin.persist.PersistablePluginDataObject;
|
|
||||||
import com.raytheon.uf.common.dataplugin.satellite.SatMapCoverage;
|
|
||||||
import com.raytheon.uf.common.dataplugin.satellite.SatelliteRecord;
|
|
||||||
import com.raytheon.uf.common.datastorage.DataStoreFactory;
|
|
||||||
import com.raytheon.uf.common.datastorage.records.IDataRecord;
|
|
||||||
import com.raytheon.uf.common.localization.IPathManager;
|
|
||||||
import com.raytheon.uf.common.serialization.JAXBManager;
|
|
||||||
import com.raytheon.uf.edex.netcdf.decoder.AbstractNetcdfDecoder;
|
|
||||||
import com.raytheon.uf.edex.netcdf.decoder.NetcdfRecordInfo;
|
|
||||||
import com.raytheon.uf.edex.netcdf.decoder.exception.NetcdfDecoderException;
|
|
||||||
import com.raytheon.uf.edex.netcdf.decoder.util.NetcdfDecoderUtils;
|
|
||||||
import com.raytheon.uf.edex.netcdf.description.data.DataDescription;
|
|
||||||
import com.raytheon.uf.edex.netcdf.description.exception.InvalidDescriptionException;
|
|
||||||
import com.raytheon.uf.edex.netcdf.description.field.direct.VariableDescription;
|
|
||||||
import com.raytheon.uf.edex.netcdf.description.product.NetcdfProductDescription;
|
|
||||||
import com.raytheon.uf.edex.netcdf.description.product.NetcdfProductDescriptions;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.decoder.lookup.GoesrNetcdfProductDescription;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.decoder.lookup.GoesrNetcdfProductDescriptions;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.decoder.lookup.GoesrUtils;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.description.data.GoesrDataDescription;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.exception.GoesrProjectionException;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.geospatial.GoesrProjectionFactory;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.geospatial.GoesrSatelliteHeight;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This decoder attempts to open a potential GOES-R netCDF file, decode the data
|
|
||||||
* contained in it, and make it available to be stored.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
* The code implements the
|
|
||||||
* Ground Segment (GS) to Advanced Weather Interactive Processing System (AWIPS)
|
|
||||||
* Interface Control Document (ICD)
|
|
||||||
* DOCUMENT CONTROL NUMBER: 7034704 CDRL SE-08 REVISION B
|
|
||||||
* Date 31 MAY 2012
|
|
||||||
* *****
|
|
||||||
* Some variances between the code and the revision are noted. These are
|
|
||||||
* due to discrepancies between the ICD and the sample data. These have
|
|
||||||
* been reported.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------ ---------- ----------- --------------------------
|
|
||||||
* May 31, 2012 796 jkorman Initial creation
|
|
||||||
* Jul 5, 2013 2123 mschenke Changed to use in-memory netcdf object
|
|
||||||
* Feb 13, 2015 4043 bsteffen Include scene number in sector.
|
|
||||||
* Apr 17, 2015 4336 bsteffen Rewrite to be configurable for other attribute conventions.
|
|
||||||
* Sep 28, 2015 4872 bsteffen Decode File instead of byte[]
|
|
||||||
* Mar 16, 2016 5456 bsteffen Fix log statements
|
|
||||||
* May 26, 2016 5584 nabowle Refactor and rename for consolidation.
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author nabowle
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class GoesrNetcdfDecoder extends AbstractNetcdfDecoder {
|
|
||||||
|
|
||||||
private static final String UNITS_KEY = "units";
|
|
||||||
|
|
||||||
private static final String COVERAGE_KEY = "coverage";
|
|
||||||
|
|
||||||
private GoesrProjectionFactory projectionFactory;
|
|
||||||
|
|
||||||
public GoesrNetcdfDecoder(GoesrProjectionFactory projectionFactory,
|
|
||||||
IPathManager manager) {
|
|
||||||
this(getDefaultLocalizationPath(), projectionFactory, manager);
|
|
||||||
}
|
|
||||||
|
|
||||||
public GoesrNetcdfDecoder(String localizationPath,
|
|
||||||
GoesrProjectionFactory projectionFactory, IPathManager manager) {
|
|
||||||
super(localizationPath, manager);
|
|
||||||
this.projectionFactory = projectionFactory;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public NetcdfRecordInfo createRecordInfo(File file,
|
|
||||||
NetcdfFile netcdfFile, NetcdfProductDescription description)
|
|
||||||
throws NetcdfDecoderException {
|
|
||||||
NetcdfRecordInfo record = super.createRecordInfo(file,
|
|
||||||
netcdfFile, description);
|
|
||||||
|
|
||||||
if (record == null) {
|
|
||||||
return record;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(description instanceof GoesrNetcdfProductDescription)) {
|
|
||||||
throw new NetcdfDecoderException(
|
|
||||||
"The configured description is not a "
|
|
||||||
+ GoesrNetcdfProductDescription.class
|
|
||||||
.getSimpleName());
|
|
||||||
}
|
|
||||||
|
|
||||||
GoesrDataDescription dataDesc = (GoesrDataDescription) description
|
|
||||||
.getData();
|
|
||||||
|
|
||||||
String gridMapping = null;
|
|
||||||
String units = null;
|
|
||||||
if (dataDesc.getVariable() != null) {
|
|
||||||
Variable dataVariable = netcdfFile.findVariable(dataDesc
|
|
||||||
.getVariable().getName());
|
|
||||||
if (dataVariable == null) {
|
|
||||||
if (description.isDebug()) {
|
|
||||||
logger.debug("Description skipped because data variable "
|
|
||||||
+ dataDesc.getVariable().getName()
|
|
||||||
+ " cannot be found.");
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
units = GoesrUtils.getUnits(netcdfFile, dataDesc, dataVariable);
|
|
||||||
} catch (InvalidDescriptionException e) {
|
|
||||||
throw new NetcdfDecoderException("Error decoding units.", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
gridMapping = dataVariable.findAttribute("grid_mapping")
|
|
||||||
.getStringValue();
|
|
||||||
} else if (dataDesc.getBitset() != null) {
|
|
||||||
Variable dataVariable;
|
|
||||||
Attribute attr;
|
|
||||||
for (String variable : dataDesc.getBitset()) {
|
|
||||||
dataVariable = netcdfFile.findVariable(variable);
|
|
||||||
attr = dataVariable.findAttribute("grid_mapping");
|
|
||||||
if (attr != null) {
|
|
||||||
if (gridMapping == null) {
|
|
||||||
gridMapping = attr.getStringValue();
|
|
||||||
} else if (!attr.getStringValue().equals(gridMapping)) {
|
|
||||||
throw new GoesrProjectionException(
|
|
||||||
"Bitset projections do not match.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gridMapping == null) {
|
|
||||||
if (description.isDebug()) {
|
|
||||||
logger.debug("Description skipped because the gridMapping could not be decoded. ");
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
SatMapCoverage coverage = projectionFactory.getCoverage(netcdfFile,
|
|
||||||
gridMapping);
|
|
||||||
|
|
||||||
record.getBeanMap().put(COVERAGE_KEY, coverage);
|
|
||||||
if (units != null) {
|
|
||||||
record.addField(UNITS_KEY, units);
|
|
||||||
}
|
|
||||||
|
|
||||||
return record;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void extractData(NetcdfFile netcdfFile, NetcdfRecordInfo info)
|
|
||||||
throws NetcdfDecoderException, InvalidDescriptionException {
|
|
||||||
if (this.projectionFactory == null) {
|
|
||||||
throw new NetcdfDecoderException(
|
|
||||||
"Cannot decode goesr data because no projection factory is available.");
|
|
||||||
}
|
|
||||||
|
|
||||||
GoesrDataDescription dataDesc = (GoesrDataDescription) info
|
|
||||||
.getDeferredDescription(DataDescription.DATA_KEY);
|
|
||||||
|
|
||||||
VariableDescription variable = dataDesc.getVariable();
|
|
||||||
List<String> bitset = dataDesc.getBitset();
|
|
||||||
|
|
||||||
SatMapCoverage coverage = (SatMapCoverage) info.getField(COVERAGE_KEY);
|
|
||||||
long[] sizes = new long[] { coverage.getNx(), coverage.getNy() };
|
|
||||||
|
|
||||||
if (variable != null) {
|
|
||||||
extractDataFromVariable(netcdfFile, dataDesc, info, variable, sizes);
|
|
||||||
} else if (bitset != null) {
|
|
||||||
try {
|
|
||||||
extractDataFromBitset(netcdfFile, dataDesc, info, bitset, sizes);
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new NetcdfDecoderException(
|
|
||||||
"Unable to read data from bitset"
|
|
||||||
+ Arrays.toString(bitset.toArray()), e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Number satHeight = (Number) info.getField("satHeight");
|
|
||||||
if (satHeight == null) {
|
|
||||||
/*
|
|
||||||
* Some data formats, which are in a geostationary projection, do
|
|
||||||
* not define that satellite height, except in the projection
|
|
||||||
* metadata.
|
|
||||||
*/
|
|
||||||
CoordinateReferenceSystem crs = ((SatMapCoverage) info
|
|
||||||
.getField("coverage")).getCrs();
|
|
||||||
double satHeightD = GoesrSatelliteHeight.getOrbitalHeight(crs,
|
|
||||||
SI.KILOMETER);
|
|
||||||
if (!Double.isNaN(satHeightD)) {
|
|
||||||
info.addField("satHeight", (int) satHeightD);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extract data from a variable, similar to
|
|
||||||
* {@link AbstractNetcdfDecoder#extractData(NetcdfFile, NetcdfRecordInfo)},
|
|
||||||
* but insert the scale factor and add offset into the IDataRecord's
|
|
||||||
* attributes.
|
|
||||||
*/
|
|
||||||
private void extractDataFromVariable(NetcdfFile netcdfFile,
|
|
||||||
DataDescription dataDesc, NetcdfRecordInfo info,
|
|
||||||
VariableDescription variable, long[] sizes)
|
|
||||||
throws NetcdfDecoderException {
|
|
||||||
Variable dataVariable = netcdfFile.findVariable(variable.getName());
|
|
||||||
if (dataVariable == null) {
|
|
||||||
throw new NetcdfDecoderException(
|
|
||||||
"Unable to find the data variable "
|
|
||||||
+ variable.getName());
|
|
||||||
}
|
|
||||||
Buffer data;
|
|
||||||
data = NetcdfDecoderUtils.readData(
|
|
||||||
dataVariable,
|
|
||||||
NetcdfDecoderUtils.getRecordSection(dataVariable,
|
|
||||||
info.getDimensionIndexMap()), null, null, null, null);
|
|
||||||
applyMasks(netcdfFile, info, dataDesc, data);
|
|
||||||
|
|
||||||
Map<String, Object> attributes = new HashMap<>();
|
|
||||||
|
|
||||||
Number addOffset = NetcdfDecoderUtils.getNumericAttributeValue(
|
|
||||||
dataVariable, null, NetcdfDecoderUtils.ADD_OFFSET);
|
|
||||||
if (addOffset != null) {
|
|
||||||
attributes.put(SatelliteRecord.SAT_ADD_OFFSET,
|
|
||||||
addOffset.floatValue());
|
|
||||||
}
|
|
||||||
Number scaleFactor = NetcdfDecoderUtils.getNumericAttributeValue(
|
|
||||||
dataVariable, null, NetcdfDecoderUtils.SCALE_FACTOR);
|
|
||||||
if (scaleFactor != null) {
|
|
||||||
attributes.put(SatelliteRecord.SAT_SCALE_FACTOR,
|
|
||||||
scaleFactor.floatValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
Number fillValue = GoesrUtils.getFillValue(dataVariable, data);
|
|
||||||
|
|
||||||
IDataRecord storageRecord = DataStoreFactory.createStorageRecord(
|
|
||||||
SatelliteRecord.SAT_DATASET_NAME, null, data.array(), 2, sizes);
|
|
||||||
storageRecord.setFillValue(fillValue);
|
|
||||||
storageRecord.setDataAttributes(attributes);
|
|
||||||
storageRecord.setGroup(((SatelliteRecord) info.getBeanMap().getBean())
|
|
||||||
.getDataURI());
|
|
||||||
info.addField(DataDescription.DATA_KEY, storageRecord, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void extractDataFromBitset(NetcdfFile netcdfFile,
|
|
||||||
DataDescription dataDesc, NetcdfRecordInfo info,
|
|
||||||
List<String> bitset, long[] sizes) throws IOException,
|
|
||||||
NetcdfDecoderException {
|
|
||||||
if (bitset.size() > 7) {
|
|
||||||
throw new NetcdfDecoderException(
|
|
||||||
"Bitset can only currently support 7 fields, this is too many: "
|
|
||||||
+ bitset.toString());
|
|
||||||
}
|
|
||||||
byte[] data = null;
|
|
||||||
int bit = 0;
|
|
||||||
for (String variable : bitset) {
|
|
||||||
Variable dataVariable = netcdfFile.findVariable(variable);
|
|
||||||
|
|
||||||
Object rawField = dataVariable.read().copyTo1DJavaArray();
|
|
||||||
if (!(rawField instanceof byte[])) {
|
|
||||||
throw new NetcdfDecoderException("Unexpected type["
|
|
||||||
+ rawField.getClass() + "] for variable[" + variable
|
|
||||||
+ "]");
|
|
||||||
}
|
|
||||||
byte[] field = (byte[]) rawField;
|
|
||||||
int fillValue = 0xFF & GoesrUtils.getFillValue(dataVariable, field)
|
|
||||||
.intValue();
|
|
||||||
|
|
||||||
if (data == null) {
|
|
||||||
data = field;
|
|
||||||
if (fillValue != GoesrDataDescription.BITSET_FILL) {
|
|
||||||
for (int i = 0; i < field.length; i += 1) {
|
|
||||||
if (fillValue == (0xFF & field[i])) {
|
|
||||||
field[i] = (byte) GoesrDataDescription.BITSET_FILL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (int i = 0; i < field.length; i += 1) {
|
|
||||||
if (fillValue == (0xFF & field[i])) {
|
|
||||||
/*
|
|
||||||
* Do Nothing, this is an assumption. When thinking
|
|
||||||
* about a bitset, normally fill is not an option for an
|
|
||||||
* input but this data has fill and it is used. Do
|
|
||||||
* nothing means if the data is already filled it will
|
|
||||||
* stay filled, so any index where all fields are filled
|
|
||||||
* will be filled but if any one field is valid then all
|
|
||||||
* filled fields will be 0s
|
|
||||||
*/
|
|
||||||
continue;
|
|
||||||
} else if (GoesrDataDescription.BITSET_FILL == (0xFF & field[i])) {
|
|
||||||
data[i] = 0;
|
|
||||||
}
|
|
||||||
if (field[i] != 0) {
|
|
||||||
data[i] = (byte) (data[i] + (1 << bit));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
bit += 1;
|
|
||||||
}
|
|
||||||
ByteBuffer dataBuff = ByteBuffer.wrap(data);
|
|
||||||
applyMasks(netcdfFile, info, dataDesc, dataBuff);
|
|
||||||
|
|
||||||
IDataRecord storageRecord = DataStoreFactory.createStorageRecord(
|
|
||||||
SatelliteRecord.SAT_DATASET_NAME, null, dataBuff.array(), 2,
|
|
||||||
sizes);
|
|
||||||
storageRecord.setFillValue(GoesrDataDescription.BITSET_FILL);
|
|
||||||
storageRecord.setGroup(((SatelliteRecord) info.getBeanMap().getBean())
|
|
||||||
.getDataURI());
|
|
||||||
info.addField(DataDescription.DATA_KEY, storageRecord, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected static String getDefaultLocalizationPath() {
|
|
||||||
return "satellite/goesr/descriptions/";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected JAXBManager getJaxbManager() throws JAXBException {
|
|
||||||
return new JAXBManager(GoesrNetcdfProductDescriptions.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProjectionFactory(GoesrProjectionFactory projectionFactory) {
|
|
||||||
this.projectionFactory = projectionFactory;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected NetcdfRecordInfo newRecord() {
|
|
||||||
return new NetcdfRecordInfo(new SatelliteRecord());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setDescriptions(List<NetcdfProductDescriptions> descriptions) {
|
|
||||||
for (NetcdfProductDescriptions descs : descriptions) {
|
|
||||||
if (!(descs instanceof GoesrNetcdfProductDescriptions)) {
|
|
||||||
throw new IllegalArgumentException(
|
|
||||||
GoesrNetcdfProductDescriptions.class.getSimpleName()
|
|
||||||
+ " are required by this decoder.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
super.setDescriptions(descriptions);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void validateRecord(PersistablePluginDataObject record)
|
|
||||||
throws NetcdfDecoderException {
|
|
||||||
super.validateRecord(record);
|
|
||||||
|
|
||||||
SatelliteRecord sRec = (SatelliteRecord) record;
|
|
||||||
|
|
||||||
if (sRec.getMessageData() == null) {
|
|
||||||
throw new NetcdfDecoderException("the data is missing.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sRec.getCoverage() == null) {
|
|
||||||
throw new NetcdfDecoderException("coverage is missing.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sRec.getCreatingEntity() == null) {
|
|
||||||
throw new NetcdfDecoderException("creatingEntity is missing.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sRec.getSectorID() == null) {
|
|
||||||
throw new NetcdfDecoderException("sectorID is missing.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sRec.getSource() == null) {
|
|
||||||
throw new NetcdfDecoderException("source is missing.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sRec.getPhysicalElement() == null) {
|
|
||||||
throw new NetcdfDecoderException("physicalElement is missing.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,278 +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.edex.plugin.goesr.decoder.lookup;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlAccessType;
|
|
||||||
import javax.xml.bind.annotation.XmlAccessorType;
|
|
||||||
import javax.xml.bind.annotation.XmlElement;
|
|
||||||
import javax.xml.bind.annotation.XmlSeeAlso;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
|
|
||||||
import ucar.nc2.NetcdfFile;
|
|
||||||
|
|
||||||
import com.raytheon.uf.edex.netcdf.decoder.NetcdfRecordInfo;
|
|
||||||
import com.raytheon.uf.edex.netcdf.decoder.util.NetcdfDecoderUtils;
|
|
||||||
import com.raytheon.uf.edex.netcdf.description.data.DataDescription;
|
|
||||||
import com.raytheon.uf.edex.netcdf.description.exception.InvalidDescriptionException;
|
|
||||||
import com.raytheon.uf.edex.netcdf.description.field.indirect.DelegateFieldDescription;
|
|
||||||
import com.raytheon.uf.edex.netcdf.description.product.NetcdfProductDescription;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.description.data.GoesrDataDescription;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Product Description of Netcdf Goes-R data.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------ ---------- ----------- --------------------------
|
|
||||||
* May 17, 2016 5584 nabowle Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author nabowle
|
|
||||||
*/
|
|
||||||
@XmlSeeAlso({ NetcdfProductDescription.class })
|
|
||||||
@XmlAccessorType(XmlAccessType.NONE)
|
|
||||||
public class GoesrNetcdfProductDescription extends NetcdfProductDescription {
|
|
||||||
|
|
||||||
@XmlElement
|
|
||||||
private DelegateFieldDescription physicalElement;
|
|
||||||
|
|
||||||
@XmlElement
|
|
||||||
private DelegateFieldDescription units;
|
|
||||||
|
|
||||||
@XmlElement
|
|
||||||
private DelegateFieldDescription creatingEntity;
|
|
||||||
|
|
||||||
@XmlElement
|
|
||||||
private DelegateFieldDescription source;
|
|
||||||
|
|
||||||
@XmlElement
|
|
||||||
private DelegateFieldDescription sectorID;
|
|
||||||
|
|
||||||
@XmlElement
|
|
||||||
private DelegateFieldDescription satHeight;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public GoesrNetcdfProductDescription() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the data
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
@XmlElement(type = GoesrDataDescription.class)
|
|
||||||
public DataDescription getData() {
|
|
||||||
return super.getData();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param data
|
|
||||||
* the data to set
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void setData(DataDescription data) {
|
|
||||||
super.setData(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the physicalElement
|
|
||||||
*/
|
|
||||||
public DelegateFieldDescription getPhysicalElement() {
|
|
||||||
return physicalElement;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param physicalElement
|
|
||||||
* the physicalElement to set
|
|
||||||
*/
|
|
||||||
public void setPhysicalElement(DelegateFieldDescription physicalElement) {
|
|
||||||
this.physicalElement = physicalElement;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the units
|
|
||||||
*/
|
|
||||||
public DelegateFieldDescription getUnits() {
|
|
||||||
return units;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param units
|
|
||||||
* the units to set
|
|
||||||
*/
|
|
||||||
public void setUnits(DelegateFieldDescription units) {
|
|
||||||
this.units = units;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the creatingEntity
|
|
||||||
*/
|
|
||||||
public DelegateFieldDescription getCreatingEntity() {
|
|
||||||
return creatingEntity;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param creatingEntity
|
|
||||||
* the creatingEntity to set
|
|
||||||
*/
|
|
||||||
public void setCreatingEntity(DelegateFieldDescription creatingEntity) {
|
|
||||||
this.creatingEntity = creatingEntity;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the source
|
|
||||||
*/
|
|
||||||
public DelegateFieldDescription getSource() {
|
|
||||||
return source;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param source
|
|
||||||
* the source to set
|
|
||||||
*/
|
|
||||||
public void setSource(DelegateFieldDescription source) {
|
|
||||||
this.source = source;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the sectorId
|
|
||||||
*/
|
|
||||||
public DelegateFieldDescription getSectorID() {
|
|
||||||
return sectorID;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param sectorId
|
|
||||||
* the sectorId to set
|
|
||||||
*/
|
|
||||||
public void setSectorID(DelegateFieldDescription sectorId) {
|
|
||||||
this.sectorID = sectorId;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the satHeight
|
|
||||||
*/
|
|
||||||
public DelegateFieldDescription getSatHeight() {
|
|
||||||
return satHeight;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param satHeight
|
|
||||||
* the satHeight to set
|
|
||||||
*/
|
|
||||||
public void setSatHeight(DelegateFieldDescription satHeight) {
|
|
||||||
this.satHeight = satHeight;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateFields(NetcdfFile netcdfFile,
|
|
||||||
List<NetcdfRecordInfo> records) throws InvalidDescriptionException {
|
|
||||||
super.updateFields(netcdfFile, records);
|
|
||||||
|
|
||||||
NetcdfDecoderUtils.updateField(netcdfFile, this.creatingEntity, "creatingEntity", records);
|
|
||||||
NetcdfDecoderUtils.updateField(netcdfFile, this.physicalElement, "physicalElement",
|
|
||||||
records);
|
|
||||||
NetcdfDecoderUtils.updateField(netcdfFile, this.satHeight, "satHeight", records);
|
|
||||||
NetcdfDecoderUtils.updateField(netcdfFile, this.sectorID, "sectorID",
|
|
||||||
records);
|
|
||||||
NetcdfDecoderUtils.updateField(netcdfFile, this.source, "source", records);
|
|
||||||
NetcdfDecoderUtils.updateField(netcdfFile, this.units, "units", records);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isAllPresent(NetcdfFile file, Logger logger)
|
|
||||||
throws InvalidDescriptionException {
|
|
||||||
if (!super.isAllPresent(file, logger)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.physicalElement != null) {
|
|
||||||
if (!this.physicalElement.isPresent(file)) {
|
|
||||||
logDebugMessage(logger, "physicalElement");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (this.creatingEntity != null) {
|
|
||||||
if (!this.creatingEntity.isPresent(file)) {
|
|
||||||
logDebugMessage(logger, "creatingEntity");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (this.satHeight != null) {
|
|
||||||
if (!this.satHeight.isPresent(file)) {
|
|
||||||
logDebugMessage(logger, "satHeight");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (this.sectorID != null) {
|
|
||||||
if (!this.sectorID.isPresent(file)) {
|
|
||||||
logDebugMessage(logger, "sectorID");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (this.source != null) {
|
|
||||||
if (!this.source.isPresent(file)) {
|
|
||||||
logDebugMessage(logger, "source");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (this.units != null) {
|
|
||||||
if (!this.units.isPresent(file)) {
|
|
||||||
logDebugMessage(logger, "units");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void validate() throws InvalidDescriptionException {
|
|
||||||
super.validate();
|
|
||||||
|
|
||||||
if (this.physicalElement != null) {
|
|
||||||
this.physicalElement.validate();
|
|
||||||
}
|
|
||||||
if (this.creatingEntity != null) {
|
|
||||||
this.creatingEntity.validate();
|
|
||||||
}
|
|
||||||
if (this.satHeight != null) {
|
|
||||||
this.satHeight.validate();
|
|
||||||
}
|
|
||||||
if (this.sectorID != null) {
|
|
||||||
this.sectorID.validate();
|
|
||||||
}
|
|
||||||
if (this.source != null) {
|
|
||||||
this.source.validate();
|
|
||||||
}
|
|
||||||
if (this.units != null) {
|
|
||||||
this.units.validate();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,151 +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.edex.plugin.goesr.decoder.lookup;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import javax.xml.bind.JAXB;
|
|
||||||
import javax.xml.bind.annotation.XmlAccessType;
|
|
||||||
import javax.xml.bind.annotation.XmlAccessorType;
|
|
||||||
import javax.xml.bind.annotation.XmlElement;
|
|
||||||
import javax.xml.bind.annotation.XmlRootElement;
|
|
||||||
import javax.xml.bind.annotation.XmlSeeAlso;
|
|
||||||
|
|
||||||
import com.raytheon.uf.edex.netcdf.description.exception.InvalidDescriptionException;
|
|
||||||
import com.raytheon.uf.edex.netcdf.description.product.NetcdfProductDescription;
|
|
||||||
import com.raytheon.uf.edex.netcdf.description.product.NetcdfProductDescriptions;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A collection of {@link GoesrNetcdfProductDescription}s whose primary role is
|
|
||||||
* to serve as a container for {@link JAXB} serialization of multiple
|
|
||||||
* descriptions into a single file.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------ ---------- ----------- --------------------------
|
|
||||||
* May 17, 2016 5584 nabowle Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author nabowle
|
|
||||||
*/
|
|
||||||
@XmlRootElement(name = "goesrProductDescriptions")
|
|
||||||
@XmlAccessorType(XmlAccessType.NONE)
|
|
||||||
@XmlSeeAlso({ GoesrNetcdfProductDescription.class })
|
|
||||||
public class GoesrNetcdfProductDescriptions extends
|
|
||||||
NetcdfProductDescriptions {
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public GoesrNetcdfProductDescriptions() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void mergeDefaultIntoDescriptions() {
|
|
||||||
super.mergeDefaultIntoDescriptions();
|
|
||||||
|
|
||||||
if (this.defaultDescription == null
|
|
||||||
|| !(this.defaultDescription instanceof GoesrNetcdfProductDescription)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
GoesrNetcdfProductDescription gDefault = (GoesrNetcdfProductDescription) this.defaultDescription;
|
|
||||||
|
|
||||||
GoesrNetcdfProductDescription gDesc;
|
|
||||||
for (NetcdfProductDescription desc : this.descriptions) {
|
|
||||||
if (desc instanceof GoesrNetcdfProductDescription) {
|
|
||||||
gDesc = (GoesrNetcdfProductDescription) desc;
|
|
||||||
|
|
||||||
if (gDesc.getPhysicalElement() == null
|
|
||||||
&& gDefault.getPhysicalElement() != null) {
|
|
||||||
gDesc.setPhysicalElement(gDefault.getPhysicalElement());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gDesc.getUnits() == null && gDefault.getUnits() != null) {
|
|
||||||
gDesc.setUnits(gDefault.getUnits());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gDesc.getCreatingEntity() == null
|
|
||||||
&& gDefault.getCreatingEntity() != null) {
|
|
||||||
gDesc.setCreatingEntity(gDefault.getCreatingEntity());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gDesc.getSource() == null && gDefault.getSource() != null) {
|
|
||||||
gDesc.setSource(gDefault.getSource());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gDesc.getSectorID() == null
|
|
||||||
&& gDefault.getSectorID() != null) {
|
|
||||||
gDesc.setSectorID(gDefault.getSectorID());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gDesc.getSatHeight() == null
|
|
||||||
&& gDefault.getSatHeight() != null) {
|
|
||||||
gDesc.setSatHeight(gDefault.getSatHeight());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The following methods are overridden to be able to specify to JAXB which
|
|
||||||
* subclass of NetcdfProductDescription to unmarshal into.
|
|
||||||
*/
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@XmlElement(name = "default", type = GoesrNetcdfProductDescription.class)
|
|
||||||
public NetcdfProductDescription getDefaultDescription() {
|
|
||||||
return this.defaultDescription;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setDefaultDescription(
|
|
||||||
NetcdfProductDescription defaultDescription) {
|
|
||||||
this.defaultDescription = defaultDescription;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@XmlElement(name = "description", type = GoesrNetcdfProductDescription.class)
|
|
||||||
public List<NetcdfProductDescription> getDescriptions() {
|
|
||||||
return this.descriptions;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setDescriptions(List<NetcdfProductDescription> descriptions) {
|
|
||||||
this.descriptions = descriptions;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void validate() throws InvalidDescriptionException {
|
|
||||||
for (NetcdfProductDescription description : this.descriptions) {
|
|
||||||
if (!(description instanceof GoesrNetcdfProductDescription)) {
|
|
||||||
throw new InvalidDescriptionException(
|
|
||||||
"invalid descriptions class configured. expected "
|
|
||||||
+ GoesrNetcdfProductDescription.class
|
|
||||||
.getSimpleName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
super.validate();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,120 +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.edex.plugin.goesr.decoder.lookup;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import ucar.nc2.Attribute;
|
|
||||||
import ucar.nc2.NetcdfFile;
|
|
||||||
import ucar.nc2.Variable;
|
|
||||||
|
|
||||||
import com.raytheon.uf.common.dataplugin.satellite.SatelliteRecord;
|
|
||||||
import com.raytheon.uf.common.datastorage.records.IDataRecord;
|
|
||||||
import com.raytheon.uf.edex.netcdf.description.exception.InvalidDescriptionException;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.description.data.GoesrDataDescription;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Utility class for Goes-R Decoding.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------ ---------- ----------- --------------------------
|
|
||||||
* Dec 3, 2015 5059 nabowle Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author nabowle
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class GoesrUtils {
|
|
||||||
|
|
||||||
private GoesrUtils() {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* When in the Course of decoding records, it becomes necessary for one
|
|
||||||
* value to be sent from the {@link DataDescription} to an attribute of a
|
|
||||||
* data record, it can be added to the
|
|
||||||
* {@link IDataRecord#getDataAttributes()} and be used as though it were an
|
|
||||||
* attribute on the netcdf file.
|
|
||||||
*/
|
|
||||||
public static Object getAttributeFromRecord(SatelliteRecord record,
|
|
||||||
String name) {
|
|
||||||
if (record == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
IDataRecord dataRecord = (IDataRecord) record.getMessageData();
|
|
||||||
if (dataRecord == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
Map<String, Object> attributes = dataRecord.getDataAttributes();
|
|
||||||
if (attributes == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return attributes.get(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Number getFillValue(Variable variable, Object data) {
|
|
||||||
Number fillValue = 0;
|
|
||||||
Attribute attr = variable.findAttribute("_FillValue");
|
|
||||||
if (attr != null) {
|
|
||||||
fillValue = attr.getNumericValue();
|
|
||||||
attr = variable.findAttribute("_Unsigned");
|
|
||||||
if (attr != null) {
|
|
||||||
boolean unsigned = attr.getStringValue().equals("true");
|
|
||||||
if (unsigned && fillValue.intValue() < 0) {
|
|
||||||
if (data instanceof byte[]) {
|
|
||||||
fillValue = 0xFF & (fillValue.intValue());
|
|
||||||
} else if (data instanceof short[]) {
|
|
||||||
fillValue = 0xFFFF & (fillValue.intValue());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return fillValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getUnits(NetcdfFile file,
|
|
||||||
GoesrDataDescription dataDesc, Variable variable)
|
|
||||||
throws InvalidDescriptionException {
|
|
||||||
String units = null;
|
|
||||||
if (dataDesc.getUnits() != null) {
|
|
||||||
units = dataDesc.getUnits().getString(file);
|
|
||||||
if ("1".equals(units)) {
|
|
||||||
units = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (units == null) {
|
|
||||||
Attribute attr = variable.findAttribute("units");
|
|
||||||
if (attr != null) {
|
|
||||||
units = attr.getStringValue();
|
|
||||||
if ("1".equals(units)) {
|
|
||||||
units = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return units;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,199 +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.edex.plugin.goesr.description.data;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlAccessType;
|
|
||||||
import javax.xml.bind.annotation.XmlAccessorType;
|
|
||||||
import javax.xml.bind.annotation.XmlAttribute;
|
|
||||||
import javax.xml.bind.annotation.XmlElement;
|
|
||||||
|
|
||||||
import ucar.nc2.NetcdfFile;
|
|
||||||
|
|
||||||
import com.raytheon.uf.common.dataplugin.satellite.SatelliteRecord;
|
|
||||||
import com.raytheon.uf.edex.netcdf.description.data.DataDescription;
|
|
||||||
import com.raytheon.uf.edex.netcdf.description.data.mask.AbstractDataMaskDescription;
|
|
||||||
import com.raytheon.uf.edex.netcdf.description.exception.InvalidDescriptionException;
|
|
||||||
import com.raytheon.uf.edex.netcdf.description.field.direct.VariableDescription;
|
|
||||||
import com.raytheon.uf.edex.netcdf.description.field.indirect.DelegateFieldDescription;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A description of the data contained with a {@link NetcdfFile} that can be
|
|
||||||
* used to extract the message data for use in a {@link SatelliteRecord}
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------ ---------- ----------- --------------------------
|
|
||||||
* Apr 17, 2015 4336 bsteffen Initial creation
|
|
||||||
* May 26, 2016 5584 nabowle Rename and refactor for consolidation.
|
|
||||||
* Jul 21, 2016 5584 nabowle Check data masks within isPresent()
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author nabowle
|
|
||||||
*/
|
|
||||||
@XmlAccessorType(XmlAccessType.NONE)
|
|
||||||
public class GoesrDataDescription extends DataDescription {
|
|
||||||
|
|
||||||
public static final int BITSET_FILL = 0xFF;
|
|
||||||
|
|
||||||
@XmlAttribute
|
|
||||||
private List<String> bitset;
|
|
||||||
|
|
||||||
@XmlElement
|
|
||||||
private DelegateFieldDescription units;
|
|
||||||
|
|
||||||
public GoesrDataDescription() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the bitset
|
|
||||||
*/
|
|
||||||
public List<String> getBitset() {
|
|
||||||
return bitset;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param bitset
|
|
||||||
* the bitset to set
|
|
||||||
*/
|
|
||||||
public void setBitset(List<String> bitset) {
|
|
||||||
this.bitset = bitset;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the units
|
|
||||||
*/
|
|
||||||
public DelegateFieldDescription getUnits() {
|
|
||||||
return units;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param units
|
|
||||||
* the units to set
|
|
||||||
*/
|
|
||||||
public void setUnits(DelegateFieldDescription units) {
|
|
||||||
this.units = units;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the bitsetFill
|
|
||||||
*/
|
|
||||||
public static int getBitsetFill() {
|
|
||||||
return BITSET_FILL;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void validate() throws InvalidDescriptionException {
|
|
||||||
if (this.variable == null
|
|
||||||
&& (this.bitset == null || this.bitset.isEmpty())) {
|
|
||||||
throw new InvalidDescriptionException(
|
|
||||||
"the data variable or bitset variables must be configured.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.variable != null && this.bitset != null
|
|
||||||
&& !this.bitset.isEmpty()) {
|
|
||||||
throw new InvalidDescriptionException(
|
|
||||||
"the data variable and bitset variables cannot both be configured.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.variable != null) {
|
|
||||||
this.variable.validate();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.masks != null) {
|
|
||||||
for (AbstractDataMaskDescription mask : this.masks) {
|
|
||||||
mask.validate();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* If any data masks are configured, true will only be returned if all data
|
|
||||||
* masks are present. If the variable is configured,
|
|
||||||
* this.variable.isPresent(file) is returned. If the bitset is configured,
|
|
||||||
* true will be returned only if every variable in the bitset is present. If
|
|
||||||
* neither is configured, an InvalidDescriptionException will be thrown.
|
|
||||||
*
|
|
||||||
* @param file
|
|
||||||
* The netcdf file.
|
|
||||||
* @return true if the described variable is present in the netcdf file, or
|
|
||||||
* if all the bitset variables are present, and all configured data
|
|
||||||
* masks are present.
|
|
||||||
* @throws InvalidDescriptionException
|
|
||||||
* if the variable description and bitset variables are not
|
|
||||||
* configured, or if the variable description is invalid.
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean isPresent(NetcdfFile file)
|
|
||||||
throws InvalidDescriptionException {
|
|
||||||
boolean dataVarConfigured = false;
|
|
||||||
if (this.variable != null) {
|
|
||||||
if (!this.variable.isPresent(file)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
dataVarConfigured = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.bitset != null && !this.bitset.isEmpty()) {
|
|
||||||
VariableDescription var = new VariableDescription();
|
|
||||||
for (String varName : this.bitset) {
|
|
||||||
var.setName(varName);
|
|
||||||
if (!var.isPresent(file)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
dataVarConfigured = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!dataVarConfigured) {
|
|
||||||
throw new InvalidDescriptionException(
|
|
||||||
"the data variable or bitset variables must be configured.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.masks != null) {
|
|
||||||
for (AbstractDataMaskDescription mask : this.masks) {
|
|
||||||
if (!mask.isPresent(file)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getVariableName() {
|
|
||||||
if (this.variable != null) {
|
|
||||||
return this.variable.getName();
|
|
||||||
} else if (this.bitset != null && !this.bitset.isEmpty()) {
|
|
||||||
return Arrays.toString(this.bitset.toArray());
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,69 +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.edex.plugin.goesr.exception;
|
|
||||||
|
|
||||||
import com.raytheon.uf.edex.netcdf.decoder.exception.NetcdfDecoderException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Thrown when the given projection could not be created.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------- -------- ----------- --------------------------
|
|
||||||
* Jul 03, 2012 jkorman Initial creation
|
|
||||||
* Apr 17, 2015 4336 bsteffen Extend GoesrDecoderException
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author jkorman
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class GoesrProjectionException extends NetcdfDecoderException {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a InvalidProjectionException with an error message.
|
|
||||||
*
|
|
||||||
* @param message
|
|
||||||
* The exception detail message.
|
|
||||||
*/
|
|
||||||
public GoesrProjectionException(String message) {
|
|
||||||
super(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a InvalidProjectionException with an error message and a
|
|
||||||
* chained cause.
|
|
||||||
*
|
|
||||||
* @param message
|
|
||||||
* The exception detail message.
|
|
||||||
* @param cause
|
|
||||||
* The exception that caused this exception to be thrown.
|
|
||||||
*/
|
|
||||||
public GoesrProjectionException(String message, Throwable cause) {
|
|
||||||
super(message, cause);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,227 +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.edex.plugin.goesr.geospatial;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.opengis.referencing.crs.CoordinateReferenceSystem;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
import ucar.nc2.Attribute;
|
|
||||||
import ucar.nc2.NetcdfFile;
|
|
||||||
import ucar.nc2.Variable;
|
|
||||||
|
|
||||||
import com.raytheon.edex.plugin.satellite.dao.SatMapCoverageDao;
|
|
||||||
import com.raytheon.uf.common.dataplugin.satellite.SatMapCoverage;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.exception.GoesrProjectionException;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.geospatial.crs.GeostationaryCrsFactory;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.geospatial.crs.GoesrCrsFactory;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.geospatial.crs.LambertConformalCrsFactory;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.geospatial.crs.MercatorCrsFactory;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.geospatial.crs.NorthPolarStereographicCrsFactory;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.geospatial.envelope.DimensionEnvelopeFactory;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.geospatial.envelope.GoesrEnvelope;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.geospatial.envelope.GoesrEnvelopeFactory;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.geospatial.envelope.ImageBoundsEnvelopeFactory;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.geospatial.envelope.ProductCenterEnvelopeFactory;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.geospatial.envelope.TileCenterEnvelopeFactory;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* In a GOESR NetCDF file the geolocation information is extracted as two
|
|
||||||
* separate, yet equally important entities. The crs which defines the
|
|
||||||
* translation onto a spheroid and the envelope which defines the coverage of
|
|
||||||
* the product. This is their factory.
|
|
||||||
*
|
|
||||||
* Create the {@link SatMapCoverage} corresponding to the projection information
|
|
||||||
* contained in the GOES-R netCDF file.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------- -------- ----------- --------------------------
|
|
||||||
* Jun 01, 2012 796 jkorman Initial creation
|
|
||||||
* Jul 05, 2013 2123 mschenke Refactored to have CRS factory for each type of CRS
|
|
||||||
* Oct 29, 2014 3770 bsteffen Pass more attributes to the projection.
|
|
||||||
* Apr 17, 2015 4336 bsteffen Split out crs and envelope creation into distinct factories.
|
|
||||||
* Mar 15, 2016 5456 bsteffen Change Priority of envelope factories
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author jkorman
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
public class GoesrProjectionFactory {
|
|
||||||
|
|
||||||
private static final transient Logger logger = LoggerFactory
|
|
||||||
.getLogger(GoesrProjectionFactory.class);
|
|
||||||
|
|
||||||
private static final boolean DEBUG_ENVELOPES = Boolean
|
|
||||||
.getBoolean("goesr.projection.debug.envelopes");
|
|
||||||
|
|
||||||
private final Map<String, GoesrCrsFactory> crsMap = new HashMap<>();
|
|
||||||
|
|
||||||
private final List<GoesrEnvelopeFactory> envelopeList = new ArrayList<>(3);
|
|
||||||
|
|
||||||
private SatMapCoverageDao satDao;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create an instance of this factory.
|
|
||||||
*/
|
|
||||||
public GoesrProjectionFactory() {
|
|
||||||
satDao = new SatMapCoverageDao();
|
|
||||||
|
|
||||||
GoesrCrsFactory geostationary = new GeostationaryCrsFactory();
|
|
||||||
GoesrCrsFactory lambert = new LambertConformalCrsFactory();
|
|
||||||
GoesrCrsFactory mercator = new MercatorCrsFactory();
|
|
||||||
GoesrCrsFactory polar = new NorthPolarStereographicCrsFactory();
|
|
||||||
/*
|
|
||||||
* These are the values of the grid_mapping_name attribute within the
|
|
||||||
* grid mapping variable. These are consistent for all known goesr
|
|
||||||
* products.
|
|
||||||
*/
|
|
||||||
crsMap.put("geostationary", geostationary);
|
|
||||||
crsMap.put("lambert_conformal_conic", lambert);
|
|
||||||
crsMap.put("polar_stereographic", polar);
|
|
||||||
crsMap.put("mercator", mercator);
|
|
||||||
/*
|
|
||||||
* These are the names of the grid mapping variable for sectorized CMI,
|
|
||||||
* these are not consistent for other data types. It may be safe to
|
|
||||||
* remove these and rely only on the names above.
|
|
||||||
*/
|
|
||||||
crsMap.put("lambert_projection", lambert);
|
|
||||||
crsMap.put("mercator_projection", mercator);
|
|
||||||
crsMap.put("polar_projection", polar);
|
|
||||||
crsMap.put("fixedgrid_projection", geostationary);
|
|
||||||
|
|
||||||
envelopeList.add(new DimensionEnvelopeFactory());
|
|
||||||
envelopeList.add(new ImageBoundsEnvelopeFactory());
|
|
||||||
envelopeList.add(new ProductCenterEnvelopeFactory());
|
|
||||||
envelopeList.add(new TileCenterEnvelopeFactory());
|
|
||||||
}
|
|
||||||
|
|
||||||
public GoesrCrsFactory registerCrsFactory(String name,
|
|
||||||
GoesrCrsFactory crsFactory) {
|
|
||||||
crsMap.put(name, crsFactory);
|
|
||||||
return crsFactory;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SatMapCoverage getCoverage(NetcdfFile cdfFile, String projName)
|
|
||||||
throws GoesrProjectionException {
|
|
||||||
Variable projection = cdfFile.findVariable(projName);
|
|
||||||
if (projection != null) {
|
|
||||||
GoesrCrsFactory crsFactory = null;
|
|
||||||
Attribute attr = projection.findAttribute("grid_mapping_name");
|
|
||||||
if (attr != null) {
|
|
||||||
crsFactory = crsMap.get(attr.getStringValue());
|
|
||||||
}
|
|
||||||
if (crsFactory == null) {
|
|
||||||
crsFactory = crsMap.get(projName);
|
|
||||||
if (crsFactory == null) {
|
|
||||||
String message;
|
|
||||||
if (attr != null) {
|
|
||||||
message = String.format(
|
|
||||||
"Invalid projection identifier [%s.%s].",
|
|
||||||
projName, attr.getStringValue());
|
|
||||||
} else {
|
|
||||||
message = String
|
|
||||||
.format("Invalid projection identifier [%s].",
|
|
||||||
projName);
|
|
||||||
}
|
|
||||||
throw new GoesrProjectionException(message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
CoordinateReferenceSystem crs = crsFactory
|
|
||||||
.constructCoordinateReferenceSystem(projection);
|
|
||||||
if (DEBUG_ENVELOPES) {
|
|
||||||
debugEnvelopes(cdfFile, crs);
|
|
||||||
}
|
|
||||||
for (GoesrEnvelopeFactory envelopeFactory : envelopeList) {
|
|
||||||
GoesrEnvelope envelope = envelopeFactory.getEnvelope(cdfFile,
|
|
||||||
crs);
|
|
||||||
if (envelope != null) {
|
|
||||||
envelope.normalize();
|
|
||||||
SatMapCoverage coverage = new SatMapCoverage();
|
|
||||||
coverage.setCrsWKT(crs.toWKT());
|
|
||||||
coverage.setDx(envelope.getDx());
|
|
||||||
coverage.setDy(envelope.getDy());
|
|
||||||
coverage.setMinX(envelope.getMinX());
|
|
||||||
coverage.setMinY(envelope.getMinY());
|
|
||||||
coverage.setNx(envelope.getNx());
|
|
||||||
coverage.setNy(envelope.getNy());
|
|
||||||
/* Trigger generation of a location. */
|
|
||||||
coverage.getLocation();
|
|
||||||
try {
|
|
||||||
return satDao.getOrCreateCoverage(coverage);
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new GoesrProjectionException(
|
|
||||||
"Could not create coverage", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
throw new GoesrProjectionException("Unable to create envelope.");
|
|
||||||
} else {
|
|
||||||
throw new GoesrProjectionException("Projection variable was null");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* As long as there exists multiple envelope factories, it is useful to be
|
|
||||||
* able to compare them for different sample files and verify the results
|
|
||||||
* match.
|
|
||||||
*
|
|
||||||
* @param cdfFile
|
|
||||||
* @param crs
|
|
||||||
*/
|
|
||||||
private void debugEnvelopes(NetcdfFile cdfFile,
|
|
||||||
CoordinateReferenceSystem crs) {
|
|
||||||
StringBuilder builder = new StringBuilder();
|
|
||||||
builder.append("Envelope comparison for " + cdfFile.getLocation()
|
|
||||||
+ " ********************\n");
|
|
||||||
for (GoesrEnvelopeFactory envelopeFactory : envelopeList) {
|
|
||||||
builder.append(envelopeFactory.getClass().getSimpleName());
|
|
||||||
builder.append(": ");
|
|
||||||
GoesrEnvelope envelope = null;
|
|
||||||
try {
|
|
||||||
envelope = envelopeFactory.getEnvelope(cdfFile, crs);
|
|
||||||
} catch (GoesrProjectionException e) {
|
|
||||||
builder.append(e.getLocalizedMessage()).append(": ");
|
|
||||||
|
|
||||||
}
|
|
||||||
if (envelope != null) {
|
|
||||||
envelope.normalize();
|
|
||||||
builder.append(envelope.toString());
|
|
||||||
} else {
|
|
||||||
builder.append("No Envelope");
|
|
||||||
}
|
|
||||||
builder.append("\n");
|
|
||||||
}
|
|
||||||
builder.append("****************************************\n");
|
|
||||||
logger.info(builder.toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,64 +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.edex.plugin.goesr.geospatial;
|
|
||||||
|
|
||||||
import javax.measure.quantity.Length;
|
|
||||||
import javax.measure.unit.Unit;
|
|
||||||
|
|
||||||
import org.geotools.referencing.CRS;
|
|
||||||
import org.geotools.referencing.operation.projection.MapProjection;
|
|
||||||
import org.opengis.parameter.ParameterValue;
|
|
||||||
import org.opengis.parameter.ParameterValueGroup;
|
|
||||||
import org.opengis.referencing.crs.CoordinateReferenceSystem;
|
|
||||||
|
|
||||||
import com.raytheon.uf.common.geospatial.projection.Geostationary;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Utility class for extracting the satellite height from the
|
|
||||||
* {@link CoordinateReferenceSystem}. Several pieces of the decoder need this
|
|
||||||
* information and don't have a better way to get it.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------- -------- ----------- --------------------------
|
|
||||||
* Apr 17, 2015 4336 bsteffen Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author bsteffen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
public class GoesrSatelliteHeight {
|
|
||||||
|
|
||||||
public static double getOrbitalHeight(CoordinateReferenceSystem crs,
|
|
||||||
Unit<Length> unit) {
|
|
||||||
MapProjection worldProjection = CRS.getMapProjection(crs);
|
|
||||||
if (worldProjection instanceof Geostationary) {
|
|
||||||
ParameterValueGroup group = worldProjection.getParameterValues();
|
|
||||||
ParameterValue<?> orbitalHeight = group
|
|
||||||
.parameter(Geostationary.ORBITAL_HEIGHT);
|
|
||||||
return orbitalHeight.doubleValue(unit);
|
|
||||||
}
|
|
||||||
return Double.NaN;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,75 +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.edex.plugin.goesr.geospatial.crs;
|
|
||||||
|
|
||||||
import org.opengis.parameter.ParameterValueGroup;
|
|
||||||
|
|
||||||
import ucar.nc2.Attribute;
|
|
||||||
import ucar.nc2.Variable;
|
|
||||||
|
|
||||||
import com.raytheon.uf.common.geospatial.projection.Geostationary;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.exception.GoesrProjectionException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A class representation of the GOES-R FixedGrid projection information
|
|
||||||
* contained in the GOES-R netCDF file. The ICD says that this is "unprojected"
|
|
||||||
* data, that is, the data is as it is seen from the satellite. This would be a
|
|
||||||
* orthographic type projection.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------- -------- ----------- --------------------------
|
|
||||||
* Jun 01, 2012 796 jkorman Initial creation
|
|
||||||
* Jul 05, 2013 2123 mschenke Implemented Geostationary projection
|
|
||||||
* Apr 17, 2015 4336 bsteffen Converted to be only a CRS factory.
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author jkorman
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class GeostationaryCrsFactory extends GoesrCrsFactory {
|
|
||||||
|
|
||||||
private static final String DEF_SWEEP_AXIS = "x";
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String getProjectionName() {
|
|
||||||
return Geostationary.PROJECTION_NAME;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void addSpecificParameters(Variable projectionVariable,
|
|
||||||
ParameterValueGroup parameters) throws GoesrProjectionException {
|
|
||||||
setDoubleParameter(projectionVariable, "latitude_of_projection_origin", parameters, "latitude_of_origin");
|
|
||||||
setDoubleParameter(projectionVariable, "longitude_of_projection_origin", parameters, "central_meridian");
|
|
||||||
setDoubleParameter(projectionVariable, "perspective_point_height", parameters, Geostationary.ORBITAL_HEIGHT);
|
|
||||||
Attribute attribute = projectionVariable.findAttribute("sweep_angle_axis");
|
|
||||||
if (attribute != null) {
|
|
||||||
String sweepAxis = attribute.getStringValue();
|
|
||||||
parameters.parameter(Geostationary.SWEEP_AXIS).setValue(
|
|
||||||
DEF_SWEEP_AXIS.equals(sweepAxis) ? 0 : 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,169 +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.edex.plugin.goesr.geospatial.crs;
|
|
||||||
|
|
||||||
import org.geotools.referencing.operation.DefaultMathTransformFactory;
|
|
||||||
import org.opengis.parameter.ParameterValueGroup;
|
|
||||||
import org.opengis.referencing.FactoryException;
|
|
||||||
import org.opengis.referencing.NoSuchIdentifierException;
|
|
||||||
import org.opengis.referencing.crs.CoordinateReferenceSystem;
|
|
||||||
|
|
||||||
import ucar.ma2.DataType;
|
|
||||||
import ucar.nc2.Attribute;
|
|
||||||
import ucar.nc2.NetcdfFile;
|
|
||||||
import ucar.nc2.Variable;
|
|
||||||
|
|
||||||
import com.raytheon.uf.common.geospatial.MapUtil;
|
|
||||||
import com.raytheon.uf.common.geospatial.projection.Geostationary;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.exception.GoesrProjectionException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* A GoesrCrsFactory has the ability to parse projection information from the
|
|
||||||
* {@link Attribute}s of a {@link Variable} for a specific type of projection.
|
|
||||||
* The abstract class provides a means to parse the semi_major, semi_minor,
|
|
||||||
* false_easting, and false_northing which are common among all map projections.
|
|
||||||
* Other projection parameters should be parsed by sub classes.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------- -------- ----------- --------------------------
|
|
||||||
* Apr 17, 2015 4336 bsteffen Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author bsteffen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
public abstract class GoesrCrsFactory {
|
|
||||||
|
|
||||||
protected static final DefaultMathTransformFactory dmtFactory = new DefaultMathTransformFactory();
|
|
||||||
|
|
||||||
public CoordinateReferenceSystem constructCoordinateReferenceSystem(
|
|
||||||
Variable projectionVariable) throws GoesrProjectionException {
|
|
||||||
try {
|
|
||||||
ParameterValueGroup parameters = dmtFactory
|
|
||||||
.getDefaultParameters(getProjectionName());
|
|
||||||
setDoubleParameter(projectionVariable, "semi_major_axis",
|
|
||||||
parameters, "semi_major");
|
|
||||||
setDoubleParameter(projectionVariable, "semi_minor_axis",
|
|
||||||
parameters, "semi_minor");
|
|
||||||
setDoubleParameter(projectionVariable, parameters, "semi_major");
|
|
||||||
setDoubleParameter(projectionVariable, parameters, "semi_minor");
|
|
||||||
setDoubleParameter(projectionVariable, parameters, "false_easting");
|
|
||||||
setDoubleParameter(projectionVariable, parameters, "false_northing");
|
|
||||||
|
|
||||||
addSpecificParameters(projectionVariable, parameters);
|
|
||||||
return MapUtil.constructProjection(getProjectionName(),
|
|
||||||
parameters);
|
|
||||||
} catch (NoSuchIdentifierException e) {
|
|
||||||
throw new GoesrProjectionException(
|
|
||||||
"Unable to find projection by name: "
|
|
||||||
+ Geostationary.PROJECTION_NAME, e);
|
|
||||||
} catch (FactoryException e) {
|
|
||||||
throw new GoesrProjectionException(
|
|
||||||
"Error constructing projected CRS", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return The name used to look up the parameters for the projection.
|
|
||||||
*/
|
|
||||||
protected abstract String getProjectionName();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Method provided so that subclasses can add parameters that are needed for
|
|
||||||
* the specific projection type that they are implementing.
|
|
||||||
*
|
|
||||||
* @param projectionVariable
|
|
||||||
* the {@link Variable} from the {@link NetcdfFile} that ocntains
|
|
||||||
* all the projection {@link Attribute}s.
|
|
||||||
* @param parameters
|
|
||||||
* The parameters that need to be set to define a
|
|
||||||
* {@link CoordinateReferenceSystem}.
|
|
||||||
* @throws GoesrProjectionException
|
|
||||||
*/
|
|
||||||
protected abstract void addSpecificParameters(Variable projectionVariable,
|
|
||||||
ParameterValueGroup parameters) throws GoesrProjectionException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Method to copy a value from a netcdf {@link Attribute} to a
|
|
||||||
* {@link ParameterValueGroup}. This should be used when the name that is
|
|
||||||
* expected in the netcdf file matches the name needed for the crs. If the
|
|
||||||
* attribute does not exist then the value is left unchanged in the group.
|
|
||||||
*
|
|
||||||
* @param projectionVariable
|
|
||||||
* {@link Variable} containing projection attributes.
|
|
||||||
* @param parameters
|
|
||||||
* parameters needed to build a CRS.
|
|
||||||
* @param name
|
|
||||||
* the name of the attribute, used for both lookup in the netcdf
|
|
||||||
* file and setting the parameter in the group.
|
|
||||||
* @throws GoesrProjectionException
|
|
||||||
*/
|
|
||||||
protected final void setDoubleParameter(Variable projectionVariable,
|
|
||||||
ParameterValueGroup parameters, String name)
|
|
||||||
throws GoesrProjectionException {
|
|
||||||
setDoubleParameter(projectionVariable, name, parameters, name);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Method to copy a value from a netcdf {@link Attribute} to a
|
|
||||||
* {@link ParameterValueGroup}. This should be used when the name that is
|
|
||||||
* expected in the netcdf file matches the name needed for the crs. If the
|
|
||||||
* attribute does not exist then the value is left unchanged in the group.
|
|
||||||
*
|
|
||||||
* @param projectionVariable
|
|
||||||
* {@link Variable} containing projection attributes.
|
|
||||||
* @param attributeName
|
|
||||||
* name of the attribute that is expected to exist on the
|
|
||||||
* projectionVariable
|
|
||||||
* @param parameters
|
|
||||||
* parameters needed to build a CRS.
|
|
||||||
* @param parameterName
|
|
||||||
* name of the parameter to be set in the parameters.
|
|
||||||
* @throws GoesrProjectionException
|
|
||||||
*/
|
|
||||||
protected final void setDoubleParameter(Variable projectionVariable,
|
|
||||||
String attributeName, ParameterValueGroup parameters,
|
|
||||||
String parameterName) throws GoesrProjectionException {
|
|
||||||
Attribute attribute = projectionVariable.findAttribute(attributeName);
|
|
||||||
if (attribute == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(attribute.getDataType() == DataType.STRING){
|
|
||||||
String strValue = attribute.getStringValue();
|
|
||||||
try {
|
|
||||||
double value = Double.parseDouble(strValue);
|
|
||||||
parameters.parameter(parameterName).setValue(value);
|
|
||||||
} catch (NumberFormatException e) {
|
|
||||||
throw new GoesrProjectionException("Unable to parse"
|
|
||||||
+ attributeName, e);
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
double value = attribute.getNumericValue().doubleValue();
|
|
||||||
parameters.parameter(parameterName).setValue(value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,64 +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.edex.plugin.goesr.geospatial.crs;
|
|
||||||
|
|
||||||
import org.opengis.parameter.ParameterValueGroup;
|
|
||||||
|
|
||||||
import ucar.nc2.Variable;
|
|
||||||
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.exception.GoesrProjectionException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A class representation of the GOES-R LambertConformal projection information
|
|
||||||
* contained in the GOES-R netCDF file.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------- -------- ----------- --------------------------
|
|
||||||
* Jun 01, 2012 796 jkorman Initial creation
|
|
||||||
* Jul 05, 2013 2123 mschenke Refactored to be CRS factory
|
|
||||||
* Apr 17, 2015 4336 bsteffen Converted to be only a CRS factory.
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author jkorman
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class LambertConformalCrsFactory extends GoesrCrsFactory {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String getProjectionName() {
|
|
||||||
return "Lambert_Conformal_Conic_1SP";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void addSpecificParameters(Variable projectionVariable,
|
|
||||||
ParameterValueGroup parameters) throws GoesrProjectionException {
|
|
||||||
setDoubleParameter(projectionVariable, "standard_parallel", parameters,
|
|
||||||
"latitude_of_origin");
|
|
||||||
setDoubleParameter(projectionVariable, "longitude_of_central_meridian",
|
|
||||||
parameters, "longitude_of_origin");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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.edex.plugin.goesr.geospatial.crs;
|
|
||||||
|
|
||||||
import org.opengis.parameter.ParameterValueGroup;
|
|
||||||
|
|
||||||
import ucar.nc2.Variable;
|
|
||||||
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.exception.GoesrProjectionException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A class representation of the GOES-R Mercator projection information
|
|
||||||
* contained in the GOES-R netCDF file.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------- -------- ----------- --------------------------
|
|
||||||
* Jun 01, 2012 796 jkorman Initial creation
|
|
||||||
* Jul 05, 2013 2123 mschenke Refactored to be CRS factory
|
|
||||||
* Apr 17, 2015 4336 bsteffen Converted to be only a CRS factory.
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author jkorman
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class MercatorCrsFactory extends GoesrCrsFactory {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String getProjectionName() {
|
|
||||||
return "Mercator_2SP";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void addSpecificParameters(Variable projectionVariable,
|
|
||||||
ParameterValueGroup parameters) throws GoesrProjectionException {
|
|
||||||
setDoubleParameter(projectionVariable, "standard_parallel", parameters,
|
|
||||||
"standard_parallel_1");
|
|
||||||
setDoubleParameter(projectionVariable,
|
|
||||||
"longitude_of_projection_origin", parameters,
|
|
||||||
"central_meridian");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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.edex.plugin.goesr.geospatial.crs;
|
|
||||||
|
|
||||||
import org.opengis.parameter.ParameterValueGroup;
|
|
||||||
|
|
||||||
import ucar.nc2.Variable;
|
|
||||||
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.exception.GoesrProjectionException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A class representation of the GOES-R PolarStereographic projection
|
|
||||||
* information contained in the GOES-R netCDF file.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------- -------- --------- --------------------------------------------
|
|
||||||
* Jun 01, 2012 796 jkorman Initial creation
|
|
||||||
* Jul 05, 2013 2123 mschenke Refactored to be CRS factory
|
|
||||||
* Apr 17, 2015 4336 bsteffen Converted to be only a CRS factory.
|
|
||||||
* May 02, 2016 5612 bsteffen Use standard_parallel attribute to define
|
|
||||||
* standard_parallel_1
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author jkorman
|
|
||||||
*/
|
|
||||||
public class NorthPolarStereographicCrsFactory extends GoesrCrsFactory {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String getProjectionName() {
|
|
||||||
return "Stereographic_North_Pole";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void addSpecificParameters(Variable projectionVariable,
|
|
||||||
ParameterValueGroup parameters) throws GoesrProjectionException {
|
|
||||||
setDoubleParameter(projectionVariable, "standard_parallel",
|
|
||||||
parameters, "standard_parallel_1");
|
|
||||||
setDoubleParameter(projectionVariable,
|
|
||||||
"straight_vertical_longitude_from_pole", parameters,
|
|
||||||
"central_meridian");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,151 +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.edex.plugin.goesr.geospatial.envelope;
|
|
||||||
|
|
||||||
import javax.measure.unit.SI;
|
|
||||||
|
|
||||||
import org.opengis.referencing.crs.CoordinateReferenceSystem;
|
|
||||||
|
|
||||||
import ucar.nc2.Attribute;
|
|
||||||
import ucar.nc2.NetcdfFile;
|
|
||||||
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.geospatial.GoesrSatelliteHeight;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* Base class for {@link GoesrEnvelopeFactory}s that determine the envelope by
|
|
||||||
* looking at global attributes on the netcdf file. This class provides a common
|
|
||||||
* method for calculating nx,ny,dx,dy within an envelope and subclasses can
|
|
||||||
* calculate minX and minY either by using the product center or tile center
|
|
||||||
* attributes. Since the Level2 data types do not set these attributes,
|
|
||||||
* factories of this type are generally only applicable to the sectorized CMI
|
|
||||||
* files. This factory converts meter spacing into angular spacing using
|
|
||||||
* {@link GoesrEnvelopeFactory#RADIANS_PER_KM_SPACING} so it is only suitable
|
|
||||||
* for GOES-R data and should not be used for Himawari-8 data.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------- -------- ----------- --------------------------
|
|
||||||
* Apr 17, 2015 4336 bsteffen Initial creation
|
|
||||||
* Mar 15, 2016 5456 bsteffen Update javadoc to point out himawari deficiency
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author bsteffen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
public abstract class AbstractCenterEnvelopeFactory implements
|
|
||||||
GoesrEnvelopeFactory {
|
|
||||||
|
|
||||||
protected GoesrEnvelope loadDistanceNumber(NetcdfFile cdfFile,
|
|
||||||
CoordinateReferenceSystem crs) {
|
|
||||||
GoesrEnvelope envelope = new GoesrEnvelope();
|
|
||||||
int tileNx;
|
|
||||||
int tileNy;
|
|
||||||
int productNx;
|
|
||||||
int productNy;
|
|
||||||
int offsetx;
|
|
||||||
int offsety;
|
|
||||||
Attribute attr = cdfFile.findGlobalAttribute("pixel_x_size");
|
|
||||||
if (attr == null) {
|
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
envelope.setDx(attr.getNumericValue().doubleValue() * 1000);
|
|
||||||
}
|
|
||||||
attr = cdfFile.findGlobalAttribute("pixel_y_size");
|
|
||||||
if (attr == null) {
|
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
envelope.setDy(attr.getNumericValue().doubleValue() * 1000);
|
|
||||||
}
|
|
||||||
attr = cdfFile.findGlobalAttribute("product_tile_width");
|
|
||||||
if (attr == null) {
|
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
tileNx = attr.getNumericValue().intValue();
|
|
||||||
}
|
|
||||||
attr = cdfFile.findGlobalAttribute("product_tile_height");
|
|
||||||
if (attr == null) {
|
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
tileNy = attr.getNumericValue().intValue();
|
|
||||||
}
|
|
||||||
attr = cdfFile.findGlobalAttribute("product_columns");
|
|
||||||
if (attr == null) {
|
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
productNx = attr.getNumericValue().intValue();
|
|
||||||
}
|
|
||||||
attr = cdfFile.findGlobalAttribute("product_rows");
|
|
||||||
if (attr == null) {
|
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
productNy = attr.getNumericValue().intValue();
|
|
||||||
}
|
|
||||||
attr = cdfFile.findGlobalAttribute("tile_column_offset");
|
|
||||||
if (attr == null) {
|
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
offsetx = attr.getNumericValue().intValue();
|
|
||||||
}
|
|
||||||
attr = cdfFile.findGlobalAttribute("tile_row_offset");
|
|
||||||
if (attr == null) {
|
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
offsety = attr.getNumericValue().intValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* When the productNx is not evenly divisible by the tileNx the tileNx
|
|
||||||
* is not the actual tileNx. For example if productNx is 1808 tiled to
|
|
||||||
* 1024 than all tiles will have a tileNx of 1024 even the the rightmost
|
|
||||||
* tiles have an actual nx of 784
|
|
||||||
*/
|
|
||||||
tileNx = Math.min(productNx - offsetx, tileNx);
|
|
||||||
tileNy = Math.min(productNy - offsety, tileNy);
|
|
||||||
|
|
||||||
envelope.setNx(tileNx);
|
|
||||||
envelope.setNy(tileNy);
|
|
||||||
|
|
||||||
double orbitalHeight = GoesrSatelliteHeight.getOrbitalHeight(crs,
|
|
||||||
SI.KILOMETER);
|
|
||||||
if (!Double.isNaN(orbitalHeight)) {
|
|
||||||
// Geostationary dx/dy hack;
|
|
||||||
double dx = envelope.getDx();
|
|
||||||
double angularSeparation = (dx / 1000.0)
|
|
||||||
* RADIANS_PER_KM_SPACING;
|
|
||||||
dx = Math.tan(angularSeparation)
|
|
||||||
* orbitalHeight;
|
|
||||||
envelope.setDx(dx * 1000);
|
|
||||||
double dy = envelope.getDy();
|
|
||||||
angularSeparation = (dy / 1000.0)
|
|
||||||
* RADIANS_PER_KM_SPACING;
|
|
||||||
dy = Math.tan(angularSeparation)
|
|
||||||
* orbitalHeight;
|
|
||||||
envelope.setDy(dy * 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
return envelope;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,121 +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.edex.plugin.goesr.geospatial.envelope;
|
|
||||||
|
|
||||||
import java.text.ParseException;
|
|
||||||
import java.text.ParsePosition;
|
|
||||||
|
|
||||||
import javax.measure.unit.SI;
|
|
||||||
import javax.measure.unit.Unit;
|
|
||||||
import javax.measure.unit.UnitFormat;
|
|
||||||
|
|
||||||
import org.opengis.referencing.crs.CoordinateReferenceSystem;
|
|
||||||
|
|
||||||
import ucar.nc2.Attribute;
|
|
||||||
import ucar.nc2.NetcdfFile;
|
|
||||||
import ucar.nc2.Variable;
|
|
||||||
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.exception.GoesrProjectionException;
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.geospatial.GoesrSatelliteHeight;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* Base class for all envelope factories that find envelopes using the x and y
|
|
||||||
* dimension variables.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------- -------- ----------- --------------------------
|
|
||||||
* Apr 17, 2015 4336 bsteffen Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author bsteffen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
public abstract class AbstractDimensionEnvelopeFactory implements
|
|
||||||
GoesrEnvelopeFactory {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public GoesrEnvelope getEnvelope(NetcdfFile cdfFile,
|
|
||||||
CoordinateReferenceSystem crs) throws GoesrProjectionException {
|
|
||||||
Variable x = cdfFile.findVariable("x");
|
|
||||||
if (x == null || !x.isCoordinateVariable()) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
Variable y = cdfFile.findVariable("y");
|
|
||||||
if (y == null || !y.isCoordinateVariable()) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return getEnvelopeFromDimensions(cdfFile, crs, x, y);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
protected abstract GoesrEnvelope getEnvelopeFromDimensions(
|
|
||||||
NetcdfFile cdfFile, CoordinateReferenceSystem crs, Variable x,
|
|
||||||
Variable y) throws GoesrProjectionException;
|
|
||||||
|
|
||||||
protected static double findDistance(CoordinateReferenceSystem crs,
|
|
||||||
double scale, Variable dimension) throws GoesrProjectionException {
|
|
||||||
Attribute attr = dimension.findAttribute("units");
|
|
||||||
if (attr == null) {
|
|
||||||
return scale;
|
|
||||||
}
|
|
||||||
String units = attr.getStringValue();
|
|
||||||
return findDistance(crs, scale, units);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected static double findDistance(CoordinateReferenceSystem crs,
|
|
||||||
double scale, String units) throws GoesrProjectionException {
|
|
||||||
if ("meters".equals(units)) {
|
|
||||||
return scale;
|
|
||||||
} else if ("rad".equals(units) || "radian".equals(units)) {
|
|
||||||
double orbitalHeight = GoesrSatelliteHeight.getOrbitalHeight(crs,
|
|
||||||
SI.METER);
|
|
||||||
if (Double.isNaN(orbitalHeight)) {
|
|
||||||
return 1000 * scale / RADIANS_PER_KM_SPACING;
|
|
||||||
} else {
|
|
||||||
return Math.tan(scale) * orbitalHeight;
|
|
||||||
}
|
|
||||||
} else if ("microradian".equals(units) || "microrad".equals(units)) {
|
|
||||||
return findDistance(crs, scale / 1000 / 1000, "rad");
|
|
||||||
} else {
|
|
||||||
try {
|
|
||||||
Unit<?> u = UnitFormat.getUCUMInstance().parseProductUnit(
|
|
||||||
units, new ParsePosition(0));
|
|
||||||
if (u.isCompatible(SI.METER)) {
|
|
||||||
u.getConverterTo(SI.METER).convert(scale);
|
|
||||||
} else {
|
|
||||||
throw new GoesrProjectionException("Incompatible units: "
|
|
||||||
+ units);
|
|
||||||
}
|
|
||||||
} catch (ParseException e) {
|
|
||||||
throw new GoesrProjectionException("Unrecognized units: "
|
|
||||||
+ units);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return scale;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,102 +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.edex.plugin.goesr.geospatial.envelope;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
import org.opengis.referencing.crs.CoordinateReferenceSystem;
|
|
||||||
|
|
||||||
import ucar.nc2.NetcdfFile;
|
|
||||||
import ucar.nc2.Variable;
|
|
||||||
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.exception.GoesrProjectionException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* Uses the scale and offset and size of the x and y variables to determine the
|
|
||||||
* size of the product. This factory should work for all GOES-R products.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------- -------- ----------- --------------------------
|
|
||||||
* Apr 17, 2015 4336 bsteffen Initial creation
|
|
||||||
* Mar 15, 2016 5456 bsteffen Add 0.5 to shift from cell center to cell corner.
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author bsteffen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
public class DimensionEnvelopeFactory extends AbstractDimensionEnvelopeFactory {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public GoesrEnvelope getEnvelopeFromDimensions(NetcdfFile cdfFile,
|
|
||||||
CoordinateReferenceSystem crs, Variable x, Variable y)
|
|
||||||
throws GoesrProjectionException {
|
|
||||||
int nx = x.getDimension(0).getLength();
|
|
||||||
int ny = y.getDimension(0).getLength();
|
|
||||||
|
|
||||||
double scalex = x.findAttribute("scale_factor").getNumericValue()
|
|
||||||
.doubleValue();
|
|
||||||
double offsetx = x.findAttribute("add_offset").getNumericValue()
|
|
||||||
.doubleValue();
|
|
||||||
double scaley = y.findAttribute("scale_factor").getNumericValue()
|
|
||||||
.doubleValue();
|
|
||||||
double offsety = y.findAttribute("add_offset").getNumericValue()
|
|
||||||
.doubleValue();
|
|
||||||
double dx = findDistance(crs, scalex, x);
|
|
||||||
double dy = findDistance(crs, scaley, y);
|
|
||||||
|
|
||||||
double minx;
|
|
||||||
double miny;
|
|
||||||
try {
|
|
||||||
|
|
||||||
minx = x.read().getInt(0);
|
|
||||||
miny = y.read().getInt(0);
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new GoesrProjectionException(
|
|
||||||
"Unable to read min values of x or y dimesnions.", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The variables define the position of the center of the data value,
|
|
||||||
* expand by half a pixel to get the edge of the "image"
|
|
||||||
*/
|
|
||||||
minx -= 0.5;
|
|
||||||
miny -= 0.5;
|
|
||||||
|
|
||||||
/* Convert from pixel spacing to meter spacing. */
|
|
||||||
minx = (minx + offsetx / scalex) * dx;
|
|
||||||
miny = (miny + offsety / scaley) * dy;
|
|
||||||
|
|
||||||
GoesrEnvelope envelope = new GoesrEnvelope();
|
|
||||||
envelope.setNx(nx);
|
|
||||||
envelope.setNy(ny);
|
|
||||||
envelope.setDx(dx);
|
|
||||||
envelope.setDy(dy);
|
|
||||||
envelope.setMinX(minx);
|
|
||||||
envelope.setMinY(miny);
|
|
||||||
return envelope;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,128 +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.edex.plugin.goesr.geospatial.envelope;
|
|
||||||
|
|
||||||
import com.raytheon.uf.common.dataplugin.satellite.SatMapCoverage;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* Defines the non-crs attributes needed to construct a {@link SatMapCoverage}.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------- -------- ----------- --------------------------
|
|
||||||
* Apr 17, 2015 4336 bsteffen Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author bsteffen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
public class GoesrEnvelope {
|
|
||||||
|
|
||||||
private double minX;
|
|
||||||
|
|
||||||
private double minY;
|
|
||||||
|
|
||||||
private Integer nx;
|
|
||||||
|
|
||||||
private Integer ny;
|
|
||||||
|
|
||||||
private double dx;
|
|
||||||
|
|
||||||
private double dy;
|
|
||||||
|
|
||||||
public double getMinX() {
|
|
||||||
return minX;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMinX(double minX) {
|
|
||||||
this.minX = minX;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getMinY() {
|
|
||||||
return minY;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMinY(double minY) {
|
|
||||||
this.minY = minY;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getNx() {
|
|
||||||
return nx;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNx(Integer nx) {
|
|
||||||
this.nx = nx;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getNy() {
|
|
||||||
return ny;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNy(Integer ny) {
|
|
||||||
this.ny = ny;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getDx() {
|
|
||||||
return dx;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDx(double dx) {
|
|
||||||
this.dx = dx;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getDy() {
|
|
||||||
return dy;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDy(double dy) {
|
|
||||||
this.dy = dy;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getWidth() {
|
|
||||||
return nx * dx;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getHeight() {
|
|
||||||
return ny * dy;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void normalize() {
|
|
||||||
if (dx < 0) {
|
|
||||||
minX = minX + dx * nx;
|
|
||||||
dx = -1 * dx;
|
|
||||||
}
|
|
||||||
if (dy < 0) {
|
|
||||||
minY = minY + dy * ny;
|
|
||||||
dy = -1 * dy;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "GoesrEnvelope [minX=" + minX + ", minY=" + minY + ", nx=" + nx
|
|
||||||
+ ", ny=" + ny + ", dx=" + dx + ", dy=" + dy + "]";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,61 +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.edex.plugin.goesr.geospatial.envelope;
|
|
||||||
|
|
||||||
import org.opengis.referencing.crs.CoordinateReferenceSystem;
|
|
||||||
|
|
||||||
import ucar.nc2.NetcdfFile;
|
|
||||||
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.exception.GoesrProjectionException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Because there are multiple ways to define an envelope within a GOES-R
|
|
||||||
* {@link NetcdfFile} a common interface is needed for extracting this
|
|
||||||
* inofrmation using different methodoligies.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------- -------- ----------- --------------------------
|
|
||||||
* Apr 17, 2015 4336 bsteffen Initial creation
|
|
||||||
* Mar 15, 2016 5456 bsteffen Update javadoc of RADIANS_PER_KM_SPACING
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author bsteffen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
public interface GoesrEnvelopeFactory {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Default conversion value that is used to convert from an angle between
|
|
||||||
* the satellite and a point of earth into a meter spacing. This value is an
|
|
||||||
* approximation and a better value can usually be determined by using the
|
|
||||||
* actual orbital height. This value is an approximation defined for GOES-R
|
|
||||||
* data and may not be valid for other satellites.
|
|
||||||
*/
|
|
||||||
public static final double RADIANS_PER_KM_SPACING = 28 * 1e-6;
|
|
||||||
|
|
||||||
public GoesrEnvelope getEnvelope(NetcdfFile cdfFile,
|
|
||||||
CoordinateReferenceSystem crs) throws GoesrProjectionException;
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,116 +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.edex.plugin.goesr.geospatial.envelope;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
import org.opengis.referencing.crs.CoordinateReferenceSystem;
|
|
||||||
|
|
||||||
import ucar.ma2.Array;
|
|
||||||
import ucar.nc2.NetcdfFile;
|
|
||||||
import ucar.nc2.Variable;
|
|
||||||
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.exception.GoesrProjectionException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* Uses the x and y variables to determine nx and ny, then use the
|
|
||||||
* x_image_bounds and y_image_bounds to find the min/max extents of the data and
|
|
||||||
* divide by nx or ny to find dx or dy. Sectorized CMI data does not include the
|
|
||||||
* image_bounds and will not work with this image factory.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------- -------- ----------- --------------------------
|
|
||||||
* Apr 17, 2015 4336 bsteffen Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author bsteffen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
public class ImageBoundsEnvelopeFactory extends
|
|
||||||
AbstractDimensionEnvelopeFactory {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public GoesrEnvelope getEnvelopeFromDimensions(NetcdfFile cdfFile,
|
|
||||||
CoordinateReferenceSystem crs, Variable x, Variable y)
|
|
||||||
throws GoesrProjectionException {
|
|
||||||
int nx = x.getDimension(0).getLength();
|
|
||||||
int ny = y.getDimension(0).getLength();
|
|
||||||
|
|
||||||
double minx;
|
|
||||||
double maxx;
|
|
||||||
double miny;
|
|
||||||
double maxy;
|
|
||||||
|
|
||||||
Variable xBounds = cdfFile.findVariable("x_image_bounds");
|
|
||||||
if (xBounds != null && xBounds.getSize() == 2) {
|
|
||||||
try {
|
|
||||||
Array xData = xBounds.read();
|
|
||||||
minx = xData.getFloat(0);
|
|
||||||
maxx = xData.getFloat(1);
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new GoesrProjectionException(
|
|
||||||
"Error reading x_image_bounds");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
Variable yBounds = cdfFile.findVariable("y_image_bounds");
|
|
||||||
if (yBounds != null && yBounds.getSize() == 2) {
|
|
||||||
try {
|
|
||||||
Array yData = yBounds.read();
|
|
||||||
miny = yData.getFloat(0);
|
|
||||||
maxy = yData.getFloat(1);
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new GoesrProjectionException(
|
|
||||||
"Error reading y_image_bounds");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
double dx_native = (maxx - minx) / nx;
|
|
||||||
double dy_native = (maxy - miny) / ny;
|
|
||||||
|
|
||||||
double dx = findDistance(crs, dx_native, x);
|
|
||||||
double dy = findDistance(crs, dy_native, y);
|
|
||||||
|
|
||||||
minx = minx * dx / dx_native;
|
|
||||||
maxx = maxx * dx / dx_native;
|
|
||||||
miny = miny * dy / dy_native;
|
|
||||||
maxy = maxy * dy / dy_native;
|
|
||||||
|
|
||||||
GoesrEnvelope envelope = new GoesrEnvelope();
|
|
||||||
envelope.setNx(nx);
|
|
||||||
envelope.setNy(ny);
|
|
||||||
envelope.setDx(dx);
|
|
||||||
envelope.setDy(dy);
|
|
||||||
envelope.setMinX(minx);
|
|
||||||
envelope.setMinY(miny);
|
|
||||||
return envelope;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,122 +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.edex.plugin.goesr.geospatial.envelope;
|
|
||||||
|
|
||||||
import org.geotools.geometry.DirectPosition2D;
|
|
||||||
import org.geotools.referencing.CRS;
|
|
||||||
import org.geotools.referencing.crs.DefaultGeographicCRS;
|
|
||||||
import org.opengis.referencing.FactoryException;
|
|
||||||
import org.opengis.referencing.crs.CoordinateReferenceSystem;
|
|
||||||
import org.opengis.referencing.operation.TransformException;
|
|
||||||
|
|
||||||
import ucar.nc2.Attribute;
|
|
||||||
import ucar.nc2.NetcdfFile;
|
|
||||||
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.exception.GoesrProjectionException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* Calculate an envelope by offseting a tile withn a product using the tile
|
|
||||||
* offsets and the product center. This method should work for any sectorized
|
|
||||||
* CMI data.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------- -------- ----------- --------------------------
|
|
||||||
* Apr 17, 2015 4336 bsteffen Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author bsteffen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
public class ProductCenterEnvelopeFactory extends AbstractCenterEnvelopeFactory {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public GoesrEnvelope getEnvelope(NetcdfFile cdfFile,
|
|
||||||
CoordinateReferenceSystem crs) throws GoesrProjectionException {
|
|
||||||
GoesrEnvelope envelope = loadDistanceNumber(cdfFile, crs);
|
|
||||||
if (envelope == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
DirectPosition2D center = new DirectPosition2D();
|
|
||||||
int productNx;
|
|
||||||
int productNy;
|
|
||||||
int offsetx;
|
|
||||||
int offsety;
|
|
||||||
Attribute attr = cdfFile.findGlobalAttribute("product_center_longitude");
|
|
||||||
if(attr == null){
|
|
||||||
return null;
|
|
||||||
}else{
|
|
||||||
center.x = attr.getNumericValue().doubleValue();
|
|
||||||
}
|
|
||||||
attr = cdfFile.findGlobalAttribute("product_center_latitude");
|
|
||||||
if (attr == null) {
|
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
center.y = attr.getNumericValue().doubleValue();
|
|
||||||
}
|
|
||||||
attr = cdfFile.findGlobalAttribute("product_columns");
|
|
||||||
if (attr == null) {
|
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
productNx = attr.getNumericValue().intValue();
|
|
||||||
}
|
|
||||||
attr = cdfFile.findGlobalAttribute("product_rows");
|
|
||||||
if (attr == null) {
|
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
productNy = attr.getNumericValue().intValue();
|
|
||||||
}
|
|
||||||
attr = cdfFile.findGlobalAttribute("tile_column_offset");
|
|
||||||
if (attr == null) {
|
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
offsetx = attr.getNumericValue().intValue();
|
|
||||||
}
|
|
||||||
attr = cdfFile.findGlobalAttribute("tile_row_offset");
|
|
||||||
if (attr == null) {
|
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
offsety = attr.getNumericValue().intValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
CRS.findMathTransform(DefaultGeographicCRS.WGS84, crs, true)
|
|
||||||
.transform(center, center);
|
|
||||||
} catch (TransformException | FactoryException e) {
|
|
||||||
throw new GoesrProjectionException(
|
|
||||||
"Error transforming product center point to CRS space", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
double left = center.x + (offsetx - productNx / 2.0) * envelope.getDx();
|
|
||||||
|
|
||||||
double top = center.y - (offsety - productNy / 2.0) * envelope.getDy();
|
|
||||||
double bottom = top - envelope.getHeight();
|
|
||||||
|
|
||||||
envelope.setMinX(left);
|
|
||||||
envelope.setMinY(bottom);
|
|
||||||
return envelope;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,98 +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.edex.plugin.goesr.geospatial.envelope;
|
|
||||||
|
|
||||||
import org.geotools.geometry.DirectPosition2D;
|
|
||||||
import org.geotools.referencing.CRS;
|
|
||||||
import org.geotools.referencing.crs.DefaultGeographicCRS;
|
|
||||||
import org.opengis.referencing.FactoryException;
|
|
||||||
import org.opengis.referencing.crs.CoordinateReferenceSystem;
|
|
||||||
import org.opengis.referencing.operation.TransformException;
|
|
||||||
|
|
||||||
import ucar.ma2.DataType;
|
|
||||||
import ucar.nc2.Attribute;
|
|
||||||
import ucar.nc2.NetcdfFile;
|
|
||||||
|
|
||||||
import com.raytheon.uf.edex.plugin.goesr.exception.GoesrProjectionException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* Calculates envelope based off the tile center defined in the global
|
|
||||||
* attributes of a {@link NetcdfFile}. This is known to fail for Himawari data
|
|
||||||
* where the center of the tiles is not on the disk.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------- -------- ----------- --------------------------
|
|
||||||
* Apr 17, 2015 4336 bsteffen Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author bsteffen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
public class TileCenterEnvelopeFactory extends AbstractCenterEnvelopeFactory {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public GoesrEnvelope getEnvelope(NetcdfFile cdfFile,
|
|
||||||
CoordinateReferenceSystem crs) throws GoesrProjectionException {
|
|
||||||
GoesrEnvelope envelope = loadDistanceNumber(cdfFile, crs);
|
|
||||||
if (envelope == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
DirectPosition2D center = new DirectPosition2D();
|
|
||||||
Attribute attr = cdfFile.findGlobalAttribute("tile_center_longitude");
|
|
||||||
/*
|
|
||||||
* The empty string is used by himawari when the center of a tile is off
|
|
||||||
* the world, since all valid data is numeric assume any string is
|
|
||||||
* invalid.
|
|
||||||
*/
|
|
||||||
if (attr == null || attr.getDataType() == DataType.STRING) {
|
|
||||||
return null;
|
|
||||||
}else{
|
|
||||||
center.x = attr.getNumericValue().doubleValue();
|
|
||||||
}
|
|
||||||
attr = cdfFile.findGlobalAttribute("tile_center_latitude");
|
|
||||||
if (attr == null || attr.getDataType() == DataType.STRING) {
|
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
center.y = attr.getNumericValue().doubleValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
CRS.findMathTransform(DefaultGeographicCRS.WGS84, crs, true)
|
|
||||||
.transform(center, center);
|
|
||||||
} catch (TransformException | FactoryException e) {
|
|
||||||
throw new GoesrProjectionException(
|
|
||||||
"Error transforming product center point to CRS space", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
double minX = center.x - envelope.getWidth() / 2.0;
|
|
||||||
double minY = center.y - envelope.getHeight() / 2.0;
|
|
||||||
|
|
||||||
envelope.setMinX(minX);
|
|
||||||
envelope.setMinY(minY);
|
|
||||||
return envelope;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,191 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<bundle>
|
|
||||||
<displayList>
|
|
||||||
<displays xsi:type="d2DMapRenderableDisplay" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
||||||
<descriptor xsi:type="mapDescriptor">
|
|
||||||
<!-- best res satellite resource -->
|
|
||||||
<resource>
|
|
||||||
<loadProperties>
|
|
||||||
<capabilities>
|
|
||||||
<capability xsi:type="imagingCapability" />
|
|
||||||
<capability xsi:type="colorMapCapability">
|
|
||||||
<colorMapParameters colorMapName="${colormap}" />
|
|
||||||
</capability>
|
|
||||||
</capabilities>
|
|
||||||
</loadProperties>
|
|
||||||
<resourceData xsi:type="satBestResResourceData" inclusionFactor="${inclusionFactor;0.6}">
|
|
||||||
<metadataMap>
|
|
||||||
<mapping key="pluginName">
|
|
||||||
<constraint constraintValue="satellite"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="physicalElement">
|
|
||||||
<constraint constraintValue="${element}"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="sectorID">
|
|
||||||
<constraint constraintValue="WFD,EFD,WCONUS,ECONUS"
|
|
||||||
constraintType="IN" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="creatingEntity">
|
|
||||||
<constraint constraintValue="${entity}"
|
|
||||||
constraintType="LIKE" />
|
|
||||||
</mapping>
|
|
||||||
</metadataMap>
|
|
||||||
<resource>
|
|
||||||
<properties>
|
|
||||||
<pdProps maxDisplayWidth="50000000" minDisplayWidth="6000000" />
|
|
||||||
</properties>
|
|
||||||
<resourceData xsi:type="satBlendedResourceData" timeMatchMode="${timeMatchMode;EVERY_IMAGE}">
|
|
||||||
<resource>
|
|
||||||
<resourceData xsi:type="satResourceData">
|
|
||||||
<binOffset posOffset="150" negOffset="150"/>
|
|
||||||
<metadataMap>
|
|
||||||
<mapping key="pluginName">
|
|
||||||
<constraint constraintValue="satellite"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="physicalElement">
|
|
||||||
<constraint constraintValue="${element}"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="sectorID">
|
|
||||||
<constraint constraintValue="${secondaryPosition;E}FD"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="creatingEntity">
|
|
||||||
<constraint constraintValue="${entity}"
|
|
||||||
constraintType="LIKE" />
|
|
||||||
</mapping>
|
|
||||||
</metadataMap>
|
|
||||||
</resourceData>
|
|
||||||
</resource>
|
|
||||||
<resource>
|
|
||||||
<resourceData xsi:type="satResourceData">
|
|
||||||
<binOffset posOffset="150" negOffset="150"/>
|
|
||||||
<metadataMap>
|
|
||||||
<mapping key="pluginName">
|
|
||||||
<constraint constraintValue="satellite"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="physicalElement">
|
|
||||||
<constraint constraintValue="${element}"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="sectorID">
|
|
||||||
<constraint constraintValue="${primaryPosition;W}FD"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="creatingEntity">
|
|
||||||
<constraint constraintValue="${entity}"
|
|
||||||
constraintType="LIKE" />
|
|
||||||
</mapping>
|
|
||||||
</metadataMap>
|
|
||||||
</resourceData>
|
|
||||||
</resource>
|
|
||||||
</resourceData>
|
|
||||||
</resource>
|
|
||||||
<resource>
|
|
||||||
<properties>
|
|
||||||
<pdProps maxDisplayWidth="10000000" minDisplayWidth="2500000" />
|
|
||||||
</properties>
|
|
||||||
<resourceData xsi:type="satBlendedResourceData" timeMatchMode="${timeMatchMode;EVERY_IMAGE}">
|
|
||||||
<resource>
|
|
||||||
<resourceData xsi:type="satResourceData">
|
|
||||||
<binOffset posOffset="150" negOffset="150"/>
|
|
||||||
<metadataMap>
|
|
||||||
<mapping key="pluginName">
|
|
||||||
<constraint constraintValue="satellite"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="physicalElement">
|
|
||||||
<constraint constraintValue="${element}"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="sectorID">
|
|
||||||
<constraint constraintValue="${secondaryPosition;E}CONUS"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="creatingEntity">
|
|
||||||
<constraint constraintValue="${entity}"
|
|
||||||
constraintType="LIKE" />
|
|
||||||
</mapping>
|
|
||||||
</metadataMap>
|
|
||||||
</resourceData>
|
|
||||||
</resource>
|
|
||||||
<resource>
|
|
||||||
<resourceData xsi:type="satResourceData">
|
|
||||||
<binOffset posOffset="150" negOffset="150"/>
|
|
||||||
<metadataMap>
|
|
||||||
<mapping key="pluginName">
|
|
||||||
<constraint constraintValue="satellite"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="physicalElement">
|
|
||||||
<constraint constraintValue="${element}"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="sectorID">
|
|
||||||
<constraint constraintValue="${primaryPosition;W}CONUS"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="creatingEntity">
|
|
||||||
<constraint constraintValue="${entity}"
|
|
||||||
constraintType="LIKE" />
|
|
||||||
</mapping>
|
|
||||||
</metadataMap>
|
|
||||||
</resourceData>
|
|
||||||
</resource>
|
|
||||||
</resourceData>
|
|
||||||
</resource>
|
|
||||||
<resource>
|
|
||||||
<properties>
|
|
||||||
<pdProps maxDisplayWidth="2500000" minDisplayWidth="0" />
|
|
||||||
</properties>
|
|
||||||
<resourceData xsi:type="satResourceData">
|
|
||||||
<binOffset posOffset="150" negOffset="150"/>
|
|
||||||
<metadataMap>
|
|
||||||
<mapping key="pluginName">
|
|
||||||
<constraint constraintValue="satellite"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="physicalElement">
|
|
||||||
<constraint constraintValue="${element}"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="sectorID">
|
|
||||||
<constraint constraintValue="${primaryPosition;W}CONUS"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="creatingEntity">
|
|
||||||
<constraint constraintValue="${entity}"
|
|
||||||
constraintType="LIKE" />
|
|
||||||
</mapping>
|
|
||||||
</metadataMap>
|
|
||||||
</resourceData>
|
|
||||||
</resource>
|
|
||||||
</resourceData>
|
|
||||||
</resource>
|
|
||||||
</descriptor>
|
|
||||||
</displays>
|
|
||||||
</displayList>
|
|
||||||
</bundle>
|
|
|
@ -1,164 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<bundle>
|
|
||||||
<displayList>
|
|
||||||
<displays xsi:type="d2DMapRenderableDisplay" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
||||||
<descriptor xsi:type="mapDescriptor">
|
|
||||||
<!-- best res satellite resource -->
|
|
||||||
<resource>
|
|
||||||
<loadProperties>
|
|
||||||
<capabilities>
|
|
||||||
<capability xsi:type="imagingCapability" />
|
|
||||||
<capability xsi:type="colorMapCapability">
|
|
||||||
<colorMapParameters colorMapName="${colormap}" />
|
|
||||||
</capability>
|
|
||||||
</capabilities>
|
|
||||||
</loadProperties>
|
|
||||||
<resourceData xsi:type="satBestResResourceData" inclusionFactor="${inclusionFactor;0.6}">
|
|
||||||
<metadataMap>
|
|
||||||
<mapping key="pluginName">
|
|
||||||
<constraint constraintValue="satellite"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="physicalElement">
|
|
||||||
<constraint constraintValue="${element}"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="sectorID">
|
|
||||||
<constraint constraintValue="WFD,EFD,${region;AK}REGI"
|
|
||||||
constraintType="IN" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="creatingEntity">
|
|
||||||
<constraint constraintValue="${entity}"
|
|
||||||
constraintType="LIKE" />
|
|
||||||
</mapping>
|
|
||||||
</metadataMap>
|
|
||||||
<resource>
|
|
||||||
<properties>
|
|
||||||
<pdProps maxDisplayWidth="50000000" minDisplayWidth="${regionWidth;5000000}" />
|
|
||||||
</properties>
|
|
||||||
<resourceData xsi:type="satBlendedResourceData" timeMatchMode="${timeMatchMode;EVERY_IMAGE}">
|
|
||||||
<resource>
|
|
||||||
<resourceData xsi:type="satResourceData">
|
|
||||||
<binOffset posOffset="150" negOffset="150"/>
|
|
||||||
<metadataMap>
|
|
||||||
<mapping key="pluginName">
|
|
||||||
<constraint constraintValue="satellite"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="physicalElement">
|
|
||||||
<constraint constraintValue="${element}"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="sectorID">
|
|
||||||
<constraint constraintValue="${secondaryPosition;E}FD"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="creatingEntity">
|
|
||||||
<constraint constraintValue="${entity}"
|
|
||||||
constraintType="LIKE" />
|
|
||||||
</mapping>
|
|
||||||
</metadataMap>
|
|
||||||
</resourceData>
|
|
||||||
</resource>
|
|
||||||
<resource>
|
|
||||||
<resourceData xsi:type="satResourceData">
|
|
||||||
<binOffset posOffset="150" negOffset="150"/>
|
|
||||||
<metadataMap>
|
|
||||||
<mapping key="pluginName">
|
|
||||||
<constraint constraintValue="satellite"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="physicalElement">
|
|
||||||
<constraint constraintValue="${element}"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="sectorID">
|
|
||||||
<constraint constraintValue="${primaryPosition;W}FD"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="creatingEntity">
|
|
||||||
<constraint constraintValue="${entity}"
|
|
||||||
constraintType="LIKE" />
|
|
||||||
</mapping>
|
|
||||||
</metadataMap>
|
|
||||||
</resourceData>
|
|
||||||
</resource>
|
|
||||||
</resourceData>
|
|
||||||
</resource>
|
|
||||||
<resource>
|
|
||||||
<properties>
|
|
||||||
<pdProps maxDisplayWidth="${regionWidth;5000000}" minDisplayWidth="0" />
|
|
||||||
</properties>
|
|
||||||
<resourceData xsi:type="satResourceData">
|
|
||||||
<binOffset posOffset="150" negOffset="150"/>
|
|
||||||
<metadataMap>
|
|
||||||
<mapping key="pluginName">
|
|
||||||
<constraint constraintValue="satellite"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="physicalElement">
|
|
||||||
<constraint constraintValue="${element}"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="sectorID">
|
|
||||||
<constraint constraintValue="${region;AK}REGI"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="creatingEntity">
|
|
||||||
<constraint constraintValue="${entity}"
|
|
||||||
constraintType="LIKE" />
|
|
||||||
</mapping>
|
|
||||||
</metadataMap>
|
|
||||||
</resourceData>
|
|
||||||
</resource>
|
|
||||||
<resource>
|
|
||||||
<properties>
|
|
||||||
<pdProps maxDisplayWidth="${regionWidth;5000000}" minDisplayWidth="0" />
|
|
||||||
</properties>
|
|
||||||
<resourceData xsi:type="satResourceData">
|
|
||||||
<binOffset posOffset="150" negOffset="150"/>
|
|
||||||
<metadataMap>
|
|
||||||
<mapping key="pluginName">
|
|
||||||
<constraint constraintValue="satellite"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="physicalElement">
|
|
||||||
<constraint constraintValue="${element}"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="sectorID">
|
|
||||||
<constraint constraintValue="${region;AK}REGI"
|
|
||||||
constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="creatingEntity">
|
|
||||||
<constraint constraintValue="${entity}"
|
|
||||||
constraintType="LIKE" />
|
|
||||||
</mapping>
|
|
||||||
</metadataMap>
|
|
||||||
</resourceData>
|
|
||||||
</resource>
|
|
||||||
</resourceData>
|
|
||||||
</resource>
|
|
||||||
</descriptor>
|
|
||||||
</displays>
|
|
||||||
</displayList>
|
|
||||||
</bundle>
|
|
|
@ -1,89 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<bundle>
|
|
||||||
<displayList>
|
|
||||||
<displays xsi:type="d2DMapRenderableDisplay" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
||||||
<descriptor xsi:type="mapDescriptor">
|
|
||||||
<resource>
|
|
||||||
<loadProperties >
|
|
||||||
<capabilities>
|
|
||||||
<capability xsi:type="colorMapCapability">
|
|
||||||
<colorMapParameters colorMapName="${colormap}"/>
|
|
||||||
</capability>
|
|
||||||
<capability xsi:type="imagingCapability"/>
|
|
||||||
</capabilities>
|
|
||||||
<perspectiveProperty xsi:type="d2dLoadProperties" overlayMatchTolerance="1"/>
|
|
||||||
</loadProperties>
|
|
||||||
<resourceData xsi:type="satBlendedResourceData" timeMatchMode="${timeMatchMode;EVERY_IMAGE}">
|
|
||||||
<resource>
|
|
||||||
<loadProperties>
|
|
||||||
<capabilities>
|
|
||||||
<capability xsi:type="imagingCapability" />
|
|
||||||
</capabilities>
|
|
||||||
</loadProperties>
|
|
||||||
<resourceData xsi:type="satResourceData">
|
|
||||||
<binOffset posOffset="150" negOffset="150"/>
|
|
||||||
<metadataMap>
|
|
||||||
<mapping key="pluginName">
|
|
||||||
<constraint constraintValue="satellite" constraintType="EQUALS"/>
|
|
||||||
</mapping>
|
|
||||||
<mapping key="physicalElement">
|
|
||||||
<constraint constraintValue="${element}" constraintType="IN"/>
|
|
||||||
</mapping>
|
|
||||||
<mapping key="sectorID">
|
|
||||||
<constraint constraintValue="${sector0}" constraintType="IN"/>
|
|
||||||
</mapping>
|
|
||||||
<mapping key="creatingEntity">
|
|
||||||
<constraint constraintValue="${entity}" constraintType="LIKE"/>
|
|
||||||
</mapping>
|
|
||||||
</metadataMap>
|
|
||||||
</resourceData>
|
|
||||||
</resource>
|
|
||||||
<resource>
|
|
||||||
<loadProperties>
|
|
||||||
<capabilities>
|
|
||||||
<capability xsi:type="imagingCapability"/>
|
|
||||||
</capabilities>
|
|
||||||
</loadProperties>
|
|
||||||
<resourceData xsi:type="satResourceData">
|
|
||||||
<binOffset posOffset="150" negOffset="150"/>
|
|
||||||
<metadataMap>
|
|
||||||
<mapping key="pluginName">
|
|
||||||
<constraint constraintValue="satellite" constraintType="EQUALS"/>
|
|
||||||
</mapping>
|
|
||||||
<mapping key="physicalElement">
|
|
||||||
<constraint constraintValue="${element}" constraintType="IN"/>
|
|
||||||
</mapping>
|
|
||||||
<mapping key="sectorID">
|
|
||||||
<constraint constraintValue="${sector1}" constraintType="IN"/>
|
|
||||||
</mapping>
|
|
||||||
<mapping key="creatingEntity">
|
|
||||||
<constraint constraintValue="${entity}" constraintType="LIKE"/>
|
|
||||||
</mapping>
|
|
||||||
</metadataMap>
|
|
||||||
</resourceData>
|
|
||||||
</resource>
|
|
||||||
</resourceData>
|
|
||||||
</resource>
|
|
||||||
</descriptor>
|
|
||||||
</displays>
|
|
||||||
</displayList>
|
|
||||||
</bundle>
|
|
|
@ -1,97 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<bundle xmlns:ns2="http://www.example.org/productType" xmlns:ns3="group">
|
|
||||||
<displayList>
|
|
||||||
<displays xsi:type="d2DMapRenderableDisplay"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
||||||
<descriptor xsi:type="mapDescriptor">
|
|
||||||
<resource>
|
|
||||||
<loadProperties loadWithoutData="true">
|
|
||||||
<capabilities>
|
|
||||||
<capability xsi:type="colorableCapability"
|
|
||||||
colorAsString="white" />
|
|
||||||
</capabilities>
|
|
||||||
</loadProperties>
|
|
||||||
<resourceData xsi:type="trueColorResourceGroupData">
|
|
||||||
<groupName>${productName}</groupName>
|
|
||||||
<channelResource channelName="${redElement}">
|
|
||||||
<channel>RED</channel>
|
|
||||||
<resourceData xsi:type="satResourceData">
|
|
||||||
<metadataMap>
|
|
||||||
<mapping key="creatingEntity">
|
|
||||||
<constraint constraintValue="${entity}" constraintType="LIKE" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="physicalElement">
|
|
||||||
<constraint constraintValue="${redElement}" constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="sectorID">
|
|
||||||
<constraint constraintValue="${sector}" constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="pluginName">
|
|
||||||
<constraint constraintValue="satellite" constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
</metadataMap>
|
|
||||||
</resourceData>
|
|
||||||
</channelResource>
|
|
||||||
<channelResource channelName="${greenElement}">
|
|
||||||
<channel>GREEN</channel>
|
|
||||||
<resourceData xsi:type="satResourceData">
|
|
||||||
<metadataMap>
|
|
||||||
<mapping key="creatingEntity">
|
|
||||||
<constraint constraintValue="${entity}" constraintType="LIKE" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="physicalElement">
|
|
||||||
<constraint constraintValue="${greenElement}" constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="sectorID">
|
|
||||||
<constraint constraintValue="${sector}" constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="pluginName">
|
|
||||||
<constraint constraintValue="satellite" constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
</metadataMap>
|
|
||||||
</resourceData>
|
|
||||||
</channelResource>
|
|
||||||
<channelResource channelName="${blueElement}">
|
|
||||||
<channel>BLUE</channel>
|
|
||||||
<resourceData xsi:type="satResourceData">
|
|
||||||
<metadataMap>
|
|
||||||
<mapping key="creatingEntity">
|
|
||||||
<constraint constraintValue="${entity}" constraintType="LIKE" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="physicalElement">
|
|
||||||
<constraint constraintValue="${blueElement}" constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="sectorID">
|
|
||||||
<constraint constraintValue="${sector}" constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
<mapping key="pluginName">
|
|
||||||
<constraint constraintValue="satellite" constraintType="EQUALS" />
|
|
||||||
</mapping>
|
|
||||||
</metadataMap>
|
|
||||||
</resourceData>
|
|
||||||
</channelResource>
|
|
||||||
</resourceData>
|
|
||||||
</resource>
|
|
||||||
</descriptor>
|
|
||||||
</displays>
|
|
||||||
</displayList>
|
|
||||||
</bundle>
|
|
|
@ -1,29 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<colorMap>
|
|
||||||
<color r="0.0" g="0.0" b="0.0" a="0.0" />
|
|
||||||
<color r="0.0" g="1.0" b="1.0" a="1.0" />
|
|
||||||
<color r="0.0" g="1.0" b="0.0" a="1.0" />
|
|
||||||
<color r="0.0" g="0.5" b="0.0" a="1.0" />
|
|
||||||
<color r="1.0" g="0.0" b="0.0" a="1.0" />
|
|
||||||
<color r="1.0" g="1.0" b="1.0" a="1.0" />
|
|
||||||
<color r="0.0" g="0.0" b="0.0" a="0.0" />
|
|
||||||
</colorMap>
|
|
|
@ -1,31 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<colorMap>
|
|
||||||
<color r="0.0" g="0.0" b="0.0" a="0.0" />
|
|
||||||
<color r="1.0" g="1.0" b="0.0" a="1.0" />
|
|
||||||
<color r="0.0" g="0.0" b="1.0" a="1.0" />
|
|
||||||
<color r="0.0" g="0.5" b="0.0" a="1.0" />
|
|
||||||
<color r="1.0" g="0.0" b="0.0" a="1.0" />
|
|
||||||
<color r="1.0" g="0.5" b="0.0" a="1.0" />
|
|
||||||
<color r="0.5" g="0.0" b="1.0" a="1.0" />
|
|
||||||
<color r="1.0" g="1.0" b="1.0" a="1.0" />
|
|
||||||
<color r="0.0" g="0.0" b="0.0" a="0.0" />
|
|
||||||
</colorMap>
|
|
|
@ -1,25 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<colorMap>
|
|
||||||
<color r="0.0" g="0.0" b="0.0" a="0.0" />
|
|
||||||
<color r="1.0" g="1.0" b="1.0" a="1.0" />
|
|
||||||
<color r="0.0" g="0.0" b="0.0" a="0.0" />
|
|
||||||
</colorMap>
|
|
|
@ -1,473 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<colorMap>
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.0000" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.0086" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.0170" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.0253" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.0334" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.0414" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.0492" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.0569" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.0645" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.0719" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.0792" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.0864" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.0934" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.1004" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.1072" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.1139" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.1206" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.1271" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.1335" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.1399" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.1461" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.1523" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.1584" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.1644" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.1703" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.1761" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.1818" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.1875" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.1931" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.1987" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.2041" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.2095" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.2148" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.2201" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.2253" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.2304" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.2355" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.2405" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.2455" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.2504" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.2553" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.2601" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.2648" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.2695" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.2742" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.2788" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.2833" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.2878" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.2923" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.2967" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3010" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3054" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3096" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3139" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3181" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3222" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3263" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3304" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3345" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3385" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3424" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3464" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3502" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3541" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3579" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3617" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3655" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3692" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3729" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3766" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3802" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3838" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3874" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3909" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3945" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.3979" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4014" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4048" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4082" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4116" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4150" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4183" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4216" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4249" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4281" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4314" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4346" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4378" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4409" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4440" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4472" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4502" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4533" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4564" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4594" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4624" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4654" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4683" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4713" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4742" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4771" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4800" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4829" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4857" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4886" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4914" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4942" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4969" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.4997" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5024" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5051" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5079" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5105" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5132" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5159" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5185" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5211" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5237" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5263" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5289" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5315" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5340" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5366" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5391" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5416" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5441" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5465" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5490" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5514" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5539" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5563" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5587" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5611" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5635" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5658" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5682" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5705" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5729" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5752" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5775" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5798" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5821" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5843" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5866" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5888" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5911" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5933" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5955" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5977" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.5999" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6021" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6042" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6064" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6085" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6107" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6128" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6149" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6170" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6191" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6212" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6232" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6253" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6274" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6294" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6314" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6335" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6355" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6375" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6395" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6415" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6435" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6454" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6474" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6493" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6513" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6532" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6551" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6571" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6590" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6609" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6628" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6646" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6665" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6684" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6702" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6721" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6739" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6758" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6776" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6794" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6812" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6830" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6848" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6866" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6884" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6902" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6920" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6937" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6955" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6972" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.6990" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7007" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7024" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7042" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7059" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7076" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7093" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7110" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7126" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7143" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7160" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7177" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7193" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7210" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7226" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7243" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7259" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7275" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7292" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7308" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7324" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7340" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7356" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7372" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7388" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7404" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7419" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7435" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7451" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7466" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7482" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7497" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7513" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7528" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7543" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7559" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7574" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7589" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7604" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7619" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7634" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7649" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7664" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7679" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7694" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7709" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7723" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7738" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7752" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7767" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7782" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7796" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7810" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7825" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7839" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7853" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7868" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7882" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7896" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7910" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7924" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7938" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7952" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7966" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7980" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.7993" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8007" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8021" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8035" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8048" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8062" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8075" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8089" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8102" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8116" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8129" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8142" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8156" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8169" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8182" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8195" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8209" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8222" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8235" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8248" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8261" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8274" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8287" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8299" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8312" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8325" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8338" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8351" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8363" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8376" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8388" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8401" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8414" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8426" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8439" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8451" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8463" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8476" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8488" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8500" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8513" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8525" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8537" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8549" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8561" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8573" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8585" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8597" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8609" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8621" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8633" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8645" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8657" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8669" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8681" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8692" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8704" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8716" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8727" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8739" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8751" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8762" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8774" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8785" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8797" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8808" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8820" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8831" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8842" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8854" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8865" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8876" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8887" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8899" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8910" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8921" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8932" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8943" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8954" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8965" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8976" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8987" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.8998" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9009" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9020" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9031" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9042" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9053" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9063" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9074" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9085" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9096" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9106" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9117" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9128" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9138" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9149" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9159" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9170" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9180" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9191" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9201" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9212" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9222" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9232" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9243" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9253" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9263" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9274" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9284" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9294" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9304" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9315" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9325" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9335" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9345" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9355" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9365" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9375" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9385" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9395" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9405" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9415" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9425" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9435" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9445" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9455" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9465" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9474" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9484" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9494" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9504" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9513" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9523" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9533" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9542" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9552" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9562" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9571" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9581" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9590" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9600" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9609" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9619" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9628" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9638" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9647" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9657" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9666" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9675" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9685" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9694" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9703" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9713" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9722" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9731" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9741" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9750" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9759" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9768" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9777" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9786" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9795" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9805" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9814" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9823" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9832" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9841" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9850" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9859" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9868" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9877" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9886" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9894" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9903" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9912" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9921" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9930" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9939" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9948" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9956" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9965" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9974" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9983" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="0.9991" />
|
|
||||||
<color r="1.0000" g="1.0000" b="1.0000" a="1.0000" />
|
|
||||||
</colorMap>
|
|
|
@ -1,622 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<colorMap>
|
|
||||||
<color r="0.000" g="0.000" b="0.000" a="0.000" />
|
|
||||||
<color r="0.996" g="0.496" b="0.996" a="1.000" />
|
|
||||||
<color r="0.992" g="0.492" b="0.992" a="1.000" />
|
|
||||||
<color r="0.988" g="0.488" b="0.988" a="1.000" />
|
|
||||||
<color r="0.984" g="0.484" b="0.984" a="1.000" />
|
|
||||||
<color r="0.980" g="0.480" b="0.980" a="1.000" />
|
|
||||||
<color r="0.976" g="0.476" b="0.976" a="1.000" />
|
|
||||||
<color r="0.972" g="0.472" b="0.972" a="1.000" />
|
|
||||||
<color r="0.968" g="0.468" b="0.968" a="1.000" />
|
|
||||||
<color r="0.964" g="0.464" b="0.964" a="1.000" />
|
|
||||||
<color r="0.960" g="0.460" b="0.960" a="1.000" />
|
|
||||||
<color r="0.956" g="0.456" b="0.956" a="1.000" />
|
|
||||||
<color r="0.952" g="0.452" b="0.952" a="1.000" />
|
|
||||||
<color r="0.948" g="0.448" b="0.948" a="1.000" />
|
|
||||||
<color r="0.944" g="0.444" b="0.944" a="1.000" />
|
|
||||||
<color r="0.940" g="0.440" b="0.940" a="1.000" />
|
|
||||||
<color r="0.936" g="0.436" b="0.936" a="1.000" />
|
|
||||||
<color r="0.932" g="0.432" b="0.932" a="1.000" />
|
|
||||||
<color r="0.928" g="0.428" b="0.928" a="1.000" />
|
|
||||||
<color r="0.924" g="0.424" b="0.924" a="1.000" />
|
|
||||||
<color r="0.920" g="0.420" b="0.920" a="1.000" />
|
|
||||||
<color r="0.916" g="0.416" b="0.916" a="1.000" />
|
|
||||||
<color r="0.912" g="0.412" b="0.912" a="1.000" />
|
|
||||||
<color r="0.908" g="0.408" b="0.908" a="1.000" />
|
|
||||||
<color r="0.904" g="0.404" b="0.904" a="1.000" />
|
|
||||||
<color r="0.900" g="0.400" b="0.900" a="1.000" />
|
|
||||||
<color r="0.896" g="0.396" b="0.896" a="1.000" />
|
|
||||||
<color r="0.892" g="0.392" b="0.892" a="1.000" />
|
|
||||||
<color r="0.888" g="0.388" b="0.888" a="1.000" />
|
|
||||||
<color r="0.884" g="0.384" b="0.884" a="1.000" />
|
|
||||||
<color r="0.880" g="0.380" b="0.880" a="1.000" />
|
|
||||||
<color r="0.876" g="0.376" b="0.876" a="1.000" />
|
|
||||||
<color r="0.872" g="0.372" b="0.872" a="1.000" />
|
|
||||||
<color r="0.868" g="0.368" b="0.868" a="1.000" />
|
|
||||||
<color r="0.864" g="0.364" b="0.864" a="1.000" />
|
|
||||||
<color r="0.860" g="0.360" b="0.860" a="1.000" />
|
|
||||||
<color r="0.856" g="0.356" b="0.856" a="1.000" />
|
|
||||||
<color r="0.852" g="0.352" b="0.852" a="1.000" />
|
|
||||||
<color r="0.848" g="0.348" b="0.848" a="1.000" />
|
|
||||||
<color r="0.844" g="0.344" b="0.844" a="1.000" />
|
|
||||||
<color r="0.840" g="0.340" b="0.840" a="1.000" />
|
|
||||||
<color r="0.836" g="0.336" b="0.836" a="1.000" />
|
|
||||||
<color r="0.832" g="0.332" b="0.832" a="1.000" />
|
|
||||||
<color r="0.828" g="0.328" b="0.828" a="1.000" />
|
|
||||||
<color r="0.824" g="0.324" b="0.824" a="1.000" />
|
|
||||||
<color r="0.820" g="0.320" b="0.820" a="1.000" />
|
|
||||||
<color r="0.816" g="0.316" b="0.816" a="1.000" />
|
|
||||||
<color r="0.812" g="0.312" b="0.812" a="1.000" />
|
|
||||||
<color r="0.808" g="0.308" b="0.808" a="1.000" />
|
|
||||||
<color r="0.804" g="0.304" b="0.804" a="1.000" />
|
|
||||||
<color r="0.800" g="0.300" b="0.800" a="1.000" />
|
|
||||||
<color r="0.796" g="0.296" b="0.796" a="1.000" />
|
|
||||||
<color r="0.792" g="0.292" b="0.792" a="1.000" />
|
|
||||||
<color r="0.788" g="0.288" b="0.788" a="1.000" />
|
|
||||||
<color r="0.784" g="0.284" b="0.784" a="1.000" />
|
|
||||||
<color r="0.780" g="0.280" b="0.780" a="1.000" />
|
|
||||||
<color r="0.776" g="0.276" b="0.776" a="1.000" />
|
|
||||||
<color r="0.772" g="0.272" b="0.772" a="1.000" />
|
|
||||||
<color r="0.768" g="0.268" b="0.768" a="1.000" />
|
|
||||||
<color r="0.764" g="0.264" b="0.764" a="1.000" />
|
|
||||||
<color r="0.760" g="0.260" b="0.760" a="1.000" />
|
|
||||||
<color r="0.756" g="0.256" b="0.756" a="1.000" />
|
|
||||||
<color r="0.752" g="0.252" b="0.752" a="1.000" />
|
|
||||||
<color r="0.748" g="0.248" b="0.748" a="1.000" />
|
|
||||||
<color r="0.744" g="0.244" b="0.744" a="1.000" />
|
|
||||||
<color r="0.740" g="0.240" b="0.740" a="1.000" />
|
|
||||||
<color r="0.736" g="0.236" b="0.736" a="1.000" />
|
|
||||||
<color r="0.732" g="0.232" b="0.732" a="1.000" />
|
|
||||||
<color r="0.728" g="0.228" b="0.728" a="1.000" />
|
|
||||||
<color r="0.724" g="0.224" b="0.724" a="1.000" />
|
|
||||||
<color r="0.720" g="0.220" b="0.720" a="1.000" />
|
|
||||||
<color r="0.716" g="0.216" b="0.716" a="1.000" />
|
|
||||||
<color r="0.712" g="0.212" b="0.712" a="1.000" />
|
|
||||||
<color r="0.708" g="0.208" b="0.708" a="1.000" />
|
|
||||||
<color r="0.704" g="0.204" b="0.704" a="1.000" />
|
|
||||||
<color r="0.700" g="0.200" b="0.700" a="1.000" />
|
|
||||||
<color r="0.696" g="0.196" b="0.696" a="1.000" />
|
|
||||||
<color r="0.692" g="0.192" b="0.692" a="1.000" />
|
|
||||||
<color r="0.688" g="0.188" b="0.688" a="1.000" />
|
|
||||||
<color r="0.684" g="0.184" b="0.684" a="1.000" />
|
|
||||||
<color r="0.680" g="0.180" b="0.680" a="1.000" />
|
|
||||||
<color r="0.676" g="0.176" b="0.676" a="1.000" />
|
|
||||||
<color r="0.672" g="0.172" b="0.672" a="1.000" />
|
|
||||||
<color r="0.668" g="0.168" b="0.668" a="1.000" />
|
|
||||||
<color r="0.664" g="0.164" b="0.664" a="1.000" />
|
|
||||||
<color r="0.660" g="0.160" b="0.660" a="1.000" />
|
|
||||||
<color r="0.656" g="0.156" b="0.656" a="1.000" />
|
|
||||||
<color r="0.652" g="0.152" b="0.652" a="1.000" />
|
|
||||||
<color r="0.648" g="0.148" b="0.648" a="1.000" />
|
|
||||||
<color r="0.644" g="0.144" b="0.644" a="1.000" />
|
|
||||||
<color r="0.640" g="0.140" b="0.640" a="1.000" />
|
|
||||||
<color r="0.636" g="0.136" b="0.636" a="1.000" />
|
|
||||||
<color r="0.632" g="0.132" b="0.632" a="1.000" />
|
|
||||||
<color r="0.628" g="0.128" b="0.628" a="1.000" />
|
|
||||||
<color r="0.624" g="0.124" b="0.624" a="1.000" />
|
|
||||||
<color r="0.620" g="0.120" b="0.620" a="1.000" />
|
|
||||||
<color r="0.616" g="0.116" b="0.616" a="1.000" />
|
|
||||||
<color r="0.612" g="0.112" b="0.612" a="1.000" />
|
|
||||||
<color r="0.608" g="0.108" b="0.608" a="1.000" />
|
|
||||||
<color r="0.604" g="0.104" b="0.604" a="1.000" />
|
|
||||||
<color r="0.500" g="0.800" b="1.000" a="1.000" />
|
|
||||||
<color r="0.496" g="0.796" b="0.996" a="1.000" />
|
|
||||||
<color r="0.492" g="0.792" b="0.992" a="1.000" />
|
|
||||||
<color r="0.488" g="0.788" b="0.988" a="1.000" />
|
|
||||||
<color r="0.484" g="0.784" b="0.984" a="1.000" />
|
|
||||||
<color r="0.480" g="0.780" b="0.980" a="1.000" />
|
|
||||||
<color r="0.476" g="0.776" b="0.976" a="1.000" />
|
|
||||||
<color r="0.472" g="0.772" b="0.972" a="1.000" />
|
|
||||||
<color r="0.468" g="0.768" b="0.968" a="1.000" />
|
|
||||||
<color r="0.464" g="0.764" b="0.964" a="1.000" />
|
|
||||||
<color r="0.460" g="0.760" b="0.960" a="1.000" />
|
|
||||||
<color r="0.456" g="0.756" b="0.956" a="1.000" />
|
|
||||||
<color r="0.452" g="0.752" b="0.952" a="1.000" />
|
|
||||||
<color r="0.448" g="0.748" b="0.948" a="1.000" />
|
|
||||||
<color r="0.444" g="0.744" b="0.944" a="1.000" />
|
|
||||||
<color r="0.440" g="0.740" b="0.940" a="1.000" />
|
|
||||||
<color r="0.436" g="0.736" b="0.936" a="1.000" />
|
|
||||||
<color r="0.432" g="0.732" b="0.932" a="1.000" />
|
|
||||||
<color r="0.428" g="0.728" b="0.928" a="1.000" />
|
|
||||||
<color r="0.424" g="0.724" b="0.924" a="1.000" />
|
|
||||||
<color r="0.420" g="0.720" b="0.920" a="1.000" />
|
|
||||||
<color r="0.416" g="0.716" b="0.916" a="1.000" />
|
|
||||||
<color r="0.412" g="0.712" b="0.912" a="1.000" />
|
|
||||||
<color r="0.408" g="0.708" b="0.908" a="1.000" />
|
|
||||||
<color r="0.404" g="0.704" b="0.904" a="1.000" />
|
|
||||||
<color r="0.400" g="0.700" b="0.900" a="1.000" />
|
|
||||||
<color r="0.396" g="0.696" b="0.896" a="1.000" />
|
|
||||||
<color r="0.392" g="0.692" b="0.892" a="1.000" />
|
|
||||||
<color r="0.388" g="0.688" b="0.888" a="1.000" />
|
|
||||||
<color r="0.384" g="0.684" b="0.884" a="1.000" />
|
|
||||||
<color r="0.380" g="0.680" b="0.880" a="1.000" />
|
|
||||||
<color r="0.376" g="0.676" b="0.876" a="1.000" />
|
|
||||||
<color r="0.372" g="0.672" b="0.872" a="1.000" />
|
|
||||||
<color r="0.368" g="0.668" b="0.868" a="1.000" />
|
|
||||||
<color r="0.364" g="0.664" b="0.864" a="1.000" />
|
|
||||||
<color r="0.360" g="0.660" b="0.860" a="1.000" />
|
|
||||||
<color r="0.356" g="0.656" b="0.856" a="1.000" />
|
|
||||||
<color r="0.352" g="0.652" b="0.852" a="1.000" />
|
|
||||||
<color r="0.348" g="0.648" b="0.848" a="1.000" />
|
|
||||||
<color r="0.344" g="0.644" b="0.844" a="1.000" />
|
|
||||||
<color r="0.340" g="0.640" b="0.840" a="1.000" />
|
|
||||||
<color r="0.336" g="0.636" b="0.836" a="1.000" />
|
|
||||||
<color r="0.332" g="0.632" b="0.832" a="1.000" />
|
|
||||||
<color r="0.328" g="0.628" b="0.828" a="1.000" />
|
|
||||||
<color r="0.324" g="0.624" b="0.824" a="1.000" />
|
|
||||||
<color r="0.320" g="0.620" b="0.820" a="1.000" />
|
|
||||||
<color r="0.316" g="0.616" b="0.816" a="1.000" />
|
|
||||||
<color r="0.312" g="0.612" b="0.812" a="1.000" />
|
|
||||||
<color r="0.308" g="0.608" b="0.808" a="1.000" />
|
|
||||||
<color r="0.304" g="0.604" b="0.804" a="1.000" />
|
|
||||||
<color r="0.300" g="0.600" b="0.800" a="1.000" />
|
|
||||||
<color r="0.296" g="0.596" b="0.796" a="1.000" />
|
|
||||||
<color r="0.292" g="0.592" b="0.792" a="1.000" />
|
|
||||||
<color r="0.288" g="0.588" b="0.788" a="1.000" />
|
|
||||||
<color r="0.284" g="0.584" b="0.784" a="1.000" />
|
|
||||||
<color r="0.280" g="0.580" b="0.780" a="1.000" />
|
|
||||||
<color r="0.276" g="0.576" b="0.776" a="1.000" />
|
|
||||||
<color r="0.272" g="0.572" b="0.772" a="1.000" />
|
|
||||||
<color r="0.268" g="0.568" b="0.768" a="1.000" />
|
|
||||||
<color r="0.264" g="0.564" b="0.764" a="1.000" />
|
|
||||||
<color r="0.260" g="0.560" b="0.760" a="1.000" />
|
|
||||||
<color r="0.256" g="0.556" b="0.756" a="1.000" />
|
|
||||||
<color r="0.252" g="0.552" b="0.752" a="1.000" />
|
|
||||||
<color r="0.248" g="0.548" b="0.748" a="1.000" />
|
|
||||||
<color r="0.244" g="0.544" b="0.744" a="1.000" />
|
|
||||||
<color r="0.240" g="0.540" b="0.740" a="1.000" />
|
|
||||||
<color r="0.236" g="0.536" b="0.736" a="1.000" />
|
|
||||||
<color r="0.232" g="0.532" b="0.732" a="1.000" />
|
|
||||||
<color r="0.228" g="0.528" b="0.728" a="1.000" />
|
|
||||||
<color r="0.224" g="0.524" b="0.724" a="1.000" />
|
|
||||||
<color r="0.220" g="0.520" b="0.720" a="1.000" />
|
|
||||||
<color r="0.216" g="0.516" b="0.716" a="1.000" />
|
|
||||||
<color r="0.212" g="0.512" b="0.712" a="1.000" />
|
|
||||||
<color r="0.208" g="0.508" b="0.708" a="1.000" />
|
|
||||||
<color r="0.204" g="0.504" b="0.704" a="1.000" />
|
|
||||||
<color r="0.200" g="0.500" b="0.700" a="1.000" />
|
|
||||||
<color r="0.196" g="0.496" b="0.696" a="1.000" />
|
|
||||||
<color r="0.192" g="0.492" b="0.692" a="1.000" />
|
|
||||||
<color r="0.188" g="0.488" b="0.688" a="1.000" />
|
|
||||||
<color r="0.184" g="0.484" b="0.684" a="1.000" />
|
|
||||||
<color r="0.180" g="0.480" b="0.680" a="1.000" />
|
|
||||||
<color r="0.176" g="0.476" b="0.676" a="1.000" />
|
|
||||||
<color r="0.172" g="0.472" b="0.672" a="1.000" />
|
|
||||||
<color r="0.168" g="0.468" b="0.668" a="1.000" />
|
|
||||||
<color r="0.164" g="0.464" b="0.664" a="1.000" />
|
|
||||||
<color r="0.160" g="0.460" b="0.660" a="1.000" />
|
|
||||||
<color r="0.156" g="0.456" b="0.656" a="1.000" />
|
|
||||||
<color r="0.152" g="0.452" b="0.652" a="1.000" />
|
|
||||||
<color r="0.148" g="0.448" b="0.648" a="1.000" />
|
|
||||||
<color r="0.144" g="0.444" b="0.644" a="1.000" />
|
|
||||||
<color r="0.140" g="0.440" b="0.640" a="1.000" />
|
|
||||||
<color r="0.136" g="0.436" b="0.636" a="1.000" />
|
|
||||||
<color r="0.132" g="0.432" b="0.632" a="1.000" />
|
|
||||||
<color r="0.128" g="0.428" b="0.628" a="1.000" />
|
|
||||||
<color r="0.124" g="0.424" b="0.624" a="1.000" />
|
|
||||||
<color r="0.120" g="0.420" b="0.620" a="1.000" />
|
|
||||||
<color r="0.116" g="0.416" b="0.616" a="1.000" />
|
|
||||||
<color r="0.112" g="0.412" b="0.612" a="1.000" />
|
|
||||||
<color r="0.108" g="0.408" b="0.608" a="1.000" />
|
|
||||||
<color r="0.104" g="0.404" b="0.604" a="1.000" />
|
|
||||||
<color r="0.500" g="1.000" b="0.500" a="1.000" />
|
|
||||||
<color r="0.496" g="0.996" b="0.496" a="1.000" />
|
|
||||||
<color r="0.492" g="0.992" b="0.492" a="1.000" />
|
|
||||||
<color r="0.488" g="0.988" b="0.488" a="1.000" />
|
|
||||||
<color r="0.484" g="0.984" b="0.484" a="1.000" />
|
|
||||||
<color r="0.480" g="0.980" b="0.480" a="1.000" />
|
|
||||||
<color r="0.476" g="0.976" b="0.476" a="1.000" />
|
|
||||||
<color r="0.472" g="0.972" b="0.472" a="1.000" />
|
|
||||||
<color r="0.468" g="0.968" b="0.468" a="1.000" />
|
|
||||||
<color r="0.464" g="0.964" b="0.464" a="1.000" />
|
|
||||||
<color r="0.460" g="0.960" b="0.460" a="1.000" />
|
|
||||||
<color r="0.456" g="0.956" b="0.456" a="1.000" />
|
|
||||||
<color r="0.452" g="0.952" b="0.452" a="1.000" />
|
|
||||||
<color r="0.448" g="0.948" b="0.448" a="1.000" />
|
|
||||||
<color r="0.444" g="0.944" b="0.444" a="1.000" />
|
|
||||||
<color r="0.440" g="0.940" b="0.440" a="1.000" />
|
|
||||||
<color r="0.436" g="0.936" b="0.436" a="1.000" />
|
|
||||||
<color r="0.432" g="0.932" b="0.432" a="1.000" />
|
|
||||||
<color r="0.428" g="0.928" b="0.428" a="1.000" />
|
|
||||||
<color r="0.424" g="0.924" b="0.424" a="1.000" />
|
|
||||||
<color r="0.420" g="0.920" b="0.420" a="1.000" />
|
|
||||||
<color r="0.416" g="0.916" b="0.416" a="1.000" />
|
|
||||||
<color r="0.412" g="0.912" b="0.412" a="1.000" />
|
|
||||||
<color r="0.408" g="0.908" b="0.408" a="1.000" />
|
|
||||||
<color r="0.404" g="0.904" b="0.404" a="1.000" />
|
|
||||||
<color r="0.400" g="0.900" b="0.400" a="1.000" />
|
|
||||||
<color r="0.396" g="0.896" b="0.396" a="1.000" />
|
|
||||||
<color r="0.392" g="0.892" b="0.392" a="1.000" />
|
|
||||||
<color r="0.388" g="0.888" b="0.388" a="1.000" />
|
|
||||||
<color r="0.384" g="0.884" b="0.384" a="1.000" />
|
|
||||||
<color r="0.380" g="0.880" b="0.380" a="1.000" />
|
|
||||||
<color r="0.376" g="0.876" b="0.376" a="1.000" />
|
|
||||||
<color r="0.372" g="0.872" b="0.372" a="1.000" />
|
|
||||||
<color r="0.368" g="0.868" b="0.368" a="1.000" />
|
|
||||||
<color r="0.364" g="0.864" b="0.364" a="1.000" />
|
|
||||||
<color r="0.360" g="0.860" b="0.360" a="1.000" />
|
|
||||||
<color r="0.356" g="0.856" b="0.356" a="1.000" />
|
|
||||||
<color r="0.352" g="0.852" b="0.352" a="1.000" />
|
|
||||||
<color r="0.348" g="0.848" b="0.348" a="1.000" />
|
|
||||||
<color r="0.344" g="0.844" b="0.344" a="1.000" />
|
|
||||||
<color r="0.340" g="0.840" b="0.340" a="1.000" />
|
|
||||||
<color r="0.336" g="0.836" b="0.336" a="1.000" />
|
|
||||||
<color r="0.332" g="0.832" b="0.332" a="1.000" />
|
|
||||||
<color r="0.328" g="0.828" b="0.328" a="1.000" />
|
|
||||||
<color r="0.324" g="0.824" b="0.324" a="1.000" />
|
|
||||||
<color r="0.320" g="0.820" b="0.320" a="1.000" />
|
|
||||||
<color r="0.316" g="0.816" b="0.316" a="1.000" />
|
|
||||||
<color r="0.312" g="0.812" b="0.312" a="1.000" />
|
|
||||||
<color r="0.308" g="0.808" b="0.308" a="1.000" />
|
|
||||||
<color r="0.304" g="0.804" b="0.304" a="1.000" />
|
|
||||||
<color r="0.300" g="0.800" b="0.300" a="1.000" />
|
|
||||||
<color r="0.296" g="0.796" b="0.296" a="1.000" />
|
|
||||||
<color r="0.292" g="0.792" b="0.292" a="1.000" />
|
|
||||||
<color r="0.288" g="0.788" b="0.288" a="1.000" />
|
|
||||||
<color r="0.284" g="0.784" b="0.284" a="1.000" />
|
|
||||||
<color r="0.280" g="0.780" b="0.280" a="1.000" />
|
|
||||||
<color r="0.276" g="0.776" b="0.276" a="1.000" />
|
|
||||||
<color r="0.272" g="0.772" b="0.272" a="1.000" />
|
|
||||||
<color r="0.268" g="0.768" b="0.268" a="1.000" />
|
|
||||||
<color r="0.264" g="0.764" b="0.264" a="1.000" />
|
|
||||||
<color r="0.260" g="0.760" b="0.260" a="1.000" />
|
|
||||||
<color r="0.256" g="0.756" b="0.256" a="1.000" />
|
|
||||||
<color r="0.252" g="0.752" b="0.252" a="1.000" />
|
|
||||||
<color r="0.248" g="0.748" b="0.248" a="1.000" />
|
|
||||||
<color r="0.244" g="0.744" b="0.244" a="1.000" />
|
|
||||||
<color r="0.240" g="0.740" b="0.240" a="1.000" />
|
|
||||||
<color r="0.236" g="0.736" b="0.236" a="1.000" />
|
|
||||||
<color r="0.232" g="0.732" b="0.232" a="1.000" />
|
|
||||||
<color r="0.228" g="0.728" b="0.228" a="1.000" />
|
|
||||||
<color r="0.224" g="0.724" b="0.224" a="1.000" />
|
|
||||||
<color r="0.220" g="0.720" b="0.220" a="1.000" />
|
|
||||||
<color r="0.216" g="0.716" b="0.216" a="1.000" />
|
|
||||||
<color r="0.212" g="0.712" b="0.212" a="1.000" />
|
|
||||||
<color r="0.208" g="0.708" b="0.208" a="1.000" />
|
|
||||||
<color r="0.204" g="0.704" b="0.204" a="1.000" />
|
|
||||||
<color r="0.200" g="0.700" b="0.200" a="1.000" />
|
|
||||||
<color r="0.196" g="0.696" b="0.196" a="1.000" />
|
|
||||||
<color r="0.192" g="0.692" b="0.192" a="1.000" />
|
|
||||||
<color r="0.188" g="0.688" b="0.188" a="1.000" />
|
|
||||||
<color r="0.184" g="0.684" b="0.184" a="1.000" />
|
|
||||||
<color r="0.180" g="0.680" b="0.180" a="1.000" />
|
|
||||||
<color r="0.176" g="0.676" b="0.176" a="1.000" />
|
|
||||||
<color r="0.172" g="0.672" b="0.172" a="1.000" />
|
|
||||||
<color r="0.168" g="0.668" b="0.168" a="1.000" />
|
|
||||||
<color r="0.164" g="0.664" b="0.164" a="1.000" />
|
|
||||||
<color r="0.160" g="0.660" b="0.160" a="1.000" />
|
|
||||||
<color r="0.156" g="0.656" b="0.156" a="1.000" />
|
|
||||||
<color r="0.152" g="0.652" b="0.152" a="1.000" />
|
|
||||||
<color r="0.148" g="0.648" b="0.148" a="1.000" />
|
|
||||||
<color r="0.144" g="0.644" b="0.144" a="1.000" />
|
|
||||||
<color r="0.140" g="0.640" b="0.140" a="1.000" />
|
|
||||||
<color r="0.136" g="0.636" b="0.136" a="1.000" />
|
|
||||||
<color r="0.132" g="0.632" b="0.132" a="1.000" />
|
|
||||||
<color r="0.128" g="0.628" b="0.128" a="1.000" />
|
|
||||||
<color r="0.124" g="0.624" b="0.124" a="1.000" />
|
|
||||||
<color r="0.120" g="0.620" b="0.120" a="1.000" />
|
|
||||||
<color r="0.116" g="0.616" b="0.116" a="1.000" />
|
|
||||||
<color r="0.112" g="0.612" b="0.112" a="1.000" />
|
|
||||||
<color r="0.108" g="0.608" b="0.108" a="1.000" />
|
|
||||||
<color r="0.104" g="0.604" b="0.104" a="1.000" />
|
|
||||||
<color r="1.000" g="1.000" b="0.500" a="1.000" />
|
|
||||||
<color r="0.996" g="0.996" b="0.496" a="1.000" />
|
|
||||||
<color r="0.992" g="0.992" b="0.492" a="1.000" />
|
|
||||||
<color r="0.988" g="0.988" b="0.488" a="1.000" />
|
|
||||||
<color r="0.984" g="0.984" b="0.484" a="1.000" />
|
|
||||||
<color r="0.980" g="0.980" b="0.480" a="1.000" />
|
|
||||||
<color r="0.976" g="0.976" b="0.476" a="1.000" />
|
|
||||||
<color r="0.972" g="0.972" b="0.472" a="1.000" />
|
|
||||||
<color r="0.968" g="0.968" b="0.468" a="1.000" />
|
|
||||||
<color r="0.964" g="0.964" b="0.464" a="1.000" />
|
|
||||||
<color r="0.960" g="0.960" b="0.460" a="1.000" />
|
|
||||||
<color r="0.956" g="0.956" b="0.456" a="1.000" />
|
|
||||||
<color r="0.952" g="0.952" b="0.452" a="1.000" />
|
|
||||||
<color r="0.948" g="0.948" b="0.448" a="1.000" />
|
|
||||||
<color r="0.944" g="0.944" b="0.444" a="1.000" />
|
|
||||||
<color r="0.940" g="0.940" b="0.440" a="1.000" />
|
|
||||||
<color r="0.936" g="0.936" b="0.436" a="1.000" />
|
|
||||||
<color r="0.932" g="0.932" b="0.432" a="1.000" />
|
|
||||||
<color r="0.928" g="0.928" b="0.428" a="1.000" />
|
|
||||||
<color r="0.924" g="0.924" b="0.424" a="1.000" />
|
|
||||||
<color r="0.920" g="0.920" b="0.420" a="1.000" />
|
|
||||||
<color r="0.916" g="0.916" b="0.416" a="1.000" />
|
|
||||||
<color r="0.912" g="0.912" b="0.412" a="1.000" />
|
|
||||||
<color r="0.908" g="0.908" b="0.408" a="1.000" />
|
|
||||||
<color r="0.904" g="0.904" b="0.404" a="1.000" />
|
|
||||||
<color r="0.900" g="0.900" b="0.400" a="1.000" />
|
|
||||||
<color r="0.896" g="0.896" b="0.396" a="1.000" />
|
|
||||||
<color r="0.892" g="0.892" b="0.392" a="1.000" />
|
|
||||||
<color r="0.888" g="0.888" b="0.388" a="1.000" />
|
|
||||||
<color r="0.884" g="0.884" b="0.384" a="1.000" />
|
|
||||||
<color r="0.880" g="0.880" b="0.380" a="1.000" />
|
|
||||||
<color r="0.876" g="0.876" b="0.376" a="1.000" />
|
|
||||||
<color r="0.872" g="0.872" b="0.372" a="1.000" />
|
|
||||||
<color r="0.868" g="0.868" b="0.368" a="1.000" />
|
|
||||||
<color r="0.864" g="0.864" b="0.364" a="1.000" />
|
|
||||||
<color r="0.860" g="0.860" b="0.360" a="1.000" />
|
|
||||||
<color r="0.856" g="0.856" b="0.356" a="1.000" />
|
|
||||||
<color r="0.852" g="0.852" b="0.352" a="1.000" />
|
|
||||||
<color r="0.848" g="0.848" b="0.348" a="1.000" />
|
|
||||||
<color r="0.844" g="0.844" b="0.344" a="1.000" />
|
|
||||||
<color r="0.840" g="0.840" b="0.340" a="1.000" />
|
|
||||||
<color r="0.836" g="0.836" b="0.336" a="1.000" />
|
|
||||||
<color r="0.832" g="0.832" b="0.332" a="1.000" />
|
|
||||||
<color r="0.828" g="0.828" b="0.328" a="1.000" />
|
|
||||||
<color r="0.824" g="0.824" b="0.324" a="1.000" />
|
|
||||||
<color r="0.820" g="0.820" b="0.320" a="1.000" />
|
|
||||||
<color r="0.816" g="0.816" b="0.316" a="1.000" />
|
|
||||||
<color r="0.812" g="0.812" b="0.312" a="1.000" />
|
|
||||||
<color r="0.808" g="0.808" b="0.308" a="1.000" />
|
|
||||||
<color r="0.804" g="0.804" b="0.304" a="1.000" />
|
|
||||||
<color r="0.800" g="0.800" b="0.300" a="1.000" />
|
|
||||||
<color r="0.796" g="0.796" b="0.296" a="1.000" />
|
|
||||||
<color r="0.792" g="0.792" b="0.292" a="1.000" />
|
|
||||||
<color r="0.788" g="0.788" b="0.288" a="1.000" />
|
|
||||||
<color r="0.784" g="0.784" b="0.284" a="1.000" />
|
|
||||||
<color r="0.780" g="0.780" b="0.280" a="1.000" />
|
|
||||||
<color r="0.776" g="0.776" b="0.276" a="1.000" />
|
|
||||||
<color r="0.772" g="0.772" b="0.272" a="1.000" />
|
|
||||||
<color r="0.768" g="0.768" b="0.268" a="1.000" />
|
|
||||||
<color r="0.764" g="0.764" b="0.264" a="1.000" />
|
|
||||||
<color r="0.760" g="0.760" b="0.260" a="1.000" />
|
|
||||||
<color r="0.756" g="0.756" b="0.256" a="1.000" />
|
|
||||||
<color r="0.752" g="0.752" b="0.252" a="1.000" />
|
|
||||||
<color r="0.748" g="0.748" b="0.248" a="1.000" />
|
|
||||||
<color r="0.744" g="0.744" b="0.244" a="1.000" />
|
|
||||||
<color r="0.740" g="0.740" b="0.240" a="1.000" />
|
|
||||||
<color r="0.736" g="0.736" b="0.236" a="1.000" />
|
|
||||||
<color r="0.732" g="0.732" b="0.232" a="1.000" />
|
|
||||||
<color r="0.728" g="0.728" b="0.228" a="1.000" />
|
|
||||||
<color r="0.724" g="0.724" b="0.224" a="1.000" />
|
|
||||||
<color r="0.720" g="0.720" b="0.220" a="1.000" />
|
|
||||||
<color r="0.716" g="0.716" b="0.216" a="1.000" />
|
|
||||||
<color r="0.712" g="0.712" b="0.212" a="1.000" />
|
|
||||||
<color r="0.708" g="0.708" b="0.208" a="1.000" />
|
|
||||||
<color r="0.704" g="0.704" b="0.204" a="1.000" />
|
|
||||||
<color r="0.700" g="0.700" b="0.200" a="1.000" />
|
|
||||||
<color r="0.696" g="0.696" b="0.196" a="1.000" />
|
|
||||||
<color r="0.692" g="0.692" b="0.192" a="1.000" />
|
|
||||||
<color r="0.688" g="0.688" b="0.188" a="1.000" />
|
|
||||||
<color r="0.684" g="0.684" b="0.184" a="1.000" />
|
|
||||||
<color r="0.680" g="0.680" b="0.180" a="1.000" />
|
|
||||||
<color r="0.676" g="0.676" b="0.176" a="1.000" />
|
|
||||||
<color r="0.672" g="0.672" b="0.172" a="1.000" />
|
|
||||||
<color r="0.668" g="0.668" b="0.168" a="1.000" />
|
|
||||||
<color r="0.664" g="0.664" b="0.164" a="1.000" />
|
|
||||||
<color r="0.660" g="0.660" b="0.160" a="1.000" />
|
|
||||||
<color r="0.656" g="0.656" b="0.156" a="1.000" />
|
|
||||||
<color r="0.652" g="0.652" b="0.152" a="1.000" />
|
|
||||||
<color r="0.648" g="0.648" b="0.148" a="1.000" />
|
|
||||||
<color r="0.644" g="0.644" b="0.144" a="1.000" />
|
|
||||||
<color r="0.640" g="0.640" b="0.140" a="1.000" />
|
|
||||||
<color r="0.636" g="0.636" b="0.136" a="1.000" />
|
|
||||||
<color r="0.632" g="0.632" b="0.132" a="1.000" />
|
|
||||||
<color r="0.628" g="0.628" b="0.128" a="1.000" />
|
|
||||||
<color r="0.624" g="0.624" b="0.124" a="1.000" />
|
|
||||||
<color r="0.620" g="0.620" b="0.120" a="1.000" />
|
|
||||||
<color r="0.616" g="0.616" b="0.116" a="1.000" />
|
|
||||||
<color r="0.612" g="0.612" b="0.112" a="1.000" />
|
|
||||||
<color r="0.608" g="0.608" b="0.108" a="1.000" />
|
|
||||||
<color r="0.604" g="0.604" b="0.104" a="1.000" />
|
|
||||||
<color r="1.000" g="0.800" b="0.500" a="1.000" />
|
|
||||||
<color r="0.996" g="0.796" b="0.496" a="1.000" />
|
|
||||||
<color r="0.992" g="0.792" b="0.492" a="1.000" />
|
|
||||||
<color r="0.988" g="0.788" b="0.488" a="1.000" />
|
|
||||||
<color r="0.984" g="0.784" b="0.484" a="1.000" />
|
|
||||||
<color r="0.980" g="0.780" b="0.480" a="1.000" />
|
|
||||||
<color r="0.976" g="0.776" b="0.476" a="1.000" />
|
|
||||||
<color r="0.972" g="0.772" b="0.472" a="1.000" />
|
|
||||||
<color r="0.968" g="0.768" b="0.468" a="1.000" />
|
|
||||||
<color r="0.964" g="0.764" b="0.464" a="1.000" />
|
|
||||||
<color r="0.960" g="0.760" b="0.460" a="1.000" />
|
|
||||||
<color r="0.956" g="0.756" b="0.456" a="1.000" />
|
|
||||||
<color r="0.952" g="0.752" b="0.452" a="1.000" />
|
|
||||||
<color r="0.948" g="0.748" b="0.448" a="1.000" />
|
|
||||||
<color r="0.944" g="0.744" b="0.444" a="1.000" />
|
|
||||||
<color r="0.940" g="0.740" b="0.440" a="1.000" />
|
|
||||||
<color r="0.936" g="0.736" b="0.436" a="1.000" />
|
|
||||||
<color r="0.932" g="0.732" b="0.432" a="1.000" />
|
|
||||||
<color r="0.928" g="0.728" b="0.428" a="1.000" />
|
|
||||||
<color r="0.924" g="0.724" b="0.424" a="1.000" />
|
|
||||||
<color r="0.920" g="0.720" b="0.420" a="1.000" />
|
|
||||||
<color r="0.916" g="0.716" b="0.416" a="1.000" />
|
|
||||||
<color r="0.912" g="0.712" b="0.412" a="1.000" />
|
|
||||||
<color r="0.908" g="0.708" b="0.408" a="1.000" />
|
|
||||||
<color r="0.904" g="0.704" b="0.404" a="1.000" />
|
|
||||||
<color r="0.900" g="0.700" b="0.400" a="1.000" />
|
|
||||||
<color r="0.896" g="0.696" b="0.396" a="1.000" />
|
|
||||||
<color r="0.892" g="0.692" b="0.392" a="1.000" />
|
|
||||||
<color r="0.888" g="0.688" b="0.388" a="1.000" />
|
|
||||||
<color r="0.884" g="0.684" b="0.384" a="1.000" />
|
|
||||||
<color r="0.880" g="0.680" b="0.380" a="1.000" />
|
|
||||||
<color r="0.876" g="0.676" b="0.376" a="1.000" />
|
|
||||||
<color r="0.872" g="0.672" b="0.372" a="1.000" />
|
|
||||||
<color r="0.868" g="0.668" b="0.368" a="1.000" />
|
|
||||||
<color r="0.864" g="0.664" b="0.364" a="1.000" />
|
|
||||||
<color r="0.860" g="0.660" b="0.360" a="1.000" />
|
|
||||||
<color r="0.856" g="0.656" b="0.356" a="1.000" />
|
|
||||||
<color r="0.852" g="0.652" b="0.352" a="1.000" />
|
|
||||||
<color r="0.848" g="0.648" b="0.348" a="1.000" />
|
|
||||||
<color r="0.844" g="0.644" b="0.344" a="1.000" />
|
|
||||||
<color r="0.840" g="0.640" b="0.340" a="1.000" />
|
|
||||||
<color r="0.836" g="0.636" b="0.336" a="1.000" />
|
|
||||||
<color r="0.832" g="0.632" b="0.332" a="1.000" />
|
|
||||||
<color r="0.828" g="0.628" b="0.328" a="1.000" />
|
|
||||||
<color r="0.824" g="0.624" b="0.324" a="1.000" />
|
|
||||||
<color r="0.820" g="0.620" b="0.320" a="1.000" />
|
|
||||||
<color r="0.816" g="0.616" b="0.316" a="1.000" />
|
|
||||||
<color r="0.812" g="0.612" b="0.312" a="1.000" />
|
|
||||||
<color r="0.808" g="0.608" b="0.308" a="1.000" />
|
|
||||||
<color r="0.804" g="0.604" b="0.304" a="1.000" />
|
|
||||||
<color r="0.800" g="0.600" b="0.300" a="1.000" />
|
|
||||||
<color r="0.796" g="0.596" b="0.296" a="1.000" />
|
|
||||||
<color r="0.792" g="0.592" b="0.292" a="1.000" />
|
|
||||||
<color r="0.788" g="0.588" b="0.288" a="1.000" />
|
|
||||||
<color r="0.784" g="0.584" b="0.284" a="1.000" />
|
|
||||||
<color r="0.780" g="0.580" b="0.280" a="1.000" />
|
|
||||||
<color r="0.776" g="0.576" b="0.276" a="1.000" />
|
|
||||||
<color r="0.772" g="0.572" b="0.272" a="1.000" />
|
|
||||||
<color r="0.768" g="0.568" b="0.268" a="1.000" />
|
|
||||||
<color r="0.764" g="0.564" b="0.264" a="1.000" />
|
|
||||||
<color r="0.760" g="0.560" b="0.260" a="1.000" />
|
|
||||||
<color r="0.756" g="0.556" b="0.256" a="1.000" />
|
|
||||||
<color r="0.752" g="0.552" b="0.252" a="1.000" />
|
|
||||||
<color r="0.748" g="0.548" b="0.248" a="1.000" />
|
|
||||||
<color r="0.744" g="0.544" b="0.244" a="1.000" />
|
|
||||||
<color r="0.740" g="0.540" b="0.240" a="1.000" />
|
|
||||||
<color r="0.736" g="0.536" b="0.236" a="1.000" />
|
|
||||||
<color r="0.732" g="0.532" b="0.232" a="1.000" />
|
|
||||||
<color r="0.728" g="0.528" b="0.228" a="1.000" />
|
|
||||||
<color r="0.724" g="0.524" b="0.224" a="1.000" />
|
|
||||||
<color r="0.720" g="0.520" b="0.220" a="1.000" />
|
|
||||||
<color r="0.716" g="0.516" b="0.216" a="1.000" />
|
|
||||||
<color r="0.712" g="0.512" b="0.212" a="1.000" />
|
|
||||||
<color r="0.708" g="0.508" b="0.208" a="1.000" />
|
|
||||||
<color r="0.704" g="0.504" b="0.204" a="1.000" />
|
|
||||||
<color r="0.700" g="0.500" b="0.200" a="1.000" />
|
|
||||||
<color r="0.696" g="0.496" b="0.196" a="1.000" />
|
|
||||||
<color r="0.692" g="0.492" b="0.192" a="1.000" />
|
|
||||||
<color r="0.688" g="0.488" b="0.188" a="1.000" />
|
|
||||||
<color r="0.684" g="0.484" b="0.184" a="1.000" />
|
|
||||||
<color r="0.680" g="0.480" b="0.180" a="1.000" />
|
|
||||||
<color r="0.676" g="0.476" b="0.176" a="1.000" />
|
|
||||||
<color r="0.672" g="0.472" b="0.172" a="1.000" />
|
|
||||||
<color r="0.668" g="0.468" b="0.168" a="1.000" />
|
|
||||||
<color r="0.664" g="0.464" b="0.164" a="1.000" />
|
|
||||||
<color r="0.660" g="0.460" b="0.160" a="1.000" />
|
|
||||||
<color r="0.656" g="0.456" b="0.156" a="1.000" />
|
|
||||||
<color r="0.652" g="0.452" b="0.152" a="1.000" />
|
|
||||||
<color r="0.648" g="0.448" b="0.148" a="1.000" />
|
|
||||||
<color r="0.644" g="0.444" b="0.144" a="1.000" />
|
|
||||||
<color r="0.640" g="0.440" b="0.140" a="1.000" />
|
|
||||||
<color r="0.636" g="0.436" b="0.136" a="1.000" />
|
|
||||||
<color r="0.632" g="0.432" b="0.132" a="1.000" />
|
|
||||||
<color r="0.628" g="0.428" b="0.128" a="1.000" />
|
|
||||||
<color r="0.624" g="0.424" b="0.124" a="1.000" />
|
|
||||||
<color r="0.620" g="0.420" b="0.120" a="1.000" />
|
|
||||||
<color r="0.616" g="0.416" b="0.116" a="1.000" />
|
|
||||||
<color r="0.612" g="0.412" b="0.112" a="1.000" />
|
|
||||||
<color r="0.608" g="0.408" b="0.108" a="1.000" />
|
|
||||||
<color r="0.604" g="0.404" b="0.104" a="1.000" />
|
|
||||||
<color r="1.000" g="0.500" b="0.500" a="1.000" />
|
|
||||||
<color r="0.996" g="0.496" b="0.496" a="1.000" />
|
|
||||||
<color r="0.992" g="0.492" b="0.492" a="1.000" />
|
|
||||||
<color r="0.988" g="0.488" b="0.488" a="1.000" />
|
|
||||||
<color r="0.984" g="0.484" b="0.484" a="1.000" />
|
|
||||||
<color r="0.980" g="0.480" b="0.480" a="1.000" />
|
|
||||||
<color r="0.976" g="0.476" b="0.476" a="1.000" />
|
|
||||||
<color r="0.972" g="0.472" b="0.472" a="1.000" />
|
|
||||||
<color r="0.968" g="0.468" b="0.468" a="1.000" />
|
|
||||||
<color r="0.964" g="0.464" b="0.464" a="1.000" />
|
|
||||||
<color r="0.960" g="0.460" b="0.460" a="1.000" />
|
|
||||||
<color r="0.956" g="0.456" b="0.456" a="1.000" />
|
|
||||||
<color r="0.952" g="0.452" b="0.452" a="1.000" />
|
|
||||||
<color r="0.948" g="0.448" b="0.448" a="1.000" />
|
|
||||||
<color r="0.944" g="0.444" b="0.444" a="1.000" />
|
|
||||||
<color r="0.940" g="0.440" b="0.440" a="1.000" />
|
|
||||||
<color r="0.936" g="0.436" b="0.436" a="1.000" />
|
|
||||||
<color r="0.932" g="0.432" b="0.432" a="1.000" />
|
|
||||||
<color r="0.928" g="0.428" b="0.428" a="1.000" />
|
|
||||||
<color r="0.924" g="0.424" b="0.424" a="1.000" />
|
|
||||||
<color r="0.920" g="0.420" b="0.420" a="1.000" />
|
|
||||||
<color r="0.916" g="0.416" b="0.416" a="1.000" />
|
|
||||||
<color r="0.912" g="0.412" b="0.412" a="1.000" />
|
|
||||||
<color r="0.908" g="0.408" b="0.408" a="1.000" />
|
|
||||||
<color r="0.904" g="0.404" b="0.404" a="1.000" />
|
|
||||||
<color r="0.900" g="0.400" b="0.400" a="1.000" />
|
|
||||||
<color r="0.896" g="0.396" b="0.396" a="1.000" />
|
|
||||||
<color r="0.892" g="0.392" b="0.392" a="1.000" />
|
|
||||||
<color r="0.888" g="0.388" b="0.388" a="1.000" />
|
|
||||||
<color r="0.884" g="0.384" b="0.384" a="1.000" />
|
|
||||||
<color r="0.880" g="0.380" b="0.380" a="1.000" />
|
|
||||||
<color r="0.876" g="0.376" b="0.376" a="1.000" />
|
|
||||||
<color r="0.872" g="0.372" b="0.372" a="1.000" />
|
|
||||||
<color r="0.868" g="0.368" b="0.368" a="1.000" />
|
|
||||||
<color r="0.864" g="0.364" b="0.364" a="1.000" />
|
|
||||||
<color r="0.860" g="0.360" b="0.360" a="1.000" />
|
|
||||||
<color r="0.856" g="0.356" b="0.356" a="1.000" />
|
|
||||||
<color r="0.852" g="0.352" b="0.352" a="1.000" />
|
|
||||||
<color r="0.848" g="0.348" b="0.348" a="1.000" />
|
|
||||||
<color r="0.844" g="0.344" b="0.344" a="1.000" />
|
|
||||||
<color r="0.840" g="0.340" b="0.340" a="1.000" />
|
|
||||||
<color r="0.836" g="0.336" b="0.336" a="1.000" />
|
|
||||||
<color r="0.832" g="0.332" b="0.332" a="1.000" />
|
|
||||||
<color r="0.828" g="0.328" b="0.328" a="1.000" />
|
|
||||||
<color r="0.824" g="0.324" b="0.324" a="1.000" />
|
|
||||||
<color r="0.820" g="0.320" b="0.320" a="1.000" />
|
|
||||||
<color r="0.816" g="0.316" b="0.316" a="1.000" />
|
|
||||||
<color r="0.812" g="0.312" b="0.312" a="1.000" />
|
|
||||||
<color r="0.808" g="0.308" b="0.308" a="1.000" />
|
|
||||||
<color r="0.804" g="0.304" b="0.304" a="1.000" />
|
|
||||||
<color r="0.800" g="0.300" b="0.300" a="1.000" />
|
|
||||||
<color r="0.796" g="0.296" b="0.296" a="1.000" />
|
|
||||||
<color r="0.792" g="0.292" b="0.292" a="1.000" />
|
|
||||||
<color r="0.788" g="0.288" b="0.288" a="1.000" />
|
|
||||||
<color r="0.784" g="0.284" b="0.284" a="1.000" />
|
|
||||||
<color r="0.780" g="0.280" b="0.280" a="1.000" />
|
|
||||||
<color r="0.776" g="0.276" b="0.276" a="1.000" />
|
|
||||||
<color r="0.772" g="0.272" b="0.272" a="1.000" />
|
|
||||||
<color r="0.768" g="0.268" b="0.268" a="1.000" />
|
|
||||||
<color r="0.764" g="0.264" b="0.264" a="1.000" />
|
|
||||||
<color r="0.760" g="0.260" b="0.260" a="1.000" />
|
|
||||||
<color r="0.756" g="0.256" b="0.256" a="1.000" />
|
|
||||||
<color r="0.752" g="0.252" b="0.252" a="1.000" />
|
|
||||||
<color r="0.748" g="0.248" b="0.248" a="1.000" />
|
|
||||||
<color r="0.744" g="0.244" b="0.244" a="1.000" />
|
|
||||||
<color r="0.740" g="0.240" b="0.240" a="1.000" />
|
|
||||||
<color r="0.736" g="0.236" b="0.236" a="1.000" />
|
|
||||||
<color r="0.732" g="0.232" b="0.232" a="1.000" />
|
|
||||||
<color r="0.728" g="0.228" b="0.228" a="1.000" />
|
|
||||||
<color r="0.724" g="0.224" b="0.224" a="1.000" />
|
|
||||||
<color r="0.720" g="0.220" b="0.220" a="1.000" />
|
|
||||||
<color r="0.716" g="0.216" b="0.216" a="1.000" />
|
|
||||||
<color r="0.712" g="0.212" b="0.212" a="1.000" />
|
|
||||||
<color r="0.708" g="0.208" b="0.208" a="1.000" />
|
|
||||||
<color r="0.704" g="0.204" b="0.204" a="1.000" />
|
|
||||||
<color r="0.700" g="0.200" b="0.200" a="1.000" />
|
|
||||||
<color r="0.696" g="0.196" b="0.196" a="1.000" />
|
|
||||||
<color r="0.692" g="0.192" b="0.192" a="1.000" />
|
|
||||||
<color r="0.688" g="0.188" b="0.188" a="1.000" />
|
|
||||||
<color r="0.684" g="0.184" b="0.184" a="1.000" />
|
|
||||||
<color r="0.680" g="0.180" b="0.180" a="1.000" />
|
|
||||||
<color r="0.676" g="0.176" b="0.176" a="1.000" />
|
|
||||||
<color r="0.672" g="0.172" b="0.172" a="1.000" />
|
|
||||||
<color r="0.668" g="0.168" b="0.168" a="1.000" />
|
|
||||||
<color r="0.664" g="0.164" b="0.164" a="1.000" />
|
|
||||||
<color r="0.660" g="0.160" b="0.160" a="1.000" />
|
|
||||||
<color r="0.656" g="0.156" b="0.156" a="1.000" />
|
|
||||||
<color r="0.652" g="0.152" b="0.152" a="1.000" />
|
|
||||||
<color r="0.648" g="0.148" b="0.148" a="1.000" />
|
|
||||||
<color r="0.644" g="0.144" b="0.144" a="1.000" />
|
|
||||||
<color r="0.640" g="0.140" b="0.140" a="1.000" />
|
|
||||||
<color r="0.636" g="0.136" b="0.136" a="1.000" />
|
|
||||||
<color r="0.632" g="0.132" b="0.132" a="1.000" />
|
|
||||||
<color r="0.628" g="0.128" b="0.128" a="1.000" />
|
|
||||||
<color r="0.624" g="0.124" b="0.124" a="1.000" />
|
|
||||||
<color r="0.620" g="0.120" b="0.120" a="1.000" />
|
|
||||||
<color r="0.616" g="0.116" b="0.116" a="1.000" />
|
|
||||||
<color r="0.612" g="0.112" b="0.112" a="1.000" />
|
|
||||||
<color r="0.608" g="0.108" b="0.108" a="1.000" />
|
|
||||||
<color r="0.604" g="0.104" b="0.104" a="1.000" />
|
|
||||||
</colorMap>
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,264 +0,0 @@
|
||||||
<?xml version="1.0" ?>
|
|
||||||
<colorMap>
|
|
||||||
<!-- Colormap converted by bsteffen from CIMSS_IR.ET which was provided by:
|
|
||||||
Timothy J. Schmit
|
|
||||||
NOAA/NESDIS Center for SaTellite Applications and Research (STAR)
|
|
||||||
Advanced Satellite Products Branch (ASPB)
|
|
||||||
-->
|
|
||||||
<color r="1.0" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.011764706" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.023529412" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.03529412" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.047058824" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.05882353" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.07058824" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.08235294" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.09411765" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.105882354" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.11764706" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.12941177" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.14117648" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.15294118" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.16078432" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.17254902" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.18431373" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.19607843" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.20784314" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.21960784" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.23137255" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.24313726" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.25490198" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.26666668" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.2784314" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.2901961" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.3019608" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.3137255" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.3254902" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.3372549" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.34901962" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.36078432" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.37254903" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.38431373" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.39607844" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.40784314" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.41960785" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.43137255" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.44313726" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.45490196" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.46666667" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.47843137" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.4862745" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.49803922" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.50980395" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.52156866" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.53333336" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.54509807" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.5568628" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.5686275" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.5803922" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.5921569" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.6039216" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.6156863" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.627451" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.6392157" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.6509804" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.6627451" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.6745098" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.6862745" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.69803923" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.70980394" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.72156864" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.73333335" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.74509805" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.75686276" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.76862746" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.78039217" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.7921569" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.8039216" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.8117647" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.8235294" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.8352941" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.84705883" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.85882354" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.87058824" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.88235295" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.89411765" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.90588236" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.91764706" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.92941177" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.9411765" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.9529412" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.9647059" b="0.0" a="1"></color>
|
|
||||||
<color r="0.9843137" g="0.9843137" b="0.015686275" a="1"></color>
|
|
||||||
<color r="0.972549" g="0.972549" b="0.02745098" a="1"></color>
|
|
||||||
<color r="0.9607843" g="0.9607843" b="0.039215688" a="1"></color>
|
|
||||||
<color r="0.9490196" g="0.9490196" b="0.050980393" a="1"></color>
|
|
||||||
<color r="0.9372549" g="0.9372549" b="0.0627451" a="1"></color>
|
|
||||||
<color r="0.9254902" g="0.9254902" b="0.07450981" a="1"></color>
|
|
||||||
<color r="0.9098039" g="0.9098039" b="0.09019608" a="1"></color>
|
|
||||||
<color r="0.8980392" g="0.8980392" b="0.101960786" a="1"></color>
|
|
||||||
<color r="0.8862745" g="0.8862745" b="0.11372549" a="1"></color>
|
|
||||||
<color r="0.8745098" g="0.8745098" b="0.1254902" a="1"></color>
|
|
||||||
<color r="0.8627451" g="0.8627451" b="0.13725491" a="1"></color>
|
|
||||||
<color r="0.8509804" g="0.8509804" b="0.14901961" a="1"></color>
|
|
||||||
<color r="0.8392157" g="0.8392157" b="0.16078432" a="1"></color>
|
|
||||||
<color r="0.827451" g="0.827451" b="0.17254902" a="1"></color>
|
|
||||||
<color r="0.8156863" g="0.8156863" b="0.18431373" a="1"></color>
|
|
||||||
<color r="0.8039216" g="0.8039216" b="0.19607843" a="1"></color>
|
|
||||||
<color r="0.7882353" g="0.7882353" b="0.21176471" a="1"></color>
|
|
||||||
<color r="0.7764706" g="0.7764706" b="0.22352941" a="1"></color>
|
|
||||||
<color r="0.7647059" g="0.7647059" b="0.23529412" a="1"></color>
|
|
||||||
<color r="0.7529412" g="0.7529412" b="0.24705882" a="1"></color>
|
|
||||||
<color r="0.7411765" g="0.7411765" b="0.25882354" a="1"></color>
|
|
||||||
<color r="0.7294118" g="0.7294118" b="0.27058825" a="1"></color>
|
|
||||||
<color r="0.7176471" g="0.7176471" b="0.28235295" a="1"></color>
|
|
||||||
<color r="0.7058824" g="0.7058824" b="0.29411766" a="1"></color>
|
|
||||||
<color r="0.69411767" g="0.69411767" b="0.30588236" a="1"></color>
|
|
||||||
<color r="0.68235296" g="0.68235296" b="0.31764707" a="1"></color>
|
|
||||||
<color r="0.6666667" g="0.6666667" b="0.33333334" a="1"></color>
|
|
||||||
<color r="0.654902" g="0.654902" b="0.34509805" a="1"></color>
|
|
||||||
<color r="0.6431373" g="0.6431373" b="0.35686275" a="1"></color>
|
|
||||||
<color r="0.6313726" g="0.6313726" b="0.36862746" a="1"></color>
|
|
||||||
<color r="0.61960787" g="0.61960787" b="0.38039216" a="1"></color>
|
|
||||||
<color r="0.60784316" g="0.60784316" b="0.39215687" a="1"></color>
|
|
||||||
<color r="0.59607846" g="0.59607846" b="0.40392157" a="1"></color>
|
|
||||||
<color r="0.58431375" g="0.58431375" b="0.41568628" a="1"></color>
|
|
||||||
<color r="0.57254905" g="0.57254905" b="0.42745098" a="1"></color>
|
|
||||||
<color r="0.56078434" g="0.56078434" b="0.4392157" a="1"></color>
|
|
||||||
<color r="0.54509807" g="0.54509807" b="0.45490196" a="1"></color>
|
|
||||||
<color r="0.53333336" g="0.53333336" b="0.46666667" a="1"></color>
|
|
||||||
<color r="0.52156866" g="0.52156866" b="0.47843137" a="1"></color>
|
|
||||||
<color r="0.50980395" g="0.50980395" b="0.49019608" a="1"></color>
|
|
||||||
<color r="0.49803922" g="0.49803922" b="0.5019608" a="1"></color>
|
|
||||||
<color r="0.4862745" g="0.4862745" b="0.5137255" a="1"></color>
|
|
||||||
<color r="0.4745098" g="0.4745098" b="0.5254902" a="1"></color>
|
|
||||||
<color r="0.4627451" g="0.4627451" b="0.5372549" a="1"></color>
|
|
||||||
<color r="0.4509804" g="0.4509804" b="0.54901963" a="1"></color>
|
|
||||||
<color r="0.4392157" g="0.4392157" b="0.56078434" a="1"></color>
|
|
||||||
<color r="0.42352942" g="0.42352942" b="0.5764706" a="1"></color>
|
|
||||||
<color r="0.4117647" g="0.4117647" b="0.5882353" a="1"></color>
|
|
||||||
<color r="0.4" g="0.4" b="0.6" a="1"></color>
|
|
||||||
<color r="0.3882353" g="0.3882353" b="0.6117647" a="1"></color>
|
|
||||||
<color r="0.3764706" g="0.3764706" b="0.62352943" a="1"></color>
|
|
||||||
<color r="0.3647059" g="0.3647059" b="0.63529414" a="1"></color>
|
|
||||||
<color r="0.3529412" g="0.3529412" b="0.64705884" a="1"></color>
|
|
||||||
<color r="0.34117648" g="0.34117648" b="0.65882355" a="1"></color>
|
|
||||||
<color r="0.32941177" g="0.32941177" b="0.67058825" a="1"></color>
|
|
||||||
<color r="0.31764707" g="0.31764707" b="0.68235296" a="1"></color>
|
|
||||||
<color r="0.3019608" g="0.3019608" b="0.69803923" a="1"></color>
|
|
||||||
<color r="0.2901961" g="0.2901961" b="0.70980394" a="1"></color>
|
|
||||||
<color r="0.2784314" g="0.2784314" b="0.72156864" a="1"></color>
|
|
||||||
<color r="0.26666668" g="0.26666668" b="0.73333335" a="1"></color>
|
|
||||||
<color r="0.25490198" g="0.25490198" b="0.74509805" a="1"></color>
|
|
||||||
<color r="0.24313726" g="0.24313726" b="0.75686276" a="1"></color>
|
|
||||||
<color r="0.23137255" g="0.23137255" b="0.76862746" a="1"></color>
|
|
||||||
<color r="0.21960784" g="0.21960784" b="0.78039217" a="1"></color>
|
|
||||||
<color r="0.20784314" g="0.20784314" b="0.7921569" a="1"></color>
|
|
||||||
<color r="0.19607843" g="0.19607843" b="0.8039216" a="1"></color>
|
|
||||||
<color r="0.18039216" g="0.18039216" b="0.81960785" a="1"></color>
|
|
||||||
<color r="0.16862746" g="0.16862746" b="0.83137256" a="1"></color>
|
|
||||||
<color r="0.15686275" g="0.15686275" b="0.84313726" a="1"></color>
|
|
||||||
<color r="0.14509805" g="0.14509805" b="0.85490197" a="1"></color>
|
|
||||||
<color r="0.13333334" g="0.13333334" b="0.8666667" a="1"></color>
|
|
||||||
<color r="0.12156863" g="0.12156863" b="0.8784314" a="1"></color>
|
|
||||||
<color r="0.10980392" g="0.10980392" b="0.8901961" a="1"></color>
|
|
||||||
<color r="0.09803922" g="0.09803922" b="0.9019608" a="1"></color>
|
|
||||||
<color r="0.08627451" g="0.08627451" b="0.9137255" a="1"></color>
|
|
||||||
<color r="0.07450981" g="0.07450981" b="0.9254902" a="1"></color>
|
|
||||||
<color r="0.05882353" g="0.05882353" b="0.9411765" a="1"></color>
|
|
||||||
<color r="0.047058824" g="0.047058824" b="0.9529412" a="1"></color>
|
|
||||||
<color r="0.03529412" g="0.03529412" b="0.9647059" a="1"></color>
|
|
||||||
<color r="0.023529412" g="0.023529412" b="0.9764706" a="1"></color>
|
|
||||||
<color r="0.011764706" g="0.011764706" b="0.9882353" a="1"></color>
|
|
||||||
<color r="0.0" g="0.0" b="1.0" a="1"></color>
|
|
||||||
<color r="0.039215688" g="0.039215688" b="1.0" a="1"></color>
|
|
||||||
<color r="0.078431375" g="0.078431375" b="1.0" a="1"></color>
|
|
||||||
<color r="0.11372549" g="0.11372549" b="1.0" a="1"></color>
|
|
||||||
<color r="0.15294118" g="0.15294118" b="1.0" a="1"></color>
|
|
||||||
<color r="0.19215687" g="0.19215687" b="1.0" a="1"></color>
|
|
||||||
<color r="0.23137255" g="0.23137255" b="1.0" a="1"></color>
|
|
||||||
<color r="0.27058825" g="0.27058825" b="1.0" a="1"></color>
|
|
||||||
<color r="0.30588236" g="0.30588236" b="1.0" a="1"></color>
|
|
||||||
<color r="0.34509805" g="0.34509805" b="1.0" a="1"></color>
|
|
||||||
<color r="0.38431373" g="0.38431373" b="1.0" a="1"></color>
|
|
||||||
<color r="0.42352942" g="0.42352942" b="1.0" a="1"></color>
|
|
||||||
<color r="0.4627451" g="0.4627451" b="1.0" a="1"></color>
|
|
||||||
<color r="0.5019608" g="0.5019608" b="1.0" a="1"></color>
|
|
||||||
<color r="0.5372549" g="0.5372549" b="1.0" a="1"></color>
|
|
||||||
<color r="0.5764706" g="0.5764706" b="1.0" a="1"></color>
|
|
||||||
<color r="0.6156863" g="0.6156863" b="1.0" a="1"></color>
|
|
||||||
<color r="0.654902" g="0.654902" b="1.0" a="1"></color>
|
|
||||||
<color r="0.69411767" g="0.69411767" b="1.0" a="1"></color>
|
|
||||||
<color r="0.7294118" g="0.7294118" b="1.0" a="1"></color>
|
|
||||||
<color r="0.76862746" g="0.76862746" b="1.0" a="1"></color>
|
|
||||||
<color r="0.80784315" g="0.80784315" b="1.0" a="1"></color>
|
|
||||||
<color r="0.84705883" g="0.84705883" b="1.0" a="1"></color>
|
|
||||||
<color r="0.8862745" g="0.8862745" b="1.0" a="1"></color>
|
|
||||||
<color r="0.92156863" g="0.92156863" b="1.0" a="1"></color>
|
|
||||||
<color r="0.9607843" g="0.9607843" b="1.0" a="1"></color>
|
|
||||||
<color r="1.0" g="1.0" b="1.0" a="1"></color>
|
|
||||||
<color r="0.96862745" g="0.96862745" b="0.96862745" a="1"></color>
|
|
||||||
<color r="0.9529412" g="0.9529412" b="0.9529412" a="1"></color>
|
|
||||||
<color r="0.9372549" g="0.9372549" b="0.9372549" a="1"></color>
|
|
||||||
<color r="0.92156863" g="0.92156863" b="0.92156863" a="1"></color>
|
|
||||||
<color r="0.9098039" g="0.9098039" b="0.9098039" a="1"></color>
|
|
||||||
<color r="0.89411765" g="0.89411765" b="0.89411765" a="1"></color>
|
|
||||||
<color r="0.8784314" g="0.8784314" b="0.8784314" a="1"></color>
|
|
||||||
<color r="0.8627451" g="0.8627451" b="0.8627451" a="1"></color>
|
|
||||||
<color r="0.84705883" g="0.84705883" b="0.84705883" a="1"></color>
|
|
||||||
<color r="0.83137256" g="0.83137256" b="0.83137256" a="1"></color>
|
|
||||||
<color r="0.8156863" g="0.8156863" b="0.8156863" a="1"></color>
|
|
||||||
<color r="0.8039216" g="0.8039216" b="0.8039216" a="1"></color>
|
|
||||||
<color r="0.7882353" g="0.7882353" b="0.7882353" a="1"></color>
|
|
||||||
<color r="0.77254903" g="0.77254903" b="0.77254903" a="1"></color>
|
|
||||||
<color r="0.75686276" g="0.75686276" b="0.75686276" a="1"></color>
|
|
||||||
<color r="0.7411765" g="0.7411765" b="0.7411765" a="1"></color>
|
|
||||||
<color r="0.7254902" g="0.7254902" b="0.7254902" a="1"></color>
|
|
||||||
<color r="0.70980394" g="0.70980394" b="0.70980394" a="1"></color>
|
|
||||||
<color r="0.69803923" g="0.69803923" b="0.69803923" a="1"></color>
|
|
||||||
<color r="0.68235296" g="0.68235296" b="0.68235296" a="1"></color>
|
|
||||||
<color r="0.6666667" g="0.6666667" b="0.6666667" a="1"></color>
|
|
||||||
<color r="0.6509804" g="0.6509804" b="0.6509804" a="1"></color>
|
|
||||||
<color r="0.63529414" g="0.63529414" b="0.63529414" a="1"></color>
|
|
||||||
<color r="0.61960787" g="0.61960787" b="0.61960787" a="1"></color>
|
|
||||||
<color r="0.6039216" g="0.6039216" b="0.6039216" a="1"></color>
|
|
||||||
<color r="0.5921569" g="0.5921569" b="0.5921569" a="1"></color>
|
|
||||||
<color r="0.5764706" g="0.5764706" b="0.5764706" a="1"></color>
|
|
||||||
<color r="0.56078434" g="0.56078434" b="0.56078434" a="1"></color>
|
|
||||||
<color r="0.54509807" g="0.54509807" b="0.54509807" a="1"></color>
|
|
||||||
<color r="0.5294118" g="0.5294118" b="0.5294118" a="1"></color>
|
|
||||||
<color r="0.5137255" g="0.5137255" b="0.5137255" a="1"></color>
|
|
||||||
<color r="0.5019608" g="0.5019608" b="0.5019608" a="1"></color>
|
|
||||||
<color r="0.4862745" g="0.4862745" b="0.4862745" a="1"></color>
|
|
||||||
<color r="0.47058824" g="0.47058824" b="0.47058824" a="1"></color>
|
|
||||||
<color r="0.45490196" g="0.45490196" b="0.45490196" a="1"></color>
|
|
||||||
<color r="0.4392157" g="0.4392157" b="0.4392157" a="1"></color>
|
|
||||||
<color r="0.42352942" g="0.42352942" b="0.42352942" a="1"></color>
|
|
||||||
<color r="0.40784314" g="0.40784314" b="0.40784314" a="1"></color>
|
|
||||||
<color r="0.39607844" g="0.39607844" b="0.39607844" a="1"></color>
|
|
||||||
<color r="0.38039216" g="0.38039216" b="0.38039216" a="1"></color>
|
|
||||||
<color r="0.3647059" g="0.3647059" b="0.3647059" a="1"></color>
|
|
||||||
<color r="0.34901962" g="0.34901962" b="0.34901962" a="1"></color>
|
|
||||||
<color r="0.33333334" g="0.33333334" b="0.33333334" a="1"></color>
|
|
||||||
<color r="0.31764707" g="0.31764707" b="0.31764707" a="1"></color>
|
|
||||||
<color r="0.3019608" g="0.3019608" b="0.3019608" a="1"></color>
|
|
||||||
<color r="0.2901961" g="0.2901961" b="0.2901961" a="1"></color>
|
|
||||||
<color r="0.27450982" g="0.27450982" b="0.27450982" a="1"></color>
|
|
||||||
<color r="0.25882354" g="0.25882354" b="0.25882354" a="1"></color>
|
|
||||||
<color r="0.24313726" g="0.24313726" b="0.24313726" a="1"></color>
|
|
||||||
<color r="0.22745098" g="0.22745098" b="0.22745098" a="1"></color>
|
|
||||||
<color r="0.21176471" g="0.21176471" b="0.21176471" a="1"></color>
|
|
||||||
<color r="0.19607843" g="0.19607843" b="0.19607843" a="1"></color>
|
|
||||||
<color r="0.18431373" g="0.18431373" b="0.18431373" a="1"></color>
|
|
||||||
<color r="0.16862746" g="0.16862746" b="0.16862746" a="1"></color>
|
|
||||||
<color r="0.15294118" g="0.15294118" b="0.15294118" a="1"></color>
|
|
||||||
<color r="0.13725491" g="0.13725491" b="0.13725491" a="1"></color>
|
|
||||||
<color r="0.12156863" g="0.12156863" b="0.12156863" a="1"></color>
|
|
||||||
<color r="0.105882354" g="0.105882354" b="0.105882354" a="1"></color>
|
|
||||||
<color r="0.09019608" g="0.09019608" b="0.09019608" a="1"></color>
|
|
||||||
<color r="0.078431375" g="0.078431375" b="0.078431375" a="1"></color>
|
|
||||||
<color r="0.0627451" g="0.0627451" b="0.0627451" a="1"></color>
|
|
||||||
<color r="0.047058824" g="0.047058824" b="0.047058824" a="1"></color>
|
|
||||||
<color r="0.03137255" g="0.03137255" b="0.03137255" a="1"></color>
|
|
||||||
<color r="1.0" g="1.0" b="1.0" a="1"></color>
|
|
||||||
</colorMap>
|
|
|
@ -1,264 +0,0 @@
|
||||||
<?xml version="1.0" ?>
|
|
||||||
<colorMap>
|
|
||||||
<!-- Colormap converted by bsteffen from CIMSS_WV.ET which was provided by:
|
|
||||||
Timothy J. Schmit
|
|
||||||
NOAA/NESDIS Center for SaTellite Applications and Research (STAR)
|
|
||||||
Advanced Satellite Products Branch (ASPB)
|
|
||||||
-->
|
|
||||||
<color r="0.0" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.0" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.0" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.0" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.0" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.019607844" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.039215688" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.05882353" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.078431375" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.101960786" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.12156863" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.14117648" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.16078432" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.18039216" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.2" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.21960784" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.23921569" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.25882354" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.2784314" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.3019608" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.32156864" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.34117648" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.36078432" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.38039216" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.4" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.41960785" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.4392157" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.45882353" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.47843137" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.49803922" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.52156866" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.5411765" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.56078434" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.5803922" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.6" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.61960787" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.6392157" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.65882355" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.6784314" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.7019608" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.72156864" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.7411765" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.7607843" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.78039217" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.8" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.81960785" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.8392157" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.85882354" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.8784314" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.8980392" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.92156863" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.9411765" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.9607843" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.98039216" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.0" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.023529412" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.050980393" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.07450981" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.101960786" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.1254902" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.14901961" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.1764706" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.2" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.22352941" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.2509804" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.27450982" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.3019608" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.3254902" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.34901962" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.3764706" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.4" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.42352942" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.4509804" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.4745098" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.5019608" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.5254902" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.54901963" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.5764706" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.6" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.62352943" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.6509804" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.6745098" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.7019608" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.7254902" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.7490196" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.7764706" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.8" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.8235294" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.8509804" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.8745098" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.9019608" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.9254902" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.9490196" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="0.9764706" b="0.0" a="1"></color>
|
|
||||||
<color r="1.0" g="1.0" b="0.0" a="1"></color>
|
|
||||||
<color r="0.9843137" g="0.9843137" b="0.015686275" a="1"></color>
|
|
||||||
<color r="0.972549" g="0.972549" b="0.02745098" a="1"></color>
|
|
||||||
<color r="0.95686275" g="0.95686275" b="0.043137256" a="1"></color>
|
|
||||||
<color r="0.94509804" g="0.94509804" b="0.05490196" a="1"></color>
|
|
||||||
<color r="0.92941177" g="0.92941177" b="0.07058824" a="1"></color>
|
|
||||||
<color r="0.91764706" g="0.91764706" b="0.08235294" a="1"></color>
|
|
||||||
<color r="0.9019608" g="0.9019608" b="0.09803922" a="1"></color>
|
|
||||||
<color r="0.8901961" g="0.8901961" b="0.10980392" a="1"></color>
|
|
||||||
<color r="0.8745098" g="0.8745098" b="0.1254902" a="1"></color>
|
|
||||||
<color r="0.8627451" g="0.8627451" b="0.13725491" a="1"></color>
|
|
||||||
<color r="0.84705883" g="0.84705883" b="0.15294118" a="1"></color>
|
|
||||||
<color r="0.8352941" g="0.8352941" b="0.16862746" a="1"></color>
|
|
||||||
<color r="0.81960785" g="0.81960785" b="0.18039216" a="1"></color>
|
|
||||||
<color r="0.8039216" g="0.8039216" b="0.19607843" a="1"></color>
|
|
||||||
<color r="0.7921569" g="0.7921569" b="0.20784314" a="1"></color>
|
|
||||||
<color r="0.7764706" g="0.7764706" b="0.22352941" a="1"></color>
|
|
||||||
<color r="0.7647059" g="0.7647059" b="0.23529412" a="1"></color>
|
|
||||||
<color r="0.7490196" g="0.7490196" b="0.2509804" a="1"></color>
|
|
||||||
<color r="0.7372549" g="0.7372549" b="0.2627451" a="1"></color>
|
|
||||||
<color r="0.72156864" g="0.72156864" b="0.2784314" a="1"></color>
|
|
||||||
<color r="0.70980394" g="0.70980394" b="0.2901961" a="1"></color>
|
|
||||||
<color r="0.69411767" g="0.69411767" b="0.30588236" a="1"></color>
|
|
||||||
<color r="0.68235296" g="0.68235296" b="0.31764707" a="1"></color>
|
|
||||||
<color r="0.6666667" g="0.6666667" b="0.33333334" a="1"></color>
|
|
||||||
<color r="0.6509804" g="0.6509804" b="0.34901962" a="1"></color>
|
|
||||||
<color r="0.6392157" g="0.6392157" b="0.36078432" a="1"></color>
|
|
||||||
<color r="0.62352943" g="0.62352943" b="0.3764706" a="1"></color>
|
|
||||||
<color r="0.6117647" g="0.6117647" b="0.3882353" a="1"></color>
|
|
||||||
<color r="0.59607846" g="0.59607846" b="0.40392157" a="1"></color>
|
|
||||||
<color r="0.58431375" g="0.58431375" b="0.41568628" a="1"></color>
|
|
||||||
<color r="0.5686275" g="0.5686275" b="0.43137255" a="1"></color>
|
|
||||||
<color r="0.5568628" g="0.5568628" b="0.44313726" a="1"></color>
|
|
||||||
<color r="0.5411765" g="0.5411765" b="0.45882353" a="1"></color>
|
|
||||||
<color r="0.5294118" g="0.5294118" b="0.47058824" a="1"></color>
|
|
||||||
<color r="0.5137255" g="0.5137255" b="0.4862745" a="1"></color>
|
|
||||||
<color r="0.5019608" g="0.5019608" b="0.5019608" a="1"></color>
|
|
||||||
<color r="0.4862745" g="0.4862745" b="0.5137255" a="1"></color>
|
|
||||||
<color r="0.47058824" g="0.47058824" b="0.5294118" a="1"></color>
|
|
||||||
<color r="0.45882353" g="0.45882353" b="0.5411765" a="1"></color>
|
|
||||||
<color r="0.44313726" g="0.44313726" b="0.5568628" a="1"></color>
|
|
||||||
<color r="0.43137255" g="0.43137255" b="0.5686275" a="1"></color>
|
|
||||||
<color r="0.41568628" g="0.41568628" b="0.58431375" a="1"></color>
|
|
||||||
<color r="0.40392157" g="0.40392157" b="0.59607846" a="1"></color>
|
|
||||||
<color r="0.3882353" g="0.3882353" b="0.6117647" a="1"></color>
|
|
||||||
<color r="0.3764706" g="0.3764706" b="0.62352943" a="1"></color>
|
|
||||||
<color r="0.36078432" g="0.36078432" b="0.6392157" a="1"></color>
|
|
||||||
<color r="0.34901962" g="0.34901962" b="0.6509804" a="1"></color>
|
|
||||||
<color r="0.33333334" g="0.33333334" b="0.6666667" a="1"></color>
|
|
||||||
<color r="0.31764707" g="0.31764707" b="0.68235296" a="1"></color>
|
|
||||||
<color r="0.30588236" g="0.30588236" b="0.69411767" a="1"></color>
|
|
||||||
<color r="0.2901961" g="0.2901961" b="0.70980394" a="1"></color>
|
|
||||||
<color r="0.2784314" g="0.2784314" b="0.72156864" a="1"></color>
|
|
||||||
<color r="0.2627451" g="0.2627451" b="0.7372549" a="1"></color>
|
|
||||||
<color r="0.2509804" g="0.2509804" b="0.7490196" a="1"></color>
|
|
||||||
<color r="0.23529412" g="0.23529412" b="0.7647059" a="1"></color>
|
|
||||||
<color r="0.22352941" g="0.22352941" b="0.7764706" a="1"></color>
|
|
||||||
<color r="0.20784314" g="0.20784314" b="0.7921569" a="1"></color>
|
|
||||||
<color r="0.19607843" g="0.19607843" b="0.8039216" a="1"></color>
|
|
||||||
<color r="0.18039216" g="0.18039216" b="0.81960785" a="1"></color>
|
|
||||||
<color r="0.16862746" g="0.16862746" b="0.8352941" a="1"></color>
|
|
||||||
<color r="0.15294118" g="0.15294118" b="0.84705883" a="1"></color>
|
|
||||||
<color r="0.13725491" g="0.13725491" b="0.8627451" a="1"></color>
|
|
||||||
<color r="0.1254902" g="0.1254902" b="0.8745098" a="1"></color>
|
|
||||||
<color r="0.10980392" g="0.10980392" b="0.8901961" a="1"></color>
|
|
||||||
<color r="0.09803922" g="0.09803922" b="0.9019608" a="1"></color>
|
|
||||||
<color r="0.08235294" g="0.08235294" b="0.91764706" a="1"></color>
|
|
||||||
<color r="0.07058824" g="0.07058824" b="0.92941177" a="1"></color>
|
|
||||||
<color r="0.05490196" g="0.05490196" b="0.94509804" a="1"></color>
|
|
||||||
<color r="0.043137256" g="0.043137256" b="0.95686275" a="1"></color>
|
|
||||||
<color r="0.02745098" g="0.02745098" b="0.972549" a="1"></color>
|
|
||||||
<color r="0.015686275" g="0.015686275" b="0.9843137" a="1"></color>
|
|
||||||
<color r="0.0" g="0.0" b="1.0" a="1"></color>
|
|
||||||
<color r="0.02745098" g="0.02745098" b="1.0" a="1"></color>
|
|
||||||
<color r="0.05490196" g="0.05490196" b="1.0" a="1"></color>
|
|
||||||
<color r="0.08235294" g="0.08235294" b="1.0" a="1"></color>
|
|
||||||
<color r="0.10980392" g="0.10980392" b="1.0" a="1"></color>
|
|
||||||
<color r="0.13725491" g="0.13725491" b="1.0" a="1"></color>
|
|
||||||
<color r="0.16862746" g="0.16862746" b="1.0" a="1"></color>
|
|
||||||
<color r="0.19607843" g="0.19607843" b="1.0" a="1"></color>
|
|
||||||
<color r="0.22352941" g="0.22352941" b="1.0" a="1"></color>
|
|
||||||
<color r="0.2509804" g="0.2509804" b="1.0" a="1"></color>
|
|
||||||
<color r="0.2784314" g="0.2784314" b="1.0" a="1"></color>
|
|
||||||
<color r="0.30588236" g="0.30588236" b="1.0" a="1"></color>
|
|
||||||
<color r="0.33333334" g="0.33333334" b="1.0" a="1"></color>
|
|
||||||
<color r="0.36078432" g="0.36078432" b="1.0" a="1"></color>
|
|
||||||
<color r="0.3882353" g="0.3882353" b="1.0" a="1"></color>
|
|
||||||
<color r="0.41568628" g="0.41568628" b="1.0" a="1"></color>
|
|
||||||
<color r="0.44313726" g="0.44313726" b="1.0" a="1"></color>
|
|
||||||
<color r="0.47058824" g="0.47058824" b="1.0" a="1"></color>
|
|
||||||
<color r="0.5019608" g="0.5019608" b="1.0" a="1"></color>
|
|
||||||
<color r="0.5294118" g="0.5294118" b="1.0" a="1"></color>
|
|
||||||
<color r="0.5568628" g="0.5568628" b="1.0" a="1"></color>
|
|
||||||
<color r="0.58431375" g="0.58431375" b="1.0" a="1"></color>
|
|
||||||
<color r="0.6117647" g="0.6117647" b="1.0" a="1"></color>
|
|
||||||
<color r="0.6392157" g="0.6392157" b="1.0" a="1"></color>
|
|
||||||
<color r="0.6666667" g="0.6666667" b="1.0" a="1"></color>
|
|
||||||
<color r="0.69411767" g="0.69411767" b="1.0" a="1"></color>
|
|
||||||
<color r="0.72156864" g="0.72156864" b="1.0" a="1"></color>
|
|
||||||
<color r="0.7490196" g="0.7490196" b="1.0" a="1"></color>
|
|
||||||
<color r="0.7764706" g="0.7764706" b="1.0" a="1"></color>
|
|
||||||
<color r="0.8039216" g="0.8039216" b="1.0" a="1"></color>
|
|
||||||
<color r="0.8352941" g="0.8352941" b="1.0" a="1"></color>
|
|
||||||
<color r="0.8627451" g="0.8627451" b="1.0" a="1"></color>
|
|
||||||
<color r="0.8901961" g="0.8901961" b="1.0" a="1"></color>
|
|
||||||
<color r="0.91764706" g="0.91764706" b="1.0" a="1"></color>
|
|
||||||
<color r="0.94509804" g="0.94509804" b="1.0" a="1"></color>
|
|
||||||
<color r="0.972549" g="0.972549" b="1.0" a="1"></color>
|
|
||||||
<color r="1.0" g="1.0" b="1.0" a="1"></color>
|
|
||||||
<color r="0.98039216" g="0.98039216" b="0.98039216" a="1"></color>
|
|
||||||
<color r="0.95686275" g="0.95686275" b="0.95686275" a="1"></color>
|
|
||||||
<color r="0.9372549" g="0.9372549" b="0.9372549" a="1"></color>
|
|
||||||
<color r="0.91764706" g="0.91764706" b="0.91764706" a="1"></color>
|
|
||||||
<color r="0.89411765" g="0.89411765" b="0.89411765" a="1"></color>
|
|
||||||
<color r="0.8745098" g="0.8745098" b="0.8745098" a="1"></color>
|
|
||||||
<color r="0.85490197" g="0.85490197" b="0.85490197" a="1"></color>
|
|
||||||
<color r="0.8352941" g="0.8352941" b="0.8352941" a="1"></color>
|
|
||||||
<color r="0.8117647" g="0.8117647" b="0.8117647" a="1"></color>
|
|
||||||
<color r="0.7921569" g="0.7921569" b="0.7921569" a="1"></color>
|
|
||||||
<color r="0.77254903" g="0.77254903" b="0.77254903" a="1"></color>
|
|
||||||
<color r="0.7490196" g="0.7490196" b="0.7490196" a="1"></color>
|
|
||||||
<color r="0.7294118" g="0.7294118" b="0.7294118" a="1"></color>
|
|
||||||
<color r="0.70980394" g="0.70980394" b="0.70980394" a="1"></color>
|
|
||||||
<color r="0.6862745" g="0.6862745" b="0.6862745" a="1"></color>
|
|
||||||
<color r="0.6666667" g="0.6666667" b="0.6666667" a="1"></color>
|
|
||||||
<color r="0.64705884" g="0.64705884" b="0.64705884" a="1"></color>
|
|
||||||
<color r="0.62352943" g="0.62352943" b="0.62352943" a="1"></color>
|
|
||||||
<color r="0.6039216" g="0.6039216" b="0.6039216" a="1"></color>
|
|
||||||
<color r="0.58431375" g="0.58431375" b="0.58431375" a="1"></color>
|
|
||||||
<color r="0.56078434" g="0.56078434" b="0.56078434" a="1"></color>
|
|
||||||
<color r="0.5411765" g="0.5411765" b="0.5411765" a="1"></color>
|
|
||||||
<color r="0.52156866" g="0.52156866" b="0.52156866" a="1"></color>
|
|
||||||
<color r="0.5019608" g="0.5019608" b="0.5019608" a="1"></color>
|
|
||||||
<color r="0.47843137" g="0.47843137" b="0.47843137" a="1"></color>
|
|
||||||
<color r="0.45882353" g="0.45882353" b="0.45882353" a="1"></color>
|
|
||||||
<color r="0.4392157" g="0.4392157" b="0.4392157" a="1"></color>
|
|
||||||
<color r="0.41568628" g="0.41568628" b="0.41568628" a="1"></color>
|
|
||||||
<color r="0.39607844" g="0.39607844" b="0.39607844" a="1"></color>
|
|
||||||
<color r="0.3764706" g="0.3764706" b="0.3764706" a="1"></color>
|
|
||||||
<color r="0.3529412" g="0.3529412" b="0.3529412" a="1"></color>
|
|
||||||
<color r="0.33333334" g="0.33333334" b="0.33333334" a="1"></color>
|
|
||||||
<color r="0.3137255" g="0.3137255" b="0.3137255" a="1"></color>
|
|
||||||
<color r="0.2901961" g="0.2901961" b="0.2901961" a="1"></color>
|
|
||||||
<color r="0.27058825" g="0.27058825" b="0.27058825" a="1"></color>
|
|
||||||
<color r="0.2509804" g="0.2509804" b="0.2509804" a="1"></color>
|
|
||||||
<color r="0.22745098" g="0.22745098" b="0.22745098" a="1"></color>
|
|
||||||
<color r="0.20784314" g="0.20784314" b="0.20784314" a="1"></color>
|
|
||||||
<color r="0.1882353" g="0.1882353" b="0.1882353" a="1"></color>
|
|
||||||
<color r="0.16862746" g="0.16862746" b="0.16862746" a="1"></color>
|
|
||||||
<color r="0.14509805" g="0.14509805" b="0.14509805" a="1"></color>
|
|
||||||
<color r="0.1254902" g="0.1254902" b="0.1254902" a="1"></color>
|
|
||||||
<color r="0.105882354" g="0.105882354" b="0.105882354" a="1"></color>
|
|
||||||
<color r="0.08235294" g="0.08235294" b="0.08235294" a="1"></color>
|
|
||||||
<color r="0.0627451" g="0.0627451" b="0.0627451" a="1"></color>
|
|
||||||
<color r="0.043137256" g="0.043137256" b="0.043137256" a="1"></color>
|
|
||||||
<color r="0.019607844" g="0.019607844" b="0.019607844" a="1"></color>
|
|
||||||
<color r="1.0" g="1.0" b="1.0" a="1"></color>
|
|
||||||
<color r="1.0" g="1.0" b="1.0" a="1"></color>
|
|
||||||
<color r="1.0" g="1.0" b="1.0" a="1"></color>
|
|
||||||
<color r="1.0" g="1.0" b="1.0" a="1"></color>
|
|
||||||
<color r="1.0" g="1.0" b="1.0" a="1"></color>
|
|
||||||
<color r="1.0" g="1.0" b="1.0" a="1"></color>
|
|
||||||
</colorMap>
|
|
|
@ -1,261 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
||||||
<colorMap xmlns:ns2="group" xmlns:ns3="http://www.example.org/productType">
|
|
||||||
<!-- Colormap provided by Jordan Gerth -->
|
|
||||||
<!-- this is a converted legacy colomap -->
|
|
||||||
<color r="0.0" g="0.0" b="0.0" a="0.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.000000" b="0.000000" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.031373" b="0.000000" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.062745" b="0.000000" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.094118" b="0.000000" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.125490" b="0.000000" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.156863" b="0.000000" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.188235" b="0.000000" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.219608" b="0.000000" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.250980" b="0.000000" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.282353" b="0.000000" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.313725" b="0.000000" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.349020" b="0.003922" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.380392" b="0.003922" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.411765" b="0.003922" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.443137" b="0.003922" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.474510" b="0.003922" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.505882" b="0.003922" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.537255" b="0.003922" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.568627" b="0.003922" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.600000" b="0.003922" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.631373" b="0.003922" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.666667" b="0.007843" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.698039" b="0.007843" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.729412" b="0.007843" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.760784" b="0.007843" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.792157" b="0.007843" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.823529" b="0.007843" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.854902" b="0.007843" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.886275" b="0.007843" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.917647" b="0.007843" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.949020" b="0.007843" a="1.0"/>
|
|
||||||
<color r="1.000000" g="0.984314" b="0.011765" a="1.0"/>
|
|
||||||
<color r="0.968627" g="0.952941" b="0.031373" a="1.0"/>
|
|
||||||
<color r="0.937255" g="0.921569" b="0.050980" a="1.0"/>
|
|
||||||
<color r="0.901961" g="0.886275" b="0.074510" a="1.0"/>
|
|
||||||
<color r="0.870588" g="0.854902" b="0.094118" a="1.0"/>
|
|
||||||
<color r="0.835294" g="0.823529" b="0.117647" a="1.0"/>
|
|
||||||
<color r="0.803922" g="0.788235" b="0.137255" a="1.0"/>
|
|
||||||
<color r="0.772549" g="0.756863" b="0.160784" a="1.0"/>
|
|
||||||
<color r="0.737255" g="0.725490" b="0.180392" a="1.0"/>
|
|
||||||
<color r="0.705882" g="0.690196" b="0.200000" a="1.0"/>
|
|
||||||
<color r="0.670588" g="0.658824" b="0.223529" a="1.0"/>
|
|
||||||
<color r="0.639216" g="0.623529" b="0.243137" a="1.0"/>
|
|
||||||
<color r="0.607843" g="0.592157" b="0.266667" a="1.0"/>
|
|
||||||
<color r="0.572549" g="0.560784" b="0.286275" a="1.0"/>
|
|
||||||
<color r="0.541176" g="0.525490" b="0.309804" a="1.0"/>
|
|
||||||
<color r="0.509804" g="0.494118" b="0.329412" a="1.0"/>
|
|
||||||
<color r="0.474510" g="0.462745" b="0.349020" a="1.0"/>
|
|
||||||
<color r="0.443137" g="0.427451" b="0.372549" a="1.0"/>
|
|
||||||
<color r="0.407843" g="0.396078" b="0.392157" a="1.0"/>
|
|
||||||
<color r="0.376471" g="0.364706" b="0.415686" a="1.0"/>
|
|
||||||
<color r="0.341176" g="0.329412" b="0.435294" a="1.0"/>
|
|
||||||
<color r="0.309804" g="0.298039" b="0.458824" a="1.0"/>
|
|
||||||
<color r="0.278431" g="0.262745" b="0.478431" a="1.0"/>
|
|
||||||
<color r="0.243137" g="0.231373" b="0.498039" a="1.0"/>
|
|
||||||
<color r="0.211765" g="0.200000" b="0.521569" a="1.0"/>
|
|
||||||
<color r="0.180392" g="0.164706" b="0.541176" a="1.0"/>
|
|
||||||
<color r="0.145098" g="0.133333" b="0.564706" a="1.0"/>
|
|
||||||
<color r="0.113725" g="0.101961" b="0.584314" a="1.0"/>
|
|
||||||
<color r="0.078431" g="0.066667" b="0.607843" a="1.0"/>
|
|
||||||
<color r="0.047059" g="0.035294" b="0.627451" a="1.0"/>
|
|
||||||
<color r="0.011765" g="0.000000" b="0.650980" a="1.0"/>
|
|
||||||
<color r="0.058824" g="0.047059" b="0.666667" a="1.0"/>
|
|
||||||
<color r="0.109804" g="0.098039" b="0.682353" a="1.0"/>
|
|
||||||
<color r="0.156863" g="0.149020" b="0.701961" a="1.0"/>
|
|
||||||
<color r="0.207843" g="0.200000" b="0.717647" a="1.0"/>
|
|
||||||
<color r="0.258824" g="0.247059" b="0.737255" a="1.0"/>
|
|
||||||
<color r="0.305882" g="0.298039" b="0.752941" a="1.0"/>
|
|
||||||
<color r="0.356863" g="0.349020" b="0.772549" a="1.0"/>
|
|
||||||
<color r="0.403922" g="0.400000" b="0.788235" a="1.0"/>
|
|
||||||
<color r="0.454902" g="0.447059" b="0.807843" a="1.0"/>
|
|
||||||
<color r="0.505882" g="0.498039" b="0.823529" a="1.0"/>
|
|
||||||
<color r="0.552941" g="0.549020" b="0.839216" a="1.0"/>
|
|
||||||
<color r="0.603922" g="0.600000" b="0.858824" a="1.0"/>
|
|
||||||
<color r="0.650980" g="0.647059" b="0.874510" a="1.0"/>
|
|
||||||
<color r="0.701961" g="0.698039" b="0.894118" a="1.0"/>
|
|
||||||
<color r="0.752941" g="0.749020" b="0.909804" a="1.0"/>
|
|
||||||
<color r="0.800000" g="0.800000" b="0.929412" a="1.0"/>
|
|
||||||
<color r="0.850980" g="0.847059" b="0.945098" a="1.0"/>
|
|
||||||
<color r="0.898039" g="0.898039" b="0.964706" a="1.0"/>
|
|
||||||
<color r="0.949020" g="0.949020" b="0.980392" a="1.0"/>
|
|
||||||
<color r="1.000000" g="1.000000" b="1.000000" a="1.0"/>
|
|
||||||
<color r="0.964706" g="0.980392" b="0.964706" a="1.0"/>
|
|
||||||
<color r="0.929412" g="0.960784" b="0.929412" a="1.0"/>
|
|
||||||
<color r="0.890196" g="0.937255" b="0.890196" a="1.0"/>
|
|
||||||
<color r="0.854902" g="0.917647" b="0.854902" a="1.0"/>
|
|
||||||
<color r="0.815686" g="0.894118" b="0.815686" a="1.0"/>
|
|
||||||
<color r="0.780392" g="0.874510" b="0.780392" a="1.0"/>
|
|
||||||
<color r="0.745098" g="0.850980" b="0.745098" a="1.0"/>
|
|
||||||
<color r="0.705882" g="0.831373" b="0.705882" a="1.0"/>
|
|
||||||
<color r="0.670588" g="0.807843" b="0.670588" a="1.0"/>
|
|
||||||
<color r="0.631373" g="0.788235" b="0.631373" a="1.0"/>
|
|
||||||
<color r="0.596078" g="0.764706" b="0.596078" a="1.0"/>
|
|
||||||
<color r="0.560784" g="0.745098" b="0.560784" a="1.0"/>
|
|
||||||
<color r="0.521569" g="0.721569" b="0.521569" a="1.0"/>
|
|
||||||
<color r="0.486275" g="0.701961" b="0.486275" a="1.0"/>
|
|
||||||
<color r="0.447059" g="0.678431" b="0.447059" a="1.0"/>
|
|
||||||
<color r="0.411765" g="0.658824" b="0.411765" a="1.0"/>
|
|
||||||
<color r="0.376471" g="0.635294" b="0.376471" a="1.0"/>
|
|
||||||
<color r="0.337255" g="0.615686" b="0.337255" a="1.0"/>
|
|
||||||
<color r="0.301961" g="0.592157" b="0.301961" a="1.0"/>
|
|
||||||
<color r="0.262745" g="0.572549" b="0.262745" a="1.0"/>
|
|
||||||
<color r="0.227451" g="0.549020" b="0.227451" a="1.0"/>
|
|
||||||
<color r="0.192157" g="0.529412" b="0.192157" a="1.0"/>
|
|
||||||
<color r="0.152941" g="0.505882" b="0.152941" a="1.0"/>
|
|
||||||
<color r="0.117647" g="0.486275" b="0.117647" a="1.0"/>
|
|
||||||
<color r="0.078431" g="0.462745" b="0.078431" a="1.0"/>
|
|
||||||
<color r="0.043137" g="0.443137" b="0.043137" a="1.0"/>
|
|
||||||
<color r="0.003922" g="0.419608" b="0.003922" a="1.0"/>
|
|
||||||
<color r="0.003922" g="0.431373" b="0.027451" a="1.0"/>
|
|
||||||
<color r="0.003922" g="0.447059" b="0.054902" a="1.0"/>
|
|
||||||
<color r="0.003922" g="0.462745" b="0.082353" a="1.0"/>
|
|
||||||
<color r="0.003922" g="0.478431" b="0.109804" a="1.0"/>
|
|
||||||
<color r="0.003922" g="0.494118" b="0.137255" a="1.0"/>
|
|
||||||
<color r="0.003922" g="0.509804" b="0.164706" a="1.0"/>
|
|
||||||
<color r="0.003922" g="0.525490" b="0.192157" a="1.0"/>
|
|
||||||
<color r="0.003922" g="0.541176" b="0.215686" a="1.0"/>
|
|
||||||
<color r="0.003922" g="0.556863" b="0.243137" a="1.0"/>
|
|
||||||
<color r="0.007843" g="0.568627" b="0.270588" a="1.0"/>
|
|
||||||
<color r="0.007843" g="0.584314" b="0.298039" a="1.0"/>
|
|
||||||
<color r="0.007843" g="0.600000" b="0.325490" a="1.0"/>
|
|
||||||
<color r="0.007843" g="0.615686" b="0.352941" a="1.0"/>
|
|
||||||
<color r="0.007843" g="0.631373" b="0.380392" a="1.0"/>
|
|
||||||
<color r="0.007843" g="0.647059" b="0.403922" a="1.0"/>
|
|
||||||
<color r="0.007843" g="0.662745" b="0.431373" a="1.0"/>
|
|
||||||
<color r="0.007843" g="0.678431" b="0.458824" a="1.0"/>
|
|
||||||
<color r="0.007843" g="0.694118" b="0.486275" a="1.0"/>
|
|
||||||
<color r="0.011765" g="0.705882" b="0.513725" a="1.0"/>
|
|
||||||
<color r="0.011765" g="0.721569" b="0.541176" a="1.0"/>
|
|
||||||
<color r="0.011765" g="0.737255" b="0.568627" a="1.0"/>
|
|
||||||
<color r="0.011765" g="0.752941" b="0.596078" a="1.0"/>
|
|
||||||
<color r="0.011765" g="0.768627" b="0.619608" a="1.0"/>
|
|
||||||
<color r="0.011765" g="0.784314" b="0.647059" a="1.0"/>
|
|
||||||
<color r="0.011765" g="0.800000" b="0.674510" a="1.0"/>
|
|
||||||
<color r="0.011765" g="0.815686" b="0.701961" a="1.0"/>
|
|
||||||
<color r="0.011765" g="0.831373" b="0.729412" a="1.0"/>
|
|
||||||
<color r="0.015686" g="0.843137" b="0.756863" a="1.0"/>
|
|
||||||
<color r="0.015686" g="0.858824" b="0.784314" a="1.0"/>
|
|
||||||
<color r="0.015686" g="0.874510" b="0.807843" a="1.0"/>
|
|
||||||
<color r="0.015686" g="0.890196" b="0.835294" a="1.0"/>
|
|
||||||
<color r="0.015686" g="0.905882" b="0.862745" a="1.0"/>
|
|
||||||
<color r="0.015686" g="0.921569" b="0.890196" a="1.0"/>
|
|
||||||
<color r="0.015686" g="0.937255" b="0.917647" a="1.0"/>
|
|
||||||
<color r="0.015686" g="0.952941" b="0.945098" a="1.0"/>
|
|
||||||
<color r="0.015686" g="0.968627" b="0.972549" a="1.0"/>
|
|
||||||
<color r="1.0" g="1.0" b="1.0" a="1.0"/>
|
|
||||||
</colorMap>
|
|
|
@ -1,26 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<DerivedParameter unit="K" name="Satellite Cloud Phase[8.5-11.2 um]" abbreviation="satCloudPhase">
|
|
||||||
<Method name="Difference">
|
|
||||||
<Field abbreviation="CH-11-8.50um" unit="K"/>
|
|
||||||
<Field abbreviation="CH-14-11.20um" unit="K"/>
|
|
||||||
</Method>
|
|
||||||
</DerivedParameter>
|
|
|
@ -1,26 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<DerivedParameter unit="K" name="Satellite Fog[3.9-11.2 um]" abbreviation="satFog">
|
|
||||||
<Method name="Difference">
|
|
||||||
<Field abbreviation="CH-07-3.90um" unit="K"/>
|
|
||||||
<Field abbreviation="CH-14-11.20um" unit="K"/>
|
|
||||||
</Method>
|
|
||||||
</DerivedParameter>
|
|
|
@ -1,26 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<DerivedParameter unit="K" name="Satellite Moisture[11.2-12.3 um]" abbreviation="satMoisture">
|
|
||||||
<Method name="Difference">
|
|
||||||
<Field abbreviation="CH-14-11.20um" unit="K"/>
|
|
||||||
<Field abbreviation="CH-15-12.30um" unit="K"/>
|
|
||||||
</Method>
|
|
||||||
</DerivedParameter>
|
|
|
@ -1,26 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<DerivedParameter name="Satellite Snow[0.64-1.61 um]" abbreviation="satSnow">
|
|
||||||
<Method name="Difference">
|
|
||||||
<Field abbreviation="CH-02-0.64um" unit="/4096"/>
|
|
||||||
<Field abbreviation="CH-05-1.61um" unit="/4096"/>
|
|
||||||
</Method>
|
|
||||||
</DerivedParameter>
|
|
|
@ -1,26 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<DerivedParameter unit="K" name="Satellite Upper Level Info[11.2-6.19 um]" abbreviation="satUpperLevelInfo">
|
|
||||||
<Method name="Difference">
|
|
||||||
<Field abbreviation="CH-14-11.20um" unit="K"/>
|
|
||||||
<Field abbreviation="CH-08-6.19um" unit="K"/>
|
|
||||||
</Method>
|
|
||||||
</DerivedParameter>
|
|
|
@ -1,26 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<DerivedParameter name="Satellite Vegetation[0.64-0.87 um]" abbreviation="satVegetation">
|
|
||||||
<Method name="Difference">
|
|
||||||
<Field abbreviation="CH-02-0.64um" unit="/4096"/>
|
|
||||||
<Field abbreviation="CH-03-0.87um" unit="/4096"/>
|
|
||||||
</Method>
|
|
||||||
</DerivedParameter>
|
|
|
@ -1,21 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
||||||
<!--
|
|
||||||
GOES-16 Product WMO Header Regions
|
|
||||||
Aerosol Detection (Smoke+Dust) IXTA99 KNES F,C,M
|
|
||||||
Aerosol Optical Depth IXTB99 KNES F,C
|
|
||||||
Cloud Top Phase IXTD99 KNES F,C,M
|
|
||||||
Cloud Top Height IXTG99 KNES F,C,M
|
|
||||||
Cloud Top Pressure IXTX01 KNES F,C
|
|
||||||
Cloud Top Temperature IXTI99 KNES F,M
|
|
||||||
Derived Stability Indices IXTN99 KNES F,C,M
|
|
||||||
Total Precipitable Water IXTO99 KNES F,C,M
|
|
||||||
Clear Sky Mask IXTH99 KNES F,C,M
|
|
||||||
Fire/Hot Spot Characterization IXTJ99 KNES F,C
|
|
||||||
Land Surface (Skin) Temperature IXTK99 KNES F,C,M
|
|
||||||
-->
|
|
||||||
<requestPatterns xmlns:ns2="group">
|
|
||||||
<regex>^TI[SR]</regex>
|
|
||||||
<regex>^IXT[ABDGINOHJK]99</regex>
|
|
||||||
<!-- This pattern is intended to match standardized Level 2 filenames, it will not be used over LDM -->
|
|
||||||
<regex>^OR_ABI-L2-\w{3,5}(C|F|M1|M2)-M[34]_G\d\d_s\d{14}_e\d{14}_c\d{14}.nc$</regex>
|
|
||||||
</requestPatterns>
|
|
|
@ -1,41 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<goesrProductDescriptions>
|
|
||||||
<default>
|
|
||||||
<matches>
|
|
||||||
<match pattern="OR_ABI-L2-ACTP(C|F|M1|M2)-M[34]_G\d\d_s\d{14}_e\d{14}_c\d{14}.nc">
|
|
||||||
<attribute name="dataset_name" />
|
|
||||||
</match>
|
|
||||||
</matches>
|
|
||||||
</default>
|
|
||||||
|
|
||||||
<description>
|
|
||||||
<data>
|
|
||||||
<variable name="Phase" />
|
|
||||||
<discreteMask name="DQF" value="0" keep="true">
|
|
||||||
<fillByte>-1</fillByte>
|
|
||||||
</discreteMask>
|
|
||||||
</data>
|
|
||||||
<physicalElement>
|
|
||||||
<value value="ACTP" />
|
|
||||||
</physicalElement>
|
|
||||||
</description>
|
|
||||||
</goesrProductDescriptions>
|
|
|
@ -1,63 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<goesrProductDescriptions>
|
|
||||||
<default>
|
|
||||||
<matches>
|
|
||||||
<match pattern="OR_ABI-L2-ADP(C|F|M1|M2)-M[34]_G\d\d_s\d{14}_e\d{14}_c\d{14}.nc">
|
|
||||||
<attribute name="dataset_name" />
|
|
||||||
</match>
|
|
||||||
</matches>
|
|
||||||
</default>
|
|
||||||
|
|
||||||
<description>
|
|
||||||
<data bitset="Aerosol Dust Smoke" />
|
|
||||||
<physicalElement>
|
|
||||||
<value value="ADP" />
|
|
||||||
</physicalElement>
|
|
||||||
</description>
|
|
||||||
|
|
||||||
<!-- Enable these descriptions to decode individual fields separately. -->
|
|
||||||
<!--<description>
|
|
||||||
<data>
|
|
||||||
<variable name="Aerosol"/>
|
|
||||||
</data>
|
|
||||||
<physicalElement>
|
|
||||||
<value value="Aerosol" />
|
|
||||||
</physicalElement>
|
|
||||||
</description>
|
|
||||||
<description>
|
|
||||||
<data>
|
|
||||||
<variable name="Dust"/>
|
|
||||||
</data>
|
|
||||||
<physicalElement>
|
|
||||||
<value value="Dust" />
|
|
||||||
</physicalElement>
|
|
||||||
</description>
|
|
||||||
<description>
|
|
||||||
<data>
|
|
||||||
<variable name="Smoke"/>
|
|
||||||
</data>
|
|
||||||
<physicalElement>
|
|
||||||
<value value="Smoke" />
|
|
||||||
</physicalElement>
|
|
||||||
</description>
|
|
||||||
-->
|
|
||||||
</goesrProductDescriptions>
|
|
|
@ -1,44 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<goesrProductDescriptions>
|
|
||||||
<default>
|
|
||||||
<matches>
|
|
||||||
<match pattern="OR_ABI-L2-AOD(C|F|M1|M2)-M[34]_G\d\d_s\d{14}_e\d{14}_c\d{14}.nc">
|
|
||||||
<attribute name="dataset_name" />
|
|
||||||
</match>
|
|
||||||
</matches>
|
|
||||||
</default>
|
|
||||||
|
|
||||||
<description>
|
|
||||||
<data>
|
|
||||||
<variable name="AOD" />
|
|
||||||
<discreteMask name="DQF" value="0" keep="true">
|
|
||||||
<fillByte>-1</fillByte>
|
|
||||||
</discreteMask>
|
|
||||||
</data>
|
|
||||||
<physicalElement>
|
|
||||||
<value value="AOD" />
|
|
||||||
</physicalElement>
|
|
||||||
<units>
|
|
||||||
<value value="*1" />
|
|
||||||
</units>
|
|
||||||
</description>
|
|
||||||
</goesrProductDescriptions>
|
|
|
@ -1,44 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<goesrProductDescriptions>
|
|
||||||
<default>
|
|
||||||
<matches>
|
|
||||||
<match pattern="OR_ABI-L2-COD(C|F|M1|M2)-M[34]_G\d\d_s\d{14}_e\d{14}_c\d{14}.nc">
|
|
||||||
<attribute name="dataset_name" />
|
|
||||||
</match>
|
|
||||||
</matches>
|
|
||||||
</default>
|
|
||||||
|
|
||||||
<description>
|
|
||||||
<data>
|
|
||||||
<variable name="COD" />
|
|
||||||
<discreteMask name="DQF" value="0" keep="true">
|
|
||||||
<fillByte>-1</fillByte>
|
|
||||||
</discreteMask>
|
|
||||||
</data>
|
|
||||||
<physicalElement>
|
|
||||||
<value value="COD" />
|
|
||||||
</physicalElement>
|
|
||||||
<units>
|
|
||||||
<value value="*1" />
|
|
||||||
</units>
|
|
||||||
</description>
|
|
||||||
</goesrProductDescriptions>
|
|
|
@ -1,44 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<goesrProductDescriptions>
|
|
||||||
<default>
|
|
||||||
<matches>
|
|
||||||
<match pattern="OR_ABI-L2-CPS(C|F|M1|M2)-M[34]_G\d\d_s\d{14}_e\d{14}_c\d{14}.nc">
|
|
||||||
<attribute name="dataset_name" />
|
|
||||||
</match>
|
|
||||||
</matches>
|
|
||||||
</default>
|
|
||||||
|
|
||||||
<description>
|
|
||||||
<data>
|
|
||||||
<variable name="PSD" />
|
|
||||||
<discreteMask name="DQF" value="0" keep="true">
|
|
||||||
<fillByte>-1</fillByte>
|
|
||||||
</discreteMask>
|
|
||||||
</data>
|
|
||||||
<physicalElement>
|
|
||||||
<value value="CPSD" />
|
|
||||||
</physicalElement>
|
|
||||||
<units>
|
|
||||||
<value value="microm" />
|
|
||||||
</units>
|
|
||||||
</description>
|
|
||||||
</goesrProductDescriptions>
|
|
|
@ -1,41 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<goesrProductDescriptions>
|
|
||||||
<default>
|
|
||||||
<matches>
|
|
||||||
<match pattern="OR_ABI-L2-ACM(C|F|M1|M2)-M[34]_G\d\d_s\d{14}_e\d{14}_c\d{14}.nc">
|
|
||||||
<attribute name="dataset_name" />
|
|
||||||
</match>
|
|
||||||
</matches>
|
|
||||||
</default>
|
|
||||||
|
|
||||||
<description>
|
|
||||||
<data>
|
|
||||||
<variable name="BCM" />
|
|
||||||
<discreteMask name="DQF" value="0" keep="true">
|
|
||||||
<fillByte>-1</fillByte>
|
|
||||||
</discreteMask>
|
|
||||||
</data>
|
|
||||||
<physicalElement>
|
|
||||||
<value value="CSM" />
|
|
||||||
</physicalElement>
|
|
||||||
</description>
|
|
||||||
</goesrProductDescriptions>
|
|
|
@ -1,47 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<goesrProductDescriptions>
|
|
||||||
<!-- The following acronyms are helpful in understanding this file.
|
|
||||||
CTH : Cloud Top Height
|
|
||||||
HT : Height
|
|
||||||
ACHA : AWG Cloud Height Algorithm
|
|
||||||
AWG : Algorithm Working Group
|
|
||||||
-->
|
|
||||||
<default>
|
|
||||||
<matches>
|
|
||||||
<match pattern="OR_ABI-L2-ACHA(C|F|M1|M2)-M[34]_G\d\d_s\d{14}_e\d{14}_c\d{14}.nc">
|
|
||||||
<attribute name="dataset_name" />
|
|
||||||
</match>
|
|
||||||
</matches>
|
|
||||||
</default>
|
|
||||||
|
|
||||||
<description>
|
|
||||||
<data>
|
|
||||||
<variable name="HT" />
|
|
||||||
<discreteMask name="DQF" value="0" keep="true">
|
|
||||||
<fillByte>-1</fillByte>
|
|
||||||
</discreteMask>
|
|
||||||
</data>
|
|
||||||
<physicalElement>
|
|
||||||
<value value="CTH" />
|
|
||||||
</physicalElement>
|
|
||||||
</description>
|
|
||||||
</goesrProductDescriptions>
|
|
|
@ -1,41 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<goesrProductDescriptions>
|
|
||||||
<default>
|
|
||||||
<matches>
|
|
||||||
<match pattern="OR_ABI-L2-CTP(C|F|M1|M2)-M[34]_G\d\d_s\d{14}_e\d{14}_c\d{14}.nc">
|
|
||||||
<attribute name="dataset_name" />
|
|
||||||
</match>
|
|
||||||
</matches>
|
|
||||||
</default>
|
|
||||||
|
|
||||||
<description>
|
|
||||||
<data>
|
|
||||||
<variable name="PRES" />
|
|
||||||
<discreteMask name="DQF" value="0" keep="true">
|
|
||||||
<fillByte>-1</fillByte>
|
|
||||||
</discreteMask>
|
|
||||||
</data>
|
|
||||||
<physicalElement>
|
|
||||||
<value value="CTP" />
|
|
||||||
</physicalElement>
|
|
||||||
</description>
|
|
||||||
</goesrProductDescriptions>
|
|
|
@ -1,41 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<goesrProductDescriptions>
|
|
||||||
<default>
|
|
||||||
<matches>
|
|
||||||
<match pattern="OR_ABI-L2-ACHT(C|F|M1|M2)-M[34]_G\d\d_s\d{14}_e\d{14}_c\d{14}.nc">
|
|
||||||
<attribute name="dataset_name" />
|
|
||||||
</match>
|
|
||||||
</matches>
|
|
||||||
</default>
|
|
||||||
|
|
||||||
<description>
|
|
||||||
<data>
|
|
||||||
<variable name="TEMP" />
|
|
||||||
<discreteMask name="DQF" value="0" keep="true">
|
|
||||||
<fillByte>-1</fillByte>
|
|
||||||
</discreteMask>
|
|
||||||
</data>
|
|
||||||
<physicalElement>
|
|
||||||
<value value="CTT" />
|
|
||||||
</physicalElement>
|
|
||||||
</description>
|
|
||||||
</goesrProductDescriptions>
|
|
|
@ -1,112 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<goesrProductDescriptions>
|
|
||||||
<default>
|
|
||||||
<matches>
|
|
||||||
<match pattern="OR_ABI-L2-DSI(C|F|M1|M2)-M[34]_G\d\d_s\d{14}_e\d{14}_c\d{14}.nc">
|
|
||||||
<attribute name="dataset_name" />
|
|
||||||
</match>
|
|
||||||
</matches>
|
|
||||||
</default>
|
|
||||||
|
|
||||||
<description>
|
|
||||||
<data>
|
|
||||||
<variable name="CAPE" />
|
|
||||||
<discreteMask name="DQF_Overall" value="0" keep="true">
|
|
||||||
<fillByte>-1</fillByte>
|
|
||||||
</discreteMask>
|
|
||||||
</data>
|
|
||||||
<units>
|
|
||||||
<value value="J/kg" />
|
|
||||||
</units>
|
|
||||||
<physicalElement>
|
|
||||||
<value value="CAPE" />
|
|
||||||
</physicalElement>
|
|
||||||
</description>
|
|
||||||
|
|
||||||
<description>
|
|
||||||
<data>
|
|
||||||
<variable name="KI" />
|
|
||||||
<discreteMask name="DQF_Overall" value="0" keep="true">
|
|
||||||
<fillByte>-1</fillByte>
|
|
||||||
</discreteMask>
|
|
||||||
</data>
|
|
||||||
<!-- The default units are K, users prefer to use C, since this a
|
|
||||||
difference product K and C are the same and should not be converted. -->
|
|
||||||
<units>
|
|
||||||
<value value="C" />
|
|
||||||
</units>
|
|
||||||
<physicalElement>
|
|
||||||
<value value="KI" />
|
|
||||||
</physicalElement>
|
|
||||||
</description>
|
|
||||||
|
|
||||||
<description>
|
|
||||||
<data>
|
|
||||||
<variable name="LI" />
|
|
||||||
<discreteMask name="DQF_Overall" value="0" keep="true">
|
|
||||||
<fillByte>-1</fillByte>
|
|
||||||
</discreteMask>
|
|
||||||
</data>
|
|
||||||
<!-- The default units are K, users prefer to use C, since this a
|
|
||||||
difference product K and C are the same and should not be converted. -->
|
|
||||||
<units>
|
|
||||||
<value value="C" />
|
|
||||||
</units>
|
|
||||||
<physicalElement>
|
|
||||||
<value value="LI" />
|
|
||||||
</physicalElement>
|
|
||||||
</description>
|
|
||||||
|
|
||||||
<description>
|
|
||||||
<data>
|
|
||||||
<variable name="SI" />
|
|
||||||
<discreteMask name="DQF_Overall" value="0" keep="true">
|
|
||||||
<fillByte>-1</fillByte>
|
|
||||||
</discreteMask>
|
|
||||||
</data>
|
|
||||||
<!-- The default units are K, users prefer to use C, since this a
|
|
||||||
difference product K and C are the same and should not be converted. -->
|
|
||||||
<units>
|
|
||||||
<value value="C" />
|
|
||||||
</units>
|
|
||||||
<physicalElement>
|
|
||||||
<value value="SI" />
|
|
||||||
</physicalElement>
|
|
||||||
</description>
|
|
||||||
|
|
||||||
<description>
|
|
||||||
<data>
|
|
||||||
<variable name="TT" />
|
|
||||||
<discreteMask name="DQF_Overall" value="0" keep="true">
|
|
||||||
<fillByte>-1</fillByte>
|
|
||||||
</discreteMask>
|
|
||||||
</data>
|
|
||||||
<!-- The default units are K, users prefer to use C, since this a
|
|
||||||
difference product K and C are the same and should not be converted. -->
|
|
||||||
<units>
|
|
||||||
<value value="C" />
|
|
||||||
</units>
|
|
||||||
<physicalElement>
|
|
||||||
<value value="TT" />
|
|
||||||
</physicalElement>
|
|
||||||
</description>
|
|
||||||
</goesrProductDescriptions>
|
|
|
@ -1,68 +0,0 @@
|
||||||
<?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.
|
|
||||||
-->
|
|
||||||
<goesrProductDescriptions>
|
|
||||||
<default>
|
|
||||||
<matches>
|
|
||||||
<match pattern="OR_ABI-L2-FDC(C|F|M1|M2)-M[34]_G\d\d_s\d{14}_e\d{14}_c\d{14}.nc">
|
|
||||||
<attribute name="dataset_name" />
|
|
||||||
</match>
|
|
||||||
</matches>
|
|
||||||
</default>
|
|
||||||
|
|
||||||
<description>
|
|
||||||
<data>
|
|
||||||
<variable name="Area" />
|
|
||||||
<discreteMask name="DQF" value="0" keep="true">
|
|
||||||
<fillByte>-1</fillByte>
|
|
||||||
</discreteMask>
|
|
||||||
</data>
|
|
||||||
<units>
|
|
||||||
<value value="km*km" />
|
|
||||||
</units>
|
|
||||||
<physicalElement>
|
|
||||||
<value value="FDC Area" />
|
|
||||||
</physicalElement>
|
|
||||||
</description>
|
|
||||||
|
|
||||||
<description>
|
|
||||||
<data>
|
|
||||||
<variable name="Power" />
|
|
||||||
<discreteMask name="DQF" value="0" keep="true">
|
|
||||||
<fillByte>-1</fillByte>
|
|
||||||
</discreteMask>
|
|
||||||
</data>
|
|
||||||
<physicalElement>
|
|
||||||
<value value="FDC Power" />
|
|
||||||
</physicalElement>
|
|
||||||
</description>
|
|
||||||
|
|
||||||
<description>
|
|
||||||
<data>
|
|
||||||
<variable name="Temp" />
|
|
||||||
<discreteMask name="DQF" value="0" keep="true">
|
|
||||||
<fillByte>-1</fillByte>
|
|
||||||
</discreteMask>
|
|
||||||
</data>
|
|
||||||
<physicalElement>
|
|
||||||
<value value="FDC Temp" />
|
|
||||||
</physicalElement>
|
|
||||||
</description>
|
|
||||||
</goesrProductDescriptions>
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue