Merge pull request #567 from tiffanycmeyer13/unidata_20.3.2-windows
Merge unidata_20.3.2 branch into unidata_20.3.2-windows
40
.github/workflows/update_NDM.yml
vendored
Normal file
|
@ -0,0 +1,40 @@
|
|||
name: update station info
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: "0 6 * * *"
|
||||
|
||||
jobs:
|
||||
update_ndm:
|
||||
runs-on: ubuntu-latest
|
||||
environment:
|
||||
name: VLAB
|
||||
steps:
|
||||
# Checkout this repo
|
||||
# this gets the latest code (and is run on the default branch)
|
||||
- name: Checkout awips2
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
ref: unidata_20.3.2
|
||||
# Do individual pulls for all the files in the ndm directory
|
||||
- name: Pull latest from vlab svn repo
|
||||
run: |
|
||||
cd rpms/awips2.edex/Installer.edex/ndm/
|
||||
for file in *; do
|
||||
svn export --force https://vlab.noaa.gov/svn/awips-ndm/trunk/"$file" --username ${{ secrets.VLAB_UNAME }} --password ${{ secrets.VLAB_PASS }}
|
||||
done
|
||||
# Check in all the new files
|
||||
# Only do a git add/commit/push if files have changed
|
||||
- name: Update existing NDM files for awips2 repo
|
||||
run: |
|
||||
date=`date +%Y%m%d-%H:%M:%S`
|
||||
git config user.name $GITHUB_ACTOR
|
||||
git config user.email $GITHUB_ACTOR@users.noreply.github.com
|
||||
change=`git diff`
|
||||
if [[ ! -z "$change" ]]
|
||||
then
|
||||
git add --all
|
||||
git commit -m "New NDM updates on $date - autogenerated"
|
||||
git push
|
||||
fi
|
|
@ -1,7 +1,9 @@
|
|||
#!/bin/bash
|
||||
# Version
|
||||
export AWIPSII_VERSION="20.3.2"
|
||||
export AWIPSII_RELEASE="0.1"
|
||||
export AWIPSII_RELEASE="0.4"
|
||||
export AWIPSII_BUILD_DATE=`date`
|
||||
export AWIPSII_BUILD_SYS=`cat /etc/system-release`
|
||||
# Author
|
||||
export AWIPSII_BUILD_VENDOR="UCAR"
|
||||
export AWIPSII_BUILD_SITE="Unidata"
|
||||
|
|
|
@ -23,6 +23,11 @@ splashLoc=$(find /awips2/repo/awips2/cave -name "splash.bmp")
|
|||
mv splash.bmp $splashLoc
|
||||
echo "replacing splash.bmp"
|
||||
|
||||
#Set CAVE About information
|
||||
echo "0=$AWIPSII_VERSION-$AWIPSII_RELEASE
|
||||
1=$AWIPSII_BUILD_DATE
|
||||
2=$AWIPSII_BUILD_SYS">/awips2/repo/awips2/cave/com.raytheon.viz.product.awips/about.mappings
|
||||
|
||||
# If local source directories, exist, mount them to the container
|
||||
if [ $rpmname = "buildCAVE" ]; then
|
||||
for dn in `cat build/repos| grep -v static| grep -v nativelib |grep -v awips2-rpm`
|
||||
|
@ -72,10 +77,10 @@ if [[ $(whoami) == "awips" ]]; then # local build
|
|||
sudo mv dist/${os_version}-dev dist/${os_version}-dev-${date}
|
||||
sudo su - -c "createrepo -g /awips2/repo/awips2/dist/comps.xml /awips2/repo/awips2/dist/${os_version}-dev-${date}/"
|
||||
sudo chown -R awips:fxalpha dist/${os_version}-dev-${date}
|
||||
# rsync -aP dist/${os_version}-
|
||||
#TM#echo "rsync -aP dist/${os_version}-dev-${date} tiffanym@fserv:/share/awips2/${AWIPSII_VERSION}/linux/"
|
||||
#TM#rsync -aP dist/${os_version}-dev-${date} tiffanym@fserv:/share/awips2/${AWIPSII_VERSION}/linux/
|
||||
rsync -aP dist/${os_version}-dev-${date} awips@edex3:/awips2/dev
|
||||
echo "rsync -aP dist/${os_version}-dev-${date}"
|
||||
#echo "rsync -aP dist/${os_version}-dev-${date} tiffanym@fserv:/share/awips2/${AWIPSII_VERSION}/linux/"
|
||||
#rsync -aP dist/${os_version}-dev-${date} tiffanym@fserv:/share/awips2/${AWIPSII_VERSION}/linux/
|
||||
#rsync -aP dist/${os_version}-dev-${date} awips@edex3:/awips2/dev
|
||||
rsync -aP dist/${os_version}-dev-${date} awips@hardy:/awips2/dev
|
||||
#repomanage -k1 --old dist/${os_version}-dev | xargs rm -f
|
||||
#
|
||||
|
|
|
@ -53,3 +53,4 @@ com.raytheon.uf.viz.ncep.perspective.feature
|
|||
com.raytheon.uf.viz.d2d.skewt.feature
|
||||
com.raytheon.uf.viz.server.edex.feature
|
||||
com.raytheon.uf.viz.dataplugin.nswrc.feature
|
||||
edu.wisc.ssec.cimss.viz.probsevere.feature
|
||||
|
|
|
@ -301,6 +301,9 @@
|
|||
<antcall target="p2.build.repo">
|
||||
<param name="feature" value="com.raytheon.uf.viz.alertview.feature" />
|
||||
</antcall>
|
||||
<antcall target="p2.build.repo">
|
||||
<param name="feature" value="edu.wisc.ssec.cimss.viz.probsevere.feature" />
|
||||
</antcall>
|
||||
<antcall target="cleanup.features" />
|
||||
</target>
|
||||
|
||||
|
|
|
@ -32,6 +32,7 @@ import com.raytheon.uf.viz.d2d.core.legend.D2DLegendResource.LegendMode;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Oct 24, 2011 mschenke Initial creation
|
||||
* Apr 14, 2023 tiffanym@ucar Bring over MJ change for 3-way toggle for products, none, maps (Jun 14, 2017)
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -79,11 +80,11 @@ public class D2DChangeLegendModeHandler extends AbstractD2DLegendInputHandler {
|
|||
if (!cancel && prefManager.handleClick(TOGGLE_LEGEND_PREF, mouseButton)) {
|
||||
switch (resource.getLegendMode()) {
|
||||
case MAP: {
|
||||
resource.getLegendAction(LegendMode.NONE).run();
|
||||
resource.getLegendAction(LegendMode.PRODUCT).run();
|
||||
break;
|
||||
}
|
||||
case NONE: {
|
||||
resource.getLegendAction(LegendMode.PRODUCT).run();
|
||||
resource.getLegendAction(LegendMode.MAP).run();
|
||||
break;
|
||||
}
|
||||
case PRODUCT: {
|
||||
|
|
|
@ -75,6 +75,10 @@
|
|||
</and>
|
||||
</activeWhen>
|
||||
</handler>
|
||||
<handler
|
||||
class="com.raytheon.uf.viz.d2d.nsharp.D2DNsharpViewAction"
|
||||
commandId="com.raytheon.uf.viz.d2d.nsharp.dialog">
|
||||
</handler>
|
||||
</extension>
|
||||
<extension
|
||||
point="com.raytheon.uf.viz.core.classContext">
|
||||
|
@ -92,5 +96,11 @@
|
|||
resourceType="sounding">
|
||||
</productCreator>
|
||||
</extension>
|
||||
|
||||
<extension
|
||||
point="org.eclipse.ui.commands">
|
||||
<command
|
||||
id="com.raytheon.uf.viz.d2d.nsharp.dialog"
|
||||
name="D2DNsharp">
|
||||
</command>
|
||||
</extension>
|
||||
</plugin>
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
/**
|
||||
*
|
||||
* gov.noaa.nws.ncep.ui.nsharp.palette.NsharpViewAction
|
||||
*
|
||||
*
|
||||
* This code has been developed by the NCEP-SIB for use in the AWIPS2 system.
|
||||
*
|
||||
* <pre>
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------- ------- -------- -----------
|
||||
* 06/25/2012 229 Chin Chen Initial coding
|
||||
* 06/15/2023 tiffanym@ucar Added into Unidata v20.3.2
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author Chin Chen
|
||||
* @version 1.0
|
||||
*/
|
||||
package com.raytheon.uf.viz.d2d.nsharp;
|
||||
|
||||
|
||||
|
||||
import org.eclipse.core.commands.AbstractHandler;
|
||||
import org.eclipse.core.commands.ExecutionEvent;
|
||||
import org.eclipse.core.commands.ExecutionException;
|
||||
import org.eclipse.ui.IViewPart;
|
||||
import org.eclipse.ui.IWorkbenchPage;
|
||||
import org.eclipse.ui.PlatformUI;
|
||||
|
||||
public class D2DNsharpViewAction extends AbstractHandler {
|
||||
|
||||
@Override
|
||||
public Object execute(ExecutionEvent arg0) throws ExecutionException {
|
||||
/*
|
||||
* The viewID string is in the XML file for NSHARP extension point.
|
||||
*/
|
||||
String viewid = "com.raytheon.uf.viz.d2d.nsharp.display.D2DNSharpPaletteWindow";
|
||||
IWorkbenchPage wpage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
|
||||
IViewPart vpart = wpage.findView( viewid);
|
||||
try {
|
||||
if ( vpart == null ){
|
||||
vpart = wpage.showView(viewid );
|
||||
} else {
|
||||
if ( ! wpage.isPartVisible(vpart) ) vpart = wpage.showView( viewid );
|
||||
}
|
||||
}
|
||||
catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
|
@ -23,7 +23,9 @@ import org.eclipse.swt.SWT;
|
|||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Event;
|
||||
import org.eclipse.swt.widgets.Listener;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.ui.IViewSite;
|
||||
import org.eclipse.ui.PlatformUI;
|
||||
|
||||
import com.raytheon.viz.ui.EditorUtil;
|
||||
import com.raytheon.viz.ui.perspectives.AbstractVizPerspectiveManager;
|
||||
|
@ -47,6 +49,7 @@ import gov.noaa.nws.ncep.ui.nsharp.view.NsharpPaletteWindow;
|
|||
* ------------- -------- --------- ------------------------------------------
|
||||
* May 12, 2011 9249 bsteffen Initial creation
|
||||
* Apr 29, 2016 5607 bsteffen Fix modal tool manipulation in eclipse 4.
|
||||
* Jun 15, 2023 tiffanym@ucar reimplement NSHARP load functionality
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -57,6 +60,11 @@ public class D2DNSharpPaletteWindow extends NsharpPaletteWindow {
|
|||
private static final String EDIT_TOOL_CATEGY = "com.raytheon.viz.ui.modalTool.nav";
|
||||
|
||||
private AbstractModalTool lastTool = null;
|
||||
|
||||
Shell shell = PlatformUI.getWorkbench()
|
||||
.getActiveWorkbenchWindow().getShell();
|
||||
|
||||
D2DNsharpLoadDialog loadDia = D2DNsharpLoadDialog.getInstance(shell);
|
||||
|
||||
@Override
|
||||
public void init(IViewSite site) {
|
||||
|
@ -104,8 +112,9 @@ public class D2DNSharpPaletteWindow extends NsharpPaletteWindow {
|
|||
|
||||
@Override
|
||||
public void handleEvent(Event event) {
|
||||
D2DNsharpHandleArchiveFile.openArchiveFile(getViewSite()
|
||||
.getShell());
|
||||
if (loadDia != null) {
|
||||
loadDia.open();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -0,0 +1,292 @@
|
|||
/**
|
||||
*
|
||||
* com.raytheon.uf.viz.d2d.nsharp.view.D2DNsharpLoadDialog
|
||||
*
|
||||
* This java class performs the NSHARP D2DNsharpLoadDialog functions.
|
||||
* This code has been developed by the NCEP-SIB for use in the AWIPS2 system.
|
||||
*
|
||||
* <pre>
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------- ------- -------- -----------
|
||||
* 03/23/2010 229 Chin Chen Initial coding
|
||||
* 06/15/2023 tiffanym@ucar Added into Unidata v20.3.2
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author Chin Chen
|
||||
* @version 1.0
|
||||
*/
|
||||
package com.raytheon.uf.viz.d2d.nsharp.display;
|
||||
|
||||
import gov.noaa.nws.ncep.edex.common.sounding.NcSoundingProfile;
|
||||
import gov.noaa.nws.ncep.ui.nsharp.NsharpConstants;
|
||||
import gov.noaa.nws.ncep.ui.nsharp.display.NsharpEditor;
|
||||
|
||||
import com.raytheon.uf.viz.d2d.nsharp.display.map.D2DNsharpMapResource;
|
||||
import com.raytheon.uf.viz.d2d.nsharp.display.D2DNsharpHandleArchiveFile;
|
||||
import com.raytheon.uf.viz.d2d.nsharp.display.D2DNsharpObservedSoundingDialogContents;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.jface.dialogs.Dialog;
|
||||
import org.eclipse.jface.dialogs.IDialogConstants;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.graphics.Cursor;
|
||||
import org.eclipse.swt.graphics.Font;
|
||||
import org.eclipse.swt.graphics.FontData;
|
||||
import org.eclipse.swt.layout.GridLayout;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
import org.eclipse.swt.widgets.Event;
|
||||
import org.eclipse.swt.widgets.Group;
|
||||
import org.eclipse.swt.widgets.Listener;
|
||||
import org.eclipse.swt.widgets.MessageBox;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.swt.widgets.Text;
|
||||
|
||||
import com.raytheon.uf.viz.core.exception.VizException;
|
||||
|
||||
public class D2DNsharpLoadDialog extends Dialog {
|
||||
|
||||
private final static int DIALOG_WIDTH = 300;
|
||||
|
||||
private final static int DIALOG_HEIGHT = 700;
|
||||
|
||||
protected Composite top;
|
||||
|
||||
private static Composite dialogParent;
|
||||
|
||||
private static D2DNsharpLoadDialog INSTANCE = null;
|
||||
|
||||
private static Shell shell;
|
||||
|
||||
public static final String soundingTypeString = "Observed Soundings";
|
||||
|
||||
public static final int OBSER_SND = 0;
|
||||
|
||||
public static final int ARCHIVE = 3; // TBDGPD 5;
|
||||
|
||||
private D2DNsharpObservedSoundingDialogContents obsDialog;
|
||||
|
||||
private Group soundingTypeGp;
|
||||
|
||||
private int activeLoadSoundingType;
|
||||
|
||||
private NcSoundingProfile.ObsSndType activeObsSndType = NcSoundingProfile.ObsSndType.BUFRUA;
|
||||
|
||||
private ArrayList<String> obsSelectedTimeList = new ArrayList<String>();
|
||||
|
||||
private String activeGpdProdName = "";
|
||||
|
||||
private ArrayList<String> gpdSelectedTimeList = new ArrayList<String>();
|
||||
|
||||
private Text text1;
|
||||
|
||||
private MessageBox mb;
|
||||
|
||||
private Cursor waitCursor = null;
|
||||
|
||||
private Font newFont;
|
||||
|
||||
public Font getNewFont() {
|
||||
return newFont;
|
||||
}
|
||||
|
||||
public D2DNsharpObservedSoundingDialogContents getObsDialog() {
|
||||
return obsDialog;
|
||||
}
|
||||
|
||||
public void setAndOpenMb(String msg) {
|
||||
if (mb != null) {
|
||||
mb.setMessage(msg);
|
||||
try {
|
||||
mb.open();
|
||||
} catch (Exception e) {
|
||||
mb = new MessageBox(shell, SWT.ICON_WARNING | SWT.OK);
|
||||
mb.setMessage(msg);
|
||||
mb.open();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void cleanSelf() {
|
||||
|
||||
if (text1 != null) {
|
||||
text1.dispose();
|
||||
text1 = null;
|
||||
}
|
||||
}
|
||||
|
||||
private void cleanupDialog(int activeLoadType) {
|
||||
switch (activeLoadType) {
|
||||
case OBSER_SND:
|
||||
obsDialog.cleanup();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void setActiveLoadSoundingType(int activeLoadSoundingType) {
|
||||
this.activeLoadSoundingType = activeLoadSoundingType;
|
||||
}
|
||||
|
||||
public int getActiveLoadSoundingType() {
|
||||
return activeLoadSoundingType;
|
||||
}
|
||||
|
||||
public ArrayList<String> getObsSelectedTimeList() {
|
||||
return obsSelectedTimeList;
|
||||
}
|
||||
|
||||
public void setObsSelectedTimeList(ArrayList<String> obsSelectedTimeList) {
|
||||
this.obsSelectedTimeList = obsSelectedTimeList;
|
||||
}
|
||||
|
||||
public ArrayList<String> getGpdSelectedTimeList() {
|
||||
return gpdSelectedTimeList;
|
||||
}
|
||||
|
||||
public void setGpdSelectedTimeList(ArrayList<String> gpdSelectedTimeList) {
|
||||
this.gpdSelectedTimeList = gpdSelectedTimeList;
|
||||
}
|
||||
|
||||
public NcSoundingProfile.ObsSndType getActiveObsSndType() {
|
||||
return activeObsSndType;
|
||||
}
|
||||
|
||||
public void setActiveObsSndType(
|
||||
NcSoundingProfile.ObsSndType activeObsSndType) {
|
||||
this.activeObsSndType = activeObsSndType;
|
||||
}
|
||||
|
||||
public String getActiveGpdProdName() {
|
||||
return activeGpdProdName;
|
||||
}
|
||||
|
||||
public void setActiveGpdProdName(String activeGpdProdName) {
|
||||
this.activeGpdProdName = activeGpdProdName;
|
||||
}
|
||||
|
||||
static int count = 0;
|
||||
|
||||
public static D2DNsharpLoadDialog getAccess() {
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
public D2DNsharpLoadDialog(Shell parentShell) throws VizException {
|
||||
super(parentShell);
|
||||
this.setShellStyle(SWT.TITLE | SWT.MODELESS | SWT.CLOSE
|
||||
| SWT.SHELL_TRIM);
|
||||
activeLoadSoundingType = OBSER_SND;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets
|
||||
* .Shell)
|
||||
*/
|
||||
@Override
|
||||
protected void configureShell(Shell shell) {
|
||||
super.configureShell(shell);
|
||||
D2DNsharpLoadDialog.shell = shell;
|
||||
shell.setSize(getDialogWidth(), DIALOG_HEIGHT);
|
||||
shell.setText("Load Data");
|
||||
mb = new MessageBox(shell, SWT.ICON_WARNING | SWT.OK);
|
||||
|
||||
mb.setMessage("User Input Error!");
|
||||
Font font = shell.getFont();
|
||||
FontData[] fontData = font.getFontData();
|
||||
for (int i = 0; i < fontData.length; i++) {
|
||||
fontData[i].setHeight(7);
|
||||
}
|
||||
newFont = new Font(font.getDevice(), fontData);
|
||||
shell.setFont(newFont);
|
||||
}
|
||||
|
||||
private void createLoadContents(Composite parent) {
|
||||
dialogParent = parent;
|
||||
obsDialog = new D2DNsharpObservedSoundingDialogContents(dialogParent);
|
||||
obsDialog.createObsvdDialogContents();
|
||||
activeLoadSoundingType = OBSER_SND;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the dialog area
|
||||
*/
|
||||
@Override
|
||||
public Control createDialogArea(Composite parent) {
|
||||
top = (Composite) super.createDialogArea(parent);
|
||||
GridLayout mainLayout = new GridLayout(1, false);
|
||||
mainLayout.marginHeight = 3;
|
||||
mainLayout.marginWidth = 3;
|
||||
createLoadContents(top);
|
||||
if (waitCursor == null)
|
||||
waitCursor = new Cursor(top.getDisplay(), SWT.CURSOR_WAIT);
|
||||
return top;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int open() {
|
||||
if (this.getShell() == null) {
|
||||
this.create();
|
||||
}
|
||||
this.getShell().setLocation(
|
||||
this.getShell().getParent().getLocation().x + 1100,
|
||||
this.getShell().getParent().getLocation().y + 200);
|
||||
D2DNsharpMapResource.bringMapEditorToTop();
|
||||
return super.open();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean close() {
|
||||
cleanSelf();
|
||||
cleanupDialog(activeLoadSoundingType);
|
||||
if (waitCursor != null)
|
||||
waitCursor.dispose();
|
||||
waitCursor = null;
|
||||
newFont.dispose();
|
||||
return (super.close());
|
||||
}
|
||||
|
||||
public boolean closeDiaOnly() {
|
||||
cleanSelf();
|
||||
return (super.close());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createButtonsForButtonBar(Composite parent) {
|
||||
createButton(parent, IDialogConstants.CANCEL_ID,
|
||||
IDialogConstants.CLOSE_LABEL, false);
|
||||
}
|
||||
|
||||
public static D2DNsharpLoadDialog getInstance(Shell parShell) {
|
||||
if (INSTANCE == null) {
|
||||
try {
|
||||
INSTANCE = new D2DNsharpLoadDialog(parShell);
|
||||
} catch (VizException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
public void startWaitCursor() {
|
||||
if (waitCursor != null)
|
||||
top.setCursor(waitCursor);
|
||||
}
|
||||
|
||||
public void stopWaitCursor() {
|
||||
top.setCursor(null);
|
||||
}
|
||||
|
||||
public static int getDialogWidth() {
|
||||
return DIALOG_WIDTH;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,369 @@
|
|||
/**
|
||||
*
|
||||
* gov.noaa.nws.ncep.ui.nsharp.view.ObservedSoundingDialogContents
|
||||
*
|
||||
* This java class performs the NSHARP D2DNsharpLoadDialog functions.
|
||||
* This code has been developed by the NCEP-SIB for use in the AWIPS2 system.
|
||||
*
|
||||
* <pre>
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------- ------- -------- -----------
|
||||
* 01/2011 229 Chin Chen Initial coding
|
||||
* 09/14/2011 457 S. Gurung Renamed H5UAIR to NCUAIR
|
||||
* 07202015 RM#9173 Chin Chen use NcSoundingQuery.genericSoundingDataQuery() to query grid model sounding data
|
||||
* 06/15/2023 tiffanym@ucar Added into Unidata v20.3.2
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author Chin Chen
|
||||
* @version 1.0
|
||||
*/
|
||||
package com.raytheon.uf.viz.d2d.nsharp.display;
|
||||
|
||||
import gov.noaa.nws.ncep.viz.soundingrequest.NcSoundingQuery;
|
||||
import gov.noaa.nws.ncep.edex.common.sounding.NcSoundingProfile;
|
||||
import gov.noaa.nws.ncep.edex.common.sounding.NcSoundingStnInfo;
|
||||
import gov.noaa.nws.ncep.edex.common.sounding.NcSoundingStnInfoCollection;
|
||||
import gov.noaa.nws.ncep.edex.common.sounding.NcSoundingTimeLines;
|
||||
import gov.noaa.nws.ncep.ui.nsharp.NsharpConstants;
|
||||
import gov.noaa.nws.ncep.ui.nsharp.NsharpStationInfo;
|
||||
import com.raytheon.uf.viz.d2d.nsharp.display.map.D2DNsharpMapResource;
|
||||
|
||||
import java.text.DateFormatSymbols;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.graphics.Font;
|
||||
import org.eclipse.swt.layout.GridLayout;
|
||||
import org.eclipse.swt.widgets.Button;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Event;
|
||||
import org.eclipse.swt.widgets.Group;
|
||||
import org.eclipse.swt.widgets.Listener;
|
||||
|
||||
public class D2DNsharpObservedSoundingDialogContents {
|
||||
private Composite parent;
|
||||
|
||||
private org.eclipse.swt.widgets.List sndTimeList;
|
||||
|
||||
private Group sndTimeListGp, topGp;
|
||||
|
||||
private boolean timeLimit = false;
|
||||
|
||||
private boolean rawData = false;
|
||||
|
||||
private Button timeBtn, bufruaBtn, uairBtn, rawBtn;
|
||||
|
||||
private String FILE_UAIR = "UAIR";
|
||||
|
||||
private String FILE_BUFRUA = "BUFRUA";
|
||||
|
||||
// private String FILE_DROP = "DROP";
|
||||
private NcSoundingProfile.ObsSndType currentSndType = NcSoundingProfile.ObsSndType.NONE;
|
||||
|
||||
private D2DNsharpLoadDialog ldDia;
|
||||
|
||||
private ArrayList<String> selectedTimeList = new ArrayList<String>();
|
||||
|
||||
private Font newFont;
|
||||
|
||||
public boolean isRawData() {
|
||||
return rawData;
|
||||
}
|
||||
|
||||
public NcSoundingProfile.ObsSndType getCurrentSndType() {
|
||||
return currentSndType;
|
||||
}
|
||||
|
||||
public D2DNsharpObservedSoundingDialogContents(Composite parent) {
|
||||
this.parent = parent;
|
||||
ldDia = D2DNsharpLoadDialog.getAccess();
|
||||
newFont = ldDia.getNewFont();
|
||||
}
|
||||
|
||||
private void createObsvdSndUairList() {
|
||||
sndTimeList.removeAll();
|
||||
|
||||
// use NcSoundingQuery to query
|
||||
NcSoundingTimeLines timeLines = NcSoundingQuery
|
||||
.soundingTimeLineQuery(currentSndType.toString());
|
||||
|
||||
if (timeLines != null && timeLines.getTimeLines() != null) {
|
||||
DateFormatSymbols dfs = new DateFormatSymbols();
|
||||
String[] defaultDays = dfs.getShortWeekdays();
|
||||
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
|
||||
ldDia.startWaitCursor();
|
||||
for (Object timeLine : timeLines.getTimeLines()) {
|
||||
Date synoptictime = (Date) timeLine;
|
||||
if (synoptictime != null) {
|
||||
// need to format synoptictime to GMT time string.
|
||||
// Date.toString produce a local time Not GMT time
|
||||
cal.setTimeInMillis(synoptictime.getTime());
|
||||
String dayOfWeek = defaultDays[cal
|
||||
.get(Calendar.DAY_OF_WEEK)];
|
||||
// String gmtTimeStr =
|
||||
// String.format("%1$ty%1$tm%1$td/%1$tH%1$tM %2$s", cal,
|
||||
// currentSndType.toString());
|
||||
String gmtTimeStr = String.format(
|
||||
"%1$ty%1$tm%1$td/%1$tH(%3$s) %2$s", cal,
|
||||
currentSndType.toString(), dayOfWeek);
|
||||
if (!timeLimit) {
|
||||
// System.out.println("not 00z and 12z only");
|
||||
sndTimeList.add(gmtTimeStr);
|
||||
} else {
|
||||
int hour = cal.get(Calendar.HOUR_OF_DAY);
|
||||
// System.out.println("00z and 12z only hour = "+ hour);
|
||||
if ((hour == 0) || (hour == 12))
|
||||
sndTimeList.add(gmtTimeStr);
|
||||
}
|
||||
}
|
||||
}
|
||||
ldDia.stopWaitCursor();
|
||||
} else
|
||||
System.out.println("EDEX timeline query return null");
|
||||
|
||||
}
|
||||
|
||||
private void queryAndMarkStn(String selectedSndTime) {
|
||||
String selectTimetr = NcSoundingQuery
|
||||
.convertSoundTimeDispStringToRangeStartTimeFormat(selectedSndTime);
|
||||
D2DNsharpMapResource nsharpMapResource = D2DNsharpMapResource
|
||||
.getOrCreateNsharpMapResource();
|
||||
// Chin float lat, lon;
|
||||
double lat, lon;
|
||||
String stnInfoStr;
|
||||
|
||||
// use NcSoundingQuery to query stn info
|
||||
NcSoundingStnInfoCollection sndStnInfoCol = NcSoundingQuery.genericSoundingStnInfoQuery(currentSndType.toString(),null, selectTimetr) ;
|
||||
// .soundingStnInfoQuery(currentSndType.toString(), selectTimetr);
|
||||
if (sndStnInfoCol != null && sndStnInfoCol.getStationInfo() != null) {
|
||||
|
||||
NcSoundingStnInfo[] stnInfoAry = sndStnInfoCol.getStationInfo();
|
||||
// System.out.println("obs station number = "+ stnInfoAry.length );
|
||||
// Note: A same station may have many reports
|
||||
for (int i = 0; i < stnInfoAry.length; i++) {
|
||||
NcSoundingStnInfo stnInfo = stnInfoAry[i];
|
||||
Date synoptictime = null;
|
||||
stnInfoStr = stnInfo.getStnId();
|
||||
if (stnInfoStr == null || stnInfoStr.length() < 1)
|
||||
stnInfoStr = "*";
|
||||
lat = stnInfo.getStationLatitude();
|
||||
lon = stnInfo.getStationLongitude();
|
||||
// elv = stnInfo.getStationElevation();
|
||||
synoptictime = (Date) stnInfo.getSynopTime();
|
||||
|
||||
// convert to Nsharp's own station info struct
|
||||
NsharpStationInfo stn = new NsharpStationInfo();
|
||||
String packedStnInfoStr = stnInfoStr.replace(" ", "_");
|
||||
stn.setStnDisplayInfo(packedStnInfoStr + " " + selectedSndTime
|
||||
+ " " + currentSndType.toString());
|
||||
stn.setLongitude(lon);
|
||||
stn.setLatitude(lat);
|
||||
stn.setStnId(stnInfoStr);
|
||||
stn.setReftime(synoptictime);
|
||||
stn.setRangestarttime(synoptictime);
|
||||
stn.setSndType(currentSndType.toString());
|
||||
// System.out.println("sndType= "+currentSndType);
|
||||
// System.out.println("stn lat ="+stn.getLatitude() +
|
||||
// " lon="+stn.getLongitude());
|
||||
nsharpMapResource.addPoint(stn);
|
||||
}
|
||||
|
||||
D2DNsharpMapResource.bringMapEditorToTop();
|
||||
}
|
||||
}
|
||||
|
||||
private void handleSndTimeSelection() {
|
||||
String selectedSndTime = null;
|
||||
if (sndTimeList.getSelectionCount() > 0) {
|
||||
D2DNsharpMapResource nsharpMapResource = D2DNsharpMapResource
|
||||
.getOrCreateNsharpMapResource();// D2DNsharpLoadDialog.getAccess().getD2DNsharpMapResource();
|
||||
nsharpMapResource.setPoints(null);
|
||||
selectedTimeList.clear();
|
||||
ldDia.startWaitCursor();
|
||||
for (int i = 0; i < sndTimeList.getSelectionCount(); i++) {
|
||||
selectedSndTime = sndTimeList.getSelection()[i];
|
||||
selectedTimeList.add(selectedSndTime);
|
||||
int endIndex = selectedSndTime.indexOf(" ");
|
||||
String queryingSndTime = selectedSndTime.substring(0, endIndex);
|
||||
queryAndMarkStn(queryingSndTime);
|
||||
|
||||
}
|
||||
ldDia.setObsSelectedTimeList(selectedTimeList);
|
||||
ldDia.stopWaitCursor();
|
||||
}
|
||||
}
|
||||
|
||||
public void createObsvdDialogContents() {
|
||||
currentSndType = ldDia.getActiveObsSndType();
|
||||
timeLimit = false;
|
||||
rawData = false;
|
||||
topGp = new Group(parent, SWT.SHADOW_ETCHED_IN);
|
||||
topGp.setLayout(new GridLayout(2, false));
|
||||
|
||||
bufruaBtn = new Button(topGp, SWT.RADIO | SWT.BORDER);
|
||||
bufruaBtn.setText(FILE_BUFRUA);
|
||||
bufruaBtn.setEnabled(true);
|
||||
bufruaBtn.setBounds(topGp.getBounds().x + NsharpConstants.btnGapX,
|
||||
topGp.getBounds().y + NsharpConstants.labelGap,
|
||||
NsharpConstants.btnWidth, NsharpConstants.btnHeight);
|
||||
bufruaBtn.setFont(newFont);
|
||||
bufruaBtn.addListener(SWT.MouseUp, new Listener() {
|
||||
public void handleEvent(Event event) {
|
||||
sndTimeList.removeAll();
|
||||
currentSndType = NcSoundingProfile.ObsSndType.BUFRUA;
|
||||
ldDia.setActiveObsSndType(currentSndType);
|
||||
createObsvdSndUairList();
|
||||
}
|
||||
});
|
||||
|
||||
uairBtn = new Button(topGp, SWT.RADIO | SWT.BORDER);
|
||||
uairBtn.setText(FILE_UAIR);
|
||||
uairBtn.setEnabled(true);
|
||||
uairBtn.setBounds(topGp.getBounds().x + NsharpConstants.btnGapX,
|
||||
bufruaBtn.getBounds().y + bufruaBtn.getBounds().height
|
||||
+ NsharpConstants.btnGapY, NsharpConstants.btnWidth,
|
||||
NsharpConstants.btnHeight);
|
||||
uairBtn.setFont(newFont);
|
||||
uairBtn.addListener(SWT.MouseUp, new Listener() {
|
||||
public void handleEvent(Event event) {
|
||||
sndTimeList.removeAll();
|
||||
currentSndType = NcSoundingProfile.ObsSndType.NCUAIR;
|
||||
ldDia.setActiveObsSndType(currentSndType);
|
||||
createObsvdSndUairList();
|
||||
}
|
||||
});
|
||||
|
||||
timeBtn = new Button(topGp, SWT.CHECK | SWT.BORDER);
|
||||
timeBtn.setText("00Z and 12Z only");
|
||||
timeBtn.setEnabled(true);
|
||||
timeBtn.setFont(newFont);
|
||||
timeBtn.addListener(SWT.MouseUp, new Listener() {
|
||||
public void handleEvent(Event event) {
|
||||
if (timeBtn.getSelection())
|
||||
timeLimit = true;
|
||||
else
|
||||
timeLimit = false;
|
||||
// refresh sounding list if file type is selected already
|
||||
if (currentSndType == NcSoundingProfile.ObsSndType.NCUAIR
|
||||
|| currentSndType == NcSoundingProfile.ObsSndType.BUFRUA) {
|
||||
createObsvdSndUairList();
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
rawBtn = new Button(topGp, SWT.CHECK | SWT.BORDER);
|
||||
rawBtn.setText("raw data");
|
||||
rawBtn.setEnabled(true);
|
||||
rawBtn.setBounds(timeBtn.getBounds().x + timeBtn.getBounds().width,
|
||||
timeBtn.getBounds().y, timeBtn.getBounds().width,
|
||||
timeBtn.getBounds().height);
|
||||
rawBtn.setFont(newFont);
|
||||
rawBtn.addListener(SWT.MouseUp, new Listener() {
|
||||
public void handleEvent(Event event) {
|
||||
if (rawBtn.getSelection())
|
||||
rawData = true;
|
||||
else
|
||||
rawData = false;
|
||||
;
|
||||
}
|
||||
});
|
||||
// create file widget list
|
||||
sndTimeListGp = new Group(parent, SWT.SHADOW_NONE);
|
||||
|
||||
sndTimeListGp.setFont(newFont);
|
||||
sndTimeList = new org.eclipse.swt.widgets.List(sndTimeListGp,
|
||||
SWT.BORDER | SWT.MULTI | SWT.V_SCROLL);
|
||||
sndTimeList.setBounds(topGp.getBounds().x + NsharpConstants.btnGapX,
|
||||
sndTimeListGp.getBounds().y + NsharpConstants.labelGap,
|
||||
D2DNsharpLoadDialog.getDialogWidth()-40, NsharpConstants.listHeight * 6);
|
||||
sndTimeList.setFont(newFont);
|
||||
|
||||
// create a selection listener to handle user's selection on list
|
||||
sndTimeList.addListener(SWT.Selection, new Listener() {
|
||||
// private String selectedSndTime=null;
|
||||
public void handleEvent(Event e) {
|
||||
handleSndTimeSelection();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
if (currentSndType == NcSoundingProfile.ObsSndType.NCUAIR
|
||||
|| currentSndType == NcSoundingProfile.ObsSndType.BUFRUA) {
|
||||
if (currentSndType == NcSoundingProfile.ObsSndType.NCUAIR)
|
||||
uairBtn.setSelection(true);
|
||||
else
|
||||
bufruaBtn.setSelection(true);
|
||||
createObsvdSndUairList();
|
||||
selectedTimeList = ldDia.getObsSelectedTimeList();
|
||||
Object[] selTimeObjectArray = selectedTimeList.toArray();
|
||||
String[] selTimeStringArray = Arrays.copyOf(selTimeObjectArray,
|
||||
selTimeObjectArray.length, String[].class);
|
||||
sndTimeList.setSelection(selTimeStringArray);
|
||||
handleSndTimeSelection();
|
||||
}
|
||||
}
|
||||
|
||||
public void cleanup() {
|
||||
if (sndTimeList != null) {
|
||||
sndTimeList.removeListener(SWT.Selection,
|
||||
sndTimeList.getListeners(SWT.Selection)[0]);
|
||||
sndTimeList.dispose();
|
||||
sndTimeList = null;
|
||||
}
|
||||
if (sndTimeListGp != null) {
|
||||
sndTimeListGp.dispose();
|
||||
sndTimeListGp = null;
|
||||
}
|
||||
if (timeBtn != null) {
|
||||
timeBtn.removeListener(SWT.MouseUp,
|
||||
timeBtn.getListeners(SWT.MouseUp)[0]);
|
||||
timeBtn.dispose();
|
||||
timeBtn = null;
|
||||
}
|
||||
if (rawBtn != null) {
|
||||
rawBtn.removeListener(SWT.MouseUp,
|
||||
rawBtn.getListeners(SWT.MouseUp)[0]);
|
||||
rawBtn.dispose();
|
||||
rawBtn = null;
|
||||
}
|
||||
/*
|
||||
* if(browseBtn != null){ browseBtn.removeListener(SWT.MouseUp,
|
||||
* browseBtn.getListeners(SWT.MouseUp)[0]); browseBtn.dispose();
|
||||
* browseBtn = null; }
|
||||
*
|
||||
*
|
||||
* if(tamBtn != null){ tamBtn.removeListener(SWT.MouseUp,
|
||||
* tamBtn.getListeners(SWT.MouseUp)[0]); tamBtn.dispose(); tamBtn =
|
||||
* null; }
|
||||
*/
|
||||
if (bufruaBtn != null) {
|
||||
bufruaBtn.removeListener(SWT.MouseUp,
|
||||
bufruaBtn.getListeners(SWT.MouseUp)[0]);
|
||||
bufruaBtn.dispose();
|
||||
bufruaBtn = null;
|
||||
}
|
||||
if (uairBtn != null) {
|
||||
uairBtn.removeListener(SWT.MouseUp,
|
||||
uairBtn.getListeners(SWT.MouseUp)[0]);
|
||||
uairBtn.dispose();
|
||||
uairBtn = null;
|
||||
}
|
||||
/*
|
||||
* if(newTabBtn != null){ newTabBtn.removeListener(SWT.MouseUp,
|
||||
* newTabBtn.getListeners(SWT.MouseUp)[0]); newTabBtn.dispose();
|
||||
* newTabBtn = null; }
|
||||
*/
|
||||
D2DNsharpLoadDialog ldDia = D2DNsharpLoadDialog.getAccess();
|
||||
if (topGp != null) {
|
||||
topGp.dispose();
|
||||
topGp = null;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,243 @@
|
|||
/**
|
||||
*
|
||||
* com.raytheon.uf.viz.d2d.nsharp.display.map.D2DNsharpMapMouseHandler
|
||||
*
|
||||
* This java class performs the NSHARP Modal functions.
|
||||
* This code has been developed by the NCEP-SIB for use in the AWIPS2 system.
|
||||
*
|
||||
* <pre>
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------- ------- -------- -----------
|
||||
* 03/23/2010 229 Chin Chen Initial coding
|
||||
* 03/11/2013 972 Greg Hull NatlCntrsEditor
|
||||
* 09/28/2015 RM#10295 Chin Chen Let sounding data query run in its own thread to avoid gui locked out during load
|
||||
* 06/15/2023 tiffanym@ucar Added into Unidata v20.3.2
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author Chin Chen
|
||||
* @version 1.0
|
||||
*/
|
||||
package com.raytheon.uf.viz.d2d.nsharp.display.map;
|
||||
|
||||
import gov.noaa.nws.ncep.edex.common.sounding.NcSoundingLayer;
|
||||
import gov.noaa.nws.ncep.ui.nsharp.NsharpStationInfo;
|
||||
import gov.noaa.nws.ncep.ui.nsharp.display.NsharpEditor;
|
||||
import gov.noaa.nws.ncep.ui.nsharp.display.map.NsharpObservedSoundingQuery;
|
||||
|
||||
import java.util.ArrayList;
|
||||
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.eclipse.ui.progress.UIJob;
|
||||
import org.geotools.referencing.GeodeticCalculator;
|
||||
|
||||
import com.raytheon.uf.common.status.IUFStatusHandler;
|
||||
import com.raytheon.uf.common.status.UFStatus;
|
||||
import com.raytheon.uf.viz.core.map.IMapDescriptor;
|
||||
import com.raytheon.uf.viz.d2d.nsharp.display.D2DNsharpLoadDialog;
|
||||
import com.raytheon.viz.ui.editor.AbstractEditor;
|
||||
import com.raytheon.viz.ui.input.InputAdapter;
|
||||
import org.locationtech.jts.geom.Coordinate;
|
||||
|
||||
public class D2DNsharpMapMouseHandler extends InputAdapter {
|
||||
private static final IUFStatusHandler statusHandler = UFStatus
|
||||
.getHandler(D2DNsharpMapMouseHandler.class);
|
||||
|
||||
public D2DNsharpMapMouseHandler() {
|
||||
instance = this;
|
||||
}
|
||||
|
||||
private static final double NctextuiPointMinDistance = 45000;
|
||||
|
||||
private static D2DNsharpMapMouseHandler instance;
|
||||
|
||||
private double lat, lon;
|
||||
|
||||
public double getLat() {
|
||||
return lat;
|
||||
}
|
||||
|
||||
public double getLon() {
|
||||
return lon;
|
||||
}
|
||||
|
||||
public static D2DNsharpMapMouseHandler getAccess() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see com.raytheon.viz.ui.input.IInputHandler#handleMouseDown(int, int,
|
||||
* int)
|
||||
*/
|
||||
@Override
|
||||
public boolean handleMouseDown(int x, int y, int button) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see com.raytheon.viz.ui.input.IInputHandler#handleMouseDownMove(int,
|
||||
* int, int) handle left button, so user be able to shift map while it is
|
||||
* down
|
||||
*/
|
||||
@Override
|
||||
public boolean handleMouseDownMove(int x, int y, int button) {
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handleMouseMove(int x, int y) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see com.raytheon.viz.ui.input.IInputHandler#handleMouseUp(int, int, int)
|
||||
* handle right button, so user be able to pick stn and print text report
|
||||
*/
|
||||
@Override
|
||||
public boolean handleMouseUp(int x, int y, int button) {
|
||||
if (!D2DNsharpMapResource.getMapRsc().isEditable())
|
||||
return false;
|
||||
// button 1 is left mouse button
|
||||
if (button == 1) {
|
||||
AbstractEditor mapEditor = D2DNsharpMapResource.getMapEditor();
|
||||
if (mapEditor != null) {
|
||||
// Check if mouse is in geographic extent
|
||||
Coordinate loc = mapEditor.translateClick(x, y);
|
||||
if (loc == null)
|
||||
return false;
|
||||
D2DNsharpLoadDialog loadDia = D2DNsharpLoadDialog.getAccess();
|
||||
if (loadDia != null) {
|
||||
int activeLoadType = loadDia
|
||||
.getActiveLoadSoundingType();
|
||||
List<NsharpStationInfo> points = D2DNsharpMapResource
|
||||
.getOrCreateNsharpMapResource().getPoints();
|
||||
if (points.isEmpty() == false) {
|
||||
|
||||
// get the stn close to loc "enough" and retrieve
|
||||
// report for it
|
||||
// Note::One stn may have more than one dataLine, if
|
||||
// user picked multiple data time lines
|
||||
List<NsharpStationInfo> stnPtDataLineLst = getPtWithinMinDist(
|
||||
points, loc);
|
||||
if (stnPtDataLineLst != null
|
||||
&& stnPtDataLineLst.size() > 0) {
|
||||
// hash map, use stn display info as key
|
||||
Map<String, List<NcSoundingLayer>> soundingLysLstMap = new HashMap<String, List<NcSoundingLayer>>();
|
||||
// String soundingType;
|
||||
if (activeLoadType == D2DNsharpLoadDialog.OBSER_SND) {
|
||||
NsharpObservedSoundingQuery obsQry = new NsharpObservedSoundingQuery(
|
||||
"Querying Sounding Data...");
|
||||
obsQry.getObservedSndData(stnPtDataLineLst,
|
||||
loadDia.getObsDialog().isRawData(),
|
||||
soundingLysLstMap);
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} else if (button == 3) {
|
||||
// button 3 is right button.
|
||||
bringSkewTEdToTop();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* Chin Note: If calling NsharpEditor.bringSkewTEditorToTop() directly in
|
||||
* mouse handler API, e.g. handleMouseUp(), then handleMouseUp() will be
|
||||
* called one more time by System. Do not know the root cause of it. To
|
||||
* avoid handling such event twice (e.g. query sounding data twice), we will
|
||||
* call NsharpEditor.bringSkewTEditorToTop() from an UiJob.
|
||||
*/
|
||||
private void bringSkewTEdToTop() {
|
||||
Job uijob = new UIJob("bring skewT to top") {
|
||||
public IStatus runInUIThread(IProgressMonitor monitor) {
|
||||
NsharpEditor.bringEditorToTop();
|
||||
return Status.OK_STATUS;
|
||||
}
|
||||
|
||||
};
|
||||
uijob.setSystem(true);
|
||||
uijob.schedule();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the nearest point of an selected element to the input point
|
||||
*
|
||||
* @param el
|
||||
* element
|
||||
* @param pt
|
||||
* input point
|
||||
* @return
|
||||
*/
|
||||
private List<NsharpStationInfo> getPtWithinMinDist(
|
||||
List<NsharpStationInfo> points, Coordinate pt) {
|
||||
|
||||
NsharpStationInfo thePoint = null;
|
||||
double minDistance = NctextuiPointMinDistance;
|
||||
GeodeticCalculator gc;
|
||||
List<NsharpStationInfo> thePoints = new ArrayList<NsharpStationInfo>();
|
||||
// can't assume this is a map Editor/MapDescriptor
|
||||
AbstractEditor mapEditor = D2DNsharpMapResource.getMapEditor();
|
||||
if (mapEditor != null) {
|
||||
IMapDescriptor desc = (IMapDescriptor) mapEditor
|
||||
.getActiveDisplayPane().getRenderableDisplay()
|
||||
.getDescriptor();
|
||||
gc = new GeodeticCalculator(desc.getCRS());
|
||||
gc.setStartingGeographicPoint(pt.x, pt.y);
|
||||
for (NsharpStationInfo point : points) {
|
||||
|
||||
gc.setDestinationGeographicPoint(point.getLongitude(),
|
||||
point.getLatitude());
|
||||
double dist;
|
||||
try {
|
||||
dist = gc.getOrthodromicDistance();
|
||||
if (dist < minDistance) {
|
||||
|
||||
minDistance = dist;
|
||||
thePoint = point;
|
||||
}
|
||||
} catch (Exception e) {}
|
||||
}
|
||||
// Chin, there may be more than one point for a selected stn. As
|
||||
// user may selected more than one data time,
|
||||
// For same stn, each data time will have one point to represent it.
|
||||
// So, a stn may have more than one points
|
||||
if (thePoint != null) {
|
||||
for (NsharpStationInfo point : points) {
|
||||
if ((thePoint.getLatitude() == point.getLatitude())
|
||||
&& (thePoint.getLongitude() == point.getLongitude())) {
|
||||
thePoints.add(point);
|
||||
}
|
||||
}
|
||||
|
||||
// marked X on selected point
|
||||
D2DNsharpMapResource.getOrCreateNsharpMapResource()
|
||||
.setPickedPoint(thePoint);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
return thePoints;
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,483 @@
|
|||
package com.raytheon.uf.viz.d2d.nsharp.display.map;
|
||||
|
||||
import gov.noaa.nws.ncep.ui.nsharp.NsharpConstants;
|
||||
import gov.noaa.nws.ncep.ui.nsharp.NsharpStationInfo;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.graphics.Cursor;
|
||||
import org.eclipse.swt.graphics.RGB;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
import org.eclipse.swt.widgets.Display;
|
||||
import org.eclipse.ui.PlatformUI;
|
||||
import org.opengis.referencing.crs.CoordinateReferenceSystem;
|
||||
|
||||
import com.raytheon.uf.viz.core.DrawableCircle;
|
||||
import com.raytheon.uf.viz.core.DrawableString;
|
||||
import com.raytheon.uf.viz.core.IGraphicsTarget;
|
||||
import com.raytheon.uf.viz.core.PixelExtent;
|
||||
import com.raytheon.uf.viz.core.drawables.PaintProperties;
|
||||
import com.raytheon.uf.viz.core.drawables.ResourcePair;
|
||||
import com.raytheon.uf.viz.core.exception.VizException;
|
||||
import com.raytheon.uf.viz.core.map.IMapDescriptor;
|
||||
import com.raytheon.uf.viz.core.map.MapDescriptor;
|
||||
import com.raytheon.uf.viz.core.rsc.AbstractVizResource;
|
||||
import com.raytheon.uf.viz.core.rsc.IInputHandler;
|
||||
import com.raytheon.uf.viz.core.rsc.LoadProperties;
|
||||
import com.raytheon.uf.viz.core.rsc.ResourceList.RemoveListener;
|
||||
import com.raytheon.uf.viz.core.rsc.capabilities.EditableCapability;
|
||||
import com.raytheon.uf.viz.core.rsc.capabilities.MagnificationCapability;
|
||||
import com.raytheon.viz.ui.EditorUtil;
|
||||
import com.raytheon.viz.ui.editor.AbstractEditor;
|
||||
import com.raytheon.viz.ui.input.EditableManager;
|
||||
import org.locationtech.jts.geom.Coordinate;
|
||||
|
||||
/**
|
||||
*
|
||||
* com.raytheon.uf.viz.d2d.nsharp.display.map.D2DNsharpMapResource
|
||||
*
|
||||
* This java class performs the NSHARP Resource functions.
|
||||
* This code has been developed by the NCEP-SIB for use in the AWIPS2 system.
|
||||
*
|
||||
* <pre>
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------- ------- -------- -----------
|
||||
* 03/23/2010 229 Chin Chen Initial coding
|
||||
* 08/17/2012 655 B. Hebbard Added paintProps as parameter to IDisplayable draw (2)
|
||||
* 03/11/2013 972 Greg Hull NatlCntrsEditor
|
||||
* 06/15/2023 tiffanym@ucar Added into Unidata v20.3.2
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author Chin Chen
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
public class D2DNsharpMapResource extends
|
||||
AbstractVizResource<D2DNsharpMapResourceData, MapDescriptor> implements
|
||||
RemoveListener {
|
||||
private static D2DNsharpMapResource mapRsc = null;
|
||||
|
||||
private static D2DNsharpMapResourceData mapRscData = null;
|
||||
|
||||
private static AbstractEditor mapEditor = null;
|
||||
|
||||
private static D2DNsharpMapMouseHandler mouseHandler;
|
||||
|
||||
private static Cursor waitCursor = null;
|
||||
|
||||
private static Control cursorControl;
|
||||
|
||||
private static boolean mouseHandlerRegistered = false;
|
||||
|
||||
public static void bringMapEditorToTop() {
|
||||
// get current map editor, if non existent create one.
|
||||
try {
|
||||
if (mapEditor != null
|
||||
&& PlatformUI.getWorkbench() != null
|
||||
&& PlatformUI.getWorkbench().getActiveWorkbenchWindow() != null
|
||||
&& PlatformUI.getWorkbench().getActiveWorkbenchWindow()
|
||||
.getActivePage() != null) {
|
||||
PlatformUI.getWorkbench().getActiveWorkbenchWindow()
|
||||
.getActivePage().bringToTop(mapEditor);
|
||||
mapEditor.refresh();
|
||||
}
|
||||
} catch (Exception e) {}
|
||||
}
|
||||
|
||||
public static AbstractEditor getMapEditor() {
|
||||
return mapEditor;
|
||||
}
|
||||
|
||||
public static D2DNsharpMapResource getMapRsc() {
|
||||
return mapRsc;
|
||||
}
|
||||
|
||||
private D2DNsharpMapResourceData nsharpMapResourceData;
|
||||
|
||||
/** The set of symbols with similar attributes across many locations */
|
||||
private List<DrawableCircle> symbolSet = null;
|
||||
|
||||
private List<DrawableString> symbolText = null;
|
||||
|
||||
private DrawableCircle symbolToMark = null;
|
||||
|
||||
private List<NsharpStationInfo> points = new ArrayList<NsharpStationInfo>();
|
||||
|
||||
private List<NsharpStationInfo> pickedPoint = new ArrayList<NsharpStationInfo>();
|
||||
|
||||
public void setPickedPoint(NsharpStationInfo point) {
|
||||
this.pickedPoint.add(point);
|
||||
}
|
||||
|
||||
public List<NsharpStationInfo> getPoints() {
|
||||
return points;
|
||||
}
|
||||
|
||||
public void setPoints(List<NsharpStationInfo> points) {
|
||||
if (points == null) {
|
||||
this.pickedPoint.clear();
|
||||
symbolToMark = null;
|
||||
symbolSet = null;
|
||||
this.points.clear();
|
||||
} else {
|
||||
this.points = points;
|
||||
}
|
||||
}
|
||||
|
||||
public void addPoint(NsharpStationInfo point) {
|
||||
points.add(point);
|
||||
}
|
||||
|
||||
/**
|
||||
* Default constructor
|
||||
*/
|
||||
protected D2DNsharpMapResource(D2DNsharpMapResourceData d2dNsharpMapResourceData,
|
||||
LoadProperties loadProperties) {
|
||||
super(d2dNsharpMapResourceData, loadProperties);
|
||||
getCapability(EditableCapability.class).setEditable(true);
|
||||
this.nsharpMapResourceData = d2dNsharpMapResourceData;
|
||||
}
|
||||
|
||||
public static void startWaitCursor() {
|
||||
waitCursor = new Cursor(Display.getCurrent(), SWT.CURSOR_WAIT);
|
||||
cursorControl = Display.getCurrent().getCursorControl();
|
||||
if (cursorControl != null && waitCursor != null)
|
||||
cursorControl.setCursor(waitCursor);
|
||||
}
|
||||
|
||||
public static void stopWaitCursor() {
|
||||
if (cursorControl != null && waitCursor != null) {
|
||||
cursorControl.setCursor(null);
|
||||
}
|
||||
if (waitCursor != null) {
|
||||
waitCursor.dispose();
|
||||
waitCursor = null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static void createMapEditor() {
|
||||
try {
|
||||
mapEditor = (AbstractEditor) EditorUtil.getActiveEditor();
|
||||
} catch (Exception ve) {
|
||||
System.out
|
||||
.println("D2DNsharpMapResource Could not load initial editor: "
|
||||
+ ve.getMessage());
|
||||
ve.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static void registerMouseHandler() {
|
||||
if (mouseHandlerRegistered)
|
||||
return;
|
||||
|
||||
mouseHandler = getMouseHandler();
|
||||
if (mapEditor != null && mouseHandler != null) {
|
||||
mapEditor.registerMouseHandler((IInputHandler) mouseHandler);
|
||||
mouseHandlerRegistered = true;
|
||||
}
|
||||
}
|
||||
|
||||
public static void unregisterMouseHandler() {
|
||||
if (!mouseHandlerRegistered)
|
||||
return;
|
||||
mouseHandler = getMouseHandler();
|
||||
if (mapEditor != null && mouseHandler != null) {
|
||||
mapEditor.unregisterMouseHandler((IInputHandler) mouseHandler);
|
||||
mouseHandlerRegistered = false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new MapResource and add it to the current editor.
|
||||
*
|
||||
* @return the MapResource
|
||||
*/
|
||||
public static D2DNsharpMapResource getOrCreateNsharpMapResource() {
|
||||
if (mapRsc == null) {
|
||||
if (mapEditor == null) {
|
||||
createMapEditor();
|
||||
}
|
||||
if (mapEditor != null) {
|
||||
IMapDescriptor desc = (IMapDescriptor) mapEditor
|
||||
.getActiveDisplayPane().getRenderableDisplay()
|
||||
.getDescriptor();
|
||||
try {
|
||||
if (mapRscData == null)
|
||||
mapRscData = new D2DNsharpMapResourceData();
|
||||
mapRsc = mapRscData.construct(new LoadProperties(), desc);
|
||||
desc.getResourceList().add(mapRsc);
|
||||
mapRsc.init(mapEditor.getActiveDisplayPane().getTarget());
|
||||
|
||||
// register mouse handler
|
||||
mouseHandler = getMouseHandler();
|
||||
mapEditor
|
||||
.registerMouseHandler((IInputHandler) mouseHandler);
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return mapRsc;
|
||||
}
|
||||
|
||||
public static void deleteNsharpMapResource() {
|
||||
if (mapRsc != null) {
|
||||
mapRsc.dispose();
|
||||
mapRsc = null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when resource is disposed
|
||||
*
|
||||
* @see com.raytheon.viz.core.rsc.IVizResource#dispose()
|
||||
*/
|
||||
@Override
|
||||
public void disposeInternal() {
|
||||
|
||||
if (mapEditor != null) {
|
||||
mapEditor.unregisterMouseHandler(mouseHandler);
|
||||
mouseHandler = null;
|
||||
mapEditor = null;
|
||||
}
|
||||
pickedPoint = null;
|
||||
points = null;
|
||||
symbolSet = null;
|
||||
symbolToMark = null;
|
||||
mapRsc = null;
|
||||
mapRscData = null;
|
||||
if (waitCursor != null)
|
||||
waitCursor.dispose();
|
||||
waitCursor = null;
|
||||
mouseHandlerRegistered = false;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.viz.core.rsc.IVizResource#getCoordinateReferenceSystem()
|
||||
*/
|
||||
public CoordinateReferenceSystem getCoordinateReferenceSystem() {
|
||||
if (descriptor == null)
|
||||
return null;
|
||||
return descriptor.getCRS();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @see com.raytheon.viz.core.rsc.IVizResource#getName()
|
||||
*/
|
||||
@Override
|
||||
public String getName() {
|
||||
return "NSHARP Display";
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @see com.raytheon.viz.core.rsc.IVizResource#init(com.raytheon.viz.core.
|
||||
* IGraphicsTarget)
|
||||
*/
|
||||
@Override
|
||||
public void initInternal(IGraphicsTarget target) throws VizException {
|
||||
EditableManager.makeEditable(this,
|
||||
getCapability(EditableCapability.class).isEditable());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.viz.core.rsc.IVizResource#isApplicable(com.raytheon.viz.
|
||||
* core.PixelExtent)
|
||||
*/
|
||||
public boolean isApplicable(PixelExtent extent) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private void generateSymbolForDrawing() {
|
||||
String type = null;
|
||||
|
||||
symbolText = new ArrayList<DrawableString>(mapRsc.getPoints().size());
|
||||
symbolSet = new ArrayList<DrawableCircle>(mapRsc.getPoints().size());
|
||||
|
||||
if (points.isEmpty() == true) {
|
||||
symbolSet = null;
|
||||
} else {
|
||||
Coordinate[] locations = new Coordinate[points.size()];
|
||||
int i = 0;
|
||||
type = nsharpMapResourceData.getMarkerType().toString();
|
||||
for (NsharpStationInfo p : points) {
|
||||
double lon, lat;
|
||||
lon = p.getLongitude();
|
||||
lat = p.getLatitude();
|
||||
locations[i++] = new Coordinate(lon, lat);
|
||||
|
||||
DrawableCircle circle = new DrawableCircle();
|
||||
double[] pixel = descriptor.worldToPixel(new double[] { lon, lat });
|
||||
circle.setCoordinates(pixel[0], pixel[1]);
|
||||
circle.lineWidth = nsharpMapResourceData.getMarkerWidth();
|
||||
circle.screenRadius = getRadius()*1.4;
|
||||
circle.basics.color = NsharpConstants.color_green;
|
||||
circle.filled = false;
|
||||
symbolSet.add(circle);
|
||||
|
||||
DrawableString drawString = new DrawableString(p.getStnId());
|
||||
drawString.basics.color = NsharpConstants.color_white;
|
||||
drawString.setCoordinates(pixel[0], pixel[1]);
|
||||
drawString.setText(p.getStnId(), NsharpConstants.color_white);
|
||||
symbolText.add(drawString);
|
||||
}
|
||||
}
|
||||
|
||||
// generate symbol for picked stn to mark X
|
||||
if (pickedPoint != null && pickedPoint.size() > 0) {
|
||||
Coordinate[] locations = new Coordinate[pickedPoint.size()];
|
||||
type = nsharpMapResourceData.getStnMarkerType().toString();
|
||||
|
||||
int i = 0;
|
||||
for (NsharpStationInfo p : pickedPoint) {
|
||||
double lon, lat;
|
||||
lon = p.getLongitude();
|
||||
lat = p.getLatitude();
|
||||
locations[i++] = new Coordinate(lon, lat);
|
||||
|
||||
DrawableCircle circle = new DrawableCircle();
|
||||
double[] pixel = descriptor.worldToPixel(new double[] { lon, lat });
|
||||
circle.setCoordinates(pixel[0], pixel[1]);
|
||||
circle.lineWidth = nsharpMapResourceData.getMarkerWidth();
|
||||
circle.screenRadius = getRadius()*1.4;
|
||||
circle.basics.color = NsharpConstants.color_red;
|
||||
circle.filled = false;
|
||||
symbolSet.add(circle);
|
||||
|
||||
}
|
||||
} else {
|
||||
symbolToMark = null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
protected double getRadius() {
|
||||
return 5 * getCapability(MagnificationCapability.class)
|
||||
.getMagnification();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.viz.core.drawables.IRenderable#paint(com.raytheon.viz.core
|
||||
* .IGraphicsTarget, com.raytheon.viz.core.drawables.PaintProperties)
|
||||
*/
|
||||
@Override
|
||||
public void paintInternal(IGraphicsTarget target, PaintProperties paintProps)
|
||||
throws VizException {
|
||||
|
||||
generateSymbolForDrawing();
|
||||
if (symbolSet != null) {
|
||||
target.drawCircle(symbolSet.toArray(new DrawableCircle[0]));
|
||||
target.drawStrings(symbolText);
|
||||
}
|
||||
|
||||
// if (symbolToMark != null) {
|
||||
// ArrayList<IDisplayable> elements = df.createDisplayElements(
|
||||
// symbolToMark, paintProps);
|
||||
// for (IDisplayable each : elements) {
|
||||
// try {
|
||||
// each.draw(target, paintProps);
|
||||
// each.dispose();
|
||||
// } catch (Exception e) {e.printStackTrace();}
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.viz.core.rsc.capabilities.IProjectableResource#isProjectable
|
||||
* (org.opengis.referencing.crs.CoordinateReferenceSystem)
|
||||
*/
|
||||
public boolean isProjectable(CoordinateReferenceSystem mapData) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.viz.core.rsc.capabilities.IProjectableResource#project(org
|
||||
* .opengis.referencing.crs.CoordinateReferenceSystem)
|
||||
*/
|
||||
@Override
|
||||
public void project(CoordinateReferenceSystem mapData) throws VizException {
|
||||
// System.out.println("NctextuiResource: project ");
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the current mouse handler.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private static D2DNsharpMapMouseHandler getMouseHandler() {
|
||||
|
||||
if (mouseHandler == null) {
|
||||
|
||||
mouseHandler = new D2DNsharpMapMouseHandler();
|
||||
|
||||
}
|
||||
|
||||
return mouseHandler;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean okToUnload() {
|
||||
/*
|
||||
* DisAllow unloading of Resource
|
||||
*/
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notifyRemove(ResourcePair rp) throws VizException {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the resource is currently editable
|
||||
*
|
||||
* @return editable
|
||||
*/
|
||||
public boolean isEditable() {
|
||||
return getCapability(EditableCapability.class).isEditable();
|
||||
}
|
||||
|
||||
public void setEditable(boolean enable) {
|
||||
getCapability(EditableCapability.class).setEditable(enable);
|
||||
EditableManager.makeEditable(this,
|
||||
getCapability(EditableCapability.class).isEditable());
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,148 @@
|
|||
package com.raytheon.uf.viz.d2d.nsharp.display.map;
|
||||
|
||||
import gov.noaa.nws.ncep.viz.common.ui.Markers.MarkerState;
|
||||
import gov.noaa.nws.ncep.viz.common.ui.Markers.MarkerTextSize;
|
||||
import gov.noaa.nws.ncep.viz.common.ui.Markers.MarkerType;
|
||||
|
||||
import com.raytheon.uf.viz.core.drawables.IDescriptor;
|
||||
import com.raytheon.uf.viz.core.exception.VizException;
|
||||
import com.raytheon.uf.viz.core.rsc.AbstractResourceData;
|
||||
import com.raytheon.uf.viz.core.rsc.LoadProperties;
|
||||
|
||||
/**
|
||||
*
|
||||
* com.raytheon.uf.viz.d2d.nsharp.display.map.D2DNsharpMapResourceData
|
||||
*
|
||||
* This java class performs the NSHARP ResourceData functions.
|
||||
* This code has been developed by the NCEP-SIB for use in the AWIPS2 system.
|
||||
*
|
||||
* <pre>
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------- ------- -------- -----------
|
||||
* 03/23/2010 229 Chin Chen Initial coding
|
||||
* 06/15/2023 tiffanym@ucar Added into Unidata v20.3.2
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author Chin Chen
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
public class D2DNsharpMapResourceData extends AbstractResourceData {
|
||||
|
||||
private MarkerState markerState = MarkerState.MARKER_ONLY;
|
||||
|
||||
private MarkerType markerType = MarkerType.DIAMOND;
|
||||
|
||||
private Float markerSize = 1f;
|
||||
|
||||
private Integer markerWidth = 2;
|
||||
|
||||
private MarkerTextSize markerTextSize = MarkerTextSize.MEDIUM;
|
||||
|
||||
private String mapName = "NSHARP";
|
||||
|
||||
private MarkerType stnMarkerType = MarkerType.LARGE_X;
|
||||
|
||||
public MarkerType getStnMarkerType() {
|
||||
return stnMarkerType;
|
||||
}
|
||||
|
||||
public D2DNsharpMapResourceData() {
|
||||
super();
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.uf.viz.core.rsc.AbstractResourceData#construct(com.raytheon
|
||||
* .uf.viz.core.comm.LoadProperties,
|
||||
* com.raytheon.uf.viz.core.drawables.IDescriptor)
|
||||
*/
|
||||
@Override
|
||||
public D2DNsharpMapResource construct(LoadProperties loadProperties,
|
||||
IDescriptor descriptor) throws VizException {
|
||||
// TODO Auto-generated method stub
|
||||
return new D2DNsharpMapResource(this, loadProperties);
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.uf.viz.core.rsc.AbstractResourceData#update(java.lang.Object
|
||||
* )
|
||||
*/
|
||||
@Override
|
||||
public void update(Object updateData) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (obj == null || !(obj instanceof D2DNsharpMapResourceData))
|
||||
return false;
|
||||
D2DNsharpMapResourceData rdata = (D2DNsharpMapResourceData) obj;
|
||||
if (this.markerState.equals(rdata.getMarkerState())
|
||||
&& this.markerType.equals(rdata.getMarkerType())
|
||||
&& this.markerSize.equals(rdata.getMarkerSize())
|
||||
&& this.markerWidth.equals(rdata.getMarkerWidth())
|
||||
&& this.markerTextSize.equals(rdata.getMarkerTextSize())
|
||||
&& this.stnMarkerType.equals(rdata.getStnMarkerType()))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public MarkerState getMarkerState() {
|
||||
return markerState;
|
||||
}
|
||||
|
||||
public void setMarkerState(MarkerState markerState) {
|
||||
this.markerState = markerState;
|
||||
}
|
||||
|
||||
public MarkerType getMarkerType() {
|
||||
return markerType;
|
||||
}
|
||||
|
||||
public void setMarkerType(MarkerType markerType) {
|
||||
this.markerType = markerType;
|
||||
}
|
||||
|
||||
public Float getMarkerSize() {
|
||||
return markerSize;
|
||||
}
|
||||
|
||||
public void setMarkerSize(Float markerSize) {
|
||||
this.markerSize = markerSize;
|
||||
}
|
||||
|
||||
public Integer getMarkerWidth() {
|
||||
return markerWidth;
|
||||
}
|
||||
|
||||
public void setMarkerWidth(Integer markerWidth) {
|
||||
this.markerWidth = markerWidth;
|
||||
}
|
||||
|
||||
public MarkerTextSize getMarkerTextSize() {
|
||||
return markerTextSize;
|
||||
}
|
||||
|
||||
public void setMarkerTextSize(MarkerTextSize markerTextSize) {
|
||||
this.markerTextSize = markerTextSize;
|
||||
}
|
||||
|
||||
public String getMapName() {
|
||||
return mapName;
|
||||
}
|
||||
|
||||
public void setMapName(String mapName) {
|
||||
this.mapName = mapName;
|
||||
}
|
||||
}
|
|
@ -73,6 +73,7 @@ import gov.noaa.nws.ncep.ui.nsharp.display.rsc.NsharpResourceHandler;
|
|||
* Jan 15, 2019 7697 bsteffen Individually add soundings so station info
|
||||
* is not shared.
|
||||
* Apr 15 2019 7480 bhurley Improved auto-update
|
||||
* Jun 15, 2023 tiffanym@ucar reimplement NSHARP load functionality
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -212,8 +213,8 @@ public class D2DNSharpResource
|
|||
@Override
|
||||
protected void initInternal(IGraphicsTarget target) throws VizException {
|
||||
getHandler().setSoundingType(resourceData.getSoundingType());
|
||||
partListener = new D2DNSharpPartListener(this);
|
||||
partListener.enable();
|
||||
//partListener = new D2DNSharpPartListener(this);
|
||||
//partListener.enable();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -24,8 +24,8 @@
|
|||
-->
|
||||
<menuTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<contribute xsi:type="bundleItem"
|
||||
file="bundles/ncepHydro/hpc/HPCqpfNDFD.xml" menuText="HPC QPF 6hr (Grid)"
|
||||
id="HPCQPF6hr">
|
||||
file="bundles/ncepHydro/hpc/HPCqpfNDFD.xml" menuText="WPC QPF 6hr (Grid)"
|
||||
id="WPCQPF6hr">
|
||||
<substitute key="frameCount" value="2" />
|
||||
<substitute key="param" value="tpHPCndfd" />
|
||||
</contribute>
|
|
@ -26,7 +26,7 @@
|
|||
<include installTo="menu:ncepHydro?after=SPC" fileName="menus/ncepHydro/spc/baseSPC.xml" />
|
||||
<include installTo="menu:ncepHydro?after=TPC" fileName="menus/ncepHydro/tpc/baseTPC.xml" />
|
||||
<include installTo="menu:ncepHydro?after=NCO" fileName="menus/ncepHydro/nco/baseNCO.xml" />
|
||||
<include installTo="menu:ncepHydro?after=HPC" fileName="menus/ncepHydro/hpc/baseHPC.xml" />
|
||||
<include installTo="menu:ncepHydro?after=WPC" fileName="menus/ncepHydro/hpc/baseWPC.xml" />
|
||||
<include installTo="menu:ncepHydro?after=MPC" fileName="menus/ncepHydro/mpc/baseMPC.xml" />
|
||||
<include installTo="menu:ncepHydro?after=CPC" fileName="menus/ncepHydro/cpc/baseCPC.xml" />
|
||||
<include installTo="menu:ncepHydro?after=AWC" fileName="menus/ncepHydro/awc/baseAWC.xml" />
|
||||
|
|
|
@ -61,9 +61,9 @@
|
|||
name="xxx"
|
||||
visible="true">
|
||||
</separator>
|
||||
<command id="HPC"
|
||||
<command id="WPC"
|
||||
commandId="com.raytheon.viz.ui.actions.titleAction"
|
||||
label="------ HPC ------">
|
||||
label="------ WPC ------">
|
||||
</command>
|
||||
<separator
|
||||
name="xxx"
|
||||
|
|
|
@ -24,9 +24,6 @@
|
|||
-->
|
||||
<menuTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<contribute xsi:type="subMenu" id="UAplots" menuText="UA plots">
|
||||
<contribute xsi:type="titleItem" titleText="------ NCEP ------" />
|
||||
<contribute xsi:type="separator" id="NCEPEnd"
|
||||
visible="false" />
|
||||
<contribute xsi:type="titleItem" titleText="------ RAOB ------" />
|
||||
<contribute xsi:type="bundleItem" file="bundles/UpperAirPlot.xml"
|
||||
menuText="150 hPa" id="150hPa">
|
||||
|
|
BIN
cave/com.raytheon.uf.viz.d2d.ui/icons/nsharp.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
|
@ -620,6 +620,20 @@
|
|||
</toolbar>
|
||||
<toolbar
|
||||
id="applications">
|
||||
<command
|
||||
commandId="com.raytheon.uf.viz.d2d.nsharp.dialog"
|
||||
icon="icons/nsharp.png"
|
||||
id="com.raytheon.uf.viz.d2d.nsharp.dialog"
|
||||
label="Nsharp"
|
||||
mode="FORCE_TEXT"
|
||||
style="push"
|
||||
tooltip="Nsharp">
|
||||
<visibleWhen>
|
||||
<reference
|
||||
definitionId="com.raytheon.uf.viz.d2d.ui.inD2DActionSet">
|
||||
</reference>
|
||||
</visibleWhen>
|
||||
</command>
|
||||
<command
|
||||
commandId="com.raytheon.uf.viz.productbrowser.productBrowser"
|
||||
icon="icons/plus.png"
|
||||
|
|
|
@ -34,18 +34,6 @@
|
|||
name="AAG"
|
||||
value="aviation/aag">
|
||||
</path>
|
||||
<path
|
||||
application="EDEX"
|
||||
localizationType="COMMON_STATIC"
|
||||
name="Backup Service"
|
||||
value="backupsvc">
|
||||
</path>
|
||||
<path
|
||||
application="EDEX"
|
||||
localizationType="COMMON_STATIC"
|
||||
name="Localization Backup"
|
||||
value="localizationBackup">
|
||||
</path>
|
||||
<path
|
||||
application="EDEX"
|
||||
localizationType="COMMON_STATIC"
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
output.com.raytheon.uf.viz.npp.nucaps.jar = bin/
|
||||
bin.includes = META-INF/,\
|
||||
localization/,\
|
||||
plugin.xml,\
|
||||
com.raytheon.uf.viz.npp.nucaps.jar
|
||||
source.com.raytheon.uf.viz.npp.nucaps.jar = src/
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
output.com.raytheon.uf.viz.npp.viirs.jar = bin/
|
||||
bin.includes = META-INF/,\
|
||||
plugin.xml,\
|
||||
localization/,\
|
||||
res/,\
|
||||
com.raytheon.uf.viz.npp.viirs.jar
|
||||
source.com.raytheon.uf.viz.npp.viirs.jar = src/
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
output.com.raytheon.uf.viz.npp.jar = bin/
|
||||
bin.includes = META-INF/,\
|
||||
localization/,\
|
||||
com.raytheon.uf.viz.npp.jar
|
||||
source.com.raytheon.uf.viz.npp.jar = src/
|
||||
|
|
|
@ -245,6 +245,10 @@
|
|||
id="gov.noaa.nws.ost.viz.stq.feature"
|
||||
version="0.0.0"/>
|
||||
|
||||
<includes
|
||||
id="edu.wisc.ssec.cimss.viz.probsevere.feature"
|
||||
version="0.0.0"/>
|
||||
|
||||
<requires>
|
||||
<import feature="com.raytheon.uf.viz.application.feature" version="1.0.0.qualifier"/>
|
||||
</requires>
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
of the file.
|
||||
-->
|
||||
<menuTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<contribute xsi:type="subMenu" menuText="HPC Station Data">
|
||||
<contribute xsi:type="subMenu" menuText="WPC Station Data">
|
||||
<contribute xsi:type="bundleItem" file="bundles/BufrMosPlot.xml" menuText="MaxT/MinT"
|
||||
id="HPCmaxTminT">
|
||||
<substitute key="model" value="HPC" />
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="sample1" plotMode="sample" class="text" plotParam="validTime" plotFormat="time" plotSymbol="Z">0</text>
|
||||
<text id="sample2" plotMode="sample" class="text" plotParam="satelliteID" plotLookupTable="sat_type_lookup_ascat.txt">0</text>
|
||||
<text id="sample3" plotMode="sample" class="text" plotParam="windDir" plotSymbol=" @" plotFormat="%3.0f">0</text>
|
||||
<text id="sample4" plotMode="sample" class="text" plotParam="windSpd" plotUnit="kts" plotSymbol=" RAIN FLAG" plotFormat="%3.0f">0</text>
|
||||
<text id="sample4" plotMode="sample" class="text" plotParam="probRain">0</text>
|
||||
|
||||
<g id="windVaneText" plotMode="barb" plotParam="windSpd,windDir" plotUnit="kts" x="0" y="0" transform="rotate(0,0,0)" required="True" >
|
||||
<text id="windArrowText" class="barb" x="0" y="0">75</text>
|
||||
</g>
|
||||
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2 KiB |
|
@ -0,0 +1,74 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="100" height="100"
|
||||
viewBox="0 0 100 100"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
@font-face { font-family: "LargeSpecialSymbolFont";
|
||||
src: url(LargeSpecialSymbols.svg#LrgSpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
text.large
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1.5em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1.5em;
|
||||
font-family: LargeSpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="cloudCoverText" plotMode="range" class="special" plotLookupTable="maritime_cloud_chars.txt" plotParam="maritimeObscuredSkySymIFR" x="0" y="0">0</text>
|
||||
<text id="cbhText" plotMode="table" class="text" plotLookupTable="maritime_base_lookup.txt" style="text-anchor: end;" plotParam="maritimeObscuredSkyIFR" x="-10" y="0">0</text>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="50" y="50" width="100" height="100" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.5 KiB |
|
@ -0,0 +1,74 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="100" height="100"
|
||||
viewBox="0 0 100 100"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
@font-face { font-family: "LargeSpecialSymbolFont";
|
||||
src: url(LargeSpecialSymbols.svg#LrgSpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
text.large
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1.5em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1.5em;
|
||||
font-family: LargeSpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="cloudCoverText" plotMode="range" class="special" plotLookupTable="maritime_cloud_chars.txt" plotParam="maritimeObscuredSkySymLIFR" x="0" y="0">0</text>
|
||||
<text id="cbhText" plotMode="table" class="text" plotLookupTable="maritime_base_lookup.txt" style="text-anchor: end;" plotParam="maritimeObscuredSkyLIFR" x="-10" y="0">0</text>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="50" y="50" width="100" height="100" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.5 KiB |
|
@ -0,0 +1,74 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="100" height="100"
|
||||
viewBox="0 0 100 100"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
@font-face { font-family: "LargeSpecialSymbolFont";
|
||||
src: url(LargeSpecialSymbols.svg#LrgSpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
text.large
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1.5em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1.5em;
|
||||
font-family: LargeSpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="cloudCoverText" plotMode="range" class="special" plotLookupTable="maritime_cloud_chars.txt" plotParam="maritimeObscuredSkySymMVFR" x="0" y="0">0</text>
|
||||
<text id="cbhText" plotMode="table" class="text" plotLookupTable="maritime_base_lookup.txt" style="text-anchor: end;" plotParam="maritimeObscuredSkyMVFR" x="-10" y="0">0</text>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="50" y="50" width="100" height="100" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.5 KiB |
|
@ -0,0 +1,74 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="100" height="100"
|
||||
viewBox="0 0 100 100"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
@font-face { font-family: "LargeSpecialSymbolFont";
|
||||
src: url(LargeSpecialSymbols.svg#LrgSpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
text.large
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1.5em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1.5em;
|
||||
font-family: LargeSpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="cloudCoverText" plotMode="range" class="special" plotLookupTable="maritime_cloud_chars.txt" plotParam="maritimeObscuredSkySymVFR" x="0" y="0">0</text>
|
||||
<text id="cbhText" plotMode="table" class="text" plotLookupTable="maritime_base_lookup.txt" style="text-anchor: end;" plotParam="maritimeObscuredSkyVFR" x="-10" y="0">0</text>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="50" y="50" width="100" height="100" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.5 KiB |
|
@ -0,0 +1,64 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="100" height="100"
|
||||
viewBox="0 0 100 100"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="peakWind" plotMode="text" plotParam="peakWindSpeed" plotUnit="kts" plotFormat="PK%.0f" style="text-anchor: end;" x="-10" y="20">59</text>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="50" y="50" width="100" height="100" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2 KiB |
|
@ -0,0 +1,74 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="100" height="100"
|
||||
viewBox="0 0 100 100"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
@font-face { font-family: "LargeSpecialSymbolFont";
|
||||
src: url(LargeSpecialSymbols.svg#LrgSpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
text.large
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1.5em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1.5em;
|
||||
font-family: LargeSpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="cloudCoverText" plotMode="range" class="special" plotLookupTable="maritime_cloud_chars.txt" plotParam="transparentMaritimeSkySym" x="0" y="0">0</text>
|
||||
<text id="cbhText" plotMode="table" class="text" plotLookupTable="maritime_base_lookup.txt" style="text-anchor: end;" plotParam="transparentMaritimeSky" x="-10" y="0">0</text>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="50" y="50" width="100" height="100" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.5 KiB |
|
@ -0,0 +1,68 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="100" height="100"
|
||||
viewBox="0 0 100 100"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<g id="windVaneText" plotMode="barb" plotParam="maritimeWind20T34,maritimeWindDir20T34,maritimeWindGust20T34" plotUnit="kts" x="0" y="0" transform="rotate(0,0,0)">
|
||||
<text id="windVaneText" class="arrow" x="0" y="0">0</text>
|
||||
<text id="windArrowText" class="barb" x="0" y="0">arrow</text>
|
||||
<text id="windGustText" class="text" x="0" y="32" style="text-anchor: middle">0</text>
|
||||
</g>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="50" y="50" width="100" height="100" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
|
@ -0,0 +1,68 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="100" height="100"
|
||||
viewBox="0 0 100 100"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<g id="windVaneText" plotMode="barb" plotParam="maritimeWind34T48,maritimeWindDir34T48,maritimeWindGust34T48" plotUnit="kts" x="0" y="0" transform="rotate(0,0,0)">
|
||||
<text id="windVaneText" class="arrow" x="0" y="0">0</text>
|
||||
<text id="windArrowText" class="barb" x="0" y="0">arrow</text>
|
||||
<text id="windGustText" class="text" x="0" y="32" style="text-anchor: middle">0</text>
|
||||
</g>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="50" y="50" width="100" height="100" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
|
@ -0,0 +1,68 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="100" height="100"
|
||||
viewBox="0 0 100 100"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<g id="windVaneText" plotMode="barb" plotParam="maritimeWind48T64,maritimeWindDir48T64,maritimeWindGust48T64" plotUnit="kts" x="0" y="0" transform="rotate(0,0,0)">
|
||||
<text id="windVaneText" class="arrow" x="0" y="0">0</text>
|
||||
<text id="windArrowText" class="barb" x="0" y="0">arrow</text>
|
||||
<text id="windGustText" class="text" x="0" y="32" style="text-anchor: middle">0</text>
|
||||
</g>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="50" y="50" width="100" height="100" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
|
@ -0,0 +1,68 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="100" height="100"
|
||||
viewBox="0 0 100 100"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<g id="windVaneText" plotMode="barb" plotParam="maritimeWind64P,maritimeWindDir64P,maritimeWindGust64P" plotUnit="kts" x="0" y="0" transform="rotate(0,0,0)">
|
||||
<text id="windVaneText" class="arrow" x="0" y="0">0</text>
|
||||
<text id="windArrowText" class="barb" x="0" y="0">arrow</text>
|
||||
<text id="windGustText" class="text" x="0" y="32" style="text-anchor: middle">0</text>
|
||||
</g>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="50" y="50" width="100" height="100" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
|
@ -0,0 +1,68 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="100" height="100"
|
||||
viewBox="0 0 100 100"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<g id="windVaneText" plotMode="barb" plotParam="maritimeWindLow,maritimeWindDirLow,maritimeWindGustLow" plotUnit="kn" x="0" y="0" transform="rotate(0,0,0)">
|
||||
<text id="windVaneText" class="arrow" x="0" y="0">0</text>
|
||||
<text id="windArrowText" class="barb" x="0" y="0">arrow</text>
|
||||
<text id="windGustText" class="text" x="0" y="32" style="text-anchor: middle">0</text>
|
||||
</g>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="50" y="50" width="100" height="100" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
|
@ -0,0 +1,95 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="100" height="100"
|
||||
viewBox="0 0 100 100"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
contentScriptType="text/python"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<script type="text/python" plotDelegate="plotDelegate">
|
||||
from qcplot import QCReport
|
||||
|
||||
class MaritimePlotDelegate(PlotDelegate):
|
||||
def __init__(self):
|
||||
PlotDelegate.__init__(self)
|
||||
|
||||
def getSampleText(self, rec):
|
||||
raw = rec.getString("rawReport")
|
||||
if raw.startswith("BBXX"):
|
||||
raw = raw[5:]
|
||||
elif raw.startswith("CMAN"):
|
||||
raw = raw[11:]
|
||||
elif raw.startswith("MAROB"):
|
||||
raw = raw[7:]
|
||||
return raw
|
||||
|
||||
plotDelegate = MaritimePlotDelegate()
|
||||
|
||||
</script>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
@font-face { font-family: "LargeSpecialSymbolFont";
|
||||
src: url(LargeSpecialSymbols.svg#LrgSpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
text.large
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1.5em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1.5em;
|
||||
font-family: LargeSpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="sample" plotMode="sample" class="text" plotParam="rawReport" x="0" y="0">0</text>
|
||||
<text id="presentWxText" plotMode="recursive_translation" class="weather" plotLookupTable="wx_symbol_trans.txt" plotParam="presWeather" style="text-anchor: start" x="10" y="0">0</text>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="50" y="50" width="100" height="100" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 3 KiB |
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="cloudText0" plotMode="table" class="special" plotFunctionTable="cloud_select.txt" plotLookupTable="cloud_chars2.txt" plotParam="obscuredSkySymIFR" x="0" y="0">0</text>
|
||||
<text id="hgtText0" plotMode="text" class="text" plotParam="obscuredSkyIFR" plotUnit="hft" plotFormat="%2.0f" style="text-anchor: end" x="-10" y="0">0</text>
|
||||
<text id="cloudText0" plotMode="table" class="special" plotFunctionTable="cloud_select.txt" plotLookupTable="cloud_chars2.txt" plotParam="obscuredSkySym2IFR" x="0" y="-10">0</text>
|
||||
<text id="hgtText0" plotMode="text" class="text" plotParam="obscuredSky2IFR" plotUnit="hft" plotFormat="%2.0f" style="text-anchor: end" x="-10" y="-10">0</text>
|
||||
<text id="cloudText0" plotMode="table" class="special" plotFunctionTable="cloud_select.txt" plotLookupTable="cloud_chars2.txt" plotParam="obscuredSkySym3IFR" x="0" y="-20">0</text>
|
||||
<text id="hgtText0" plotMode="text" class="text" plotParam="obscuredSky3IFR" plotUnit="hft" plotFormat="%2.0f" style="text-anchor: end" x="-10" y="-20">0</text>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="cloudText0" plotMode="table" class="special" plotFunctionTable="cloud_select.txt" plotLookupTable="cloud_chars2.txt" plotParam="obscuredSkySymLIFR" x="0" y="0">0</text>
|
||||
<text id="hgtText0" plotMode="text" class="text" plotParam="obscuredSkyLIFR" plotUnit="hft" plotFormat="%2.0f" style="text-anchor: end" x="-10" y="0">0</text>
|
||||
<text id="cloudText0" plotMode="table" class="special" plotFunctionTable="cloud_select.txt" plotLookupTable="cloud_chars2.txt" plotParam="obscuredSkySym2LIFR" x="0" y="-10">0</text>
|
||||
<text id="hgtText0" plotMode="text" class="text" plotParam="obscuredSky2LIFR" plotUnit="hft" plotFormat="%2.0f" style="text-anchor: end" x="-10" y="-10">0</text>
|
||||
<text id="cloudText0" plotMode="table" class="special" plotFunctionTable="cloud_select.txt" plotLookupTable="cloud_chars2.txt" plotParam="obscuredSkySym3LIFR" x="0" y="-20">0</text>
|
||||
<text id="hgtText0" plotMode="text" class="text" plotParam="obscuredSky3LIFR" plotUnit="hft" plotFormat="%2.0f" style="text-anchor: end" x="-10" y="-20">0</text>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="cloudText0" plotMode="table" class="special" plotFunctionTable="cloud_select.txt" plotLookupTable="cloud_chars2.txt" plotParam="obscuredSkySymMVFR" x="0" y="0">0</text>
|
||||
<text id="hgtText0" plotMode="text" class="text" plotParam="obscuredSkyMVFR" plotUnit="hft" plotFormat="%2.0f" style="text-anchor: end" x="-10" y="0">0</text>
|
||||
<text id="cloudText0" plotMode="table" class="special" plotFunctionTable="cloud_select.txt" plotLookupTable="cloud_chars2.txt" plotParam="obscuredSkySym2MVFR" x="0" y="-10">0</text>
|
||||
<text id="hgtText0" plotMode="text" class="text" plotParam="obscuredSky2MVFR" plotUnit="hft" plotFormat="%2.0f" style="text-anchor: end" x="-10" y="-10">0</text>
|
||||
<text id="cloudText0" plotMode="table" class="special" plotFunctionTable="cloud_select.txt" plotLookupTable="cloud_chars2.txt" plotParam="obscuredSkySym3MVFR" x="0" y="-20">0</text>
|
||||
<text id="hgtText0" plotMode="text" class="text" plotParam="obscuredSky3MVFR" plotUnit="hft" plotFormat="%2.0f" style="text-anchor: end" x="-10" y="-20">0</text>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="cloudText0" plotMode="table" class="special" plotFunctionTable="cloud_select.txt" plotLookupTable="cloud_chars2.txt" plotParam="obscuredSkySymVFR" x="0" y="0">0</text>
|
||||
<text id="hgtText0" plotMode="text" class="text" plotParam="obscuredSkyVFR" plotUnit="hft" plotFormat="%2.0f" style="text-anchor: end" x="-10" y="0">0</text>
|
||||
<text id="cloudText0" plotMode="table" class="special" plotFunctionTable="cloud_select.txt" plotLookupTable="cloud_chars2.txt" plotParam="obscuredSkySym2VFR" x="0" y="-10">0</text>
|
||||
<text id="hgtText0" plotMode="text" class="text" plotParam="obscuredSky2VFR" plotUnit="hft" plotFormat="%2.0f" style="text-anchor: end" x="-10" y="-10">0</text>
|
||||
<text id="cloudText0" plotMode="table" class="special" plotFunctionTable="cloud_select.txt" plotLookupTable="cloud_chars2.txt" plotParam="obscuredSkySym3VFR" x="0" y="-20">0</text>
|
||||
<text id="hgtText0" plotMode="text" class="text" plotParam="obscuredSky3VFR" plotUnit="hft" plotFormat="%2.0f" style="text-anchor: end" x="-10" y="-20">0</text>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
|
@ -0,0 +1,64 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="peakWind" plotMode="text" plotParam="pkwndSpeed" plotUnit="kts" plotFormat="PK%.0f" style="text-anchor: end;" x="10" y="20">59</text>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2 KiB |
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="cloudText0" plotMode="table" class="special" plotFunctionTable="cloud_select.txt" plotLookupTable="cloud_chars2.txt" plotParam="transparentSkySym" x="0" y="0">0</text>
|
||||
<text id="hgtText0" plotMode="text" class="text" plotParam="transparentSky" plotUnit="hft" plotFormat="%2.0f" style="text-anchor: end" x="-10" y="0">0</text>
|
||||
<text id="cloudText0" plotMode="table" class="special" plotFunctionTable="cloud_select.txt" plotLookupTable="cloud_chars2.txt" plotParam="transparentSkySym2" x="0" y="-10">0</text>
|
||||
<text id="hgtText0" plotMode="text" class="text" plotParam="transparentSky2" plotUnit="hft" plotFormat="%2.0f" style="text-anchor: end" x="-10" y="-10">0</text>
|
||||
<text id="cloudText0" plotMode="table" class="special" plotFunctionTable="cloud_select.txt" plotLookupTable="cloud_chars2.txt" plotParam="transparentSkySym3" x="0" y="-20">0</text>
|
||||
<text id="hgtText0" plotMode="text" class="text" plotParam="transparentSky3" plotUnit="hft" plotFormat="%2.0f" style="text-anchor: end" x="-10" y="-20">0</text>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
|
@ -0,0 +1,64 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="visText" plotMode="range" class="text" plotLookupTable="fractions_lookup.txt" plotParam="visbyIFR" plotUnit="mi" style="text-anchor: start;" plotFormat="%3.5f" x="0" y="10">59</text>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2 KiB |
|
@ -0,0 +1,64 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="visText" plotMode="range" class="text" plotLookupTable="fractions_lookup.txt" plotParam="visbyLIFR" plotUnit="mi" style="text-anchor: start;" plotFormat="%3.5f" x="0" y="10">59</text>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2 KiB |
|
@ -0,0 +1,64 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="visText" plotMode="range" class="text" plotLookupTable="fractions_lookup.txt" plotParam="visbyMVFR" plotUnit="mi" style="text-anchor: start;" plotFormat="%3.5f" x="0" y="10">59</text>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2 KiB |
|
@ -0,0 +1,64 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="visText" plotMode="range" class="text" plotLookupTable="fractions_lookup.txt" plotParam="visbyVFR" plotUnit="mi" style="text-anchor: start;" plotFormat="%3.5f" x="0" y="10">59</text>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2 KiB |
|
@ -0,0 +1,68 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<g id="windVaneText" plotMode="barb" plotParam="obsWind30T50,obsWindDir30T50,obsWindGust30T50" plotUnit="kts" x="0" y="0" transform="rotate(0,0,0)">
|
||||
<text id="windVaneText" class="arrow" x="0" y="0">0</text>
|
||||
<text id="windArrowText" class="barb" x="0" y="0">arrow</text>
|
||||
<text id="windGustText" class="text" x="0" y="32" style="text-anchor: middle">0</text>
|
||||
</g>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
|
@ -0,0 +1,68 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<g id="windVaneText" plotMode="barb" plotParam="obsWind50P,obsWindDir50P,obsWindGust50P" plotUnit="kts" x="0" y="0" transform="rotate(0,0,0)">
|
||||
<text id="windVaneText" class="arrow" x="0" y="0">0</text>
|
||||
<text id="windArrowText" class="barb" x="0" y="0">arrow</text>
|
||||
<text id="windGustText" class="text" x="0" y="32" style="text-anchor: middle">0</text>
|
||||
</g>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
|
@ -0,0 +1,68 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<g id="windVaneText" plotMode="barb" plotParam="obsWindLow,obsWindDirLow,obsWindGustLow" plotUnit="kn" x="0" y="0" transform="rotate(0,0,0)">
|
||||
<text id="windVaneText" class="arrow" x="0" y="0">0</text>
|
||||
<text id="windArrowText" class="barb" x="0" y="0">arrow</text>
|
||||
<text id="windGustText" class="text" x="0" y="32" style="text-anchor: middle">0</text>
|
||||
</g>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
|
@ -0,0 +1,64 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
text.weather
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: WxSymbolFont;
|
||||
|
||||
}
|
||||
text.special
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-size: 1em;
|
||||
font-family: SpecialSymbolFont;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="presentWxText" plotMode="recursive_translation" class="weather" plotLookupTable="wx_symbol_trans.txt" plotParam="presWeather" style="text-anchor: start" x="10" y="0">0</text>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2 KiB |
|
@ -0,0 +1,56 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.arrow
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="sample1" plotMode="sample" class="text" plotParam="validTime" plotFormat="time" plotSymbol="Z">0</text>
|
||||
<text id="sample2" plotMode="sample" class="text" plotParam="satelliteFreq" plotLookupTable="hdw_sat_lookup.txt">0</text>
|
||||
<text id="sample3" plotMode="sample" class="text" plotParam="coldestTemp" plotUnit="C" plotSymbol="C" plotFormat="%3.1f">0</text>
|
||||
<text id="sample4" plotMode="sample" class="text" plotParam="pressure" plotUnit="hPa" plotSymbol="mb" plotFormat="%5.0f">0</text>
|
||||
<text id="sample5" plotMode="sample" class="text" plotParam="windDir" plotSymbol="deg" plotFormat="%3.0f">0</text>
|
||||
<text id="sample6" plotMode="sample" class="text" plotParam="windSpd" plotUnit="kts" plotSymbol="kts" plotFormat="%3.0f">0</text>
|
||||
<g id="windVaneText" plotMode="barb" plotParam="windSpd,windDir" plotUnit="kts" x="0" y="0" transform="rotate(0,0,0)">
|
||||
<text id="windArrowText" class="barb" x="0" y="0">75</text>
|
||||
</g>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.3 KiB |
|
@ -0,0 +1,9 @@
|
|||
# Note:
|
||||
# The row of ranges must be in ascending order.
|
||||
r2s
|
||||
2.79374e+13 2.81374e+13 IR
|
||||
4.04405e+13 4.06405e+13 WV7.4u
|
||||
4.27571e+13 4.29571e+13 WV7.0u
|
||||
4.40176e+13 4.42176e+13 WV
|
||||
4.60538e+14 4.62538e+14 Vis
|
||||
7.67699e+13 7.69699e+13 IR3.9u
|
|
@ -0,0 +1,51 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "WindSymbolFont";
|
||||
src: url(WindSymbols.svg#WindSymbols); }
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
@font-face { font-family: "WxSymbolFont";
|
||||
src: url(WxSymbols.svg#WxSymbols); }
|
||||
@font-face { font-family: "SpecialSymbolFont";
|
||||
src: url(SpecialSymbols.svg#SpecialSymbols); }
|
||||
text.barb
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
font-size: 1em;
|
||||
font-family: WindSymbolFont;
|
||||
}
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="sample1" plotMode="sample" class="text" plotParam="validTime" plotFormat="time" plotSymbol="Z">0</text>
|
||||
<text id="sample2" plotMode="sample" class="text" plotParam="satelliteID" plotLookupTable="sat_type_lookup.txt">0</text>
|
||||
<text id="sample3" plotMode="sample" class="text" plotParam="windDir" plotSymbol=" @" plotFormat="%3.0f">0</text>
|
||||
<text id="sample4" plotMode="sample" class="text" plotParam="windSpd" plotUnit="kts" plotSymbol=" RAIN FLAG" plotFormat="%3.0f">0</text>
|
||||
<text id="sample4" plotMode="sample" class="text" plotParam="probRain" plotSymbol="%">0</text>
|
||||
|
||||
<g id="windVaneText" plotMode="barb" plotParam="windSpd,windDir" plotUnit="kts" x="0" y="0" transform="rotate(0,0,0)">
|
||||
<text id="windArrowText" class="barb" x="0" y="0">75</text>
|
||||
</g>
|
||||
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2 KiB |
|
@ -0,0 +1,5 @@
|
|||
s2s
|
||||
246:DMSP-13
|
||||
247:DMSP-14
|
||||
248:DMSP-15
|
||||
249:DMSP-16
|
|
@ -0,0 +1,4 @@
|
|||
s2s
|
||||
default:QUIKSCAT
|
||||
281:QUIKSCAT
|
||||
282:ADEOS-II
|
|
@ -0,0 +1,4 @@
|
|||
s2s
|
||||
default:ASCAT
|
||||
281:ASCAT
|
||||
282:ADEOS-II
|
|
@ -0,0 +1,36 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="sample1" plotMode="sample" class="text" plotParam="validTime" plotFormat="time" plotSymbol="Z">0</text>
|
||||
<text id="sample2" plotMode="sample" class="text" plotParam="satelliteID" plotLookupTable="sat_name_lookup.txt">0</text>
|
||||
<text id="sample3" plotMode="sample" class="text" plotParam="orbitNumber" plotFormat="%8.0f">0</text>
|
||||
<text id="sample4" plotMode="sample" class="text" plotParam="scanNumber" plotFormat="%5.0f">0</text>
|
||||
<text id="lat" plotMode="sample" class="text" plotParam="latitude" plotSymbol="deg" plotFormat="%3.2f">0</text>
|
||||
<text id="lon" plotMode="sample" class="text" plotParam="longitude" plotSymbol="deg" plotFormat="%3.2f">0</text>
|
||||
<text id="pwText" plotMode="sample" class="text" plotLookupTable="output_formats.txt" plotParam="precipWater" plotFormat="%2.1f" plotSymbol="kg/(m**2)">0</text>
|
||||
<text id="pwText" plotMode="range" class="text" plotLookupTable="output_formats.txt" plotParam="precipWater" plotFormat="%2.1f" x="0" y="0">0</text>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
|
@ -0,0 +1,36 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="sample1" plotMode="sample" class="text" plotParam="validTime" plotFormat="time" plotSymbol="Z">0</text>
|
||||
<text id="sample2" plotMode="sample" class="text" plotParam="satelliteID" plotLookupTable="sat_name_lookup.txt">0</text>
|
||||
<text id="sample3" plotMode="sample" class="text" plotParam="orbitNumber" plotFormat="%8.0f">0</text>
|
||||
<text id="sample4" plotMode="sample" class="text" plotParam="scanNumber" plotFormat="%5.0f">0</text>
|
||||
<text id="lat" plotMode="sample" class="text" plotParam="latitude" plotSymbol="deg" plotFormat="%3.2f">0</text>
|
||||
<text id="lon" plotMode="sample" class="text" plotParam="longitude" plotSymbol="deg" plotFormat="%3.2f">0</text>
|
||||
<text id="sample5" plotMode="sample" class="text" plotParam="seaTemp" plotUnit="°C" plotFormat="%2.1f" plotSymbol="C">0</text>
|
||||
<text id="seaTempText" plotMode="text" class="text" plotParam="seaTemp" plotUnit="°C" plotFormat="%2.1f" x="0" y="0">0</text>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
|
@ -0,0 +1,38 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="sample1" plotMode="sample" class="text" plotParam="validTime" plotFormat="time" plotSymbol="Z">0</text>
|
||||
<text id="sample2" plotMode="sample" class="text" plotParam="satelliteID" plotLookupTable="sat_name_lookup.txt">0</text>
|
||||
<text id="sample3" plotMode="sample" class="text" plotParam="orbitNumber" plotFormat="%8.0f">0</text>
|
||||
<text id="sample4" plotMode="sample" class="text" plotParam="scanNumber" plotFormat="%5.0f">0</text>
|
||||
<text id="lat" plotMode="sample" class="text" plotParam="latitude" plotSymbol="deg" plotFormat="%3.2f">0</text>
|
||||
<text id="lon" plotMode="sample" class="text" plotParam="longitude" plotSymbol="deg" plotFormat="%3.2f">0</text>
|
||||
<text id="sample5" plotMode="sample" class="text" plotLookupTable="output_formats.txt" plotParam="vertIntegWater" plotFormat="%2.1f" plotSymbol="kg/(m**2)">75</text>
|
||||
<text id="vilText" plotMode="range" class="text" plotLookupTable="output_formats.txt" plotParam="vertIntegWater" plotFormat="%2.2f">0</text>
|
||||
|
||||
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
|
@ -0,0 +1,29 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="vilText" plotMode="text" plotParam="VIL" plotUnit="kgm2" plotFormat="%3.0f" x="0" y="0">75</text>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 869 B |
|
@ -0,0 +1,36 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg width="80" height="80"
|
||||
viewBox="0 0 80 80"
|
||||
overflow="visible"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" style="stroke: rgb(255,255,255);">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
@font-face { font-family: "StandardFont";
|
||||
src: url(Standard.svg#Standard); }
|
||||
|
||||
text.text
|
||||
{
|
||||
fill: none;
|
||||
font-size: 1em;
|
||||
stroke-width: 1px;
|
||||
font-family: StandardFont;
|
||||
font-size: 1em;
|
||||
}
|
||||
]]>
|
||||
</style>
|
||||
|
||||
<symbol overflow="visible" id="plotData" class="info">
|
||||
<text id="sample1" plotMode="sample" class="text" plotParam="validTime" plotFormat="time" plotSymbol="Z">0</text>
|
||||
<text id="sample2" plotMode="sample" class="text" plotParam="satelliteID" plotLookupTable="sat_name_lookup.txt">0</text>
|
||||
<text id="sample3" plotMode="sample" class="text" plotParam="orbitNumber" plotFormat="%8.0f">0</text>
|
||||
<text id="sample4" plotMode="sample" class="text" plotParam="scanNumber" plotFormat="%5.0f">0</text>
|
||||
<text id="lat" plotMode="sample" class="text" plotParam="latitude" plotSymbol="deg" plotFormat="%3.2f">0</text>
|
||||
<text id="lon" plotMode="sample" class="text" plotParam="longitude" plotSymbol="deg" plotFormat="%3.2f">0</text>
|
||||
<text id="sample5" plotMode="sample" class="text" plotParam="windSpeed" plotLookupTable="output_formats.txt" plotSymbol="kt" plotUnit="kts" plotFormat="%2.1f">59</text>
|
||||
<text id="windSpdText" plotMode="range" class="text" plotParam="windSpeed" plotLookupTable="output_formats.txt" plotUnit="kts" plotFormat="%2.1f" x="0" y="0">59</text>
|
||||
</symbol>
|
||||
</defs>
|
||||
<use id="wind" x="40" y="40" width="80" height="80" visibility="visible" xlink:href="#plotData"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
|
@ -1,4 +1,3 @@
|
|||
0=$vizVersion$
|
||||
1=$buildDate$
|
||||
2=$buildTime$
|
||||
3=$buildSystem$
|
||||
0=20.3.2-0.4
|
||||
1=Wed Jun 28 20:21:00 GMT 2023
|
||||
2=CentOS Linux release 7.9.2009 (Core)
|
||||
|
|
|
@ -127,6 +127,7 @@
|
|||
<feature id="com.raytheon.uf.viz.ffmp.feature"/>
|
||||
<feature id="com.raytheon.uf.viz.scan.feature"/>
|
||||
<feature id="com.raytheon.uf.viz.fssobs.feature"/>
|
||||
<feature id="edu.wisc.ssec.cimss.viz.probsevere.feature"/>
|
||||
<feature id="com.raytheon.uf.viz.satellite.goesr.feature" installMode="root"/>
|
||||
</features>
|
||||
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
caveAboutText=Common AWIPS Visualization Environment (CAVE)\n\
|
||||
\n\
|
||||
Developed on the Raytheon viz Environment, released as non-operational\
|
||||
software by UCAR's Unidata Program Center\
|
||||
software by UCAR''s Unidata Program Center\
|
||||
https://www.unidata.ucar.edu/software/awips2 \
|
||||
\n\n\
|
||||
\tBUILD VERSION: {0}\n\
|
||||
\tBUILD DATE: {1}\n\
|
||||
\tBUILD TIME: {2}\n\
|
||||
\tBUILD SYSTEM: {3}
|
||||
\tBUILD SYSTEM: {2}
|
||||
caveVersion=DEVELOPMENT
|
|
@ -24,26 +24,115 @@
|
|||
of the file.
|
||||
-->
|
||||
<menuTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<contribute xsi:type="bundleItem"
|
||||
file="bundles/DefaultRadarCodedMessage.xml" menuText="10km Radar Coded Msg"
|
||||
id="10kmRadarCodedMsg" />
|
||||
<contribute xsi:type="subinclude" fileName="menus/radar/airportRadars.xml" />
|
||||
<contribute xsi:type="titleItem" titleText="------ Mosaic ------"
|
||||
<contribute xsi:type="subinclude" subMenu="Dial Radars" id="allDialRadar" fileName="menus/radar/dialRadars.xml"/>
|
||||
<contribute xsi:type="subinclude" subMenu="TDWR Radars" id="tdwrRadar" fileName="menus/radar/tdwrRadars.xml" />
|
||||
<contribute xsi:type="separator" id="seperator" />
|
||||
|
||||
<contribute xsi:type="titleItem" titleText="------ Mosaic ------"
|
||||
id="RadarMosaic" />
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/regionalMosaicMenus.xml" />
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/radarMosaicProductMenu.xml" />
|
||||
<contribute xsi:type="separator" id="belowRadarMosaics" />
|
||||
<contribute xsi:type="subMenu" menuText="Dial Radars"
|
||||
id="RadarMenuDialRadarsSubMenu">
|
||||
<contribute xsi:type="subinclude" subMenu="Local Dial Radars"
|
||||
id="localDialRadar" fileName="menus/radar/dialRadars.xml">
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude" subMenu="All Dial Radars"
|
||||
id="allDialRadar" fileName="menus/radar/dialAllRadars.xml">
|
||||
</contribute>
|
||||
</contribute>
|
||||
|
||||
<contribute xsi:type="subinclude" fileName="menus/radar/regionalMosaicMenus.xml"
|
||||
subMenu="N0Q - 0.5 Reflectivity" id="Radar05Reflectivity">
|
||||
<substitute key="product" value="153,94,19,20" />
|
||||
<substitute key="elevation" value="0.5" />
|
||||
<substitute key="name" value="N0Q 0.5 Reflectivity" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude" fileName="menus/radar/regionalMosaicMenus.xml"
|
||||
subMenu="DHR - Hybrid Scan Reflectivity" id="RadarHybridScanRefl">
|
||||
<substitute key="product" value="32,33" />
|
||||
<substitute key="elevation" value="0.0" />
|
||||
<substitute key="name" value="DHR Hybrid Scan Refl" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude" fileName="menus/radar/regionalMosaicMenus.xml"
|
||||
subMenu="DVL - Digital Vert integrated Liquid" id="RadarDigitalVertIntegratedLiquid">
|
||||
<substitute key="product" value="134" />
|
||||
<substitute key="elevation" value="0.0" />
|
||||
<substitute key="name" value="DVL Digital Vert integrated Liquid" />
|
||||
</contribute>
|
||||
|
||||
<contribute xsi:type="subinclude" fileName="menus/radar/regionalMosaicMenus.xml"
|
||||
subMenu="HHC - Hybrid Hydrometeor Classification" id="RadarHybridHydroClass">
|
||||
<substitute key="product" value="177" />
|
||||
<substitute key="elevation" value="0.0" />
|
||||
<substitute key="name" value="HHC Hybrid Hydro Class" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude" fileName="menus/radar/regionalMosaicMenus.xml"
|
||||
subMenu="EET - Enhanced Echo Tops" id="RadarEnhancedEchoTopsClass">
|
||||
<substitute key="product" value="135" />
|
||||
<substitute key="elevation" value="0.0" />
|
||||
<substitute key="name" value="EET Enhanced Echo Tops" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude" fileName="menus/radar/regionalMosaicMenus.xml"
|
||||
subMenu="DSP - Digital Storm Total Precip" id="RadarDigitalStormTotalPrecip">
|
||||
<substitute key="product" value="138" />
|
||||
<substitute key="elevation" value="0.0" />
|
||||
<substitute key="name" value="DSP Digital Storm Total Precip" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude" fileName="menus/radar/regionalMosaicMenus.xml"
|
||||
subMenu="DPR - Inst Precip Rate" id="InstPrecipRateDPR">
|
||||
<substitute key="product" value="176" />
|
||||
<substitute key="elevation" value="0.0" />
|
||||
<substitute key="name" value="DPR Inst Precip Rate (in/hr)" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude" fileName="menus/radar/regionalMosaicMenus.xml"
|
||||
subMenu="DTA - Storm Total Accum (STA)" id="RadarDualPolStormTotal">
|
||||
<substitute key="product" value="172" />
|
||||
<substitute key="elevation" value="0.0" />
|
||||
<substitute key="name" value="DTA Storm Total Accum" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude" fileName="menus/radar/regionalMosaicMenus.xml"
|
||||
subMenu="DSD - Storm Total Accum Diff" id="RadarDualPolStormTotal">
|
||||
<substitute key="product" value="175" />
|
||||
<substitute key="elevation" value="0.0" />
|
||||
<substitute key="name" value="DSD Storm Total Accum Diff" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude" fileName="menus/radar/regionalMosaicMenus.xml"
|
||||
subMenu="DAA - 1 Hour Digital Accumulation Array" id="RadarDualPol1hrPrecip">
|
||||
<substitute key="product" value="170" />
|
||||
<substitute key="elevation" value="0.0" />
|
||||
<substitute key="name" value="DAA 1hr Digital Accumulation Array" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude" fileName="menus/radar/regionalMosaicMenus.xml"
|
||||
subMenu="OHA - 1 Hour Accumulation" id="RadarDualPol1hrAccum">
|
||||
<substitute key="product" value="169" />
|
||||
<substitute key="elevation" value="0.0" />
|
||||
<substitute key="name" value="OHA 1hr Accum" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/regionalMosaicMenus.xml" subMenu="Dual Pol User 3hr Accum /hrly (DUA)"
|
||||
id="RadarUserSelectablePrecip3hr">
|
||||
<substitute key="product" value="173" />
|
||||
<substitute key="elevation" value="0.0" />
|
||||
<substitute key="layer" value="3.0" />
|
||||
<substitute key="name" value="Dual Pol User 3hr Accum /hrly (DUA)" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/regionalMosaicMenus.xml" subMenu="Dual Pol User 24hr Accum @12Z (DUA)"
|
||||
id="RadarUserSelectablePrecip24hr">
|
||||
<substitute key="product" value="173" />
|
||||
<substitute key="elevation" value="0.0" />
|
||||
<substitute key="layer" value="6.0" />
|
||||
<substitute key="name" value="Dual Pol User 24hr Accum @12Z (DUA)" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude" fileName="menus/radar/regionalMosaicMenus.xml"
|
||||
subMenu="N0X - 0.5 Differential Reflectivity (ZDR)" id="Radar05ZDR">
|
||||
<substitute key="product" value="159,158" />
|
||||
<substitute key="elevation" value="0.5" />
|
||||
<substitute key="name" value="N0X Diff Reflectivity" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude" fileName="menus/radar/regionalMosaicMenus.xml"
|
||||
subMenu="N0K - 0.5 Specific Diff Phase (KDP)" id="Radar05KDP">
|
||||
<substitute key="product" value="163,162" />
|
||||
<substitute key="elevation" value="0.5" />
|
||||
<substitute key="name" value="N0K Specific Diff Phase" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude" fileName="menus/radar/regionalMosaicMenus.xml"
|
||||
subMenu="N0C - 0.5 Correlation Coeff (CC)" id="Radar05CC">
|
||||
<substitute key="product" value="161,160" />
|
||||
<substitute key="elevation" value="0.5" />
|
||||
<substitute key="name" value="N0C Correlation Coefficient" />
|
||||
</contribute>
|
||||
<contribute xsi:type="separator" id="seperator" />
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/baseRadarApplications.xml" />
|
||||
</menuTemplate>
|
|
@ -0,0 +1,694 @@
|
|||
<?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.
|
||||
-->
|
||||
<!--
|
||||
This is an absolute override file, indicating that a higher priority
|
||||
version of the file will completely replace a lower priority version
|
||||
of the file.
|
||||
-->
|
||||
<menuTemplate>
|
||||
<contribute xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:type="subMenu" menuText="kabr-kbis">
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kabr" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kabx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kakq" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kama" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kamx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kapx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="karx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="katx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kbbx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kbgm" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kbhx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kbis" key="icao" />
|
||||
</contribute>
|
||||
</contribute>
|
||||
<contribute xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:type="subMenu" menuText="kblx-kcri">
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kblx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kbmx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kbox" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kbro" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/kbuf/baseLocalRadarMenu.xml">
|
||||
<substitute value="kbuf" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kbyx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kcae" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kcbw" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kcbx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kccx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/kcle/baseLocalRadarMenu.xml">
|
||||
<substitute value="kcle" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/kclx/baseLocalRadarMenu.xml">
|
||||
<substitute value="kclx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/kcri/baseLocalRadarMenu.xml">
|
||||
<substitute value="kcri" key="icao" />
|
||||
</contribute>
|
||||
</contribute>
|
||||
<contribute xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:type="subMenu" menuText="kcrp-kdtx">
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kcrp" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kcxx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kcys" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kdax" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kddc" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kdfx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/kdgx/baseLocalRadarMenu.xml">
|
||||
<substitute value="kdgx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kdix" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/kdlh/baseLocalRadarMenu.xml">
|
||||
<substitute value="kdlh" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kdmx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kdox" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kdtx" key="icao" />
|
||||
</contribute>
|
||||
</contribute>
|
||||
<contribute xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:type="subMenu" menuText="kdvn-kfcx">
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kdvn" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kdyx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="keax" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kemx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kenx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="keox" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kepz" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kesx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kevx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kewx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="keyx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kfcx" key="icao" />
|
||||
</contribute>
|
||||
</contribute>
|
||||
<contribute xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:type="subMenu" menuText="kfdr-kgrk">
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kfdr" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kfdx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kffc" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kfsd" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/kfsx/baseLocalRadarMenu.xml">
|
||||
<substitute value="kfsx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kftg" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kfws" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kggw" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/kgjx/baseLocalRadarMenu.xml">
|
||||
<substitute value="kgjx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kgld" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kgrb" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kgrk" key="icao" />
|
||||
</contribute>
|
||||
</contribute>
|
||||
<contribute xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:type="subMenu" menuText="kgrr-kiln">
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kgrr" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/kgsp/baseLocalRadarMenu.xml">
|
||||
<substitute value="kgsp" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kgwx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kgyx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="khdx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="khgx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="khnx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="khpx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="khtx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kict" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/kicx/baseLocalRadarMenu.xml">
|
||||
<substitute value="kicx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kiln" key="icao" />
|
||||
</contribute>
|
||||
</contribute>
|
||||
<contribute xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:type="subMenu" menuText="kilx-klgx">
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kilx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kind" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kinx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kiwa" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kiwx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kjan" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kjax" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kjgx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kjkl" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="klbb" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="klch" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/klgx/baseLocalRadarMenu.xml">
|
||||
<substitute value="klgx" key="icao" />
|
||||
</contribute>
|
||||
</contribute>
|
||||
<contribute xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:type="subMenu" menuText="klix-kmbx">
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="klix" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="klnx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="klot" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="klrx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="klsx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kltx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="klvx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="klwx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="klzk" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kmaf" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/kmax/baseLocalRadarMenu.xml">
|
||||
<substitute value="kmax" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/kmbx/baseLocalRadarMenu.xml">
|
||||
<substitute value="kmbx" key="icao" />
|
||||
</contribute>
|
||||
</contribute>
|
||||
<contribute xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:type="subMenu" menuText="kmhx-kmxx">
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kmhx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kmkx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kmlb" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kmob" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kmpx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kmqt" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kmrx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/kmsx/baseLocalRadarMenu.xml">
|
||||
<substitute value="kmsx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/kmtx/baseLocalRadarMenu.xml">
|
||||
<substitute value="kmtx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/kmux/baseLocalRadarMenu.xml">
|
||||
<substitute value="kmux" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kmvx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kmxx" key="icao" />
|
||||
</contribute>
|
||||
</contribute>
|
||||
<contribute xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:type="subMenu" menuText="knkx-krax">
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="knkx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="knqa" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="koax" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kohx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kokx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kotx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kpah" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kpbz" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kpdt" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kpoe" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kpux" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/krax/baseLocalRadarMenu.xml">
|
||||
<substitute value="krax" key="icao" />
|
||||
</contribute>
|
||||
</contribute>
|
||||
<contribute xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:type="subMenu" menuText="krgx-ktfx">
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/krgx/baseLocalRadarMenu.xml">
|
||||
<substitute value="krgx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kriw" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="krlx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="krtx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="ksfx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="ksgf" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/kshv/baseLocalRadarMenu.xml">
|
||||
<substitute value="kshv" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="ksjt" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="ksox" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="ksrx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="ktbw" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="ktfx" key="icao" />
|
||||
</contribute>
|
||||
</contribute>
|
||||
<contribute xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:type="subMenu" menuText="ktlh-kyux">
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="ktlh" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="ktlx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="ktwx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="ktyx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kudx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kuex" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kvax" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kvbx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kvnx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kvtx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kvwx" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="kyux" key="icao" />
|
||||
</contribute>
|
||||
</contribute>
|
||||
<contribute xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:type="subMenu" menuText="pabc-phwa">
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="pabc" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="pacg" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="paec" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="pahg" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="paih" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="pakc" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="papd" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="pgua" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="phki" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="phkm" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="phmo" key="icao" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude"
|
||||
fileName="menus/radar/dualPol/baseLocalRadarMenu.xml">
|
||||
<substitute value="phwa" key="icao" />
|
||||
</contribute>
|
||||
</contribute>
|
||||
</menuTemplate>
|
|
@ -24,67 +24,52 @@
|
|||
of the file.
|
||||
-->
|
||||
<menuTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<contribute xsi:type="subMenu" menuText="Regional and National Mosaics"
|
||||
id="otherRegMosiacMenu">
|
||||
<contribute xsi:type="subinclude" subMenu="Northeast Region"
|
||||
id="neRegMosiacMenu" fileName="menus/radar/radarMosaicProductMenu.xml">
|
||||
<substitute key="mosaicIcaoList"
|
||||
value="kcbw,kcxx,kgyx,ktyx,kenx,kbox,kbuf,kbgm,kokx,kcle,kpbz,kccx,kdix,krlx,kfcx,kakq,kdox,klwx" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude" subMenu="Mid-Atlantic Region"
|
||||
id="mid-atlRegMosiacMenu" fileName="menus/radar/radarMosaicProductMenu.xml">
|
||||
<substitute key="mosaicIcaoList"
|
||||
value="kcle,kpbz,kccx,kokx,kdix,kiln,krlx,klwx,kdox,kjkl,kfcx,kakq,kmrx,krax,kgsp,kmhx,kltx,kcae,kffc,kjgx,kclx,keox,kvax,kjax" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude" subMenu="Southeast Region"
|
||||
id="seRegMosiacMenu" fileName="menus/radar/radarMosaicProductMenu.xml">
|
||||
<substitute key="mosaicIcaoList"
|
||||
value="kohx,kmrx,krax,knqa,khtx,kgsp,kcae,kltx,kgwx,kdgx,kmhx,kffc,klix,kbix,kmob,kbmx,kmxx,keox,kjgx,kclx,kevx,ktlh,kvax,kjax,ktbw,kmlb,kamx,kbyx" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude" subMenu="Gulf Coast Region"
|
||||
id="gulfRegMosiacMenu" fileName="menus/radar/radarMosaicProductMenu.xml">
|
||||
<substitute key="mosaicIcaoList"
|
||||
value="kbro,kcrp,kdfx,kewx,kgrk,khgx,kfws,kshv,kpoe,klch,klix,klzk,kdgx,kbix,kgwx,kmob,kbmx,kmxx,keox,kevx,ktlh,kffc,kjgx,kvax,kjax,ktbw,kmlb,kamx,kbyx" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude" subMenu="Great Lakes Region"
|
||||
id="lakesRegMosiacMenu" fileName="menus/radar/radarMosaicProductMenu.xml">
|
||||
<substitute key="mosaicIcaoList"
|
||||
value="kdlh,kmpx,krlx,kccx,kjkl,krlx,karx,kmqt,kgrb,kmkx,kdmx,kdvn,klot,kilx,klsx,kapx,kgrr,kdtx,kiwx,kind,kvwx,klvx,kiln,kcle,kpbz,kbuf,kccf,kbgm,ktyx" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude" subMenu="Ozarks/Tenn Valley Region"
|
||||
id="oztennRegMosiacMenu" fileName="menus/radar/radarMosaicProductMenu.xml">
|
||||
<substitute key="mosaicIcaoList"
|
||||
value="keax,ksgf,klsx,kilx,kind,kvwx,kiln,kpah,khpx,klvx,kjkl,krlx,ksrx,klzk,knqa,kohx,kmrx,kshv,kdgx,kgwx,kbmx,khtx,kffc,kgsp" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude" subMenu="Northern Plains Region"
|
||||
id="nrnplainsRegMosiacMenu" fileName="menus/radar/radarMosaicProductMenu.xml">
|
||||
<substitute key="mosaicIcaoList"
|
||||
value="kggw,kmbx,kbis,kmvx,kudx,kabr,kdlh,kmpx,karx,kfsd,kcys,klnx,kuex,koax,kdmx,kdvn,kftg,kpux,kgld,kddc,kict,ktwx,keax,ksgf,klsx,kilx,kvnx" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude" subMenu="Southern Plains Region"
|
||||
id="srnplainsRegMosiacMenu" fileName="menus/radar/radarMosaicProductMenu.xml">
|
||||
<substitute key="mosaicIcaoList"
|
||||
value="kpux,kgld,kddc,kict,ktwx,keax,ksgf,klsx,kpah,kfdx,khdx,kepz,kama,klbb,kmaf,ksjt,kdfx,kdyx,kfws,kgrk,kewx,kcrp,kbro,khgx,kfdr,ktlx,kvnx,kinx,ksrx,klzk,kshv,kpoe,klch,knqa,kdgx,klix,kpah" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude" subMenu="Northwest Region"
|
||||
id="nwRegMosiacMenu" fileName="menus/radar/radarMosaicProductMenu.xml">
|
||||
<substitute key="mosaicIcaoList"
|
||||
value="katx,krtx,kotx,kpdt,kmax,kcbx,ksfx,kmsx,ktfx,kblx,kggw,kriw,kcys,kbhx,kbbx,kdax,kmux,khnx,krgx,klgx,klrx,kmtx,kicx,kgjx,kftg,kpux" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude" subMenu="Southwest Region"
|
||||
id="swRegMosiacMenu" fileName="menus/radar/radarMosaicProductMenu.xml">
|
||||
<substitute key="mosaicIcaoList"
|
||||
value="kmax,kcbx,ksfx,kriw,kcys,kbbx,kdax,kmux,khnx,kvbx,kvtx,keyx,ksox,knkx,krgx,klrx,kesx,kmtx,kicx,kfsx,kiwa,kyux,kemx,kgjx,kftg,kpux,kabx,khdx,kepz,kfdx" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude" subMenu="National Mosaic"
|
||||
id="natMosiacMenu" fileName="menus/radar/radarMosaicProductMenu.xml">
|
||||
<substitute key="mosaicIcaoList"
|
||||
value="kabr,kabx,kakq,kama,kamx,kapx,karx,katx,kbbx,kbgm,kbhx,kbis,kblx,kbmx,kbox,kbro,kbuf,kbyx,kcae,kcbw,kcbx,kccx,kcle,kclx,kcrp,kcxx,kcys,kdax,kddc,kdfx,kdgx,kdix,kdlh,kdmx,kdox,kdtx,kdvn,kdyx,keax,kemx,kenx,keox,kepz,kesx,kevx,kewx,keyx,kfcx,kfdr,kfdx,kffc,kfsd,kfsx,kftg,kfws,kggw,kgjx,kgld,kgrb,kgrk,kgrr,kgsp,kgwx,kgyx,khdx,khgx,khnx,khpx,khtx,kict,kicx,kiln,kilx,kind,kinx,kiwa,kiwx,kjan,kjax,kjgx,kjkl,klbb,klch,klgx,klix,klnx,klot,klrx,klsx,kltx,klvx,klwx,klzk,kmaf,kmax,kmbx,kmhx,kmkx,kmlb,kmob,kmpx,kmqt,kmrx,kmsx,kmtx,kmux,kmvx,kmxx,knkx,knqa,koax,kohx,kokx,kotx,kpah,kpbz,kpdt,kpoe,kpux,krax,krgx,kriw,krlx,krtx,ksfx,ksgf,kshv,ksjt,ksox,ksrx,ktbw,ktfx,ktlh,ktlx,ktwx,ktyx,kudx,kuex,kvax,kvbx,kvnx,kvtx,kvwx,kyux,pabc,pacg,paec,pahg,paih,pakc,papd,pgua,phki,phkm,phmo,phwa,tjua,tadw,tatl,tbna,tbos,tbwi,tclt,tcmh,tcvg,tdal,tday,tdca,tden,tdfw,tdtw,tewr,tfll,thou,tiad,tiah,tich,tids,tjfk,tlas,tlve,tmci,tmco,tmdw,tmem,tmia,tmke,tmsp,tmsy,tokc,tord,tpbi,tphl,tphx,tpit,trdu,tsdf,tsju,tslc,tstl,ttpa,ttul" />
|
||||
</contribute>
|
||||
<contribute xsi:type="subinclude" subMenu="TDWR Mosaic"
|
||||
id="tdwrMosaicMenu" fileName="menus/radar/tdwrMosaicProductMenu.xml">
|
||||
<substitute key="mosaicIcaoList"
|
||||
value="tjua,tadw,tatl,tbna,tbos,tbwi,tclt,tcmh,tcvg,tdal,tday,tdca,tden,tdfw,tdtw,tewr,tfll,thou,tiad,tiah,tich,tids,tjfk,tlas,tlve,tmci,tmco,tmdw,tmem,tmia,tmke,tmsp,tmsy,tokc,tord,tpbi,tphl,tphx,tpit,trdu,tsdf,tsju,tslc,tstl,ttpa,ttul" />
|
||||
</contribute>
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" menuText="Northeast" id="neRegMosiacMenu"
|
||||
file="bundles/DefaultRadarMosaic.xml">
|
||||
<substitute key="mosaicIcaoList" value="kcbw,kcxx,kgyx,ktyx,kenx,kbox,kbuf,kbgm,kokx,kcle,kpbz,kccx,kdix,krlx,kfcx,kakq,kdox,klwx" />
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" menuText="Mid-Atlantic" id="mid-atlRegMosiacMenu"
|
||||
file="bundles/DefaultRadarMosaic.xml">
|
||||
<substitute key="mosaicIcaoList" value="kcle,kpbz,kccx,kokx,kdix,kiln,krlx,klwx,kdox,kjkl,kfcx,kakq,kmrx,krax,kgsp,kmhx,kltx,kcae,kffc,kjgx,kclx,keox,kvax,kjax" />
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" menuText="Southeast" id="seRegMosiacMenu"
|
||||
file="bundles/DefaultRadarMosaic.xml">
|
||||
<substitute key="mosaicIcaoList" value="kohx,kmrx,krax,knqa,khtx,kgsp,kcae,kltx,kgwx,kdgx,kmhx,kffc,klix,kbix,kmob,kbmx,kmxx,keox,kjgx,kclx,kevx,ktlh,kvax,kjax,ktbw,kmlb,kamx,kbyx" />
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" menuText="Gulf Coast" id="gulfRegMosiacMenu"
|
||||
file="bundles/DefaultRadarMosaic.xml">
|
||||
<substitute key="mosaicIcaoList" value="kbro,kcrp,kdfx,kewx,kgrk,khgx,kfws,kshv,kpoe,klch,klix,klzk,kdgx,kbix,kgwx,kmob,kbmx,kmxx,keox,kevx,ktlh,kffc,kjgx,kvax,kjax,ktbw,kmlb,kamx,kbyx" />
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" menuText="Great Lakes" id="lakesRegMosiacMenu"
|
||||
file="bundles/DefaultRadarMosaic.xml">
|
||||
<substitute key="mosaicIcaoList" value="kdlh,kmpx,krlx,kccx,kjkl,krlx,karx,kmqt,kgrb,kmkx,kdmx,kdvn,klot,kilx,klsx,kapx,kgrr,kdtx,kiwx,kind,kvwx,klvx,kiln,kcle,kpbz,kbuf,kccf,kbgm,ktyx" />
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" menuText="Ozarks/Tenn Valley" id="oztennRegMosiacMenu"
|
||||
file="bundles/DefaultRadarMosaic.xml">
|
||||
<substitute key="mosaicIcaoList" value="keax,ksgf,klsx,kilx,kind,kvwx,kiln,kpah,khpx,klvx,kjkl,krlx,ksrx,klzk,knqa,kohx,kmrx,kshv,kdgx,kgwx,kbmx,khtx,kffc,kgsp" />
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" menuText="Northern Plains" id="nrnplainsRegMosiacMenu"
|
||||
file="bundles/DefaultRadarMosaic.xml">
|
||||
<substitute key="mosaicIcaoList" value="kggw,kmbx,kbis,kmvx,kudx,kabr,kdlh,kmpx,karx,kfsd,kcys,klnx,kuex,koax,kdmx,kdvn,kftg,kpux,kgld,kddc,kict,ktwx,keax,ksgf,klsx,kilx,kvnx" />
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" menuText="Southern Plains" id="srnplainsRegMosiacMenu"
|
||||
file="bundles/DefaultRadarMosaic.xml">
|
||||
<substitute key="mosaicIcaoList" value="kpux,kgld,kddc,kict,ktwx,keax,ksgf,klsx,kpah,kfdx,khdx,kepz,kama,klbb,kmaf,ksjt,kdfx,kdyx,kfws,kgrk,kewx,kcrp,kbro,khgx,kfdr,ktlx,kvnx,kinx,ksrx,klzk,kshv,kpoe,klch,knqa,kdgx,klix,kpah" />
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" menuText="Northwest" id="nwRegMosiacMenu"
|
||||
file="bundles/DefaultRadarMosaic.xml">
|
||||
<substitute key="mosaicIcaoList" value="katx,krtx,kotx,kpdt,kmax,kcbx,ksfx,kmsx,ktfx,kblx,kggw,kriw,kcys,kbhx,kbbx,kdax,kmux,khnx,krgx,klgx,klrx,kmtx,kicx,kgjx,kftg,kpux" />
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" menuText="Southwest" id="swRegMosiacMenu"
|
||||
file="bundles/DefaultRadarMosaic.xml">
|
||||
<substitute key="mosaicIcaoList" value="kmax,kcbx,ksfx,kriw,kcys,kbbx,kdax,kmux,khnx,kvbx,kvtx,keyx,ksox,knkx,krgx,klrx,kesx,kmtx,kicx,kfsx,kiwa,kyux,kemx,kgjx,kftg,kpux,kabx,khdx,kepz,kfdx" />
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" menuText="National Mosaic" id="natMosiacMenu"
|
||||
file="bundles/DefaultRadarMosaic.xml">
|
||||
<substitute key="mosaicIcaoList" value="kabr,kabx,kakq,kama,kamx,kapx,karx,katx,kbbx,kbgm,kbhx,kbis,kblx,kbmx,kbox,kbro,kbuf,kbyx,kcae,kcbw,kcbx,kccx,kcle,kclx,kcrp,kcxx,kcys,kdax,kddc,kdfx,kdgx,kdix,kdlh,kdmx,kdox,kdtx,kdvn,kdyx,keax,kemx,kenx,keox,kepz,kesx,kevx,kewx,keyx,kfcx,kfdr,kfdx,kffc,kfsd,kfsx,kftg,kfws,kggw,kgjx,kgld,kgrb,kgrk,kgrr,kgsp,kgwx,kgyx,khdx,khgx,khnx,khpx,khtx,kict,kicx,kiln,kilx,kind,kinx,kiwa,kiwx,kjan,kjax,kjgx,kjkl,klbb,klch,klgx,klix,klnx,klot,klrx,klsx,kltx,klvx,klwx,klzk,kmaf,kmax,kmbx,kmhx,kmkx,kmlb,kmob,kmpx,kmqt,kmrx,kmsx,kmtx,kmux,kmvx,kmxx,knkx,knqa,koax,kohx,kokx,kotx,kpah,kpbz,kpdt,kpoe,kpux,krax,krgx,kriw,krlx,krtx,ksfx,ksgf,kshv,ksjt,ksox,ksrx,ktbw,ktfx,ktlh,ktlx,ktwx,ktyx,kudx,kuex,kvax,kvbx,kvnx,kvtx,kvwx,kyux,pabc,pacg,paec,pahg,paih,pakc,papd,pgua,phki,phkm,phmo,phwa,tjua,tadw,tatl,tbna,tbos,tbwi,tclt,tcmh,tcvg,tdal,tday,tdca,tden,tdfw,tdtw,tewr,tfll,thou,tiad,tiah,tich,tids,tjfk,tlas,tlve,tmci,tmco,tmdw,tmem,tmia,tmke,tmsp,tmsy,tokc,tord,tpbi,tphl,tphx,tpit,trdu,tsdf,tsju,tslc,tstl,ttpa,ttul" />
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" menuText="TDWR Mosaic" id="tdwrMosaicMenu"
|
||||
file="bundles/DefaultRadarMosaic.xml">
|
||||
<substitute key="mosaicIcaoList" value="tjua,tadw,tatl,tbna,tbos,tbwi,tclt,tcmh,tcvg,tdal,tday,tdca,tden,tdfw,tdtw,tewr,tfll,thou,tiad,tiah,tich,tids,tjfk,tlas,tlve,tmci,tmco,tmdw,tmem,tmia,tmke,tmsp,tmsy,tokc,tord,tpbi,tphl,tphx,tpit,trdu,tsdf,tsju,tslc,tstl,ttpa,ttul" />
|
||||
</contribute>
|
||||
</menuTemplate>
|
2089
cave/com.raytheon.viz.radar/localization/menus/radar/tdwrRadars.xml
Normal file
|
@ -276,6 +276,8 @@ import com.raytheon.viz.warngen.util.FollowUpUtil;
|
|||
* for the bottom buttons to be centered
|
||||
* Jun 28, 2022 srcarter@ucar Small change to disable the "UPDATE LIST"
|
||||
* combobox (not used in Unidata version)
|
||||
* Apr 17, 2023 srcarter@ucar Re-enable single clicking for multiple selections
|
||||
* in bullet list. Increase default size of list
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -563,7 +565,7 @@ public class WarngenDialog extends CaveSWTDialog
|
|||
|
||||
GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
|
||||
gd.widthHint = BULLETLIST_WIDTH_IN_CHARS * charWidth;
|
||||
gd.heightHint = lineHeight * 4;
|
||||
gd.heightHint = lineHeight * 7;
|
||||
bulletList.setLayoutData(gd);
|
||||
bulletListManager.recreateBullets(
|
||||
warngenLayer.getConfiguration().getBullets(),
|
||||
|
@ -2037,6 +2039,7 @@ public class WarngenDialog extends CaveSWTDialog
|
|||
private void bulletListSelected() {
|
||||
bulletListManager.updateSelectedIndices(bulletList.getSelectionIndex(),
|
||||
warngenLayer.state.followupData != null);
|
||||
updateBulletList();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -98,6 +98,7 @@ import org.locationtech.jts.geom.prep.PreparedGeometryFactory;
|
|||
* Mar 15, 2022 srcarter@ucar Add support for display settings for outline, fill, text and time displays
|
||||
* Jun 24, 2022 srcarter@ucar Add 'statement/other' display settings, set enabled for only relevant WWA types
|
||||
* Jun 28, 2022 srcarter@ucar Display sampling based on new 'sampling' settings
|
||||
* Mar 27, 2023 srcarter@ucar Optimize drawing to improve performance
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -136,6 +137,28 @@ public abstract class AbstractWWAResource extends
|
|||
* set to true if paint needs to re-init the shape
|
||||
*/
|
||||
protected boolean project = false;
|
||||
|
||||
/**
|
||||
* the display color
|
||||
*/
|
||||
protected RGB color = null;
|
||||
|
||||
/**
|
||||
* the text string that can be displayed
|
||||
*/
|
||||
protected String textStr = null;
|
||||
/**
|
||||
* the time string that can be displayed
|
||||
*/
|
||||
protected String timeStr = null;
|
||||
/**
|
||||
* the stylized emergency display string
|
||||
*/
|
||||
protected DrawableString emergencyDS = null;
|
||||
/**
|
||||
* the stylized params display string
|
||||
*/
|
||||
protected DrawableString paramsDS = null;
|
||||
|
||||
}
|
||||
|
||||
|
@ -202,6 +225,13 @@ public abstract class AbstractWWAResource extends
|
|||
private static final String WATCH_SIG = "A";
|
||||
private static final String ADVISORY_SIG = "Y";
|
||||
|
||||
// Current drawing objects
|
||||
private int currentFrameIdx = Integer.MIN_VALUE;
|
||||
private TimeRange currentFramePeriod = null;
|
||||
private boolean currentLastFrame = false;
|
||||
private HashMap<String, WarningEntry> currentCandidates = new HashMap<>();
|
||||
private float currentZoom = Float.MIN_VALUE;
|
||||
|
||||
/** The dialog used to change display properties */
|
||||
private DrawingPropertiesDialog drawingDialog;
|
||||
|
||||
|
@ -420,47 +450,64 @@ public abstract class AbstractWWAResource extends
|
|||
}
|
||||
}
|
||||
int index = info.getFrameIndex();
|
||||
if (!this.recordsToLoad.isEmpty()) {
|
||||
this.updateDisplay(target);
|
||||
boolean framesChanged = false;
|
||||
//only do the frame logic if the frame has changed
|
||||
if(currentFrameIdx != index) {
|
||||
framesChanged = true;
|
||||
currentFrameIdx = index;
|
||||
currentCandidates.clear();
|
||||
|
||||
if (!this.recordsToLoad.isEmpty()) {
|
||||
this.updateDisplay(target);
|
||||
}
|
||||
|
||||
DataTime thisFrameTime = null;
|
||||
if (index > -1 && index < frames.length) {
|
||||
thisFrameTime = frames[index];
|
||||
}
|
||||
if (thisFrameTime == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
TimeRange framePeriod = null;
|
||||
boolean lastFrame = false;
|
||||
if (index + 1 < frames.length) {
|
||||
framePeriod = new TimeRange(thisFrameTime.getRefTime(),
|
||||
frames[index + 1].getRefTime());
|
||||
} else {
|
||||
framePeriod = getLastFrameTimeRange(thisFrameTime.getRefTime());
|
||||
lastFrame = true;
|
||||
}
|
||||
currentFramePeriod = framePeriod;
|
||||
currentLastFrame = lastFrame;
|
||||
}
|
||||
|
||||
DataTime thisFrameTime = null;
|
||||
if (index > -1 && index < frames.length) {
|
||||
thisFrameTime = frames[index];
|
||||
}
|
||||
if (thisFrameTime == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
TimeRange framePeriod = null;
|
||||
boolean lastFrame = false;
|
||||
if (index + 1 < frames.length) {
|
||||
framePeriod = new TimeRange(thisFrameTime.getRefTime(),
|
||||
frames[index + 1].getRefTime());
|
||||
} else {
|
||||
framePeriod = getLastFrameTimeRange(thisFrameTime.getRefTime());
|
||||
lastFrame = true;
|
||||
}
|
||||
synchronized (paintLock) {
|
||||
HashMap<String, WarningEntry> candidates = new HashMap<>();
|
||||
for (WarningEntry entry : entryMap.values()) {
|
||||
if (matchesFrame(entry, paintProps.getDataTime(), framePeriod,
|
||||
lastFrame)) {
|
||||
String key = getEventKey(entry);
|
||||
WarningEntry current = candidates.get(key);
|
||||
|
||||
if (current == null
|
||||
|| current.record.getIssueTime().before(
|
||||
entry.record.getIssueTime())
|
||||
|| (current.record.getIssueTime().equals(
|
||||
entry.record.getIssueTime()) && current.record
|
||||
.getInsertTime().before(
|
||||
entry.record.getInsertTime()))) {
|
||||
candidates.put(key, entry);
|
||||
if(currentCandidates.size() == 0 || framesChanged) {
|
||||
for (WarningEntry entry : entryMap.values()) {
|
||||
if (matchesFrame(entry, paintProps.getDataTime(), currentFramePeriod,
|
||||
currentLastFrame)) {
|
||||
String key = getEventKey(entry);
|
||||
WarningEntry current = currentCandidates.get(key);
|
||||
|
||||
if (current == null
|
||||
|| current.record.getIssueTime().before(
|
||||
entry.record.getIssueTime())
|
||||
|| (current.record.getIssueTime().equals(
|
||||
entry.record.getIssueTime()) && current.record
|
||||
.getInsertTime().before(
|
||||
entry.record.getInsertTime()))) {
|
||||
currentCandidates.put(key, entry);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (WarningEntry entry : candidates.values()) {
|
||||
//If there are no entries, end here
|
||||
if(currentCandidates.values() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (WarningEntry entry : currentCandidates.values()) {
|
||||
AbstractWarningRecord record = entry.record;
|
||||
boolean drawShape = true;
|
||||
boolean drawOutline = true;
|
||||
|
@ -510,9 +557,12 @@ public abstract class AbstractWWAResource extends
|
|||
entry.project = false;
|
||||
}
|
||||
|
||||
RGB displaycolor = color;
|
||||
if ( ! record.getPil().equals("SPS")) {
|
||||
displaycolor = RGBColors.getRGBColor(getPhensigColor(record.getPhensig()));
|
||||
if(entry.color == null) {
|
||||
RGB displaycolor = color;
|
||||
if ( ! record.getPil().equals("SPS")) {
|
||||
displaycolor = RGBColors.getRGBColor(getPhensigColor(record.getPhensig()));
|
||||
}
|
||||
entry.color = displaycolor;
|
||||
}
|
||||
|
||||
if(entry != null){
|
||||
|
@ -532,74 +582,113 @@ public abstract class AbstractWWAResource extends
|
|||
|
||||
target.drawWireframeShape(
|
||||
entry.wireframeShape,
|
||||
displaycolor,
|
||||
entry.color,
|
||||
outlineWidth, lineStyle);
|
||||
}
|
||||
}
|
||||
|
||||
if (record != null && record.getGeometry() != null) {
|
||||
// Calculate the upper left portion of the polygon
|
||||
Coordinate upperLeft = new Coordinate(180, -90);
|
||||
|
||||
for (Coordinate c : record.getGeometry().getCoordinates()) {
|
||||
if (c.y - c.x > upperLeft.y - upperLeft.x) {
|
||||
upperLeft = c;
|
||||
//only calculate the drawable strings the first time through
|
||||
if(entry.paramsDS == null || (entry.emergencyDS == null && EmergencyType.isEmergency(record.getRawmessage()))){
|
||||
|
||||
double mapWidth = descriptor.getMapWidth()
|
||||
* paintProps.getZoomLevel() / 1000;
|
||||
String[] fullText = getText(record, mapWidth);
|
||||
|
||||
String[] textToPrint = {"",""};
|
||||
if(drawText){
|
||||
textToPrint[0] = fullText[0];
|
||||
}
|
||||
if(drawTime){
|
||||
textToPrint[1] = fullText[1];
|
||||
}
|
||||
|
||||
if (warningsFont == null) {
|
||||
warningsFont = target.initializeFont(target
|
||||
.getDefaultFont().getFontName(), 9,
|
||||
new IFont.Style[0]);
|
||||
emergencyFont = target.getDefaultFont().deriveWithSize(
|
||||
12);
|
||||
}
|
||||
|
||||
DrawableString params = new DrawableString(textToPrint, entry.color);
|
||||
params.font = warningsFont;
|
||||
params.horizontalAlignment = HorizontalAlignment.RIGHT;
|
||||
params.verticallAlignment = VerticalAlignment.BOTTOM;
|
||||
params.magnification = getCapability(
|
||||
MagnificationCapability.class).getMagnification();
|
||||
entry.paramsDS = params;
|
||||
|
||||
// Draws the string again to have it appear bolder
|
||||
if (EmergencyType.isEmergency(record.getRawmessage())) {
|
||||
// moves over text to add EMER in a different font
|
||||
textToPrint[1] = String.format("%1$-23" + "s",
|
||||
textToPrint[1]);
|
||||
params.setText(textToPrint, entry.color);
|
||||
|
||||
DrawableString emergencyString = new DrawableString(
|
||||
params);
|
||||
|
||||
emergencyString.font = emergencyFont;
|
||||
emergencyString.setText(new String[] { "", "",
|
||||
" " + EmergencyType.EMER, "" }, entry.color);
|
||||
entry.emergencyDS = emergencyString;
|
||||
}
|
||||
|
||||
entry.textStr = fullText[0];
|
||||
entry.timeStr = fullText[1];
|
||||
calculateTextPosition(entry, paintProps);
|
||||
}
|
||||
//if zoom has changed, recalucate text positions
|
||||
if(currentZoom != paintProps.getZoomLevel()) {
|
||||
calculateTextPosition(entry, paintProps);
|
||||
}
|
||||
|
||||
double[] d = descriptor.worldToPixel(new double[] {
|
||||
upperLeft.x, upperLeft.y });
|
||||
d[0] -= paintProps.getZoomLevel() * 100;
|
||||
|
||||
double mapWidth = descriptor.getMapWidth()
|
||||
* paintProps.getZoomLevel() / 1000;
|
||||
String[] fullText = getText(record, mapWidth);
|
||||
|
||||
String[] textToPrint = {"",""};
|
||||
if(drawText){
|
||||
textToPrint[0] = fullText[0];
|
||||
}
|
||||
if(drawTime){
|
||||
textToPrint[1] = fullText[1];
|
||||
}
|
||||
|
||||
if (warningsFont == null) {
|
||||
warningsFont = target.initializeFont(target
|
||||
.getDefaultFont().getFontName(), 9,
|
||||
new IFont.Style[0]);
|
||||
emergencyFont = target.getDefaultFont().deriveWithSize(
|
||||
12);
|
||||
}
|
||||
|
||||
DrawableString params = new DrawableString(textToPrint, displaycolor);
|
||||
params.font = warningsFont;
|
||||
params.setCoordinates(d[0], d[1]);
|
||||
params.horizontalAlignment = HorizontalAlignment.RIGHT;
|
||||
params.verticallAlignment = VerticalAlignment.BOTTOM;
|
||||
params.magnification = getCapability(
|
||||
MagnificationCapability.class).getMagnification();
|
||||
|
||||
// Draws the string again to have it appear bolder
|
||||
if (EmergencyType.isEmergency(record.getRawmessage())) {
|
||||
// moves over text to add EMER in a different font
|
||||
textToPrint[1] = String.format("%1$-23" + "s",
|
||||
textToPrint[1]);
|
||||
params.setText(textToPrint, displaycolor);
|
||||
|
||||
DrawableString emergencyString = new DrawableString(
|
||||
params);
|
||||
emergencyString.setCoordinates(d[0],
|
||||
d[1] + (paintProps.getZoomLevel()) * 90);
|
||||
emergencyString.font = emergencyFont;
|
||||
emergencyString.setText(new String[] { "", "",
|
||||
" " + EmergencyType.EMER, "" }, displaycolor);
|
||||
target.drawStrings(emergencyString);
|
||||
target.drawStrings(entry.emergencyDS);
|
||||
}
|
||||
|
||||
target.drawStrings(params);
|
||||
|
||||
String[] currentStrs = {"",""};
|
||||
if(drawText) {
|
||||
currentStrs[0] = entry.textStr;
|
||||
}
|
||||
if(drawTime) {
|
||||
currentStrs[1] = entry.timeStr;
|
||||
}
|
||||
|
||||
entry.paramsDS.setText(currentStrs, entry.color);
|
||||
|
||||
target.drawStrings(entry.paramsDS);
|
||||
|
||||
}
|
||||
}
|
||||
currentZoom = paintProps.getZoomLevel();
|
||||
}
|
||||
}
|
||||
|
||||
private void calculateTextPosition(WarningEntry entry, PaintProperties paintProps) {
|
||||
AbstractWarningRecord record = entry.record;
|
||||
|
||||
// Calculate the upper left portion of the polygon
|
||||
Coordinate upperLeft = new Coordinate(180, -90);
|
||||
|
||||
for (Coordinate c : record.getGeometry().getCoordinates()) {
|
||||
if (c.y - c.x > upperLeft.y - upperLeft.x) {
|
||||
upperLeft = c;
|
||||
}
|
||||
}
|
||||
|
||||
double[] d = descriptor.worldToPixel(new double[] {
|
||||
upperLeft.x, upperLeft.y });
|
||||
d[0] -= paintProps.getZoomLevel() * 100;
|
||||
|
||||
|
||||
//update the drawable strings
|
||||
if(entry.emergencyDS != null) {
|
||||
entry.emergencyDS.setCoordinates(d[0], d[1] + (paintProps.getZoomLevel()) * 90);
|
||||
}
|
||||
if(entry.paramsDS != null) {
|
||||
entry.paramsDS.setCoordinates(d[0], d[1]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -688,6 +777,9 @@ public abstract class AbstractWWAResource extends
|
|||
|
||||
public synchronized void addRecord(PluginDataObject[] pdos)
|
||||
throws VizException {
|
||||
//data has changed, so clear the current drawing candidates
|
||||
currentCandidates.clear();
|
||||
|
||||
for (PluginDataObject pdo : pdos) {
|
||||
if (pdo instanceof AbstractWarningRecord) {
|
||||
AbstractWarningRecord record = (AbstractWarningRecord) pdo;
|
||||
|
@ -750,7 +842,7 @@ public abstract class AbstractWWAResource extends
|
|||
|
||||
@SuppressWarnings("unchecked")
|
||||
protected void requestData(DataTime earliest) throws VizException {
|
||||
System.out.println("requesting data");
|
||||
// System.out.println("requesting data");
|
||||
Map<String, RequestConstraint> map = (Map<String, RequestConstraint>) resourceData
|
||||
.getMetadataMap().clone();
|
||||
if (earliestRequested != null) {
|
||||
|
@ -780,7 +872,6 @@ public abstract class AbstractWWAResource extends
|
|||
|
||||
protected String getPhensigColor(String phensig){
|
||||
WarningLookups lookup = new WarningLookups();
|
||||
System.out.println("Phensig"+ phensig);
|
||||
return lookup.getPhensig(phensig).color;
|
||||
}
|
||||
|
||||
|
|
4
dist/create_cave_release.pl
vendored
|
@ -3,7 +3,7 @@
|
|||
$pwd=`pwd`;
|
||||
chomp $pwd;
|
||||
|
||||
$dir="el7-dev-20230216";
|
||||
$dir="el7-dev-20230418";
|
||||
$baseDir="$dir-cave";
|
||||
|
||||
`rm -rf $baseDir`;
|
||||
|
@ -33,3 +33,5 @@ foreach $line(@lines)
|
|||
|
||||
`sudo su - -c \"createrepo -g $pwd/comps-cave.xml $pwd/$baseDir\"`;
|
||||
`sudo chown -R awips:fxalpha $baseDir`;
|
||||
|
||||
`rsync -aP $pwd/$baseDir tiffanym\@fserv:/share/awips2/20.3.2/linux/rpms/cave`;
|
||||
|
|
|
@ -241,10 +241,6 @@
|
|||
<param name="feature"
|
||||
value="com.raytheon.uf.edex.text.feature" />
|
||||
</antcall>
|
||||
<antcall target="build">
|
||||
<param name="feature"
|
||||
value="com.raytheon.uf.edex.aviation.feature" />
|
||||
</antcall>
|
||||
<antcall target="build">
|
||||
<param name="feature"
|
||||
value="com.raytheon.uf.edex.satellite.feature" />
|
||||
|
@ -261,6 +257,7 @@
|
|||
<param name="feature"
|
||||
value="com.raytheon.uf.edex.radar.feature" />
|
||||
</antcall>
|
||||
<!--
|
||||
<antcall target="build">
|
||||
<param name="feature"
|
||||
value="com.raytheon.uf.edex.hydro.feature" />
|
||||
|
@ -273,6 +270,7 @@
|
|||
<param name="feature"
|
||||
value="com.raytheon.uf.edex.dat.feature" />
|
||||
</antcall>
|
||||
-->
|
||||
<antcall target="build">
|
||||
<param name="feature"
|
||||
value="com.raytheon.uf.edex.config.auto.feature" />
|
||||
|
@ -313,6 +311,9 @@
|
|||
<param name="feature"
|
||||
value="com.raytheon.uf.edex.nswrc.radar.feature" />
|
||||
</antcall>
|
||||
<antcall target="build">
|
||||
<param name="feature" value="edu.wisc.ssec.cimss.edex.probsevere.feature" />
|
||||
</antcall>
|
||||
<!-- SPECIAL CASE -->
|
||||
<if>
|
||||
<equals arg1="${lightning}" arg2="false" />
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
<includes
|
||||
id="com.raytheon.uf.common.base.feature"
|
||||
version="0.0.0"/>
|
||||
|
||||
<includes
|
||||
id="com.raytheon.uf.edex.foss.org.apache.commons.management.feature"
|
||||
version="0.0.0"/>
|
||||
|
@ -223,10 +224,6 @@
|
|||
id="com.raytheon.uf.edex.text.feature"
|
||||
version="0.0.0"/>
|
||||
|
||||
<includes
|
||||
id="com.raytheon.uf.edex.aviation.feature"
|
||||
version="0.0.0"/>
|
||||
|
||||
<includes
|
||||
id="com.raytheon.uf.edex.satellite.feature"
|
||||
version="0.0.0"/>
|
||||
|
@ -235,18 +232,10 @@
|
|||
id="com.raytheon.uf.edex.gfe.feature"
|
||||
version="0.0.0"/>
|
||||
|
||||
<includes
|
||||
id="com.raytheon.uf.edex.hydro.feature"
|
||||
version="0.0.0"/>
|
||||
|
||||
<includes
|
||||
id="com.raytheon.uf.edex.radar.feature"
|
||||
version="0.0.0"/>
|
||||
|
||||
<includes
|
||||
id="com.raytheon.uf.edex.dat.feature"
|
||||
version="0.0.0"/>
|
||||
|
||||
<includes
|
||||
id="com.raytheon.uf.edex.ncep.feature"
|
||||
version="0.0.0"/>
|
||||
|
@ -271,10 +260,6 @@
|
|||
id="com.raytheon.uf.edex.config.auto.feature"
|
||||
version="0.0.0"/>
|
||||
|
||||
<includes
|
||||
id="com.raytheon.uf.edex.mpe.feature"
|
||||
version="0.0.0"/>
|
||||
|
||||
<includes
|
||||
id="com.raytheon.uf.edex.menus.vb.feature"
|
||||
version="0.0.0"/>
|
||||
|
@ -283,4 +268,8 @@
|
|||
id="com.raytheon.uf.edex.goesr.feature"
|
||||
version="0.0.0"/>
|
||||
|
||||
<includes
|
||||
id="com.raytheon.uf.edex.ncep.nco.feature"
|
||||
version="0.0.0"/>
|
||||
|
||||
</feature>
|
||||
|
|
|
@ -50,6 +50,7 @@ import com.raytheon.uf.edex.database.dao.DaoConfig;
|
|||
* Jun 27, 2012 798 jkorman Corrected id query type.
|
||||
* Oct 02, 2013 2333 mschenke Removed unused code
|
||||
* Nov 05, 2014 3788 bsteffen add getOrCreateCoverage
|
||||
* Apr 30, 2016 ---- mjames add Criteria for line element/res
|
||||
* Mar 25, 2020 8103 randerso Fixed ContraintViolationException handling
|
||||
*
|
||||
* </pre>
|
||||
|
@ -144,6 +145,10 @@ public class SatMapCoverageDao extends CoreDao {
|
|||
crit.add(Restrictions.eq("ny", coverage.getNy()));
|
||||
crit.add(Restrictions.eq("dx", coverage.getDx()));
|
||||
crit.add(Restrictions.eq("dy", coverage.getDy()));
|
||||
crit.add(Restrictions.eq("upperLeftElement", coverage.getUpperLeftElement()));
|
||||
crit.add(Restrictions.eq("upperLeftLine", coverage.getUpperLeftLine()));
|
||||
crit.add(Restrictions.eq("elementRes", coverage.getElementRes()));
|
||||
crit.add(Restrictions.eq("lineRes", coverage.getLineRes()));
|
||||
crit.add(Restrictions.eq("minX", coverage.getMinX()));
|
||||
crit.add(Restrictions.eq("minY", coverage.getMinY()));
|
||||
crit.add(Restrictions.eq("crsWKT", coverage.getCrsWKT()));
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
|
||||
package com.raytheon.edex.util.satellite;
|
||||
|
||||
import java.awt.geom.Rectangle2D;
|
||||
|
||||
import org.geotools.geometry.DirectPosition2D;
|
||||
import org.opengis.referencing.crs.ProjectedCRS;
|
||||
import org.opengis.referencing.operation.MathTransform;
|
||||
|
@ -29,6 +31,8 @@ import com.raytheon.edex.plugin.satellite.dao.SatMapCoverageDao;
|
|||
import com.raytheon.uf.common.dataplugin.satellite.SatMapCoverage;
|
||||
import com.raytheon.uf.common.geospatial.MapUtil;
|
||||
import org.locationtech.jts.geom.Envelope;
|
||||
import org.locationtech.jts.geom.Geometry;
|
||||
import org.locationtech.jts.io.WKTReader;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -47,6 +51,8 @@ import org.locationtech.jts.geom.Envelope;
|
|||
* Sep 15, 2014 17303 jgerth Support for second standard latitude
|
||||
* Nov 05, 2014 2714 bclement replaced DecoderException with SatelliteDecoderException
|
||||
* Nov 05, 2014 3788 bsteffen use getOrCreateCoverage in place of queryByMapId
|
||||
* May 11, 2015 mjames South polar stereographic support added.
|
||||
* May 19, 2015 mjames Added GVAR native projection support.
|
||||
*
|
||||
*
|
||||
* </pre>
|
||||
|
@ -62,6 +68,8 @@ public class SatSpatialFactory {
|
|||
public static final int PROJ_LAMBERT = 3;
|
||||
|
||||
public static final int PROJ_POLAR = 5;
|
||||
|
||||
public static final int PROJ_GVAR = 7585;
|
||||
|
||||
public static final int PROJ_CYLIN_EQUIDISTANT = 7;
|
||||
|
||||
|
@ -209,6 +217,58 @@ public class SatSpatialFactory {
|
|||
return getCoverageSingleCorner(crsType, nx, ny, lov, latin, latin, la1, lo1, dx, dy);
|
||||
}
|
||||
|
||||
|
||||
public SatMapCoverage getCoverageNative(int crsType, int nx, int ny,
|
||||
double reflon, int upperLeftElement, int upperLeftLine,
|
||||
int xres, int yres, ProjectedCRS crs)
|
||||
throws SatelliteDecoderException {
|
||||
try {
|
||||
|
||||
// Construct the polygon constructor String
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
buffer.append("POLYGON((");
|
||||
buffer.append(reflon - 90. + " -90.0,");
|
||||
buffer.append(reflon + 90. + " -90.0,");
|
||||
buffer.append(reflon + 90. + " 90.0,");
|
||||
buffer.append(reflon - 90. + " 90.0,");
|
||||
buffer.append(reflon - 90. + " -90.0");
|
||||
buffer.append("))");
|
||||
// Create the geometry from the constructed String
|
||||
Geometry geometry = new WKTReader().read(buffer.toString());
|
||||
|
||||
// Construct rectangle
|
||||
double minX = upperLeftElement;
|
||||
int maxX = upperLeftElement + (nx * xres);
|
||||
double minY = upperLeftLine + (ny * yres);
|
||||
minY = -minY;
|
||||
int maxY = -1 * upperLeftLine;
|
||||
Rectangle2D rect = new Rectangle2D.Double(minX,
|
||||
minY, maxX, maxY);
|
||||
|
||||
SatMapCoverage coverage = createCoverageFromNative(crsType, nx, ny,
|
||||
reflon, upperLeftElement, upperLeftLine,
|
||||
xres, yres, crs, geometry );
|
||||
|
||||
return checkPersisted(coverage);
|
||||
|
||||
} catch (Exception e) {
|
||||
StringBuilder buf = new StringBuilder();
|
||||
buf.append(
|
||||
"Error getting or constructing SatMapCoverage for values: ")
|
||||
.append("\n\t");
|
||||
buf.append("crsType=" + crsType).append("\n\t");
|
||||
buf.append("nx=" + nx).append("\n\t");
|
||||
buf.append("ny=" + ny).append("\n\t");
|
||||
buf.append("reflon=" + reflon).append("\n\t");
|
||||
buf.append("upperLeftElement=" + upperLeftElement).append("\n\t");
|
||||
buf.append("upperLeftLine=" + upperLeftLine).append("\n\t");
|
||||
buf.append("xres=" + xres).append("\n\t");
|
||||
buf.append("yres=" + yres).append("\n\t");
|
||||
throw new SatelliteDecoderException(buf.toString(), e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* Create a {@link SatMapCoverage} with an area defined by two corners. The
|
||||
|
@ -309,6 +369,24 @@ public class SatSpatialFactory {
|
|||
envelope.getMinY(), nx, ny, dx, dy, crs);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a SatMapCoverage from native projection
|
||||
*/
|
||||
private static SatMapCoverage createCoverageFromNative(Integer crsType,
|
||||
Integer nx, Integer ny, double reflon, int upperLeftElement,
|
||||
int upperLeftLine, int xres, int yres, ProjectedCRS crs,
|
||||
Geometry geometry) {
|
||||
float dx = 999999.f;
|
||||
float dy = 999999.f;
|
||||
double minX, minY;
|
||||
minX = upperLeftElement;
|
||||
minY = upperLeftLine + (ny * yres);
|
||||
minY = -minY;
|
||||
return new SatMapCoverage(crsType, minX, minY, nx, ny,
|
||||
dx, dy, upperLeftElement, upperLeftLine,
|
||||
xres, yres, crs, geometry);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a {@link ProjectedCRS} from a crsType and some parameters.
|
||||
*
|
||||
|
@ -336,6 +414,11 @@ public class SatSpatialFactory {
|
|||
switch (crsType) {
|
||||
case PROJ_MERCATOR:
|
||||
return createMercatorCrs(latin, cm);
|
||||
case PROJ_POLAR:
|
||||
if (latin >= 0.)
|
||||
return createNorthPolarStereoCrs(lov);
|
||||
else
|
||||
return createSouthPolarStereoCrs(latin, lov);
|
||||
case PROJ_LAMBERT:
|
||||
return createLambertCrs(latin, latin2, lov);
|
||||
case PROJ_CYLIN_EQUIDISTANT:
|
||||
|
@ -365,5 +448,10 @@ public class SatSpatialFactory {
|
|||
return MapUtil.constructNorthPolarStereo(MapUtil.AWIPS_EARTH_RADIUS,
|
||||
MapUtil.AWIPS_EARTH_RADIUS, 60, lov);
|
||||
}
|
||||
|
||||
private static ProjectedCRS createSouthPolarStereoCrs(double latin, double lov) {
|
||||
return MapUtil.constructSouthPolarStereo(MapUtil.AWIPS_EARTH_RADIUS,
|
||||
MapUtil.AWIPS_EARTH_RADIUS, latin, lov);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,79 +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.
|
||||
-->
|
||||
<!--
|
||||
This is an absolute override file, indicating that a higher priority
|
||||
version of the file will completely replace a lower priority version
|
||||
of the file.
|
||||
-->
|
||||
<bundle>
|
||||
<displayList>
|
||||
<displays xsi:type="d2DMapRenderableDisplay" density="1.0"
|
||||
magnification="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<descriptor xsi:type="mapDescriptor">
|
||||
<resource>
|
||||
<loadProperties loadWithoutData="true">
|
||||
<capabilities>
|
||||
<capability xsi:type="colorMapCapability">
|
||||
<colorMapParameters
|
||||
colorMapName="${colormap}" />
|
||||
</capability>
|
||||
<capability xsi:type="imagingCapability"
|
||||
interpolationState="false" brightness="1.0"
|
||||
contrast="1.0" alpha="1.0" />
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
<perspectiveProperty
|
||||
xsi:type="d2dLoadProperties"
|
||||
overlayMatchTolerance="1" />
|
||||
</loadProperties>
|
||||
<properties isSystemResource="false"
|
||||
isBlinking="false" isMapLayer="false" isHoverOn="false"
|
||||
isVisible="true">
|
||||
</properties>
|
||||
<resourceData xsi:type="satResourceData"
|
||||
isUpdatingOnMetadataOnly="false"
|
||||
isRequeryNecessaryOnTimeMatch="true">
|
||||
<metadataMap>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="satellite"
|
||||
constraintType="EQUALS" />
|
||||
</mapping>
|
||||
<mapping key="physicalElement">
|
||||
<constraint constraintValue="${element}"
|
||||
constraintType="EQUALS" />
|
||||
</mapping>
|
||||
<mapping key="sectorID">
|
||||
<constraint constraintValue="${sector}"
|
||||
constraintType="EQUALS" />
|
||||
</mapping>
|
||||
<mapping key="creatingEntity">
|
||||
<constraint constraintValue="${entity}"
|
||||
constraintType="LIKE" />
|
||||
</mapping>
|
||||
</metadataMap>
|
||||
</resourceData>
|
||||
</resource>
|
||||
<timeMatcher xsi:type="d2DTimeMatcher"
|
||||
deltaFilter="0" forecastFilter="0" />
|
||||
</descriptor>
|
||||
</displays>
|
||||
</displayList>
|
||||
</bundle>
|
|
@ -1,160 +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.
|
||||
-->
|
||||
<!--
|
||||
This is an absolute override file, indicating that a higher priority
|
||||
version of the file will completely replace a lower priority version
|
||||
of the file.
|
||||
-->
|
||||
<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="colorableCapability" colorAsString="#bfbfbf"/>
|
||||
</capabilities>
|
||||
</loadProperties>
|
||||
<properties isSystemResource="false" isBlinking="false"
|
||||
isMapLayer="false" isHoverOn="false"
|
||||
isVisible="true" />
|
||||
<resourceData xsi:type="plotResourceData" plotSource="${legend} Scatterometer Winds missing"
|
||||
plotModelFile="${svg}" pixelSizeHint="25"
|
||||
retrieveData="false" isUpdatingOnMetadataOnly="false"
|
||||
isRequeryNecessaryOnTimeMatch="true"
|
||||
lowerLimit="-10000.0" upperLimit="-9998.0" plotMissingData="true">
|
||||
<binOffset posOffset="${posOffset}" negOffset="${negOffset}" virtualOffset="0"/>
|
||||
<metadataMap>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="${plugin}" constraintType="EQUALS" />
|
||||
</mapping>
|
||||
<mapping key="windSpd">
|
||||
<!-- -1.1 to 0.0 converted from knots to m/s -->
|
||||
<constraint constraintValue="-2.1382--0.0" constraintType="BETWEEN" />
|
||||
</mapping>
|
||||
</metadataMap>
|
||||
<timeQueryMetadataMap>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="${plugin}" constraintType="EQUALS" />
|
||||
</mapping>
|
||||
</timeQueryMetadataMap>
|
||||
<plotInfoRetriever xsi:type="scatterometerPlotInfoRetriever" />
|
||||
</resourceData>
|
||||
</resource>
|
||||
<resource>
|
||||
<loadProperties>
|
||||
<capabilities>
|
||||
<capability xsi:type="colorableCapability" colorAsString="#00ff00"/>
|
||||
</capabilities>
|
||||
</loadProperties>
|
||||
<properties isSystemResource="false" isBlinking="false"
|
||||
isMapLayer="false" isHoverOn="false"
|
||||
isVisible="true" />
|
||||
<resourceData xsi:type="plotResourceData" plotSource="${legend} Scatterometer Wind s < 34 kts"
|
||||
plotModelFile="${svg}" pixelSizeHint="25"
|
||||
retrieveData="false" isUpdatingOnMetadataOnly="false"
|
||||
isRequeryNecessaryOnTimeMatch="true">
|
||||
<binOffset posOffset="${posOffset}" negOffset="${negOffset}" virtualOffset="0"/>
|
||||
<metadataMap>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="${plugin}" constraintType="EQUALS" />
|
||||
</mapping>
|
||||
<mapping key="windSpd">
|
||||
<!-- 0.0 to 34.0 converted from knots to m/s -->
|
||||
<constraint constraintValue="0.0--17.49" constraintType="BETWEEN" />
|
||||
</mapping>
|
||||
</metadataMap>
|
||||
<timeQueryMetadataMap>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="${plugin}" constraintType="EQUALS" />
|
||||
</mapping>
|
||||
</timeQueryMetadataMap>
|
||||
<plotInfoRetriever xsi:type="scatterometerPlotInfoRetriever" />
|
||||
</resourceData>
|
||||
</resource>
|
||||
<resource>
|
||||
<loadProperties>
|
||||
<capabilities>
|
||||
<capability xsi:type="colorableCapability" colorAsString="#ffff00"/>
|
||||
</capabilities>
|
||||
</loadProperties>
|
||||
<properties isSystemResource="false" isBlinking="false"
|
||||
isMapLayer="false" isHoverOn="false"
|
||||
isVisible="true" />
|
||||
<resourceData xsi:type="plotResourceData" plotSource="${legend} Scatterometer Wind 34 <= s < 48 kts"
|
||||
plotModelFile="${svg}" pixelSizeHint="25"
|
||||
retrieveData="false" isUpdatingOnMetadataOnly="false"
|
||||
isRequeryNecessaryOnTimeMatch="true">
|
||||
<binOffset posOffset="${posOffset}" negOffset="${negOffset}" virtualOffset="0"/>
|
||||
<metadataMap>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="${plugin}" constraintType="EQUALS" />
|
||||
</mapping>
|
||||
<mapping key="windSpd">
|
||||
<!-- 34.0 to 48.0 converted from knots to m/s -->
|
||||
<constraint constraintValue="17.49--24.69" constraintType="BETWEEN" />
|
||||
</mapping>
|
||||
</metadataMap>
|
||||
<timeQueryMetadataMap>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="${plugin}" constraintType="EQUALS" />
|
||||
</mapping>
|
||||
</timeQueryMetadataMap>
|
||||
<plotInfoRetriever xsi:type="scatterometerPlotInfoRetriever" />
|
||||
</resourceData>
|
||||
</resource>
|
||||
<resource>
|
||||
<loadProperties>
|
||||
<capabilities>
|
||||
<capability xsi:type="colorableCapability" colorAsString="#ff0000"/>
|
||||
</capabilities>
|
||||
</loadProperties>
|
||||
<properties isSystemResource="false" isBlinking="false"
|
||||
isMapLayer="false" isHoverOn="false"
|
||||
isVisible="true" />
|
||||
<resourceData xsi:type="plotResourceData" plotSource="${legend} Scatterometer Wind s >= 48 kts"
|
||||
plotModelFile="${svg}" pixelSizeHint="25"
|
||||
retrieveData="false" isUpdatingOnMetadataOnly="false"
|
||||
isRequeryNecessaryOnTimeMatch="true"
|
||||
plotMissingData="true">
|
||||
<binOffset posOffset="${posOffset}" negOffset="${negOffset}" virtualOffset="0"/>
|
||||
<metadataMap>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="${plugin}" constraintType="EQUALS" />
|
||||
</mapping>
|
||||
<mapping key="windSpd">
|
||||
<!-- 48.0.0 to 999.0 converted from knots to m/s -->
|
||||
<constraint constraintValue="24.69--513.93" constraintType="BETWEEN" />
|
||||
</mapping>
|
||||
</metadataMap>
|
||||
<timeQueryMetadataMap>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="${plugin}" constraintType="EQUALS" />
|
||||
</mapping>
|
||||
</timeQueryMetadataMap>
|
||||
<plotInfoRetriever xsi:type="scatterometerPlotInfoRetriever" />
|
||||
</resourceData>
|
||||
</resource>
|
||||
</descriptor>
|
||||
</displays>
|
||||
</displayList>
|
||||
</bundle>
|
|
@ -1,80 +1,122 @@
|
|||
<?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.
|
||||
-->
|
||||
<!--
|
||||
This is an absolute override file, indicating that a higher priority
|
||||
version of the file will completely replace a lower priority version
|
||||
of the file.
|
||||
-->
|
||||
<menuTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<contribute xsi:type="satBundleItem"
|
||||
file="bundles/DefaultCompositeSatellite.xml" menuText="IR Window"
|
||||
id="irWindow">
|
||||
<substitute key="timeMatchMode" value="${blendedTimeMatchMode;ALL_IMAGES}" />
|
||||
<substitute key="element" value="Imager 11 micron IR" />
|
||||
<substitute key="colormap" value="Sat/IR/CIRA (IR Default)" />
|
||||
</contribute>
|
||||
<contribute xsi:type="satBundleItem"
|
||||
file="bundles/DefaultCompositeSatellite.xml" menuText="Water Vapor"
|
||||
id="waterVapor">
|
||||
<substitute key="timeMatchMode" value="${blendedTimeMatchMode;ALL_IMAGES}" />
|
||||
<substitute key="element" value="Imager 6.7-6.5 micron IR (WV)" />
|
||||
<substitute key="colormap" value="Sat/WV/Gray Scale Water Vapor" />
|
||||
</contribute>
|
||||
<contribute xsi:type="satBundleItem"
|
||||
file="bundles/DefaultCompositeSatellite.xml" menuText="Visible"
|
||||
id="visible">
|
||||
<substitute key="timeMatchMode" value="${blendedTimeMatchMode;ALL_IMAGES}" />
|
||||
<substitute key="element" value="Imager Visible" />
|
||||
<substitute key="colormap" value="Sat/VIS/ZA (Vis Default)" />
|
||||
</contribute>
|
||||
<contribute xsi:type="satBundleItem" file="bundles/DefaultCONUSSatellite.xml"
|
||||
menuText="3.9u" id="3.9u">
|
||||
<substitute key="element" value="Imager 3.9 micron IR" />
|
||||
<substitute key="colormap" value="Sat/VIS/ZA (Vis Default)" />
|
||||
</contribute>
|
||||
<contribute xsi:type="satBundleItem" file="bundles/DefaultCONUSSatellite.xml"
|
||||
menuText="13u" id="13u">
|
||||
<substitute key="element" value="Imager 13 micron (IR)" />
|
||||
<substitute key="colormap" value="Sat/IR/CIRA (IR Default)" />
|
||||
</contribute>
|
||||
<contribute xsi:type="satBundleItem" file="bundles/DerivedCONUSSatellite.xml"
|
||||
menuText="11u-3.9u" id="11-3.9u">
|
||||
<substitute key="element" value="satDif11u3_9uIR" />
|
||||
<substitute key="colormap" value="Sat/VIS/CA (Low Light Vis)" />
|
||||
</contribute>
|
||||
<contribute xsi:type="satBundleItem" file="bundles/DerivedCONUSSatellite.xml"
|
||||
menuText="11u-13u" id="11u-13u">
|
||||
<substitute key="timeMatchMode" value="${blendedTimeMatchMode;ALL_IMAGES}" />
|
||||
<substitute key="element" value="satDif11u13uIR" />
|
||||
<substitute key="colormap" value="Grid/gridded data" />
|
||||
</contribute>
|
||||
<contribute xsi:type="satBundleItem"
|
||||
file="bundles/DerivedCompositeSatellite.xml" menuText="WV/IR"
|
||||
id="WV/IR">
|
||||
<substitute key="timeMatchMode" value="${blendedTimeMatchMode;ALL_IMAGES}" />
|
||||
<substitute key="element" value="satDivWVIR" />
|
||||
<substitute key="colormap" value="Sat/IR/IR WV" />
|
||||
</contribute>
|
||||
<contribute xsi:type="satBundleItem"
|
||||
file="bundles/satellite/FourPanelGoesMtoQ.xml" menuText="4 panel (GOES M-Q)"
|
||||
id="4_panel_(GOES_M-Q)">
|
||||
</contribute>
|
||||
</menuTemplate>
|
||||
<contribute xsi:type="separator" id="Separator"/>
|
||||
<contribute xsi:type="titleItem" titleText="------ Legacy Satellitle Data ------" id="legacySat"/>
|
||||
<contribute xsi:type="subMenu" menuText="Legacy Satellite Data">
|
||||
<contribute xsi:type="titleItem" titleText="------ Composite Imagery ------" id="CompositeImagery" />
|
||||
<contribute xsi:type="bundleItem" file="bundles/DefaultSatellite.xml"
|
||||
menuText="Global Rectilinear 20km IR" id="waterVapor">
|
||||
<substitute key="element" value="Imager 11 micron IR"/>
|
||||
<substitute key="sector" value="AREA3100"/>
|
||||
<substitute key="entity" value="UNIWISC"/>
|
||||
<substitute key="colormap" value="Sat/IR/CIRA (IR Default)"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/DefaultSatellite.xml"
|
||||
menuText="Global Rectilinear 20km WV" id="waterVapor">
|
||||
<substitute key="element" value="Imager 6.7-6.5 micron IR (WV)"/>
|
||||
<substitute key="sector" value="AREA3101"/>
|
||||
<substitute key="entity" value="UNIWISC"/>
|
||||
<substitute key="colormap" value="Sat/WV/RAMSDIS WV"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/DefaultSatellite.xml"
|
||||
menuText="Global Mollweide 30km IR" id="waterVapor">
|
||||
<substitute key="element" value="Imager 11 micron IR"/>
|
||||
<substitute key="sector" value="AREA0700"/>
|
||||
<substitute key="entity" value="UNIWISC"/>
|
||||
<substitute key="colormap" value="Sat/IR/CIRA (IR Default)"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/DefaultSatellite.xml"
|
||||
menuText="Global Mollweide 30km WV" id="waterVapor">
|
||||
<substitute key="element" value="Imager 6.7-6.5 micron IR (WV)"/>
|
||||
<substitute key="sector" value="AREA0600"/>
|
||||
<substitute key="entity" value="UNIWISC"/>
|
||||
<substitute key="colormap" value="Sat/WV/RAMSDIS WV"/>
|
||||
</contribute>
|
||||
|
||||
<contribute xsi:type="separator" id="Separator"/>
|
||||
|
||||
<contribute xsi:type="bundleItem" file="bundles/DefaultSatellite.xml"
|
||||
menuText="Arctic 12 micron IR" id="irWindow">
|
||||
<substitute key="element" value="Imager 12 micron IR"/>
|
||||
<substitute key="sector" value="Arctic"/>
|
||||
<substitute key="entity" value="UNIWISC" />
|
||||
<substitute key="colormap" value="Sat/IR/CIRA (IR Default)"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/DefaultSatellite.xml"
|
||||
menuText="Arctic 11 micron IR" id="irWindow">
|
||||
<substitute key="element" value="Imager 11 micron IR"/>
|
||||
<substitute key="sector" value="Arctic"/>
|
||||
<substitute key="entity" value="UNIWISC" />
|
||||
<substitute key="colormap" value="Sat/IR/CIRA (IR Default)"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/DefaultSatellite.xml"
|
||||
menuText="Arctic 3.5-4.0 micron IR (Fog)" id="irWindow">
|
||||
<substitute key="element" value="Imager 3.5-4.0 micron IR (Fog)"/>
|
||||
<substitute key="sector" value="Arctic"/>
|
||||
<substitute key="entity" value="UNIWISC" />
|
||||
<substitute key="colormap" value="Sat/IR/CIRA (IR Default)"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/DefaultSatellite.xml"
|
||||
menuText="Arctic 6.7-6.5 micron IR (WV)" id="irWindow">
|
||||
<substitute key="element" value="Imager 6.7-6.5 micron IR (WV)"/>
|
||||
<substitute key="sector" value="Arctic"/>
|
||||
<substitute key="entity" value="UNIWISC" />
|
||||
<substitute key="colormap" value="Sat/WV/RAMSDIS WV"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/DefaultSatellite.xml"
|
||||
menuText="Arctic Visible" id="visible">
|
||||
<substitute key="element" value="Imager Visible"/>
|
||||
<substitute key="sector" value="Arctic"/>
|
||||
<substitute key="entity" value="UNIWISC" />
|
||||
<substitute key="colormap" value="Sat/VIS/Linear"/>
|
||||
</contribute>
|
||||
|
||||
<contribute xsi:type="separator" id="MySeparatorId"/>
|
||||
|
||||
|
||||
<contribute xsi:type="bundleItem" file="bundles/DefaultSatellite.xml"
|
||||
menuText="Antarctic 12 micron IR" id="irWindow">
|
||||
<substitute key="element" value="Imager 12 micron IR"/>
|
||||
<substitute key="sector" value="Antarctic"/>
|
||||
<substitute key="entity" value="UNIWISC" />
|
||||
<substitute key="colormap" value="Sat/IR/CIRA (IR Default)"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/DefaultSatellite.xml"
|
||||
menuText="Antarctic 11 micron IR" id="irWindow">
|
||||
<substitute key="element" value="Imager 11 micron IR"/>
|
||||
<substitute key="sector" value="Antarctic"/>
|
||||
<substitute key="entity" value="UNIWISC" />
|
||||
<substitute key="colormap" value="Sat/IR/CIRA (IR Default)"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/DefaultSatellite.xml"
|
||||
menuText="Antarctic 3.5-4.0 micron IR (Fog)" id="irWindow">
|
||||
<substitute key="element" value="Imager 3.5-4.0 micron IR (Fog)"/>
|
||||
<substitute key="sector" value="Antarctic"/>
|
||||
<substitute key="entity" value="UNIWISC" />
|
||||
<substitute key="colormap" value="Sat/IR/CIRA (IR Default)"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/DefaultSatellite.xml"
|
||||
menuText="Antarctic 6.7-6.5 micron IR (WV)" id="irWindow">
|
||||
<substitute key="element" value="Imager 6.7-6.5 micron IR (WV)"/>
|
||||
<substitute key="sector" value="Antarctic"/>
|
||||
<substitute key="entity" value="UNIWISC" />
|
||||
<substitute key="colormap" value="Sat/WV/RAMSDIS WV"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/DefaultSatellite.xml"
|
||||
menuText="Antarctic Visible" id="visible">
|
||||
<substitute key="element" value="Imager Visible"/>
|
||||
<substitute key="sector" value="Antarctic"/>
|
||||
<substitute key="entity" value="UNIWISC" />
|
||||
<substitute key="colormap" value="Sat/VIS/Linear"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="titleItem" titleText="------ Satellite Winds ------" id="SatWind" />
|
||||
<contribute xsi:type="bundleItem" file="bundles/Scatterometer.xml"
|
||||
menuText="ASCAT Winds 25 km" id="ASCATWinds">
|
||||
<substitute key="legend" value="ASCAT"/>
|
||||
<substitute key="svg" value="ascatPlotDesign.svg"/>
|
||||
<substitute key="plugin" value="bufrascat"/>
|
||||
<substitute key="posOffset" value="5400"/>
|
||||
<substitute key="negOffset" value="5400"/>
|
||||
</contribute>
|
||||
</contribute>
|
||||
</menuTemplate>
|
||||
|
|
|
@ -3,9 +3,7 @@
|
|||
<include installTo="menu:satellite?before=GOESR"
|
||||
fileName="menus/satellite/goesr/goesrMenu.xml">
|
||||
</include>
|
||||
<!--
|
||||
<include installTo="menu:satellite?after=GOESR"
|
||||
<include installTo="menu:satellite"
|
||||
fileName="menus/satellite/baseSatellite.xml">
|
||||
</include>
|
||||
-->
|
||||
</include>
|
||||
</menuContributionFile>
|
||||
|
|
|
@ -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.8"/>
|
||||
<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.backupsvc</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,10 +0,0 @@
|
|||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
|
||||
org.eclipse.jdt.core.compiler.compliance=11
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
|
||||
org.eclipse.jdt.core.compiler.release=enabled
|
||||
org.eclipse.jdt.core.compiler.source=11
|
|
@ -1,17 +0,0 @@
|
|||
Manifest-Version: 1.0
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: Backup Service Plug-in
|
||||
Bundle-SymbolicName: com.raytheon.uf.common.backupsvc
|
||||
Bundle-Version: 1.16.0.qualifier
|
||||
Bundle-Vendor: RAYTHEON
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
|
||||
Export-Package: com.raytheon.uf.common.backupsvc.request,
|
||||
com.raytheon.uf.common.backupsvc.response,
|
||||
com.raytheon.uf.common.backupsvc
|
||||
Require-Bundle: com.raytheon.uf.common.serialization.comm,
|
||||
com.raytheon.uf.common.serialization,
|
||||
org.slf4j,
|
||||
com.raytheon.uf.common.comm,
|
||||
com.raytheon.uf.common.message,
|
||||
com.raytheon.uf.common.util,
|
||||
javax.xml.bind
|
|
@ -1,4 +0,0 @@
|
|||
source.. = src/
|
||||
output.. = bin/
|
||||
bin.includes = META-INF/,\
|
||||
.,\
|
|
@ -1,336 +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.backupsvc;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.raytheon.uf.common.backupsvc.request.GetBackupServiceCapabilitiesRequest;
|
||||
import com.raytheon.uf.common.backupsvc.request.GetEDEXVersionRequest;
|
||||
import com.raytheon.uf.common.backupsvc.response.GetEDEXVersionResponse;
|
||||
import com.raytheon.uf.common.comm.HttpClient;
|
||||
import com.raytheon.uf.common.comm.HttpClientConfigBuilder;
|
||||
import com.raytheon.uf.common.message.WsId;
|
||||
import com.raytheon.uf.common.serialization.ExceptionWrapper;
|
||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
|
||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
|
||||
import com.raytheon.uf.common.serialization.comm.IServerRequest;
|
||||
import com.raytheon.uf.common.serialization.comm.RequestWrapper;
|
||||
import com.raytheon.uf.common.serialization.comm.response.ServerErrorResponse;
|
||||
import com.raytheon.uf.common.util.SystemUtil;
|
||||
import com.raytheon.uf.common.util.app.AppInfo;
|
||||
import com.raytheon.uf.common.util.app.Version;
|
||||
import com.raytheon.uf.common.util.rate.TokenBucket;
|
||||
|
||||
/**
|
||||
* Backup host and optional port as specified in config XML file
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Nov 28, 2016 5937 tgurney Initial creation
|
||||
* Dec 9, 2016 5937 tgurney Add copy constructor
|
||||
* Jul 20, 2017 6352 tgurney Add equals(), hashCode(), DynamicSerialize
|
||||
* Jul 24, 2017 6352 tgurney Move request-sending from BackupService
|
||||
* Oct 3, 2019 7929 tgurney Add special MY_VERSION version value.
|
||||
* Move class from edex to common. Use a
|
||||
* httpClient with gzip enabled
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author tgurney
|
||||
*/
|
||||
|
||||
@DynamicSerialize
|
||||
@XmlAccessorType(XmlAccessType.NONE)
|
||||
public class BackupHost {
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(getClass());
|
||||
|
||||
private static final int DEFAULT_THRIFT_PORT = Integer
|
||||
.parseInt(System.getenv("HTTP_PORT"));
|
||||
|
||||
private static final String THRIFT_HTTP_PATH;
|
||||
static {
|
||||
String serverPath = System.getenv("HTTP_SERVER_PATH");
|
||||
if (!serverPath.startsWith("/")) {
|
||||
serverPath = "/" + serverPath;
|
||||
}
|
||||
THRIFT_HTTP_PATH = serverPath + "/thrift";
|
||||
}
|
||||
|
||||
private static HttpClient httpClient;
|
||||
|
||||
static {
|
||||
HttpClientConfigBuilder cfgBuilder = new HttpClientConfigBuilder();
|
||||
cfgBuilder.setGzipEnabled(true);
|
||||
httpClient = new HttpClient(cfgBuilder.build());
|
||||
}
|
||||
|
||||
/**
|
||||
* Special value that can be used in place of the minimum or maximum
|
||||
* required version, indicating that the requirement is the sender's current
|
||||
* EDEX version.
|
||||
*/
|
||||
public static final String MY_VERSION = "my";
|
||||
|
||||
@DynamicSerializeElement
|
||||
@XmlElement
|
||||
private int port = DEFAULT_THRIFT_PORT;
|
||||
|
||||
@DynamicSerializeElement
|
||||
@XmlElement(required = true)
|
||||
private String name;
|
||||
|
||||
private String hostEdexVersion;
|
||||
|
||||
/**
|
||||
* No-arg constructor for serialization
|
||||
*/
|
||||
public BackupHost() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy constructor
|
||||
*
|
||||
* @param aBackupHost
|
||||
* The BackupHost to copy
|
||||
*/
|
||||
public BackupHost(BackupHost aBackupHost) {
|
||||
port = aBackupHost.port;
|
||||
name = aBackupHost.name;
|
||||
hostEdexVersion = aBackupHost.hostEdexVersion;
|
||||
}
|
||||
|
||||
public int getPort() {
|
||||
return port;
|
||||
}
|
||||
|
||||
public void setPort(int port) {
|
||||
this.port = port;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + (name == null ? 0 : name.hashCode());
|
||||
result = prime * result + port;
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
}
|
||||
if (obj == null) {
|
||||
return false;
|
||||
}
|
||||
if (!obj.getClass().equals(BackupHost.class)) {
|
||||
return false;
|
||||
}
|
||||
BackupHost other = (BackupHost) obj;
|
||||
if (name == null) {
|
||||
if (other.name != null) {
|
||||
return false;
|
||||
}
|
||||
} else if (!name.equals(other.name)) {
|
||||
return false;
|
||||
}
|
||||
if (port != other.port) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send an IServerRequest to this host
|
||||
*
|
||||
* @param request
|
||||
* @return the object the server returns
|
||||
* @throws Exception
|
||||
* If sending the request fails for some reason
|
||||
*/
|
||||
public Object sendRequest(IServerRequest request) throws Exception {
|
||||
return sendRequest(request, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send an IServerRequest to this host
|
||||
*
|
||||
* @param request
|
||||
* @param rateLimiter
|
||||
* Token bucket to rate-limit the request, can be null
|
||||
* @return the object the server returns
|
||||
* @throws Exception
|
||||
* If sending the request fails for some reason
|
||||
*/
|
||||
public Object sendRequest(IServerRequest request, TokenBucket rateLimiter)
|
||||
throws Exception {
|
||||
RequestWrapper wrapper = new RequestWrapper(request, new WsId());
|
||||
Object rval = null;
|
||||
if (rateLimiter != null) {
|
||||
rval = httpClient.postDynamicSerialize(
|
||||
"http://" + name + ":" + port + THRIFT_HTTP_PATH, wrapper,
|
||||
true, rateLimiter);
|
||||
} else {
|
||||
rval = httpClient.postDynamicSerialize(
|
||||
"http://" + name + ":" + port + THRIFT_HTTP_PATH, wrapper,
|
||||
true);
|
||||
}
|
||||
if (rval instanceof ServerErrorResponse) {
|
||||
ServerErrorResponse resp = (ServerErrorResponse) rval;
|
||||
Throwable serverException = ExceptionWrapper
|
||||
.unwrapThrowable(resp.getException());
|
||||
throw new BackupServiceException(serverException.getMessage(),
|
||||
serverException);
|
||||
}
|
||||
return rval;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param useCached
|
||||
* If true, use cached version string if it is available
|
||||
* @return version string. Will query the remote host if necessary. null if
|
||||
* there is no cached value and the host could not be contacted.
|
||||
*/
|
||||
public String getEDEXVersion(boolean useCached) {
|
||||
if (hostEdexVersion == null || !useCached) {
|
||||
try {
|
||||
GetEDEXVersionRequest request = new GetEDEXVersionRequest();
|
||||
request.setRequestingHost(SystemUtil.getHostName());
|
||||
Object response = sendRequest(new GetEDEXVersionRequest());
|
||||
if (response instanceof GetEDEXVersionResponse) {
|
||||
hostEdexVersion = ((GetEDEXVersionResponse) response)
|
||||
.getEdexVersion();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error(
|
||||
"Error when sending GetEDEXVersionRequest to " + name,
|
||||
e);
|
||||
hostEdexVersion = null;
|
||||
}
|
||||
}
|
||||
return hostEdexVersion;
|
||||
}
|
||||
|
||||
/*
|
||||
* @return version string. Will use cached version string if it is
|
||||
* available, otherwise will query the remote host.
|
||||
*/
|
||||
public String getEDEXVersion() {
|
||||
return getEDEXVersion(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param minVersionRequired
|
||||
* If null, use this host's current EDEX version. If
|
||||
* {@link #MY_VERSION}, use the caller's current EDEX version.
|
||||
* @param maxVersionRequired
|
||||
* If null, use this host's current EDEX version. If
|
||||
* {@link #MY_VERSION}, use the caller's current EDEX version.
|
||||
* @return Zero if this host's EDEX version falls within the range of
|
||||
* (minVersionRequired, maxVersionRequired). A positive integer if
|
||||
* this host's EDEX version is greater than maxVersionRequired. A
|
||||
* negative integer if this host's EDEX version is less than
|
||||
* minVersionRequired. Null if unable to contact the host
|
||||
*/
|
||||
public Integer compareVersion(String minVersionRequired,
|
||||
String maxVersionRequired) {
|
||||
// refresh cached version string
|
||||
getEDEXVersion(false);
|
||||
if (hostEdexVersion == null) {
|
||||
return null;
|
||||
}
|
||||
if (minVersionRequired == null) {
|
||||
minVersionRequired = hostEdexVersion;
|
||||
}
|
||||
if (maxVersionRequired == null) {
|
||||
maxVersionRequired = hostEdexVersion;
|
||||
}
|
||||
if (MY_VERSION.equals(minVersionRequired)) {
|
||||
minVersionRequired = AppInfo.getInstance().getVersion();
|
||||
}
|
||||
if (MY_VERSION.equals(maxVersionRequired)) {
|
||||
maxVersionRequired = AppInfo.getInstance().getVersion();
|
||||
}
|
||||
Version minVer;
|
||||
Version maxVer;
|
||||
Version ver;
|
||||
try {
|
||||
minVer = Version.fromString(minVersionRequired);
|
||||
maxVer = Version.fromString(maxVersionRequired);
|
||||
ver = Version.fromString(hostEdexVersion);
|
||||
} catch (ParseException e) {
|
||||
logger.warn("Failed to parse version string (hostEdexVersion: "
|
||||
+ hostEdexVersion + ", minVersionRequired: "
|
||||
+ minVersionRequired + ", maxVersionRequired: "
|
||||
+ maxVersionRequired + ")", e);
|
||||
return null;
|
||||
}
|
||||
if (ver.compareTo(minVer) < 0) {
|
||||
// Version is less than the minimum required
|
||||
return -1;
|
||||
} else if (ver.compareTo(maxVer) > 0) {
|
||||
// Version is greater than the max allowed
|
||||
return 1;
|
||||
} else {
|
||||
// Version falls within allowed range
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/** @return List of all this host's capabilities. */
|
||||
public Set<String> getCapabilities() {
|
||||
Set<String> rval = null;
|
||||
try {
|
||||
Object response = sendRequest(
|
||||
new GetBackupServiceCapabilitiesRequest());
|
||||
if (response instanceof Set<?>) {
|
||||
rval = (Set<String>) response;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error(
|
||||
"Error when sending GetBackupServiceCapabilitiesRequest to "
|
||||
+ name,
|
||||
e);
|
||||
}
|
||||
return rval;
|
||||
}
|
||||
}
|
|
@ -1,55 +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.backupsvc;
|
||||
|
||||
/**
|
||||
* Exception for Backup Service related problems
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Aug 2, 2017 tgurney Initial creation
|
||||
* Oct 3, 2019 7929 tgurney Move to common
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author tgurney
|
||||
*/
|
||||
|
||||
public class BackupServiceException extends Exception {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public BackupServiceException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public BackupServiceException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public BackupServiceException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,55 +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.backupsvc;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import com.raytheon.uf.common.serialization.comm.IServerRequest;
|
||||
|
||||
/**
|
||||
* A refreshable {@link IServerRequest}. Calling {@link #refresh()} allows the
|
||||
* request to update itself arbitrarily.
|
||||
*
|
||||
* Introduced for BackupService, which stores IServerRequests to be sent later.
|
||||
* Such requests may be "stale" for whatever reason by the time they'd be sent.
|
||||
* This mechanism allows for a stale request to be updated or even canceled
|
||||
* before it would be sent.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Oct 7, 2019 tgurney Initial creation
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author tgurney
|
||||
*/
|
||||
|
||||
public interface IRefreshableServerRequest extends IServerRequest {
|
||||
/**
|
||||
* @return the request itself updated arbitrarily, or a new/different
|
||||
* request object of the same type, or a different type of request
|
||||
* object, or nothing.
|
||||
*/
|
||||
Optional<IServerRequest> refresh();
|
||||
}
|
|
@ -1,114 +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.backupsvc.request;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
|
||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
|
||||
import com.raytheon.uf.common.serialization.comm.IServerRequest;
|
||||
|
||||
/**
|
||||
* Request to queue up a backup job
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Nov 10, 2016 5937 tgurney Initial creation
|
||||
* Jul 20, 2017 6352 tgurney Add min/maxversionRequired
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author tgurney
|
||||
*/
|
||||
|
||||
@DynamicSerialize
|
||||
public class BackupEnqueueRequest implements IServerRequest {
|
||||
@DynamicSerializeElement
|
||||
private IServerRequest request;
|
||||
|
||||
@DynamicSerializeElement
|
||||
private String jobName;
|
||||
|
||||
/** Lower number = higher priority. May be negative */
|
||||
@DynamicSerializeElement
|
||||
private int priority;
|
||||
|
||||
@DynamicSerializeElement
|
||||
private String minVersionRequired;
|
||||
|
||||
@DynamicSerializeElement
|
||||
private String maxVersionRequired;
|
||||
|
||||
@DynamicSerializeElement
|
||||
private List<String> hosts;
|
||||
|
||||
public IServerRequest getRequest() {
|
||||
return request;
|
||||
}
|
||||
|
||||
public void setRequest(IServerRequest request) {
|
||||
this.request = request;
|
||||
}
|
||||
|
||||
public String getJobName() {
|
||||
return jobName;
|
||||
}
|
||||
|
||||
public void setJobName(String jobName) {
|
||||
this.jobName = jobName;
|
||||
}
|
||||
|
||||
public int getPriority() {
|
||||
return priority;
|
||||
}
|
||||
|
||||
public void setPriority(int priority) {
|
||||
this.priority = priority;
|
||||
}
|
||||
|
||||
public List<String> getHosts() {
|
||||
return hosts;
|
||||
}
|
||||
|
||||
public void setHosts(List<String> hosts) {
|
||||
this.hosts = hosts;
|
||||
}
|
||||
|
||||
public String getMinVersionRequired() {
|
||||
return minVersionRequired;
|
||||
}
|
||||
|
||||
public void setMinVersionRequired(String minVersionRequired) {
|
||||
this.minVersionRequired = minVersionRequired;
|
||||
}
|
||||
|
||||
public String getMaxVersionRequired() {
|
||||
return maxVersionRequired;
|
||||
}
|
||||
|
||||
public void setMaxVersionRequired(String maxVersionRequired) {
|
||||
this.maxVersionRequired = maxVersionRequired;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,43 +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.backupsvc.request;
|
||||
|
||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
|
||||
import com.raytheon.uf.common.serialization.comm.IServerRequest;
|
||||
|
||||
/**
|
||||
* Request to get map of backup hosts to set of capabilities for each host
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Jul 20, 2017 6352 tgurney Initial creation
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author tgurney
|
||||
*/
|
||||
|
||||
@DynamicSerialize
|
||||
public class GetBackupHostCapabilitiesMapRequest implements IServerRequest {
|
||||
}
|
|
@ -1,43 +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.backupsvc.request;
|
||||
|
||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
|
||||
import com.raytheon.uf.common.serialization.comm.IServerRequest;
|
||||
|
||||
/**
|
||||
* Request to get list of backup hosts and EDEX version for each host
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Jul 20, 2017 6352 tgurney Initial creation
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author tgurney
|
||||
*/
|
||||
|
||||
@DynamicSerialize
|
||||
public class GetBackupHostVersionMapRequest implements IServerRequest {
|
||||
}
|
|
@ -1,43 +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.backupsvc.request;
|
||||
|
||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
|
||||
import com.raytheon.uf.common.serialization.comm.IServerRequest;
|
||||
|
||||
/**
|
||||
* Request to get list of BackupService capabilities for a single server
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Jul 26, 2017 6352 tgurney Initial creation
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author tgurney
|
||||
*/
|
||||
|
||||
@DynamicSerialize
|
||||
public class GetBackupServiceCapabilitiesRequest implements IServerRequest {
|
||||
}
|
|
@ -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.common.backupsvc.request;
|
||||
|
||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
|
||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
|
||||
import com.raytheon.uf.common.serialization.comm.IServerRequest;
|
||||
|
||||
/**
|
||||
* Request to get EDEX version string
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Oct 17, 2016 5937 tgurney Initial creation
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author tgurney
|
||||
*/
|
||||
|
||||
@DynamicSerialize
|
||||
public class GetEDEXVersionRequest implements IServerRequest {
|
||||
/** Name of the host that is sending this request. */
|
||||
@DynamicSerializeElement
|
||||
private String requestingHost;
|
||||
|
||||
public String getRequestingHost() {
|
||||
return requestingHost;
|
||||
}
|
||||
|
||||
public void setRequestingHost(String requestingHost) {
|
||||
this.requestingHost = requestingHost;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "GetEDEXVersionRequest [requestingHost=" + requestingHost + "]";
|
||||
}
|
||||
|
||||
}
|
|
@ -1,76 +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.backupsvc.response;
|
||||
|
||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
|
||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
|
||||
|
||||
/**
|
||||
* Response to GetEDEXVersionRequest
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Oct 17, 2016 5937 tgurney Initial creation
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author tgurney
|
||||
*/
|
||||
|
||||
@DynamicSerialize
|
||||
public class GetEDEXVersionResponse {
|
||||
|
||||
/** String returned in response when EDEX version is not known */
|
||||
public static final String UNDEFINED = "Undefined";
|
||||
|
||||
@DynamicSerializeElement
|
||||
private String edexVersion;
|
||||
|
||||
/** Host that is sending this response. */
|
||||
@DynamicSerializeElement
|
||||
private String respondingHost;
|
||||
|
||||
public String getEdexVersion() {
|
||||
return edexVersion;
|
||||
}
|
||||
|
||||
public void setEdexVersion(String edexVersion) {
|
||||
this.edexVersion = edexVersion;
|
||||
}
|
||||
|
||||
public String getRespondingHost() {
|
||||
return respondingHost;
|
||||
}
|
||||
|
||||
public void setRespondingHost(String respondingHost) {
|
||||
this.respondingHost = respondingHost;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "GetEDEXVersionResponse [edexVersion=" + edexVersion
|
||||
+ ", respondingHost=" + respondingHost + "]";
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,259 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<colorMap>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="0.0" b="0.0" g="0.0" r="0.0"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.75686276" g="0.9137255" r="0.7647059"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.77254903" r="0.5019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.96862745" r="0.96862745"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.7607843" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="0.5019608" g="0.5019608" r="0.9019608"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
<color a="1.0" b="1.0" g="0.5019608" r="1.0"/>
|
||||
</colorMap>
|
|
@ -113,20 +113,20 @@
|
|||
</contribute>
|
||||
<contribute xsi:type="separator" id="separator2" />
|
||||
<contribute xsi:type="bundleItem"
|
||||
file="bundles/ncepHydro/hpc/HPCqpfNDFD.xml" menuText="Day 1-3 HPC QPF Total (Grid)"
|
||||
id="oneTo3HPCQPF">
|
||||
file="bundles/ncepHydro/hpc/HPCqpfNDFD.xml" menuText="Day 1-3 WPC QPF Total (Grid)"
|
||||
id="oneTo3WPCQPF">
|
||||
<substitute key="frameCount" value="1" />
|
||||
<substitute key="param" value="TP72hr" />
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem"
|
||||
file="bundles/ncepHydro/hpc/HPCqpfNDFD.xml" menuText="Day 1-5 HPC QPF Total (Grid)"
|
||||
id="oneTo5HPCQPF">
|
||||
file="bundles/ncepHydro/hpc/HPCqpfNDFD.xml" menuText="Day 1-5 WPC QPF Total (Grid)"
|
||||
id="oneTo5WPCQPF">
|
||||
<substitute key="frameCount" value="1" />
|
||||
<substitute key="param" value="TP120hr" />
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem"
|
||||
file="bundles/ncepHydro/hpc/HPCqpfNDFD.xml" menuText="Day 1-7 HPC QPF Total (Grid)"
|
||||
id="oneTo7HPCQPF">
|
||||
file="bundles/ncepHydro/hpc/HPCqpfNDFD.xml" menuText="Day 1-7 WPC QPF Total (Grid)"
|
||||
id="oneTo7WPCQPF">
|
||||
<substitute key="frameCount" value="1" />
|
||||
<substitute key="param" value="TP168hr" />
|
||||
</contribute>
|
||||
|
|
|
@ -43,18 +43,6 @@
|
|||
<substitute value="PGWK48" key="wmo" />
|
||||
<substitute value="0" key="posOff" />
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" useReferenceTime="true"
|
||||
file="bundles/Redbook.xml" menuText="Thunderstorm Prob"
|
||||
timeQuery="true" id="thunderstormProb">
|
||||
<substitute value="PGWB44" key="wmo" />
|
||||
<substitute value="0" key="posOff" />
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" useReferenceTime="true"
|
||||
file="bundles/Redbook.xml" menuText="Severe Thunderstorm Prob"
|
||||
timeQuery="true" id="severeThunderstormProb">
|
||||
<substitute value="PGWB45" key="wmo" />
|
||||
<substitute value="0" key="posOff" />
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" useReferenceTime="true"
|
||||
file="bundles/Redbook.xml" menuText="Day 1 Hail outlook"
|
||||
timeQuery="true" id="day1Hailoutlook">
|
||||
|
@ -103,12 +91,14 @@
|
|||
<substitute value="PZNK00" key="wmo" />
|
||||
<substitute value="0" key="posOff" />
|
||||
</contribute>
|
||||
<!--
|
||||
<contribute xsi:type="bundleItem" useReferenceTime="true"
|
||||
file="bundles/Redbook.xml" menuText="Day 4-8 Composite Severe Outlook"
|
||||
timeQuery="true" id="day4to8CompositeSevereOutlook">
|
||||
<substitute value="PGNM98" key="wmo" />
|
||||
<substitute value="0" key="posOff" />
|
||||
</contribute>
|
||||
-->
|
||||
<contribute xsi:type="bundleItem" useReferenceTime="true"
|
||||
file="bundles/Redbook.xml" menuText="Active Mesoscale Disc Summary"
|
||||
timeQuery="true" id="activeMesoscaleDiscSummary">
|
||||
|
|