Changes from January ncep_cave

Former-commit-id: 6a878c3c5f400c53d39d7920c0619362aaafb946
This commit is contained in:
Roger Ferrel 2012-01-26 09:26:07 -06:00
parent 8299f30726
commit 7427aeaf29
516 changed files with 40697 additions and 51756 deletions

View file

@ -86,21 +86,14 @@
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.common.dataplugin.bufrsgwh"
id="gov.noaa.nws.ncep.common.dataplugin.sgwh"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.common.dataplugin.bufrsgwhv"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.common.dataplugin.bufrssha"
id="gov.noaa.nws.ncep.common.dataplugin.sgwhv"
download-size="0"
install-size="0"
version="0.0.0"
@ -141,20 +134,6 @@
version="0.0.0"
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.common.dataplugin.pafm"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.common.dataplugin.scd"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.common.dataplugin.tcm"
download-size="0"
@ -162,13 +141,6 @@
version="0.0.0"
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.common.dataplugin.uair"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.common.dataplugin.wcp"
download-size="0"
@ -177,14 +149,49 @@
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.common.dataplugin.h5scd"
id="gov.noaa.nws.ncep.common.dataplugin.ncuair"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.common.dataplugin.h5uair"
id="gov.noaa.nws.ncep.common.dataplugin.ncscd"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.common.dataplugin.ncpafm"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.common.dataplugin.nctaf"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.common.dataplugin.ncairep"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.common.dataplugin.stormtrack"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.common.dataplugin.ncpirep"
download-size="0"
install-size="0"
version="0.0.0"

View file

@ -39,13 +39,6 @@
version="0.0.0"
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.edex.gempak.jna"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.gempak.parameterConversionLibrary"
download-size="0"
@ -130,6 +123,13 @@
version="0.0.0"
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.viz.rsc.hrcn"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.viz.rsc.idft"
download-size="0"
@ -200,6 +200,13 @@
version="0.0.0"
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.viz.rsc.stormtrack"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.viz.rsc.svrl"
download-size="0"
@ -249,6 +256,20 @@
version="0.0.0"
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.viz.ui.locator"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="org.apache.camel"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.viz.rsc.wou"
download-size="0"
@ -270,4 +291,25 @@
version="0.0.0"
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.viz.rsc.wavesat"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.viz.rsc.wtch"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.viz.rsc.ncradar"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
</feature>

View file

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Jna
Bundle-SymbolicName: com.sun.jna
Bundle-Version: 3.0.9
Bundle-Version: 3.3.0
Bundle-ClassPath: jna.jar
Bundle-Vendor: Raytheon-bundled OSS
Export-Package: com.sun.jna,

Binary file not shown.

View file

@ -81,11 +81,4 @@
version="0.0.0"
unpack="false"/>
<plugin
id="gov.noaa.nws.ncep.metParameters"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
</feature>

9
ncep/gov.noaa.nws.ncep.common/component-deploy.xml Executable file → Normal file
View file

@ -1,10 +1,7 @@
<project basedir="." default="deploy" name="gov.noaa.nws.ncep.common">
<available file="../../edexOsgi/build.edex"
property="build.dir.location"
value="../../edexOsgi/build.edex"/>
<available file="../../../../../build.edex"
property="build.dir.location"
value="../../../../../build.edex"/>
<available file="../build.edex" property="build.dir.location" value="../build.edex" />
<available file="../../../../../build.edex" property="build.dir.location" value="../../../../../build.edex" />
<import file="${build.dir.location}/basebuilds/component_deploy_base.xml" />
</project>

View file

@ -101,3 +101,22 @@ public class GempakConstants {
public static final float MILLIMETERS_TO_INCHES = .0393701f;
}

View file

@ -2,13 +2,11 @@
*
*/
package gov.noaa.nws.ncep.gempak.parameterconversionlibrary;
import gov.noaa.nws.ncep.edex.common.sounding.NcSoundingLayer;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Collections;
import gov.noaa.nws.ncep.edex.common.sounding.NcSoundingLayer;
/**
* @author archana
*
@ -17,37 +15,32 @@ public class PSLibrary {
/**
* Computes the cross totals index
*
* @param td850
* - dewpoint at 850 mb ( in Celsius )
* @param t500
* - temperature at 500 mb ( in Celsius )
* @return the difference between the dewpoint and the temperature if
* neither of them are missing and RMISSD ( -9999 ) otherwise.
* @param td850 - dewpoint at 850 mb ( in Celsius )
* @param t500 - temperature at 500 mb ( in Celsius )
* @return the difference between the dewpoint and the temperature if neither of them are missing
* and RMISSD ( -9999 ) otherwise.
*/
public static float psCtot ( float td850,float t500) {
/*
* Compute the cross totals index by subtracting 500 mb temperature from
* the 850 mb dewpoint.
* Compute the cross totals index by subtracting 500 mb
* temperature from the 850 mb dewpoint.
*/
return ((!MissingValueTester.isDataValueMissing(td850) && !MissingValueTester
.isDataValueMissing(t500)) ? (td850 - t500)
: GempakConstants.RMISSD);
return ( ( !MissingValueTester.isDataValueMissing(td850)
&& !MissingValueTester.isDataValueMissing(t500) )
? ( td850 - t500 ) : GempakConstants.RMISSD ) ;
}
/**
* Computes low, middle, and high elevation Haines indices from the
* temperature and the dewpoint.
*
* @param tc1
* - temperature ( in Celsius )
* @param tc2
* - temperature ( in Celsius )
* @param dwpc
* - dewpoint ( in Celsius )
* @param itype
* - Haines index: 1- Low 2 - Middle 3 - High
* Computes low, middle, and high elevation Haines indices
* from the temperature and the dewpoint.
* @param tc1 - temperature ( in Celsius )
* @param tc2 - temperature ( in Celsius )
* @param dwpc - dewpoint ( in Celsius )
* @param itype - Haines index:
* 1- Low
* 2 - Middle
* 3 - High
*
* @return
*/
@ -63,10 +56,12 @@ public class PSLibrary {
if ( itype == 1 ) {
a = ( ( tc2 - tc1 ) - 3 ) * ( 2 / 5 ) + 1;
b = ( ( tc1 - dwpc ) - 5 ) * ( 2 / 5 ) + 1;
} else if (itype == 2) {
}
else if ( itype == 2 ) {
a = ( ( tc1 - tc2 ) - 5 ) * ( 2 / 6 ) + 1;
b = ( ( tc1 - dwpc ) - 5 ) * ( 2 / 8 ) + 1;
} else if (itype == 3) {
}
else if ( itype == 3 ) {
a = ( ( tc1 - tc2 ) - 17 ) * ( 2 / 5 ) + 1;
b = ( ( tc1 - dwpc ) - 14 ) * ( 2 / 7 ) + 1;
}
@ -83,22 +78,15 @@ public class PSLibrary {
/**
*
* Computes the 'K' index
*
* @param t850
* - 850 mb temperature ( in Celsius )
* @param t700
* - 700 mb temperature ( in Celsius )
* @param t500
* - 500 mb temperature ( in Celsius )
* @param td850
* - 850 mb dewpoint ( in Celsius )
* @param td700
* - 700 mb dewpoint ( in Celsius )
* @param t850 - 850 mb temperature ( in Celsius )
* @param t700 - 700 mb temperature ( in Celsius )
* @param t500 - 500 mb temperature ( in Celsius )
* @param td850 - 850 mb dewpoint ( in Celsius )
* @param td700 - 700 mb dewpoint ( in Celsius )
* @return returns the 'K' index if all the input values are valid and
* RMISSD ( -9999 ) otherwise
*/
public static float pskinx(float t850, float t700, float t500, float td850,
float td700) {
public static float pskinx ( float t850, float t700, float t500, float td850, float td700) {
float pskinx = GempakConstants.RMISSD;
if ( !MissingValueTester.isDataValueMissing(td700)
&& !MissingValueTester.isDataValueMissing(td850)
@ -110,18 +98,14 @@ public class PSLibrary {
return pskinx;
}
/**
* Computes the Showalter index
*
* @param t850
* - 850 mb temperature ( in Celsius )
* @param td850
* - 850 mb dewpoint ( in Celsius )
* @param t500
* - 500 mb temperature ( in Celsius )
* @return the Showalter index if all the three input parameters are valid
* and the parcel temperature is computed correctly. Otherwise, it
* returns RMISSD (-9999).
* @param t850 - 850 mb temperature ( in Celsius )
* @param td850 - 850 mb dewpoint ( in Celsius )
* @param t500 - 500 mb temperature ( in Celsius )
* @return the Showalter index if all the three input parameters are valid and the parcel temperature is computed correctly.
* Otherwise, it returns RMISSD (-9999).
*/
public static float psShow ( float t850, float td850, float t500 ){
float psshow = GempakConstants.RMISSD;
@ -137,18 +121,13 @@ public class PSLibrary {
*/
float thtlcl = PRLibrary.prThte ( p850, t850, td850 );
/*
* Find parcel temperature along pseudoadiabat at 500 mb. The parcel
* temperature tp is the temperature in Celsius at 500 mb of a
* parcel, which lies on the moist adiabat determined by the
* sounding at 850 mb
/*Find parcel temperature along pseudoadiabat at 500 mb.
* The parcel temperature tp is the temperature in Celsius at 500 mb of a parcel,
* which lies on the moist adiabat determined by the sounding at 850 mb
*/
float tp = PRLibrary.prTmst ( thtlcl, p500, guess );
/*
* Subtract the parcel temperature from the temperature at 500 mb,
* is the parcel temperature is valid
*/
/*Subtract the parcel temperature from the temperature at 500 mb, is the parcel temperature is valid*/
if ( !MissingValueTester.isDataValueMissing( tp ) ){
psshow = PRLibrary.prTmck ( t500 ) - tp ;
}
@ -158,33 +137,24 @@ public class PSLibrary {
/**
* Computes the vertical totals index
*
* @param t850
* - 850 mb temperature ( in Celsius )
* @param t500
* - 500 mb temperature ( in Celsius )
* @return the verticl totals index as a difference of the temperature at
* 850 mb and the temperature at 500 mb, if neither value is
* missing. Else it returns RMISSD (-9999)
* @param t850 - 850 mb temperature ( in Celsius )
* @param t500 - 500 mb temperature ( in Celsius )
* @return the verticl totals index as a difference of the temperature at 850 mb and the temperature at 500 mb, if neither value is missing.
* Else it returns RMISSD (-9999)
*/
public static float psVtot ( float t850, float t500 ) {
return ((!MissingValueTester.isDataValueMissing(t500) && !MissingValueTester
.isDataValueMissing(t850)) ? t850 - t500
: GempakConstants.RMISSD);
return ( ( !MissingValueTester.isDataValueMissing( t500 ) && !MissingValueTester.isDataValueMissing( t850 ) )
? t850 - t500 : GempakConstants.RMISSD );
}
/**
* Computes the total Totals index from the temperature and dewpoint at 850
* mb and the temperature at 500 mb
* Computes the total Totals index from the temperature and dewpoint at 850 mb and the temperature at 500 mb
*
* @param t850
* - 850 mb temperature ( in Celsius )
* @param td850
* - 850 mb dewpoint ( in Celsius )
* @param t500
* - 500 mb temperature ( in Celsius )
* @return the total totals index if none of the input parameters are
* missing and RMISSD (-9999) otherwise
* @param t850 - 850 mb temperature ( in Celsius )
* @param td850 - 850 mb dewpoint ( in Celsius )
* @param t500 - 500 mb temperature ( in Celsius )
* @return the total totals index if none of the input parameters are missing and
* RMISSD (-9999) otherwise
*/
public static float psTotl ( float t850, float td850, float t500 ){
float pstotl = GempakConstants.RMISSD;
@ -208,26 +178,16 @@ public class PSLibrary {
/**
* Computes the SWEAT index. Winds must be input in m/sec
*
* @param t850
* - 850 mb temperature
* @param td850
* - 850 mb dewpoint
* @param t500
* - 500 mb temperature
* @param spd850
* - 850 mb windspeed ( in m/sec )
* @param spd500
* - 500 mb windspeed ( in m/sec )
* @param dir850
* - 850 mb wind direction
* @param dir500
* - 500 mb wind direction
* @return the SWEAT index if none of the inputs are missing and RMISSD (
* -9999 ) otherwise
* @param t850 - 850 mb temperature
* @param td850 - 850 mb dewpoint
* @param t500 - 500 mb temperature
* @param spd850 - 850 mb windspeed ( in m/sec )
* @param spd500 - 500 mb windspeed ( in m/sec )
* @param dir850 - 850 mb wind direction
* @param dir500 - 500 mb wind direction
* @return the SWEAT index if none of the inputs are missing and RMISSD ( -9999 ) otherwise
*/
public static float psSwet(float t850, float td850, float t500,
float spd850, float spd500, float dir850, float dir500) {
public static float psSwet ( float t850, float td850, float t500, float spd850, float spd500, float dir850, float dir500 ){
float pssweat = GempakConstants.RMISSD;
if ( !MissingValueTester.isDataValueMissing( dir500 )
&& !MissingValueTester.isDataValueMissing(dir850)
@ -237,9 +197,10 @@ public class PSLibrary {
&& !MissingValueTester.isDataValueMissing(td850)
&& !MissingValueTester.isDataValueMissing(t850)){
/*
* (Non-Javadoc): All computations are from Miller, R.C., 1972:
* Notes on Severe Storm Forecasting Procedures of the Air Force
* Global Weather Central, AWS Tech. Report 200
* (Non-Javadoc):
* All computations are from
* Miller, R.C., 1972: Notes on Severe Storm Forecasting Procedures of
* the Air Force Global Weather Central, AWS Tech. Report 200
*/
/*Convert meters per second to knots*/
float skt850 = PRLibrary.prMskn ( spd850 );
@ -279,42 +240,28 @@ public class PSLibrary {
}
/**
* Finds the most unstable level of a sounding from the surface to the input
* pressure level.
*
* @param listOfNcSoundingLayer
* - the list of NcSoundingLayer to search
* @param plev
* - input pressure level
* @return the most unstable level of a sounding from the surface to the
* input pressure level (plev), if plev is not -1 and all
* computations fall through correctly.Else it returns an empty
* NcSoundingLayer object
* Finds the most unstable level of a sounding from the surface to the input pressure level.
* @param listOfNcSoundingLayer - the list of NcSoundingLayer to search
* @param plev - input pressure level
* @return the most unstable level of a sounding from the surface to the input pressure level (plev),
* if plev is not -1 and all computations fall through correctly.Else it returns an empty NcSoundingLayer object
*/
public static NcSoundingLayer psUstb(
List<NcSoundingLayer> listOfNcSoundingLayer, float plev) {
public static NcSoundingLayer psUstb(List<NcSoundingLayer> listOfNcSoundingLayer, float plev ){
//TODO: update to find pressure value between 2 levels
NcSoundingLayer outputNcSoundingLayer = new NcSoundingLayer(
GempakConstants.RMISSD, GempakConstants.RMISSD,
GempakConstants.RMISSD, GempakConstants.RMISSD,
GempakConstants.RMISSD, GempakConstants.RMISSD,
GempakConstants.RMISSD, GempakConstants.RMISSD,
GempakConstants.RMISSD, GempakConstants.RMISSD,
GempakConstants.RMISSD);
NcSoundingLayer outputNcSoundingLayer = new NcSoundingLayer(GempakConstants.RMISSD, GempakConstants.RMISSD,GempakConstants.RMISSD,
GempakConstants.RMISSD,GempakConstants.RMISSD,GempakConstants.RMISSD,
GempakConstants.RMISSD,GempakConstants.RMISSD,GempakConstants.RMISSD,
GempakConstants.RMISSD, GempakConstants.RMISSD);
class PressureComparator implements Comparator < NcSoundingLayer>{
@Override
public int compare(NcSoundingLayer n1, NcSoundingLayer n2){
return Float.compare(n2.getPressure(), n1.getPressure());
}
}
if ( listOfNcSoundingLayer != null && listOfNcSoundingLayer.size() > 0 ){
Collections.sort(listOfNcSoundingLayer, new PressureComparator() );
NcSoundingLayer surfaceLevelNcSoundingLayer = listOfNcSoundingLayer
.get(0);
float pressureAtSurfaceLevel = surfaceLevelNcSoundingLayer
.getPressure();
NcSoundingLayer topLevelNcSoundingLayer = PCLibrary
.pcFtop(listOfNcSoundingLayer);
NcSoundingLayer surfaceLevelNcSoundingLayer = listOfNcSoundingLayer.get( 0 );
float pressureAtSurfaceLevel = surfaceLevelNcSoundingLayer.getPressure();
NcSoundingLayer topLevelNcSoundingLayer = PCLibrary.pcFtop( listOfNcSoundingLayer );
float pressureAtTopLevel = topLevelNcSoundingLayer.getPressure();
if( plev > pressureAtSurfaceLevel)
@ -322,14 +269,14 @@ public class PSLibrary {
else if ( plev == -1 || plev <= pressureAtTopLevel )
plev = pressureAtTopLevel;
int sizeOfList = listOfNcSoundingLayer.size();
boolean done = false;
int lev = 0;
float eps = GempakConstants.RMISSD;
while ( !done && lev < sizeOfList){
NcSoundingLayer currNcSoundingLayer = listOfNcSoundingLayer
.get(lev);
NcSoundingLayer currNcSoundingLayer = listOfNcSoundingLayer.get(lev);
float pressure = currNcSoundingLayer.getPressure();
float tmpc = currNcSoundingLayer.getTemperature();
@ -339,26 +286,16 @@ public class PSLibrary {
System.out.println("thwc = " + thwc);
if ( thwc > eps && ( pressure >= plev ) ){
eps = thwc;
outputNcSoundingLayer.setPressure(currNcSoundingLayer
.getPressure());
outputNcSoundingLayer.setTemperature(currNcSoundingLayer
.getTemperature());
outputNcSoundingLayer.setDewpoint(currNcSoundingLayer
.getDewpoint());
outputNcSoundingLayer.setWindSpeed(currNcSoundingLayer
.getWindSpeed());
outputNcSoundingLayer.setWindDirection(currNcSoundingLayer
.getWindDirection());
outputNcSoundingLayer.setWindU(currNcSoundingLayer
.getWindU());
outputNcSoundingLayer.setWindV(currNcSoundingLayer
.getWindV());
outputNcSoundingLayer.setGeoHeight(currNcSoundingLayer
.getGeoHeight());
outputNcSoundingLayer.setOmega(currNcSoundingLayer
.getOmega());
outputNcSoundingLayer.setSpecHumidity(currNcSoundingLayer
.getSpecHumidity());
outputNcSoundingLayer.setPressure( currNcSoundingLayer.getPressure() );
outputNcSoundingLayer.setTemperature( currNcSoundingLayer.getTemperature() );
outputNcSoundingLayer.setDewpoint( currNcSoundingLayer.getDewpoint() );
outputNcSoundingLayer.setWindSpeed( currNcSoundingLayer.getWindSpeed() );
outputNcSoundingLayer.setWindDirection( currNcSoundingLayer.getWindDirection() );
outputNcSoundingLayer.setWindU( currNcSoundingLayer.getWindU() );
outputNcSoundingLayer.setWindV( currNcSoundingLayer.getWindV() );
outputNcSoundingLayer.setGeoHeight( currNcSoundingLayer.getGeoHeight() );
outputNcSoundingLayer.setOmega( currNcSoundingLayer.getOmega() );
outputNcSoundingLayer.setSpecHumidity( currNcSoundingLayer.getSpecHumidity() );
System.out.println("Outdat: "
+ outputNcSoundingLayer.getPressure() + " "
+ outputNcSoundingLayer.getTemperature() + " "
@ -383,4 +320,33 @@ public class PSLibrary {
return outputNcSoundingLayer;
}
}

View file

@ -4,6 +4,5 @@
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="unit_test"/>
<classpathentry kind="lib" path="jna.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View file

@ -13,7 +13,7 @@ Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: gov.noaa.nws.ncep.viz.common.ui,
gov.noaa.nws.ncep.viz.common.ui.color,
gov.noaa.nws.ncep.viz.localization.impl,
gov.noaa.nws.ncep.viz.localization,
org.junit
Export-Package: gov.noaa.nws.ncep.gempak.parameters,
gov.noaa.nws.ncep.gempak.parameters.categorymap,

View file

@ -3,4 +3,5 @@ output.. = bin/
bin.includes = META-INF/,\
.,\
plugin.xml,\
jna.jar
jna.jar,\
localization/

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.2"?>
<plugin>
<!--
<extension
point="gov.noaa.nws.ncep.viz.localization.localizationData">
<singleLocalizationValue
@ -10,5 +10,5 @@
fileName="gempakMarkerType.tbl">
</singleLocalizationValue>
</extension>
-->
</plugin>

View file

@ -1,18 +1,24 @@
package gov.noaa.nws.ncep.gempak.parameters.contourinterval;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import gov.noaa.nws.ncep.gempak.parameters.contourinterval.ContourStringParser;
/**
* CINT accepts strings (in its overloaded constructor) matching one of the two
* formats below:
*
* CINT accepts strings (in its overloaded constructor) matching one of the two formats below:
* <pre>
* <tt> contourInterval/minimumContourValue/maximumContourValue/numPaddingDigits<p>
* contourVal1;contourVal2;...;contourValn
@ -26,7 +32,6 @@ import java.util.Set;
* advised that the user checks the result of the method <tt>isCINTStringParsed()</tt>.
* </pre>
* <p>
*
*<pre>
* SOFTWARE HISTORY
* Date Ticket# Engineer Description
@ -48,7 +53,6 @@ import java.util.Set;
*
*
* </pre>
*
* @author Archana.S
* @version 1
* @see $GEMPAK/help/hlx/cint.hl2
@ -73,15 +77,13 @@ public class CINT {
/** Boolean flag to validate that the CINT string was parsed correctly*/
private boolean isCINTStringParsed;
/**
* An integer that decides the minimum number of digits in an integer
* contour label
*/
/**An integer that decides the minimum number of digits in an integer contour label*/
private Integer numPaddingDigits;
/**The un-parsed CINT string entered by the user */
String userInputString;
public String getUserInputString() {
return userInputString;
}
@ -99,10 +101,7 @@ public class CINT {
/**The list of contour values represented as String objects*/
private List<String> contourValuesListAsString;
/**
* The list of extracted contour labels. For CINT strings without labels, it
* is the contour value stored as its String equivalent
*/
/**The list of extracted contour labels. For CINT strings without labels, it is the contour value stored as its String equivalent*/
private List<String> contourLabelList;
private List<String> getContourLabelList() {
@ -122,20 +121,15 @@ public class CINT {
}
/**
* Gets the {@code HashMap<Double, String>} of the contour values and labels
* for a specific zoom level
*
* @param The
* zoom level
* @return The {@code HashMap<Double, String>} of the contour values and
* labels for the input zoom level if the CINT object for that zoom
* level exists or an empty map otherwise.
* Gets the {@code HashMap<Double, String>} of the contour values and labels for a specific zoom level
* @param The zoom level
* @return The {@code HashMap<Double, String>} of the contour values and labels for the input zoom level
* if the CINT object for that zoom level exists or an empty map otherwise.
* */
public Map<Double, String> getCintHashMap(ZoomLevel zLevel) {
int listSize = this.listOfCINTObjects.size();
if(listSize >= zLevel.zoomLevel){
Map<Double, String> thisMap = new HashMap<Double, String>(
this.listOfCINTObjects.get(zLevel.zoomLevel - 1).cintHashMap);
Map <Double,String> thisMap = new HashMap<Double,String>(this.listOfCINTObjects.get( zLevel.zoomLevel - 1).cintHashMap);
if(thisMap.size() > 0){
return (thisMap);
}
@ -151,22 +145,18 @@ public class CINT {
this.cintHashMap = cintHashMap;
}
/**
* Gets the {@code List<Double>} of the contour values for a specific zoom
* level
*
* @param the
* zoom level
* @return The {@code List<Double>} of the contour values for the input zoom
* level if the CINT object for that zoom level exists or an empty
* list otherwise.
* Gets the {@code List<Double>} of the contour values for a specific zoom level
* @param the zoom level
* @return The {@code List<Double>} of the contour values for the input zoom level
* if the CINT object for that zoom level exists or an empty list otherwise.
* */
public List<Double> getContourValuesListAsDouble(ZoomLevel zLevel) {
int listSize = this.listOfCINTObjects.size();
if(listSize >= zLevel.zoomLevel){
List<Double> cList = new ArrayList<Double>(
this.listOfCINTObjects.get(zLevel.zoomLevel - 1).contourValuesList);
List<Double> cList = new ArrayList<Double>(this.listOfCINTObjects.get(zLevel.zoomLevel - 1).contourValuesList);
if( cList.size() > 0){
return (new ArrayList<Double>(cList));
}
@ -186,11 +176,9 @@ public class CINT {
public static enum ZoomLevel {
FIRST(1), SECOND(2), THIRD(3), FOURTH(4), FIFTH(5);
private int zoomLevel;
private ZoomLevel(int index){
this.zoomLevel = index;
}
public int getZoomLevelAsInt(){
return zoomLevel;
}
@ -211,61 +199,44 @@ public class CINT {
/**Zoom constant representing the fifth zoom level*/
public static final ZoomLevel FIFTH_ZOOM_LEVEL = ZoomLevel.FIFTH;
/**
* Zoom constant representing the first zoom level as the minimum level of
* zoom
*/
/**Zoom constant representing the first zoom level as the minimum level of zoom*/
public static final ZoomLevel MIN_ZOOM_LEVEL = ZoomLevel.FIRST;
/**
* Zoom constant representing the fifth zoom levelas the maximum level of
* zooom
*/
/**Zoom constant representing the fifth zoom levelas the maximum level of zooom*/
public static final ZoomLevel MAX_ZOOM_LEVEL = ZoomLevel.FIFTH;
/**
* Gets the {@code List<String>} of the contour values for a specific zoom
* level
*
* @param the
* zoom level
* @return The {@code List<String>} of the contour values for the input zoom
* level if the CINT object for that zoom level exists or an empty
* list otherwise.
* Gets the {@code List<String>} of the contour values for a specific zoom level
* @param the zoom level
* @return The {@code List<String>} of the contour values for the input zoom level
* if the CINT object for that zoom level exists or an empty list otherwise.
* */
public List<String> getContourValuesListAsString(ZoomLevel zLevel) {
List<String> cvList = Collections.EMPTY_LIST;
int listSize = this.listOfCINTObjects.size();
if( listSize > 0 && listSize >= zLevel.zoomLevel){
cvList = new ArrayList<String>(
this.listOfCINTObjects.get(zLevel.zoomLevel - 1).contourValuesListAsString);
cvList = new ArrayList<String>(this.listOfCINTObjects.get(zLevel.zoomLevel - 1).contourValuesListAsString);
}
return cvList;
}
/**
* Gets the {@code List<String>} of the contour labels for a specific zoom
* level
*
* @param the
* zoom level
* @return The {@code List<String>} of the contour labels for the input zoom
* level if the CINT object for that zoom level exists or an empty
* list otherwise.
* Gets the {@code List<String>} of the contour labels for a specific zoom level
* @param the zoom level
* @return The {@code List<String>} of the contour labels for the input zoom level
* if the CINT object for that zoom level exists or an empty list otherwise.
* */
public List<String> getContourLabelsForZoomLevel(ZoomLevel zLevel){
List<String> cintLabelList = new ArrayList<String>(0);
int listSize = this.listOfCINTObjects.size();
if(listSize >= zLevel.zoomLevel){
cintLabelList = new ArrayList<String>(this.listOfCINTObjects.get(
zLevel.zoomLevel - 1).getContourLabelList());
cintLabelList = new ArrayList<String>(this.listOfCINTObjects.get( zLevel.zoomLevel-1).getContourLabelList());
}
return cintLabelList;
}
/**
* The default constructor initializes the instance variables to their
* defaults
*The default constructor initializes the instance variables to their defaults
**/
public CINT(){
setContourInterval(Double.NaN);
@ -281,13 +252,10 @@ public class CINT {
//
// /**
// *The overloaded constructor accepts the CINT string as an input and calls
// the parse method of the
// *The overloaded constructor accepts the CINT string as an input and calls the parse method of the
// *ContourStringParser on it.
// *If the parsing is successful, the contour interval, minimum contour
// level, maximum
// *contour level and the list of contour values will be populated by the
// corresponding parsed
// *If the parsing is successful, the contour interval, minimum contour level, maximum
// *contour level and the list of contour values will be populated by the corresponding parsed
// *data from the ContourStringParser object.
// *
// **/
@ -307,8 +275,7 @@ public class CINT {
}
public static List<Double> parseCINT(String cint, int zoomLevelIndex,
float minValue, float maxValue) {
public static List<Double> parseCINT(String cint, int zoomLevelIndex, float minValue, float maxValue) {
/*
* Convert zoomLevel index
@ -333,6 +300,7 @@ public class CINT {
break;
}
/*
* Get contour values from CINT
*/
@ -343,27 +311,20 @@ public class CINT {
if (cint == null || cint.trim().length() < 1) {
interval = (cmax - cmin) / 10.0;
CINT contourInfo = new CINT(interval.toString() + "/"
+ cmin.toString() + "/" + cmax.toString());
cvalues = contourInfo
.getUniqueSortedContourValuesFromAllZoomLevels();
} else {
CINT contourInfo = new CINT(interval.toString()+"/"+cmin.toString()+"/"+cmax.toString());
cvalues = contourInfo.getUniqueSortedContourValuesFromAllZoomLevels();
}
else {
CINT contourInfo = new CINT(cint);
cvalues = contourInfo.getContourValuesListAsDouble(zoomLevel);
if (cvalues == null || cvalues.size() < 1 /*
* || contourInfo.
* getContourInterval
* (zoomLevel) == 0.0
*/) {
if (cvalues == null || cvalues.size() < 1 /*|| contourInfo.getContourInterval(zoomLevel) == 0.0*/) {
cmin = contourInfo.getMinContourValue(zoomLevel);
if (cmin == null || cmin.isNaN())
cmin = new Double(minValue);
if (cmin == null || cmin.isNaN()) cmin = new Double( minValue );
cmax = contourInfo.getMaxContourValue(zoomLevel);
if (cmax == null || cmax.isNaN())
cmax = new Double(maxValue);
if (cmax == null || cmax.isNaN()) cmax = new Double( maxValue );
interval = contourInfo.getContourInterval(zoomLevel);
if (interval == null || interval.isNaN()) {
@ -371,14 +332,11 @@ public class CINT {
}
//Only allow less than 50 contour levels
if ((cmax - cmin) / interval > 50)
interval = (cmax - cmin) / 50;
if ((cmax - cmin)/interval > 50) interval = (cmax - cmin)/50;
// System.out.println(" cmax=="+cmax);
contourInfo = new CINT(interval.toString() + "/"
+ cmin.toString() + "/" + cmax.toString());
cvalues = contourInfo
.getUniqueSortedContourValuesFromAllZoomLevels();
contourInfo = new CINT(interval.toString()+"/"+cmin.toString()+"/"+cmax.toString());
cvalues = contourInfo.getUniqueSortedContourValuesFromAllZoomLevels();
}
}
@ -391,81 +349,74 @@ public class CINT {
}
/**
* @return The portion of the parsed CINT string specific to a zoom level if
* the CINT object for that zoom level exists or an empty String
* otherwise.
* @return The portion of the parsed CINT string specific to a zoom level
* if the CINT object for that zoom level exists or an empty String otherwise.
* */
public String getCINTString(ZoomLevel zLevel){
String currentCINTString="";
int listSize = this.listOfCINTObjects.size();
if(listSize >= zLevel.zoomLevel){
currentCINTString = new String(
this.listOfCINTObjects.get(zLevel.zoomLevel - 1).contourIntervalString);
currentCINTString = new String ( this.listOfCINTObjects.get(zLevel.zoomLevel-1).contourIntervalString);
}
return currentCINTString;
}
/**
* @return The contour interval specific to a zoom level if the CINT object
* for that zoom level exists or NaN otherwise.
* @return The contour interval specific to a zoom level
* if the CINT object for that zoom level exists or NaN otherwise.
* */
public Double getContourInterval(ZoomLevel zLevel) {
Double currentContourInterval = Double.NaN;
int listSize = this.listOfCINTObjects.size();
if(listSize >= zLevel.zoomLevel){
currentContourInterval = new Double(
this.listOfCINTObjects.get(zLevel.zoomLevel - 1).contourInterval);
currentContourInterval = new Double ( this.listOfCINTObjects.get(zLevel.zoomLevel-1).contourInterval);
}
return currentContourInterval;
}
/**
* @return The minimum contour value specific to a zoom level if the CINT
* object for that zoom level exists or NaN otherwise.
* @return The minimum contour value specific to a zoom level
* if the CINT object for that zoom level exists or NaN otherwise.
* */
public Double getMinContourValue(ZoomLevel zLevel) {
Double currentMinContourValue = Double.NaN;
int listSize = this.listOfCINTObjects.size();
if(listSize >= zLevel.zoomLevel){
currentMinContourValue = new Double(
this.listOfCINTObjects.get(zLevel.zoomLevel - 1).minContourValue);
currentMinContourValue = new Double ( this.listOfCINTObjects.get(zLevel.zoomLevel-1).minContourValue);
}
return currentMinContourValue;
}
/**
* @return The maximum contour value specific to a zoom level if the CINT
* object for that zoom level exists or NaN otherwise.
* @return The maximum contour value specific to a zoom level
* if the CINT object for that zoom level exists or NaN otherwise.
* */
public Double getMaxContourValue(ZoomLevel zLevel) {
Double currentMaxContourValue = Double.NaN;
int listSize = this.listOfCINTObjects.size();
if(listSize >= zLevel.zoomLevel){
currentMaxContourValue = new Double(
this.listOfCINTObjects.get(zLevel.zoomLevel - 1).maxContourValue);
currentMaxContourValue = new Double ( this.listOfCINTObjects.get(zLevel.zoomLevel-1).maxContourValue);
}
return currentMaxContourValue;
}
/**
* @return The minimum digits in the label for contour values specific to a
* zoom level if the CINT object for that zoom level exists or 0
* otherwise.
* @return The minimum digits in the label for contour values specific to a zoom level
* if the CINT object for that zoom level exists or 0 otherwise.
* */
public Integer getNumPaddingDigits(ZoomLevel zLevel) {
Integer currentNumPaddingDigits = new Integer(0);
int listSize = this.listOfCINTObjects.size();
if(listSize >= zLevel.zoomLevel){
currentNumPaddingDigits = new Integer(
this.listOfCINTObjects.get(zLevel.zoomLevel - 1).numPaddingDigits);
currentNumPaddingDigits = new Integer ( this.listOfCINTObjects.get(zLevel.zoomLevel-1).numPaddingDigits);
}
return currentNumPaddingDigits;
}
/***
*
* @return a list String objects representing the unique contour values from
* all zoom levels
* @return a list String objects representing the unique contour values from all zoom levels
*/
public List <String> getUniqueSortedContourValuesFromAllZoomLevelsAsString(){
List <Double> sortedKeySet = getUniqueSortedContourValuesFromAllZoomLevels();
@ -480,8 +431,7 @@ public class CINT {
/***
*
* @return a list of Double objects representing the unique contour values
* from all zoom levels
* @return a list of Double objects representing the unique contour values from all zoom levels
*/
public List<Double> getUniqueSortedContourValuesFromAllZoomLevels(){
Set<Double> setOfUnqiueContourValues = new HashSet<Double>(0);
@ -498,8 +448,7 @@ public class CINT {
return sortedList;
}
private void setContourValuesListAsString(
List<String> contourValuesListAsString) {
private void setContourValuesListAsString(List<String> contourValuesListAsString) {
this.contourValuesListAsString = contourValuesListAsString;
}
@ -508,41 +457,28 @@ public class CINT {
this.isCINTStringParsed = isCINTStringParsed;
}
/**
* @param String
* cintString
*/
/**@param String cintString*/
private void setCINTString(String cintString){
contourIntervalString = new String(cintString);
}
/**
* @param Double
* contourInterval
*/
/**@param Double contourInterval*/
private void setContourInterval(Double contourInterval) {
this.contourInterval = new Double(contourInterval);
}
/**
* @param Double
* minContourValue
*/
/**@param Double minContourValue*/
private void setMinContourValue(Double minContourValue) {
this.minContourValue = new Double(minContourValue);
}
/**
* @param Double
* maxContourValue
*/
/**@param Double maxContourValue */
private void setMaxContourValue(Double maxContourValue) {
this.maxContourValue = new Double (maxContourValue);
}
/**
* @param Integer
* numPaddingDigits
*@param Integer numPaddingDigits
**/
private void setNumPaddingDigits(Integer numPaddingDigits) {
this.numPaddingDigits = new Integer(numPaddingDigits);
@ -561,8 +497,7 @@ public class CINT {
lengthOfContourLevelStringsArray = CINT.MAX_ZOOM_LEVEL.zoomLevel;
}
listOfCINTObjects = new ArrayList<CINT>(
lengthOfContourLevelStringsArray);
listOfCINTObjects = new ArrayList<CINT>(lengthOfContourLevelStringsArray);
for (int index = 0; index < lengthOfContourLevelStringsArray; index++) {
@ -571,41 +506,25 @@ public class CINT {
//create the CINT object for the current zoom level
CINT currentCINTObj = new CINT();
currentCINTObj.setCINTStringParsed(cintParser
.isContourStringParsed());
currentCINTObj.setCINTStringParsed(cintParser.isContourStringParsed());
/*
* If the parse operation was successful, extract the numeric
* data and set the corresponding instance variables of
* currentCINTObj
*/
/*If the parse operation was successful, extract the numeric
*data and set the corresponding instance variables of currentCINTObj*/
if (currentCINTObj.isCINTStringParsed()) {
currentCINTObj
.setCINTString(contourLevelStringsArray[index]);
currentCINTObj.setContourInterval(cintParser
.getContourInterval());
currentCINTObj.setMinContourValue(cintParser
.getMinContourLevel());
currentCINTObj.setMaxContourValue(cintParser
.getMaxContourLevel());
currentCINTObj.setNumPaddingDigits(cintParser
.getNumPaddingDigits());
currentCINTObj.setContourValuesList(cintParser
.getContourValuesList());
currentCINTObj.setCintHashMap(cintParser
.getLabeledContourValuesHashMap());
Set<Double> tempKeySet = new LinkedHashSet<Double>(
currentCINTObj.cintHashMap.keySet());
currentCINTObj.setContourValuesList(new ArrayList<Double>(
tempKeySet));
currentCINTObj.setCINTString(contourLevelStringsArray[index]);
currentCINTObj.setContourInterval(cintParser.getContourInterval());
currentCINTObj.setMinContourValue(cintParser.getMinContourLevel());
currentCINTObj.setMaxContourValue(cintParser.getMaxContourLevel());
currentCINTObj.setNumPaddingDigits(cintParser.getNumPaddingDigits());
currentCINTObj.setContourValuesList(cintParser.getContourValuesList());
currentCINTObj.setCintHashMap(cintParser.getLabeledContourValuesHashMap());
Set<Double> tempKeySet = new LinkedHashSet<Double>(currentCINTObj.cintHashMap.keySet());
currentCINTObj.setContourValuesList( new ArrayList<Double>(tempKeySet));
for(Double contourValue : tempKeySet){
currentCINTObj.contourValuesListAsString
.add(contourValue.toString());
currentCINTObj.contourValuesListAsString.add(contourValue.toString());
}
currentCINTObj.contourLabelList = new ArrayList<String>(
new LinkedHashSet<String>(
currentCINTObj.cintHashMap.values()));
currentCINTObj.contourLabelList = new ArrayList<String>( new LinkedHashSet<String>(currentCINTObj.cintHashMap.values()));
}
if(index == 0){
@ -614,8 +533,7 @@ public class CINT {
isParsed = isParsed & currentCINTObj.isCINTStringParsed();
}
// Sets the status of the parse operations across all zoom
// levels (i.e. for all CINT objects in the list)
//Sets the status of the parse operations across all zoom levels (i.e. for all CINT objects in the list)
this.setCINTStringParsed(isParsed);
//finally add currentCINTObj to the list of CINT objects
@ -625,3 +543,4 @@ public class CINT {
}
}

View file

@ -1,7 +1,5 @@
package gov.noaa.nws.ncep.gempak.parameters.infill;
import gov.noaa.nws.ncep.gempak.parameters.contourinterval.ContourStringParser;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@ -11,21 +9,22 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import gov.noaa.nws.ncep.gempak.parameters.infill.FINT;
import gov.noaa.nws.ncep.gempak.parameters.contourinterval.ContourStringParser;
//import gov.noaa.nws.ncep.gempak.parameters.fillinterval.FINT.ZoomLevel;
/**
* FINT accepts strings (in its overloaded constructor) matching one of the two
* formats below:
* FINT accepts strings (in its overloaded constructor) matching one of the two formats below:
* <p>
* <tt> fillInterval/minimumFillValue/maximumValue<p>
* fillVal1;fillVal2;...;fillValn
* </tt>
* <p>
* <tt>FINT</tt> returns a list of fill fill levels (and/or fill interval,
* minimum and maximum fill levels) only if the method
* <tt>isFINTStringParsed()</tt> returns true. Hence before attempting to use a
* numeric value returned by any method in <tt>FINT</tt>, it is strongly advised
* that the user checks the result of the method <tt>isFINTStringParsed()</tt>.
* minimum and maximum fill levels) only if the method <tt>isFINTStringParsed()</tt> returns true.
* Hence before attempting to use a numeric value returned by any method in <tt>FINT</tt>, it is strongly
* advised that the user checks the result of the method <tt>isFINTStringParsed()</tt>.
* <p>
*
*<pre>
* SOFTWARE HISTORY
* Date Ticket# Engineer Description
@ -39,7 +38,6 @@ import java.util.Set;
* 17-May-2011 M. Li add parseFINT
*
* </pre>
*
* @author Archana.S
* @version 1
* @see $GEMPAK/help/hlx/fint.hl2
@ -67,6 +65,7 @@ public class FINT {
/**The un-parsed FINT string entered by the user */
String userInputString;
public String getUserInputString() {
return userInputString;
}
@ -84,10 +83,7 @@ public class FINT {
/**The list of fill values represented as String objects*/
private List<String> fillValuesListAsString;
/**
* The list of extracted fill labels. For FINT strings without labels, it is
* the fill value stored as its String equivalent
*/
/**The list of extracted fill labels. For FINT strings without labels, it is the fill value stored as its String equivalent*/
private List<String> fillLabelList;
private List<String> getFillLabelList() {
@ -107,20 +103,15 @@ public class FINT {
}
/**
* Gets the {@code HashMap<Double, String>} of the fill values and labels
* for a specific zoom level
*
* @param The
* zoom level
* @return The {@code HashMap<Double, String>} of the fill values and labels
* for the input zoom level if the FINT object for that zoom level
* exists or an empty map otherwise.
* Gets the {@code HashMap<Double, String>} of the fill values and labels for a specific zoom level
* @param The zoom level
* @return The {@code HashMap<Double, String>} of the fill values and labels for the input zoom level
* if the FINT object for that zoom level exists or an empty map otherwise.
* */
public Map<Double, String> getFintHashMap(ZoomLevel zLevel) {
int listSize = this.listOfFINTObjects.size();
if(listSize >= zLevel.zoomLevel){
Map<Double, String> thisMap = new HashMap<Double, String>(
this.listOfFINTObjects.get(zLevel.zoomLevel - 1).fintHashMap);
Map <Double,String> thisMap = new HashMap<Double,String>(this.listOfFINTObjects.get( zLevel.zoomLevel - 1).fintHashMap);
if(thisMap.size() > 0){
return (thisMap);
}
@ -136,22 +127,18 @@ public class FINT {
this.fintHashMap = fintHashMap;
}
/**
* Gets the {@code List<Double>} of the fill values for a specific zoom
* level
*
* @param the
* zoom level
* @return The {@code List<Double>} of the fill values for the input zoom
* level if the FINT object for that zoom level exists or an empty
* list otherwise.
* Gets the {@code List<Double>} of the fill values for a specific zoom level
* @param the zoom level
* @return The {@code List<Double>} of the fill values for the input zoom level
* if the FINT object for that zoom level exists or an empty list otherwise.
* */
public List<Double> getFillValuesListAsDouble(ZoomLevel zLevel) {
int listSize = this.listOfFINTObjects.size();
if(listSize >= zLevel.zoomLevel){
List<Double> cList = new ArrayList<Double>(
this.listOfFINTObjects.get(zLevel.zoomLevel - 1).fillValuesList);
List<Double> cList = new ArrayList<Double>(this.listOfFINTObjects.get(zLevel.zoomLevel - 1).fillValuesList);
if( cList.size() > 0){
return (new ArrayList<Double>(cList));
}
@ -171,11 +158,9 @@ public class FINT {
public static enum ZoomLevel {
FIRST(1), SECOND(2), THIRD(3), FOURTH(4), FIFTH(5);
private int zoomLevel;
private ZoomLevel(int index){
this.zoomLevel = index;
}
public int getZoomLevelAsInt(){
return zoomLevel;
}
@ -196,61 +181,44 @@ public class FINT {
/**Zoom constant representing the fifth zoom level*/
public static final ZoomLevel FIFTH_ZOOM_LEVEL = ZoomLevel.FIFTH;
/**
* Zoom constant representing the first zoom level as the minimum level of
* zoom
*/
/**Zoom constant representing the first zoom level as the minimum level of zoom*/
public static final ZoomLevel MIN_ZOOM_LEVEL = ZoomLevel.FIRST;
/**
* Zoom constant representing the fifth zoom levelas the maximum level of
* zooom
*/
/**Zoom constant representing the fifth zoom levelas the maximum level of zooom*/
public static final ZoomLevel MAX_ZOOM_LEVEL = ZoomLevel.FIFTH;
/**
* Gets the {@code List<String>} of the fill values for a specific zoom
* level
*
* @param the
* zoom level
* @return The {@code List<String>} of the fill values for the input zoom
* level if the FINT object for that zoom level exists or an empty
* list otherwise.
* Gets the {@code List<String>} of the fill values for a specific zoom level
* @param the zoom level
* @return The {@code List<String>} of the fill values for the input zoom level
* if the FINT object for that zoom level exists or an empty list otherwise.
* */
public List<String> getFillValuesListAsString(ZoomLevel zLevel) {
List<String> cvList = Collections.EMPTY_LIST;
int listSize = this.listOfFINTObjects.size();
if( listSize > 0 && listSize >= zLevel.zoomLevel){
cvList = new ArrayList<String>(
this.listOfFINTObjects.get(zLevel.zoomLevel - 1).fillValuesListAsString);
cvList = new ArrayList<String>(this.listOfFINTObjects.get(zLevel.zoomLevel - 1).fillValuesListAsString);
}
return cvList;
}
/**
* Gets the {@code List<String>} of the fill labels for a specific zoom
* level
*
* @param the
* zoom level
* @return The {@code List<String>} of the fill labels for the input zoom
* level if the FINT object for that zoom level exists or an empty
* list otherwise.
* Gets the {@code List<String>} of the fill labels for a specific zoom level
* @param the zoom level
* @return The {@code List<String>} of the fill labels for the input zoom level
* if the FINT object for that zoom level exists or an empty list otherwise.
* */
public List<String> getFillLabelsForZoomLevel(ZoomLevel zLevel){
List<String> fintLabelList = new ArrayList<String>(0);
int listSize = this.listOfFINTObjects.size();
if(listSize >= zLevel.zoomLevel){
fintLabelList = new ArrayList<String>(this.listOfFINTObjects.get(
zLevel.zoomLevel - 1).getFillLabelList());
fintLabelList = new ArrayList<String>(this.listOfFINTObjects.get( zLevel.zoomLevel-1).getFillLabelList());
}
return fintLabelList;
}
/**
* The default constructor initializes the instance variables to their
* defaults
*The default constructor initializes the instance variables to their defaults
**/
public FINT(){
setFillInterval(Double.NaN);
@ -266,13 +234,10 @@ public class FINT {
//
// /**
// *The overloaded constructor accepts the FINT string as an input and calls
// the parse method of the
// *The overloaded constructor accepts the FINT string as an input and calls the parse method of the
// *ContourStringParser on it.
// *If the parsing is successful, the fill interval, minimum fill level,
// maximum
// *fill level and the list of fill values will be populated by the
// corresponding parsed
// *If the parsing is successful, the fill interval, minimum fill level, maximum
// *fill level and the list of fill values will be populated by the corresponding parsed
// *data from the ContourStringParser object.
// *
// **/
@ -292,8 +257,7 @@ public class FINT {
}
public static List<Double> parseFINT(String fint, int zoomLevelIndex,
float minValue, float maxValue) {
public static List<Double> parseFINT(String fint, int zoomLevelIndex, float minValue, float maxValue) {
List<Double> fvalues = null;
Double fmin = new Double(minValue);
@ -302,10 +266,10 @@ public class FINT {
if (fint == null || fint.trim().length() < 1) {
finterval = (fmax - fmin) / 10.0;
FINT fintInfo = new FINT(finterval.toString() + "/"
+ fmin.toString() + "/" + fmax.toString());
FINT fintInfo = new FINT(finterval.toString()+"/"+fmin.toString()+"/"+fmax.toString());
fvalues = fintInfo.getUniqueSortedFillValuesFromAllZoomLevels();
} else {
}
else {
// Should be done inside FINT.java
gov.noaa.nws.ncep.gempak.parameters.infill.FINT.ZoomLevel fzoomLevel = FINT.FIRST_ZOOM_LEVEL;
switch (zoomLevelIndex) {
@ -338,33 +302,27 @@ public class FINT {
Double d = new Double(Double.valueOf(s.trim()));
fvalues.add(d);
}
} else {
}
else {
fintInfo = new FINT(fint);
fvalues = fintInfo.getFillValuesListAsDouble(fzoomLevel);
}
// System.out.println("getFillValuesListAsDouble=="+fvalues);
if (fvalues == null || fvalues.size() < 1 /*
* ||
* fintInfo.getFillInterval
* (fzoomLevel) == 0.0
*/) {
if (fvalues == null || fvalues.size() < 1 /*|| fintInfo.getFillInterval(fzoomLevel) == 0.0*/) {
fmin = fintInfo.getMinFillValue(fzoomLevel);
if (fmin == null || fmin.isNaN())
fmin = new Double(minValue);
if (fmin == null || fmin.isNaN()) fmin = new Double(minValue);
fmax = fintInfo.getMaxFillValue(fzoomLevel);
if (fmax == null || fmax.isNaN())
fmax = new Double(maxValue);
if (fmax == null || fmax.isNaN()) fmax = new Double(maxValue);
finterval = fintInfo.getFillInterval(fzoomLevel);
if (finterval == null || finterval.isNaN()) {
finterval = (fmax - fmin) / 10.0;
}
fintInfo = new FINT(finterval.toString() + "/"
+ fmin.toString() + "/" + fmax.toString());
fintInfo = new FINT(finterval.toString()+"/"+fmin.toString()+"/"+fmax.toString());
fvalues = fintInfo.getUniqueSortedFillValuesFromAllZoomLevels();
}
@ -373,73 +331,67 @@ public class FINT {
return fvalues;
}
/**@return boolean isFINTStringParsed*/
public boolean isFINTStringParsed() {
return isFINTStringParsed;
}
/**
* @return The portion of the parsed FINT string specific to a zoom level if
* the FINT object for that zoom level exists or an empty String
* otherwise.
* @return The portion of the parsed FINT string specific to a zoom level
* if the FINT object for that zoom level exists or an empty String otherwise.
* */
public String getFINTString(ZoomLevel zLevel){
String currentFINTString="";
int listSize = this.listOfFINTObjects.size();
if(listSize >= zLevel.zoomLevel){
currentFINTString = new String(
this.listOfFINTObjects.get(zLevel.zoomLevel - 1).fillIntervalString);
currentFINTString = new String ( this.listOfFINTObjects.get(zLevel.zoomLevel-1).fillIntervalString);
}
return currentFINTString;
}
/**
* @return The fill interval specific to a zoom level if the FINT object for
* that zoom level exists or NaN otherwise.
* @return The fill interval specific to a zoom level
* if the FINT object for that zoom level exists or NaN otherwise.
* */
public Double getFillInterval(ZoomLevel zLevel) {
Double currentFillInterval = Double.NaN;
int listSize = this.listOfFINTObjects.size();
if(listSize >= zLevel.zoomLevel){
currentFillInterval = new Double(
this.listOfFINTObjects.get(zLevel.zoomLevel - 1).fillInterval);
currentFillInterval = new Double ( this.listOfFINTObjects.get(zLevel.zoomLevel-1).fillInterval);
}
return currentFillInterval;
}
/**
* @return The minimum fill value specific to a zoom level if the FINT
* object for that zoom level exists or NaN otherwise.
* @return The minimum fill value specific to a zoom level
* if the FINT object for that zoom level exists or NaN otherwise.
* */
public Double getMinFillValue(ZoomLevel zLevel) {
Double currentMinFillValue = Double.NaN;
int listSize = this.listOfFINTObjects.size();
if(listSize >= zLevel.zoomLevel){
currentMinFillValue = new Double(
this.listOfFINTObjects.get(zLevel.zoomLevel - 1).minFillValue);
currentMinFillValue = new Double ( this.listOfFINTObjects.get(zLevel.zoomLevel-1).minFillValue);
}
return currentMinFillValue;
}
/**
* @return The maximum fill value specific to a zoom level if the FINT
* object for that zoom level exists or NaN otherwise.
* @return The maximum fill value specific to a zoom level
* if the FINT object for that zoom level exists or NaN otherwise.
* */
public Double getMaxFillValue(ZoomLevel zLevel) {
Double currentMaxFillValue = Double.NaN;
int listSize = this.listOfFINTObjects.size();
if(listSize >= zLevel.zoomLevel){
currentMaxFillValue = new Double(
this.listOfFINTObjects.get(zLevel.zoomLevel - 1).maxFillValue);
currentMaxFillValue = new Double ( this.listOfFINTObjects.get(zLevel.zoomLevel-1).maxFillValue);
}
return currentMaxFillValue;
}
/***
*
* @return a list String objects representing the unique fill values from
* all zoom levels
* @return a list String objects representing the unique fill values from all zoom levels
*/
public List <String> getUniqueSortedFillValuesFromAllZoomLevelsAsString(){
List <Double> sortedKeySet = getUniqueSortedFillValuesFromAllZoomLevels();
@ -454,8 +406,7 @@ public class FINT {
/***
*
* @return a list of Double objects representing the unique fill values from
* all zoom levels
* @return a list of Double objects representing the unique fill values from all zoom levels
*/
public List<Double> getUniqueSortedFillValuesFromAllZoomLevels(){
Set<Double> setOfUnqiueFillValues = new HashSet<Double>(0);
@ -481,34 +432,22 @@ public class FINT {
this.isFINTStringParsed = isFINTStringParsed;
}
/**
* @param String
* fintString
*/
/**@param String fintString*/
private void setFINTString(String fintString){
fillIntervalString = new String(fintString);
}
/**
* @param Double
* fillInterval
*/
/**@param Double fillInterval*/
private void setFillInterval(Double fillInterval) {
this.fillInterval = new Double(fillInterval);
}
/**
* @param Double
* minFillValue
*/
/**@param Double minFillValue*/
private void setMinFillValue(Double minFillValue) {
this.minFillValue = new Double(minFillValue);
}
/**
* @param Double
* maxFillValue
*/
/**@param Double maxFillValue */
private void setMaxFillValue(Double maxFillValue) {
this.maxFillValue = new Double (maxFillValue);
}
@ -526,8 +465,7 @@ public class FINT {
lengthOfFillLevelStringsArray = FINT.MAX_ZOOM_LEVEL.zoomLevel;
}
listOfFINTObjects = new ArrayList<FINT>(
lengthOfFillLevelStringsArray);
listOfFINTObjects = new ArrayList<FINT>(lengthOfFillLevelStringsArray);
for (int index = 0; index < lengthOfFillLevelStringsArray; index++) {
@ -536,38 +474,24 @@ public class FINT {
//create the FINT object for the current zoom level
FINT currentFINTObj = new FINT();
currentFINTObj.setFINTStringParsed(fintParser
.isContourStringParsed());
currentFINTObj.setFINTStringParsed(fintParser.isContourStringParsed());
/*
* If the parse operation was successful, extract the numeric
* data and set the corresponding instance variables of
* currentFINTObj
*/
/*If the parse operation was successful, extract the numeric
*data and set the corresponding instance variables of currentFINTObj*/
if (currentFINTObj.isFINTStringParsed()) {
currentFINTObj.setFINTString(fillLevelStringsArray[index]);
currentFINTObj.setFillInterval(fintParser
.getContourInterval());
currentFINTObj.setMinFillValue(fintParser
.getMinContourLevel());
currentFINTObj.setMaxFillValue(fintParser
.getMaxContourLevel());
currentFINTObj.setFillValuesList(fintParser
.getContourValuesList());
currentFINTObj.setFintHashMap(fintParser
.getLabeledContourValuesHashMap());
Set<Double> tempKeySet = new LinkedHashSet<Double>(
currentFINTObj.fintHashMap.keySet());
currentFINTObj.setFillValuesList(new ArrayList<Double>(
tempKeySet));
currentFINTObj.setFillInterval(fintParser.getContourInterval());
currentFINTObj.setMinFillValue(fintParser.getMinContourLevel());
currentFINTObj.setMaxFillValue(fintParser.getMaxContourLevel());
currentFINTObj.setFillValuesList(fintParser.getContourValuesList());
currentFINTObj.setFintHashMap(fintParser.getLabeledContourValuesHashMap());
Set<Double> tempKeySet = new LinkedHashSet<Double>(currentFINTObj.fintHashMap.keySet());
currentFINTObj.setFillValuesList( new ArrayList<Double>(tempKeySet));
for(Double fillValue : tempKeySet){
currentFINTObj.fillValuesListAsString.add(fillValue
.toString());
currentFINTObj.fillValuesListAsString.add(fillValue.toString());
}
currentFINTObj.fillLabelList = new ArrayList<String>(
new LinkedHashSet<String>(
currentFINTObj.fintHashMap.values()));
currentFINTObj.fillLabelList = new ArrayList<String>( new LinkedHashSet<String>(currentFINTObj.fintHashMap.values()));
}
if(index == 0){
@ -576,8 +500,7 @@ public class FINT {
isParsed = isParsed & currentFINTObj.isFINTStringParsed();
}
// Sets the status of the parse operations across all zoom
// levels (i.e. for all FINT objects in the list)
//Sets the status of the parse operations across all zoom levels (i.e. for all FINT objects in the list)
this.setFINTStringParsed(isParsed);
//finally add currentFINTObj to the list of FINT objects
@ -586,4 +509,6 @@ public class FINT {
}
}
}

View file

@ -1,9 +1,11 @@
package gov.noaa.nws.ncep.gempak.parameters.marker;
import gov.noaa.nws.ncep.viz.localization.impl.LocalizationManager;
import gov.noaa.nws.ncep.viz.localization.NcPathManager;
import gov.noaa.nws.ncep.viz.localization.NcPathManager.NcPathConstants;
import gov.noaa.nws.ncep.viz.common.ui.color.GempakColor;
import gov.noaa.nws.ncep.viz.common.ui.GempakMarkerType;
import java.io.File;
import java.io.IOException;
import java.util.LinkedHashMap;
@ -74,10 +76,12 @@ public class MARKER {
if (markerAttributeString == null || markerAttributeString.trim().length() <= 0) return;
LinkedHashMap<Integer, String> markerTypeMaps = null;
String markerTypeTable = LocalizationManager.getInstance().getFilename("gempakMarkerType");
File markerTypeTable =
NcPathManager.getInstance().getStaticFile(
NcPathConstants.GEMPAK_MARKER_TYPE );
try {
markerTypeMaps = GempakMarkerType.loadMarkerTypes(markerTypeTable);
markerTypeMaps = GempakMarkerType.loadMarkerTypes(markerTypeTable.getAbsolutePath() );
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();

View file

@ -1,12 +1,10 @@
package gov.noaa.nws.ncep.gempak.parameters.marshaller.garea;
import gov.noaa.nws.ncep.gempak.parameters.marshaller.garea.station.Station;
import gov.noaa.nws.ncep.gempak.parameters.marshaller.garea.station.StationDataReader;
import java.util.List;
import java.util.Locale;
import java.util.regex.Pattern;
import gov.noaa.nws.ncep.gempak.parameters.marshaller.garea.station.*;
/**
* <pre>
*
@ -17,29 +15,23 @@ import java.util.regex.Pattern;
* 25-Sep-2009 171 Archana Initial Version
*
* </pre>
*
* @author Archana
* @version 1
*/
public class GraphicsAreaCoordinates {
protected double lowerLeftLat, lowerLeftLon, upperRightLat, upperRightLon;
protected double lowerLeftLat, lowerLeftLon, upperRightLat, upperRightLon;
protected double centerLat, centerLon, deltaLat, deltaLon;
private double defaultAndle1, defaultAngle2;
protected String geogAreaCode;
protected String station_code;
protected String mapProjectionStr;
protected String errorMessage;
protected boolean isGraphicsAreaStrValid;
public boolean isGraphicsAreaStrValid() {
return isGraphicsAreaStrValid;
}
@ -51,9 +43,7 @@ public class GraphicsAreaCoordinates {
protected boolean errorMsgSet;
private String graphicsAreaString;
private String geogFileName = "res/geog.xml";
private String stationFileName = "res/sfstns.xml";
/*
@ -87,8 +77,7 @@ public class GraphicsAreaCoordinates {
return centerLon;
}
public double getDefaultAngle1UsingGempakProjectionName(
String gempakProjectionName) {
public double getDefaultAngle1UsingGempakProjectionName(String gempakProjectionName) {
if("CED".equalsIgnoreCase(gempakProjectionName))
defaultAndle1 = 0.0;
else if("MCD".equalsIgnoreCase(gempakProjectionName))
@ -112,22 +101,20 @@ public class GraphicsAreaCoordinates {
else if("ORT".equalsIgnoreCase(gempakProjectionName))
defaultAndle1 = 0.0;
return defaultAndle1;
}
public double getDefaultAngle2UsingGempakProjectionName(
String gempakProjectionName) {
public double getDefaultAngle2UsingGempakProjectionName(String gempakProjectionName) {
if("UTM".equalsIgnoreCase(gempakProjectionName)) {
defaultAngle2 = 0.0;
} else {
defaultAngle2 = calculateAverageLongitude(lowerLeftLon,
upperRightLon);
defaultAngle2 = calculateAverageLongitude(lowerLeftLon, upperRightLon);
}
return defaultAngle2;
}
public double getDefaultAngle1UsingGeotoolsProjectionName(
String geotoolsProjectionName) {
public double getDefaultAngle1UsingGeotoolsProjectionName(String geotoolsProjectionName) {
if("Equidistant_Cylindrical".equalsIgnoreCase(geotoolsProjectionName))
defaultAndle1 = 0.0;
else if("Polar_Stereographic".equalsIgnoreCase(geotoolsProjectionName))
@ -138,11 +125,9 @@ public class GraphicsAreaCoordinates {
defaultAndle1 = 0.0;
else if("Transverse_Mercator".equalsIgnoreCase(geotoolsProjectionName))
defaultAndle1 = 0.0;
else if ("Lambert_Azimuthal_Equal_Area"
.equalsIgnoreCase(geotoolsProjectionName))
else if("Lambert_Azimuthal_Equal_Area".equalsIgnoreCase(geotoolsProjectionName))
defaultAndle1 = 0.0;
else if ("Lambert_Conformal_Conic_2SP"
.equalsIgnoreCase(geotoolsProjectionName))
else if("Lambert_Conformal_Conic_2SP".equalsIgnoreCase(geotoolsProjectionName))
defaultAndle1 = 30.0;
return defaultAndle1;
@ -162,58 +147,36 @@ public class GraphicsAreaCoordinates {
}
//*********************************************************************************************************
/*
* These variables retain the name of their Fortran counterparts in the file
* lcabnd.f They are used in the calculations of the zoom factor to update
* the Latitude/Longitude values, when a zoom-in/zoom-out option is
* specified along with either the area code from the geog table or the
* station code from the station table.
*/
/* These variables retain the name of their Fortran counterparts in the file lcabnd.f
They are used in the calculations of the zoom factor to update the Latitude/Longitude values,
when a zoom-in/zoom-out option is specified along with either the area code from the geog table or the
station code from the station table.*/
protected double zoomul=0;
protected int izoom=0, iartyp=-1;
protected float zmofst=0;
//*********************************************************************************************************
protected final String VALID_NUMBER = "-?\\d{0,3}\\.?\\d*";
protected final String EXTRA_ARGS = "Too many arguments entered";
protected final String LESS_NUM_ARGS = "Too few arguments entered";
protected final String INVALID_LAT_LON_VALUES = "Invalid lat/lon values entered";
protected final String INVALID_CENTER_DELTA_LON_VALUES = "center_lon - delta_lon should be >= -180.0 and center_lon + delta_lon should be <=360.0";
protected final String NEGATIVE_DELTA_LON = "Delta Longitude values cannot be negative";
protected final String INVALID_CENTER_DELTA_LAT_VALUES = "center_lat - delta_lat should be >= -90.0 and center_lat + delta_lat should be <=90.0";
protected final String NEGATIVE_DELTA_LAT = "Delta Latitude values cannot be negative";
protected final String INVALID_CENTER_LON = "Center Longtude can only take values between -180.00 to 180.00 or 0.00 to 360.00";
protected final String INVALID_CENTER_LAT ="Center Latitude can only take values between -90.00 and 90.00";
protected final String LL_LAT_GREATER_THAN_UR_LAT ="Lower left latitude must be less than or equal to upper right latitude";
protected final String LL_LON_GREATER_THAN_UR_LON = "Lower left longitude must be less than or equal to upper right longitude";
protected final String INVALID_UR_LON = "Upper Right Longitude can only take values between -180.00 to 180.00 or 0.00 to 360.00";
protected final String INVALID_UR_LAT = "Upper Right Latitude can only take values between -90.00 and 90.00";
protected final String INVALID_LL_LON = "Lower Left Longitude can only take values between -180.00 to 180.00 or 0.00 to 360.00";
protected final String INVALID_LL_LAT = "Lower Left Latitude can only take values between -90.00 and 90.00";
protected final String INVALID_STR = "Invalid String Format";
/**
* Overloaded constructor takes the GAREA string as input.
*
* @param s
*/
public GraphicsAreaCoordinates(String str) {
@ -232,8 +195,8 @@ public class GraphicsAreaCoordinates {
}
/**
* a helper method to indicate if the graphic area string starts with a
* valid Geog name in Geog Table
* a helper method to indicate if the graphic area string starts
* with a valid Geog name in Geog Table
*/
public boolean isValidGeogName() {
boolean isValid = false;
@ -243,8 +206,8 @@ public class GraphicsAreaCoordinates {
}
/**
* a helper method to indicate if the graphic area string starts with a
* valid station name in the Station table
* a helper method to indicate if the graphic area string starts
* with a valid station name in the Station table
*/
public boolean isValidStationName() {
boolean isValid = false;
@ -254,46 +217,46 @@ public class GraphicsAreaCoordinates {
}
/**
* a helper method to indicate if the graphic area string contains valid
* center and delta lat/lon values
* a helper method to indicate if the graphic area string contains
* valid center and delta lat/lon values
*/
public boolean isValidCenterDeltaLatLonValues() {
boolean isValid = false;
if (isGraphicsAreaStrValid && !isStringEmpty(graphicsAreaString)
&& graphicsAreaString.startsWith("#"))
if(isGraphicsAreaStrValid &&
!isStringEmpty(graphicsAreaString) &&
graphicsAreaString.startsWith("#"))
isValid = true;
return isValid;
}
/**
* a helper method to indicate if the graphic area string contains valid
* lower left and upper right lat/lon values
* a helper method to indicate if the graphic area string contains
* valid lower left and upper right lat/lon values
*/
public boolean isValidLowerLeftAndUpperRightLatLonValues() {
boolean isValid = false;
if (isGraphicsAreaStrValid && !isStringEmpty(graphicsAreaString)
&& !isValidCenterDeltaLatLonValues() && !isValidStationName()
&& !isValidGeogName())
if(isGraphicsAreaStrValid &&
!isStringEmpty(graphicsAreaString) &&
!isValidCenterDeltaLatLonValues() &&
!isValidStationName() &&
!isValidGeogName())
isValid = true;
return isValid;
}
/**
* @param s
* The method parseGraphicsAreaString() accepts as input a single
* string that denotes the graphics area coordinates in one of
* the formats listed below: #clta;clon;dlat;dlon - center
* latitude/longitude and the delta latitude/longitude values.
* lat1;lon1;lat2;lon2 - lower left latitude/longitude and upper
* right latitude/longitude values. GEOG - a geographical area
* code in the file geog.xml STN - a station code in the file
* station.xml For the ';' separated strings, after checking the
* validity of the input string, the function parses it into
* tokens to extract the latitude/longitude values. For the
* GEOG/STN codes, if it finds the corresponding record in the
* geog table or the station table, it retrieves the
* corresponding latitude/longitude values. Additionally, for the
* GEOG code, it also retrieves the map projection string.
* The method parseGraphicsAreaString() accepts as input a single string that denotes the graphics area coordinates
* in one of the formats listed below:
* #clta;clon;dlat;dlon - center latitude/longitude and the delta latitude/longitude values.
* lat1;lon1;lat2;lon2 - lower left latitude/longitude and upper right latitude/longitude values.
* GEOG - a geographical area code in the file geog.xml
* STN - a station code in the file station.xml
* For the ';' separated strings, after checking the validity of the input string, the function parses it
* into tokens to extract the latitude/longitude values.
* For the GEOG/STN codes, if it finds the corresponding record in the geog table or the station table,
* it retrieves the corresponding latitude/longitude values. Additionally, for the GEOG code,
* it also retrieves the map projection string.
* @return graphics_area_str_valid
*/
@ -316,23 +279,17 @@ public class GraphicsAreaCoordinates {
if(isGraphicsAreaStrValid){
setCenterDeltaLatLonValues(geogCodeStr);
isGraphicsAreaStrValid = validateCenterDeltaLatLonValues(
centerLat, centerLon, deltaLat, deltaLon);
isGraphicsAreaStrValid = validateCenterDeltaLatLonValues(centerLat,centerLon,deltaLat,deltaLon);
if(isGraphicsAreaStrValid){
calculateLLURLatLonFromCDLatLon(centerLat, centerLon,
deltaLat, deltaLon);
calculateLLURLatLonFromCDLatLon(centerLat, centerLon, deltaLat, deltaLon);
// The latitude/longitude values of the lower left and upper
// right coordinates are checked to ensure that
// they lie within the valid range and that the lower left
// latitude/longitude values
// The latitude/longitude values of the lower left and upper right coordinates are checked to ensure that
//they lie within the valid range and that the lower left latitude/longitude values
//are less than the upper right latitude/longitude values.
isGraphicsAreaStrValid = validateLowerUpperLatLonValues(
lowerLeftLat, lowerLeftLon, upperRightLat,
upperRightLon);
isGraphicsAreaStrValid = validateLowerUpperLatLonValues(lowerLeftLat,lowerLeftLon,upperRightLat,upperRightLon);
if(isGraphicsAreaStrValid){
errorMessage = "Valid String";
errorMsgSet = true;
@ -348,23 +305,20 @@ public class GraphicsAreaCoordinates {
// }
// }
} else {
}
else{
isGraphicsAreaStrValid = validateLatLonInputString(gAreaString);
if(isGraphicsAreaStrValid){
iartyp = 2;
setLowerUpperLatLonValues(gAreaString);
isGraphicsAreaStrValid = validateLowerUpperLatLonValues(
lowerLeftLat, lowerLeftLon, upperRightLat,
upperRightLon);
isGraphicsAreaStrValid = validateLowerUpperLatLonValues(lowerLeftLat, lowerLeftLon, upperRightLat, upperRightLon);
// The calculations for center_lat and center_lon are derived
// from lcabnd.f
//The calculations for center_lat and center_lon are derived from lcabnd.f
if(isGraphicsAreaStrValid){
centerLat = (lowerLeftLat+upperRightLat)/2;
centerLon = (lowerLeftLon+upperRightLon)/2;
isGraphicsAreaStrValid = validateCenterDeltaLatLonValues(
centerLat, centerLon, 0.0f, 0.0f);
isGraphicsAreaStrValid = validateCenterDeltaLatLonValues(centerLat, centerLon, 0.0f, 0.0f);
if(isGraphicsAreaStrValid){
errorMessage = "Valid String";
errorMsgSet = true;
@ -374,28 +328,21 @@ public class GraphicsAreaCoordinates {
else{
/*
* A suffix such as '+' or '*' character, when appended to the
* GEOG code or the STN code increases the extent of the area.
* On the other hand, appending a '-' character to the GEOG/STN
* code decreases the extent of the area. This suffix character
* is ignored and only the substring containing just the GEOG or
* STN code alone is considered for comparison with the data in
* the XML files.
*/
/* A suffix such as '+' or '*' character, when appended to the GEOG code or the STN code
increases the extent of the area. On the other hand, appending a '-' character to the GEOG/STN
code decreases the extent of the area. This suffix character is ignored and only the substring
containing just the GEOG or STN code alone is considered for comparison with the data in the XML files.*/
for(i=0;i<gAreaString.length();i++){
if (gAreaString.charAt(i) == '+'
|| gAreaString.charAt(i) == '*') {
if(gAreaString.charAt(i)== '+'|| gAreaString.charAt(i) == '*'){
izoom++;
gAreaString = gAreaString.replace(
gAreaString.charAt(i), ' ');
gAreaString = gAreaString.replace(gAreaString.charAt(i),' ');
}
if(gAreaString.charAt(i)== '-'){
izoom--;
gAreaString = gAreaString.replace(
gAreaString.charAt(i), ' ');
gAreaString = gAreaString.replace(gAreaString.charAt(i),' ');
}
}
@ -408,43 +355,37 @@ public class GraphicsAreaCoordinates {
try{
iartyp = searchGeogTable(geogCodeStr);
// GeographicalData geographicalData =
// searchGeogTable(geogCodeStr);
// GeographicalData geographicalData = searchGeogTable(geogCodeStr);
if(iartyp != 3){
// if(geographicalData == null) {
iartyp = searchStationTable(geogCodeStr);
if(iartyp==0){
isGraphicsAreaStrValid = false;
} else {
}
else{
if(izoom != 0){
deltaLat = (float)(4.0);
deltaLon = (float)(7.0);
lowerLeftLat = (float) (centerLat - zoomul
* deltaLat);
upperRightLat = (float) (centerLat + zoomul
* deltaLon);
lowerLeftLon = (float) (centerLon - zoomul
* deltaLon);
upperRightLon = (float) (centerLon + zoomul
* deltaLon);
lowerLeftLat = (float)(centerLat - zoomul*deltaLat);
upperRightLat = (float)(centerLat + zoomul*deltaLon);
lowerLeftLon = (float)(centerLon - zoomul*deltaLon);
upperRightLon = (float)(centerLon + zoomul*deltaLon);
}
isGraphicsAreaStrValid = true;
}
} else {
}
else{
if(izoom != 0){
zmofst = (float)((1.0 - zoomul)/2);
lowerLeftLat = lowerLeftLat
+ (upperRightLat - lowerLeftLat) * zmofst;
upperRightLat = upperRightLat
- (upperRightLat - lowerLeftLat) * zmofst;
lowerLeftLon = lowerLeftLon
+ (upperRightLon - lowerLeftLon) * zmofst;
upperRightLon = upperRightLon
- (upperRightLon - lowerLeftLon) * zmofst;
lowerLeftLat = lowerLeftLat + (upperRightLat-lowerLeftLat)*zmofst;
upperRightLat = upperRightLat - (upperRightLat-lowerLeftLat)*zmofst;
lowerLeftLon = lowerLeftLon + (upperRightLon-lowerLeftLon)*zmofst;
upperRightLon = upperRightLon - (upperRightLon-lowerLeftLon)*zmofst;
}
isGraphicsAreaStrValid = true;
}
} catch (Exception e) {
}
catch(Exception e){
e.printStackTrace();
}
@ -463,13 +404,14 @@ public class GraphicsAreaCoordinates {
// isGraphicsAreaStrValid = false;
// }
return isGraphicsAreaStrValid;
}
/**
* The logic of this method is taken from Fortran function PRNLON.f This
* method converts a longitude in degrees into degrees which fall within the
* range 180 to -180.
* The logic of this method is taken from Fortran function PRNLON.f
* This method converts a longitude in degrees into degrees which
* fall within the range 180 to -180.
*/
private double convertLongitudeValue(double longitudeValue) {
double convertedLonValue = longitudeValue;
@ -483,15 +425,11 @@ public class GraphicsAreaCoordinates {
/**
* This method calculate the average longitude for setting up projection.
* The logic is taken from Fortran function gammap.f
*
* @param lowerLeftLon
* , lower left longitude
* @param upperRightLon
* , upper right longitude
* @param lowerLeftLon, lower left longitude
* @param upperRightLon, upper right longitude
* @return average longitude for setting up projection
*/
private double calculateAverageLongitude(double lowerLeftLon,
double upperRightLon) {
private double calculateAverageLongitude(double lowerLeftLon, double upperRightLon) {
double averageLongitude = 0.0;
if(lowerLeftLon == upperRightLon)
averageLongitude = lowerLeftLon + 180.0;
@ -508,31 +446,26 @@ public class GraphicsAreaCoordinates {
}
private double truncateDoubleValue(double d) {
double truncatedNumber = d > 0 ? Math.floor(d * 1000) / 1000.0 : Math
.ceil(d * 1000) / 1000.0;
double truncatedNumber = d > 0 ? Math.floor(d*1000)/1000.0 :
Math.ceil(d*1000) / 1000.0;
return truncatedNumber;
}
/**
* The function searchGeogTable accepts as input a string 'code_str' that
* represents a code in the geog table and if the input string matches a
* code for the geographical area in the file geog.xml, the corresponding
* Latitude/Longitude values and the projection string are retrieved from
* the file.
*
* The function searchGeogTable accepts as input a string 'code_str' that represents a code in the geog table
* and if the input string matches a code for the geographical area in the file geog.xml,
* the corresponding Latitude/Longitude values and the projection string are retrieved from the file.
* @param code_str
* @return found
* @throws Exception
*/
public int searchGeogTable(String geogCode) throws Exception{
// public GeographicalData searchGeogTable(String geogCode) throws
// Exception{
// public GeographicalData searchGeogTable(String geogCode) throws Exception{
// GeographicalData geogData = null;
GeographicalDataReader geogDataReader = new GeographicalDataReader(
geogFileName);
List<GeographicalData> geographicalDataList = geogDataReader
.getGeographicalData();
GeographicalDataReader geogDataReader = new GeographicalDataReader(geogFileName);
List<GeographicalData> geographicalDataList = geogDataReader.getGeographicalData();
int found = 0;
for(GeographicalData currentGeogData : geographicalDataList){
@ -555,19 +488,17 @@ public class GraphicsAreaCoordinates {
}
/**
* The function searchStationTable accepts as input a string 'code_str'that
* represents a code in the station table and if the input string matches a
* code for the geographical area in the file sfstns.xml, the corresponding
* Latitude/Longitude values of the station are retrieved from the file.
*
* The function searchStationTable accepts as input a string 'code_str'that represents a code in the station table
* and if the input string matches a code for the geographical area in the file sfstns.xml,
* the corresponding Latitude/Longitude values of the station are retrieved from the file.
* @param code_str
* @return found
* @throws Exception
*/
public int searchStationTable(String geogCodeStr) throws Exception{
// public Station searchStationTable(String geogCodeStr) throws
// Exception{
// public Station searchStationTable(String geogCodeStr) throws Exception{
int found = 0;
// Station station = null;
StationDataReader stnDataReader = new StationDataReader(stationFileName);
@ -577,8 +508,7 @@ public class GraphicsAreaCoordinates {
if(currentStation.getStid().equals(geogCodeStr)){
station_code = currentStation.getStid();
// The center_lat and center_lon denote the Latitude/Longitude
// values of a point location - the station.
// The center_lat and center_lon denote the Latitude/Longitude values of a point location - the station.
centerLat = currentStation.getLatitude();
centerLon = currentStation.getLongitude();
@ -586,8 +516,8 @@ public class GraphicsAreaCoordinates {
* At this time, we use a hard coded value deltaLat = 4.0 and
* deltaLon = 7.0 temporarily to calculate lower left and upper
* right lat/lon values. The two hard coded values taken from
* lcabnd.f. I am not clear if the values are used correctly. M.
* Gao comments
* lcabnd.f. I am not clear if the values are used correctly.
* M. Gao comments
*/
calculateLLURLatLonFromCDLatLon(centerLat, centerLon,
(float)4.0, (float)7.0);
@ -601,9 +531,7 @@ public class GraphicsAreaCoordinates {
}
/**
* The function computeZoomMultiplier() is a private function to compute the
* zoom multiplier.
*
* The function computeZoomMultiplier() is a private function to compute the zoom multiplier.
* @param zoom_flag
* @return zm
*/
@ -619,11 +547,9 @@ public class GraphicsAreaCoordinates {
}
/**
* This function validateInputString() parses the input string 's' using the
* ';' as a delimiter and extracts 4 latitude/longitude values It then
* proceeds to check that each extracted token contains only a valid numeric
* value for the latitude(s) and the longitude(s).
*
* This function validateInputString() parses the input string 's' using the ';' as a delimiter and extracts 4 latitude/longitude values
* It then proceeds to check that each extracted token contains only a valid numeric value for the
* latitude(s) and the longitude(s).
* @param s
* @return flag
*/
@ -669,14 +595,13 @@ public class GraphicsAreaCoordinates {
return isValid;
}
/**
* The function validateLatLonValues() checks the accepted range of values
* for the input latitude/longitude coordinates. In case there is any
* discrepancy, the function sets an error message string to indicate the
* nature of the problem. Latitudes can range only from -90.00 to 90.00
* Longitude values can range only from -180.00 to 360.00 Delta
* latitude/longitude values cannot be negative.
*
* The function validateLatLonValues() checks the accepted range of values for the input latitude/longitude coordinates.
* In case there is any discrepancy, the function sets an error message string to indicate the nature of the problem.
* Latitudes can range only from -90.00 to 90.00
* Longitude values can range only from -180.00 to 360.00
* Delta latitude/longitude values cannot be negative.
* @param g_area_typ
* @param lat1
* @param lon1
@ -685,8 +610,7 @@ public class GraphicsAreaCoordinates {
* @return flag
*/
// private boolean validateLatLonValues(int g_area_typ, Float lat1, Float
// lon1, Float lat2, Float lon2){
// private boolean validateLatLonValues(int g_area_typ, Float lat1, Float lon1, Float lat2, Float lon2){
// boolean flag = false;
//
// if (g_area_typ == 1) {
@ -814,8 +738,7 @@ public class GraphicsAreaCoordinates {
//
// return flag;
// }
private boolean validateCenterDeltaLatLonValues(double _centerLat,
double _centerLon, double _deltalat, double _deltaLon) {
private boolean validateCenterDeltaLatLonValues(double _centerLat, double _centerLon, double _deltalat, double _deltaLon){
boolean flag = false;
if(_centerLat >= -90.0f && _centerLat <= 90.0){
@ -824,12 +747,12 @@ public class GraphicsAreaCoordinates {
if(_deltalat >= 0){
if(((_centerLat - _deltalat >= -90) && (_centerLat + _deltalat) <=90)){
if(_deltaLon >= 0) {
if ((_centerLon - _deltaLon >= -180)
&& (_centerLon + _deltaLon) <= 360) {
if ((_centerLon - _deltaLon >= -180) && (_centerLon + _deltaLon) <=360){
flag = true;
errorMessage = "Valid String";
errorMsgSet = true;
} else {
}
else{
flag = false;
errorMessage = INVALID_CENTER_DELTA_LON_VALUES;
errorMsgSet = true;
@ -838,13 +761,15 @@ public class GraphicsAreaCoordinates {
deltaLat = -1000.0f;
deltaLon = -1000.0f;
}
} else {
}
else{
errorMessage = NEGATIVE_DELTA_LON;
errorMsgSet = true;
deltaLon = -1000.0f;
flag = false;
}
} else {
}
else{
flag = false;
errorMessage = INVALID_CENTER_DELTA_LAT_VALUES;
errorMsgSet = true;
@ -853,20 +778,23 @@ public class GraphicsAreaCoordinates {
deltaLat = -1000.0f;
deltaLon = -1000.0f;
}
} else {
}
else{
errorMessage = NEGATIVE_DELTA_LAT;
errorMsgSet = true;
deltaLat = -1000.0f;
flag = false;
}
} else {
}
else{
errorMessage = INVALID_CENTER_LON;
errorMsgSet = true;
centerLon = -1000.0f;
flag = false;
}
} else {
}
else{
errorMessage = INVALID_CENTER_LAT;
errorMsgSet = true;
centerLat = -1000.0f;
@ -876,8 +804,7 @@ public class GraphicsAreaCoordinates {
return flag;
}
private boolean validateLowerUpperLatLonValues(double _lowerLat,
double _lowerLon, double _upperLat, double _upperLon) {
private boolean validateLowerUpperLatLonValues(double _lowerLat, double _lowerLon, double _upperLat, double _upperLon){
boolean flag = false;
if(_lowerLat >= -90.0f && _lowerLat <= 90.0){
@ -893,23 +820,20 @@ public class GraphicsAreaCoordinates {
flag = false;
}
else if (((_lowerLon <= 0 && _upperLon <= 0) || (_lowerLon >= 0 && _upperLon >= 0))
&& _lowerLon > _upperLon) {
else if(((_lowerLon<=0 && _upperLon<=0) || (_lowerLon>=0 && _upperLon>=0)) && _lowerLon > _upperLon){
this.errorMessage = LL_LON_GREATER_THAN_UR_LON;
errorMsgSet = true;
this.lowerLeftLon = -1000.0f;
this.upperRightLon = -1000.0f;
flag = false;
} else if ((_lowerLon > 0 && _upperLon < 0)
&& _lowerLon < _upperLon) {
} else if((_lowerLon>0 && _upperLon<0) && _lowerLon < _upperLon) {
this.errorMessage = LL_LON_GREATER_THAN_UR_LON;
errorMsgSet = true;
this.lowerLeftLon = -1000.0f;
this.upperRightLon = -1000.0f;
flag = false;
} else if (isLowerLeftPointSameAsUpperRightPoint(
_lowerLat, _lowerLon, _upperLat, _upperLon)) {
} else if(isLowerLeftPointSameAsUpperRightPoint(_lowerLat, _lowerLon, _upperLat, _upperLon)) {
this.errorMessage = "The lower left coordinate point is the same as the upper right coordinate point";
errorMsgSet = true;
this.lowerLeftLon = -1000.0f;
@ -921,25 +845,29 @@ public class GraphicsAreaCoordinates {
errorMsgSet = true;
}
} else {
}
else{
this.errorMessage = INVALID_UR_LON;
errorMsgSet = true;
this.upperRightLon = -1000.0f;
flag = false;
}
} else {
}
else{
this.errorMessage = INVALID_UR_LAT;
errorMsgSet = true;
this.upperRightLat = -1000.0f;
flag = false;
}
} else {
}
else{
this.errorMessage = INVALID_LL_LON;
errorMsgSet = true;
this.lowerLeftLon = -1000.0f;
flag = false;
}
} else {
}
else{
this.errorMessage = INVALID_LL_LAT;
errorMsgSet = true;
this.lowerLeftLat = -1000.0f;
@ -950,14 +878,12 @@ public class GraphicsAreaCoordinates {
return flag;
}
private boolean isLowerLeftPointSameAsUpperRightPoint(double _lowerLat,
double _lowerLon, double _upperLat, double _upperLon) {
private boolean isLowerLeftPointSameAsUpperRightPoint(double _lowerLat, double _lowerLon, double _upperLat, double _upperLon) {
boolean result = false;
if(_lowerLat == _upperLat && _lowerLon ==_upperLon)
result = true;
else if(isPole(_lowerLat, _upperLat)) {
if ((_lowerLon == 180 && _upperLon == -180)
|| (_lowerLon == 1180 && _upperLon == 180))
if((_lowerLon == 180 && _upperLon == -180) || (_lowerLon == 1180 && _upperLon == 180))
result = true;
}
@ -972,11 +898,9 @@ public class GraphicsAreaCoordinates {
}
/**
* The function getGeogAreaCode() returns the value of the geographical area
* code, which is retrieved only if the boolean flag graphics_area_str_valid
* is true and if the flag 'iartyp' is set to 3 (indicating that a geog code
* was entered)
*
* The function getGeogAreaCode() returns the value of the geographical area code, which is retrieved
* only if the boolean flag graphics_area_str_valid is true and if the flag 'iartyp' is set to 3
* (indicating that a geog code was entered)
* @return geog_area_code
*/
@ -991,11 +915,11 @@ public class GraphicsAreaCoordinates {
}
/**
* The function getMapProjectionString() retrieves the map projection
* string, only if the boolean flag graphics_area_str_valid is true and if
* the flag 'iartyp' is set to 3 (indicating that a geog code was entered)
*
* The function getMapProjectionString() retrieves the map projection string,
* only if the boolean flag graphics_area_str_valid is true and if the flag 'iartyp' is set to 3
* (indicating that a geog code was entered)
* @return map_proj_str
*/
@ -1010,11 +934,9 @@ public class GraphicsAreaCoordinates {
}
/**
* The function getStationCode() returns the value of the station code,
* which is retrieved only if the boolean flag graphics_area_str_valid is
* true and if the flag 'iartyp' is set to 4 (indicating that a station code
* was entered)
*
* The function getStationCode() returns the value of the station code, which is retrieved
* only if the boolean flag graphics_area_str_valid is true and if the flag 'iartyp' is set to 4
* (indicating that a station code was entered)
* @return station_code
*/
@ -1028,11 +950,8 @@ public class GraphicsAreaCoordinates {
}
}
/**
* The function isGraphicsAreaStringValid() returns the boolean data
* 'graphics_area_str_valid'.
*
* The function isGraphicsAreaStringValid() returns the boolean data 'graphics_area_str_valid'.
* @return graphics_area_str_valid
*/
@ -1041,9 +960,7 @@ public class GraphicsAreaCoordinates {
}
/**
* The function getErrorCode() returns the string 'error_message' that
* contains the error message.
*
* The function getErrorCode() returns the string 'error_message' that contains the error message.
* @return error_message
*/
@ -1053,12 +970,12 @@ public class GraphicsAreaCoordinates {
/**
* The function getGAREACoordinates() retrieves the Lower left/ Upper Right
* latitude/longitude values and the Center/Delta latitude/longitude values
* in a Float[] data called lat_lon_data.
*
* latitude/longitude values and the Center/Delta latitude/longitude values in a Float[]
* data called lat_lon_data.
* @return lat_lon_data
*/
public double[] getGAREACoordinates(){
double[] lat_lon_data = new double[6];
@ -1073,14 +990,11 @@ public class GraphicsAreaCoordinates {
}
/**
* The private function setLatLonValues() accepts as input a string
* containing the latitude/longitude values and a number that indicates
* whether the latitude/longitude values represent the Lower left/ Upper
* Right latitude/longitude values or the Center/Delta latitude/longitude
* values. Depending on the value of this number, it the splits the input
* string into 4 component string, extracts the floating point value and
* stores each value correspondingly.
*
* The private function setLatLonValues() accepts as input a string containing the latitude/longitude values
* and a number that indicates whether the latitude/longitude values represent the Lower left/ Upper Right
* latitude/longitude values or the Center/Delta latitude/longitude values. Depending on the value of
* this number, it the splits the input string into 4 component string, extracts the floating point value
* and stores each value correspondingly.
* @param s
* @param i
*/
@ -1103,31 +1017,26 @@ public class GraphicsAreaCoordinates {
private void setCenterDeltaLatLonValues(String latLonString){
String latLonTokens[] = latLonString.split(";");
centerLat = Double.valueOf(latLonTokens[0]).doubleValue();
centerLon = convertLongitudeValue(Double.valueOf(latLonTokens[1])
.doubleValue());
centerLon = convertLongitudeValue(Double.valueOf(latLonTokens[1]).doubleValue());
deltaLat = Double.valueOf(latLonTokens[2]).doubleValue();
deltaLon = convertLongitudeValue(Double.valueOf(latLonTokens[3])
.doubleValue());
deltaLon = convertLongitudeValue(Double.valueOf(latLonTokens[3]).doubleValue());
}
private void setLowerUpperLatLonValues(String latLonString){
String latLonTokens[] = latLonString.split(";");
lowerLeftLat = Double.valueOf(latLonTokens[0]).doubleValue();
lowerLeftLon = convertLongitudeValue(Double.valueOf(latLonTokens[1])
.doubleValue());
lowerLeftLon = convertLongitudeValue(Double.valueOf(latLonTokens[1]).doubleValue());
upperRightLat = Double.valueOf(latLonTokens[2]).doubleValue();
upperRightLon = convertLongitudeValue(Double.valueOf(latLonTokens[3])
.doubleValue());
upperRightLon = convertLongitudeValue(Double.valueOf(latLonTokens[3]).doubleValue());
}
/**
* The private function computeLLURLatLonFromCDLatLon() calculates the Lower
* left/ Upper Right latitude/longitude values from the given Center/Delta
* latitude/longitude values
* The private function computeLLURLatLonFromCDLatLon() calculates the Lower left/ Upper Right
* latitude/longitude values from the given Center/Delta latitude/longitude values
*/
private void calculateLLURLatLonFromCDLatLon(double centerLat,
double centerLon, double deltaLat, double deltaLon) {
private void calculateLLURLatLonFromCDLatLon(double centerLat, double centerLon,
double deltaLat, double deltaLon){
lowerLeftLat = centerLat - deltaLat;
lowerLeftLon = centerLon - deltaLon;
upperRightLat = centerLat + deltaLat;
@ -1135,3 +1044,5 @@ public class GraphicsAreaCoordinates {
}
}

View file

@ -23,9 +23,8 @@ Import-Package: com.raytheon.uf.common.dataplugin,
com.raytheon.uf.viz.core.rsc,
com.raytheon.viz.ui.jobs,
com.vividsolutions.jts.geom,
gov.noaa.nws.ncep.ui.pgen,
gov.noaa.nws.ncep.viz.common.ui,
gov.noaa.nws.ncep.viz.localization.impl,
gov.noaa.nws.ncep.viz.localization,
gov.noaa.nws.ncep.viz.overlays,
gov.noaa.nws.ncep.viz.resources.manager,
gov.noaa.nws.ncep.viz.ui.display,

View file

@ -9,7 +9,6 @@
name="Nctext">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.nctextui.rsc.NctextuiTool"
name="Nctextui Selecting">
</command>

View file

@ -30,6 +30,8 @@ import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
@ -633,6 +635,14 @@ public class NctextuiPaletteWindow extends ViewPart implements SelectionListener
GridData data = new GridData (SWT.FILL,SWT.FILL, true, true);
text.setLayoutData (data);
Font font = text.getFont();
FontData[] fontData = font.getFontData();
for (int i = 0; i < fontData.length; i++) {
//fontData[i].setHeight(12);
fontData[i].setName("courier");
}
Font newFont = new Font(font.getDevice(), fontData);
text.setFont(newFont);
}

View file

@ -14,70 +14,68 @@
*/
package gov.noaa.nws.ncep.ui.nctextui.rsc;
import gov.noaa.nws.ncep.ui.nctextui.dbutil.NctextStationInfo;
import gov.noaa.nws.ncep.ui.nctextui.palette.NctextuiPaletteWindow;
import gov.noaa.nws.ncep.ui.pgen.display.DisplayElementFactory;
import gov.noaa.nws.ncep.ui.pgen.display.IDisplayable;
import gov.noaa.nws.ncep.ui.pgen.elements.SymbolLocationSet;
import gov.noaa.nws.ncep.viz.localization.impl.LocalizationManager;
import gov.noaa.nws.ncep.viz.resources.manager.RbdBundle;
import gov.noaa.nws.ncep.viz.resources.manager.ResourceBndlLoader;
import gov.noaa.nws.ncep.viz.ui.display.NCMapEditor;
import gov.noaa.nws.ncep.viz.ui.display.NmapUiUtils;
import java.awt.Color;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.ArrayList;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IPerspectiveDescriptor;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PlatformUI;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import com.vividsolutions.jts.geom.Coordinate;
import com.raytheon.uf.viz.core.IGraphicsTarget;
import com.raytheon.uf.viz.core.PixelExtent;
import com.raytheon.uf.viz.core.VizApp;
import com.raytheon.uf.viz.core.drawables.IFont;
import com.raytheon.uf.viz.core.drawables.PaintProperties;
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.ResourceProperties;
import com.raytheon.uf.viz.core.exception.VizException;
import com.raytheon.viz.ui.EditorUtil;
import com.vividsolutions.jts.geom.Coordinate;
public class NctextuiResource extends
AbstractVizResource<NctextuiResourceData, MapDescriptor> {
import gov.noaa.nws.ncep.ui.nctextui.dbutil.NctextStationInfo;
import gov.noaa.nws.ncep.ui.pgen.display.DisplayElementFactory;
import gov.noaa.nws.ncep.ui.pgen.display.IDisplayable;
import gov.noaa.nws.ncep.ui.pgen.elements.SymbolLocationSet;
import gov.noaa.nws.ncep.viz.localization.NcPathManager;
import gov.noaa.nws.ncep.viz.localization.NcPathManager.NcPathConstants;
import gov.noaa.nws.ncep.viz.resources.manager.RbdBundle;
import gov.noaa.nws.ncep.viz.resources.manager.ResourceBndlLoader;
import gov.noaa.nws.ncep.viz.ui.display.NCMapEditor;
import gov.noaa.nws.ncep.viz.ui.display.NmapUiUtils;
import gov.noaa.nws.ncep.ui.nctextui.palette.NctextuiPaletteWindow;
public class NctextuiResource extends AbstractVizResource<NctextuiResourceData,MapDescriptor> {
private NctextuiResourceData nctextuiResourceData;
private static NctextuiResource nctextuiResource=null;
/** The set of symbols with similar attributes across many locations */
private SymbolLocationSet symbolSet = null;
private SymbolLocationSet pickedSymbolSet = null;
private static NCMapEditor mapEditor=null;
// private static int mapEditorNum=0;
private static NctextuiMouseHandler mouseHandler;
/*
* public static NCMapEditor getOrCreateMapEditor() { if(mapEditor== null)
* createMapEditor(); return mapEditor; }
*/
/*public static NCMapEditor getOrCreateMapEditor() {
if(mapEditor== null)
createMapEditor();
return mapEditor;
}*/
public static NCMapEditor getMapEditor() {
return mapEditor;
}
private List<NctextStationInfo> points = new ArrayList<NctextStationInfo>();
private List<NctextStationInfo> pickedStnPt = new ArrayList<NctextStationInfo>();
public List<NctextStationInfo> getPickedStnPt() {
@ -106,51 +104,44 @@ public class NctextuiResource extends
// create an editor MapEditor
if(mapEditor != null)
return;
File rbdFile = LocalizationManager.getInstance().getLocalizationFile(
"defaultRBDFile");
File rbdFile = NcPathManager.getInstance().getStaticFile(
NcPathConstants.DFLT_RBD );
try {
IEditorPart ep = EditorUtil.getActiveEditor();
if ( ep instanceof NCMapEditor ) {
mapEditor= (NCMapEditor) ep;
} else {
mapEditor = NmapUiUtils.createNatlCntrsEditor("BasicWX-US",
"NCTEXT");
}
else {
mapEditor = NmapUiUtils.createNatlCntrsEditor("BasicWX-US","NCTEXT" );
}
RbdBundle rbd = RbdBundle.unmarshalRBD( rbdFile, null );
rbd.setNcEditor(mapEditor);
rbd.setNcEditor( (NCMapEditor)mapEditor );
ResourceBndlLoader rbdLoader = new ResourceBndlLoader("DefaultMap");
rbdLoader.addRBD( rbd );
VizApp.runSync( rbdLoader );
// mapEditorNum = mapEditor.getEditorNum();
//register mouse handler
mouseHandler = getMouseHandler();
mapEditor.registerMouseHandler(mouseHandler);
// System.out.println("NctextuiPaletteWindow create editor "+
// mapEditor.toString());
} catch (Exception ve) {
System.out.println("Could not load initial editor: "
+ ve.getMessage());
mapEditor.registerMouseHandler((IInputHandler) mouseHandler );
//System.out.println("NctextuiPaletteWindow create editor "+ mapEditor.toString());
}
catch ( Exception ve ) {
System.out.println("Could not load initial editor: " + ve.getMessage());
ve.printStackTrace();
}
}
/**
* Create a new resource and add it to the current editor.
*
* @return the Resource
*/
private static NctextuiResource createNewResource(NCMapEditor mapEditor) {
if(mapEditor != null){
IMapDescriptor desc = (IMapDescriptor) mapEditor
.getActiveDisplayPane().getRenderableDisplay()
.getDescriptor();
nctextuiResource = new NctextuiResource(new NctextuiResourceData(),
new LoadProperties());
IMapDescriptor desc = (IMapDescriptor) mapEditor.getActiveDisplayPane().getRenderableDisplay().getDescriptor();
nctextuiResource = new NctextuiResource(new NctextuiResourceData(),new LoadProperties());
desc.getResourceList().add( nctextuiResource );
try {
nctextuiResource.init(mapEditor.getActiveDisplayPane()
.getTarget());
nctextuiResource.init( mapEditor.getActiveDisplayPane().getTarget());
} catch (VizException e) {
e.printStackTrace();
@ -161,21 +152,18 @@ public class NctextuiResource extends
return nctextuiResource;
}
public static NctextuiResource getNctextuiResource() {
if(nctextuiResource == null){
if(mapEditor == null )
createMapEditor();
//nctextuiResource = createNewResource(mapEditor);
if ( mapEditor != null) {
IMapDescriptor desc = (IMapDescriptor) mapEditor
.getActiveDisplayPane().getRenderableDisplay()
.getDescriptor();
IMapDescriptor desc = (IMapDescriptor) mapEditor.getActiveDisplayPane().getRenderableDisplay().getDescriptor();
try {
nctextuiResource = new NctextuiResource(
new NctextuiResourceData(), new LoadProperties());
nctextuiResource = new NctextuiResource(new NctextuiResourceData(),new LoadProperties());
desc.getResourceList().add( nctextuiResource );
nctextuiResource.init(mapEditor.getActiveDisplayPane()
.getTarget());
nctextuiResource.init( mapEditor.getActiveDisplayPane().getTarget());
} catch (Exception e) {
e.printStackTrace();
@ -196,7 +184,6 @@ public class NctextuiResource extends
/**
* Called when resource is disposed
*
* @see com.raytheon.viz.core.rsc.IVizResource#dispose()
*/
@Override
@ -206,15 +193,11 @@ public class NctextuiResource extends
mapEditor.unregisterMouseHandler( mouseHandler );
mouseHandler = null;
//close editor
// if((PlatformUI.getWorkbench()!=
// null)&&(PlatformUI.getWorkbench().getActiveWorkbenchWindow()!=
// null)
// &&
// (PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()!=null)){
// if((PlatformUI.getWorkbench()!= null)&&(PlatformUI.getWorkbench().getActiveWorkbenchWindow()!= null)
// && (PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()!=null)){
//System.out.println("NctextuiResource:disposeInternal close map editor");
// PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().closeEditor(mapEditor,
// false);
// PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().closeEditor(mapEditor, false);
// }
mapEditor = null;
// mapEditorNum=0;
@ -227,42 +210,38 @@ public class NctextuiResource extends
public void propertiesChanged(ResourceProperties updatedProps) {
if ( updatedProps.isVisible() ) {
reopenTextView ();
} else {
}
else {
hideTextView ();
}
}
private void hideTextView () {
IWorkbenchPage wpage = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage();
IWorkbenchPage wpage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IViewPart vpart = wpage.findView( "gov.noaa.nws.ncep.ui.NCTEXTUI" );
if ( wpage.isPartVisible(vpart) ) {
NctextuiPaletteWindow paletteWin = NctextuiPaletteWindow
.getAccess();
NctextuiPaletteWindow paletteWin = NctextuiPaletteWindow.getAccess();
paletteWin.setEditorVisible(false);
wpage.hideView(vpart);
}
}
private void closeTextView () {
IWorkbenchPage wpage = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage();
IWorkbenchPage wpage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
if(wpage!= null){
IViewPart vpart = wpage.findView( "gov.noaa.nws.ncep.ui.NCTEXTUI" );
wpage.hideView(vpart);
}
NmapUiUtils.setPanningMode();
}
private void reopenTextView () {
IWorkbenchPage wpage = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage();
IWorkbenchPage wpage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IViewPart vpart = wpage.findView( "gov.noaa.nws.ncep.ui.NCTEXTUI" );
if ( !wpage.isPartVisible(vpart) ) {
NctextuiPaletteWindow paletteWin = NctextuiPaletteWindow
.getAccess();
NctextuiPaletteWindow paletteWin = NctextuiPaletteWindow.getAccess();
paletteWin.setEditorVisible(true);
try {
vpart = wpage.showView( "gov.noaa.nws.ncep.ui.NCTEXTUI" );
@ -272,11 +251,8 @@ public class NctextuiResource extends
}
}
/*
* (non-Javadoc)
*
* @see
* com.raytheon.viz.core.rsc.IVizResource#getCoordinateReferenceSystem()
/* (non-Javadoc)
* @see com.raytheon.viz.core.rsc.IVizResource#getCoordinateReferenceSystem()
*/
public CoordinateReferenceSystem getCoordinateReferenceSystem() {
@ -287,9 +263,7 @@ public class NctextuiResource extends
}
/*
* (non-Javadoc)
*
/* (non-Javadoc)
* @see com.raytheon.viz.core.rsc.IVizResource#getName()
*/
@Override
@ -299,9 +273,8 @@ public class NctextuiResource extends
}
/*
* (non-Javadoc)
*
/* (non-Javadoc)
* @see com.raytheon.viz.core.rsc.IVizResource#getShortName()
*/
public String getShortName() {
@ -310,23 +283,16 @@ public class NctextuiResource extends
}
/*
* (non-Javadoc)
*
* @see com.raytheon.viz.core.rsc.IVizResource#init(com.raytheon.viz.core.
* IGraphicsTarget)
/* (non-Javadoc)
* @see com.raytheon.viz.core.rsc.IVizResource#init(com.raytheon.viz.core.IGraphicsTarget)
*/
@Override
public void initInternal(IGraphicsTarget target) throws VizException {
//System.out.println("NctextuiResource:initInternal");
}
/*
* (non-Javadoc)
*
* @see
* com.raytheon.viz.core.rsc.IVizResource#isApplicable(com.raytheon.viz.
* core.PixelExtent)
/* (non-Javadoc)
* @see com.raytheon.viz.core.rsc.IVizResource#isApplicable(com.raytheon.viz.core.PixelExtent)
*/
public boolean isApplicable(PixelExtent extent) {
@ -334,20 +300,19 @@ public class NctextuiResource extends
}
private void generateSymbolForDrawing() {
private void generateSymbolForDrawing()
{
String type;
float lineWidth = nctextuiResourceData.getMarkerWidth();
Boolean clear = false;
;
Boolean clear= false;;
String category = new String("Marker");
double sizeScale = nctextuiResourceData.getMarkerSize();
// NctextuiPaletteWindow nctextuiPaletteWindow =
// NctextuiPaletteWindow.getAccess();
//NctextuiPaletteWindow nctextuiPaletteWindow = NctextuiPaletteWindow.getAccess();
if (points.isEmpty() == true) {
symbolSet = null;
} else {
// SymbolLocationSet constructor requires a positive-length array of
// Coordinate
}
else {
// SymbolLocationSet constructor requires a positive-length array of Coordinate
Coordinate[] locations = new Coordinate[points.size()];
//System.out.println( "generateSymbolSet: size ="+ points.size());
@ -358,27 +323,34 @@ public class NctextuiResource extends
lat = p.getLatitude();
locations[i++] = new Coordinate(lon,lat);
}
Color[] colors = new Color[] { new Color(
nctextuiResourceData.getColor().red,
Color[] colors = new Color[] {new Color(nctextuiResourceData.getColor().red,
nctextuiResourceData.getColor().green,
nctextuiResourceData.getColor().blue)};
type = nctextuiResourceData.getMarkerType().toString();
//System.out.println( "generateSymbolSet done size ="+ i);
symbolSet = new SymbolLocationSet(null, colors, lineWidth,
sizeScale, clear, locations, category, type);
symbolSet = new SymbolLocationSet (
null,
colors,
lineWidth,
sizeScale,
clear,
locations,
category,
type);
}
if (pickedStnPt.isEmpty() == true) {
pickedSymbolSet = null;
} else {
// SymbolLocationSet constructor requires a positive-length array of
// Coordinate
}
else {
// SymbolLocationSet constructor requires a positive-length array of Coordinate
Coordinate[] locations = new Coordinate[pickedStnPt.size()];
// System.out.println( "generatePickedSymbolSet: size ="+
// pickedStnPt.size());
//System.out.println( "generatePickedSymbolSet: size ="+ pickedStnPt.size());
int i = 0;
for (NctextStationInfo p : pickedStnPt) {
double lon, lat;
@ -387,64 +359,71 @@ public class NctextuiResource extends
locations[i++] = new Coordinate(lon,lat);
}
Color[] colors = new Color[] { new Color(
nctextuiResourceData.getPkStncolor().red,
Color[] colors = new Color[] {new Color(nctextuiResourceData.getPkStncolor().red,
nctextuiResourceData.getPkStncolor().green,
nctextuiResourceData.getPkStncolor().blue)};
type = nctextuiResourceData.getPkStnmarkerType().toString();
pickedSymbolSet = new SymbolLocationSet(null, colors, lineWidth,
sizeScale, clear, locations, category, type);
pickedSymbolSet = new SymbolLocationSet (
null,
colors,
lineWidth,
sizeScale,
clear,
locations,
category,
type);
}
}
/*
* (non-Javadoc)
*
* @see
* com.raytheon.viz.core.drawables.IRenderable#paint(com.raytheon.viz.core
* .IGraphicsTarget, com.raytheon.viz.core.drawables.PaintProperties)
/* (non-Javadoc)
* @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 {
//System.out.println("paintInternal called!");
IFont font = target.initializeFont("Monospace",
(12 * nctextuiResourceData.getMarkerTextSize()
.getSoftwareSize()), null);
(float) (12 * nctextuiResourceData.getMarkerTextSize().getSoftwareSize()), null);
generateSymbolForDrawing();
if (symbolSet != null) {
if (symbolSet != null)
{
DisplayElementFactory df = new DisplayElementFactory(target,
this.descriptor);
ArrayList<IDisplayable> elements = df.createDisplayElements(
symbolSet, paintProps);
for (IDisplayable each : elements) {
DisplayElementFactory df = new DisplayElementFactory (target, this.descriptor);
ArrayList<IDisplayable> elements = df.createDisplayElements(symbolSet, paintProps);
for (IDisplayable each : elements)
{
try {
each.draw(target);
each.dispose();
} catch (Exception e) {
}
catch (Exception e) {
//e.printStackTrace();
//System.out.println("paintInternal caught draw exception!");
}
}
}
if (pickedSymbolSet != null) {
if (pickedSymbolSet != null)
{
DisplayElementFactory df = new DisplayElementFactory(target,
this.descriptor);
ArrayList<IDisplayable> elements = df.createDisplayElements(
pickedSymbolSet, paintProps);
for (IDisplayable each : elements) {
DisplayElementFactory df = new DisplayElementFactory (target, this.descriptor);
ArrayList<IDisplayable> elements = df.createDisplayElements(pickedSymbolSet, paintProps);
for (IDisplayable each : elements)
{
try {
each.draw(target);
each.dispose();
} catch (Exception e) {
}
catch (Exception e) {
//e.printStackTrace();
//System.out.println("paintInternal caught draw exception on pickedSymbolSet!");
@ -454,12 +433,11 @@ public class NctextuiResource extends
font.dispose();
}
/*
* (non-Javadoc)
*
* @see
* com.raytheon.viz.core.rsc.capabilities.IProjectableResource#isProjectable
* (org.opengis.referencing.crs.CoordinateReferenceSystem)
/* (non-Javadoc)
* @see com.raytheon.viz.core.rsc.capabilities.IProjectableResource#isProjectable(org.opengis.referencing.crs.CoordinateReferenceSystem)
*/
public boolean isProjectable(CoordinateReferenceSystem mapData) {
@ -467,18 +445,13 @@ public class NctextuiResource extends
}
/*
* (non-Javadoc)
*
* @see
* com.raytheon.viz.core.rsc.capabilities.IProjectableResource#project(org
* .opengis.referencing.crs.CoordinateReferenceSystem)
/* (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 ");
}
private static NctextuiMouseHandler getMouseHandler() {
if ( mouseHandler == null ) {
@ -492,3 +465,4 @@ public class NctextuiResource extends
}
}

View file

@ -2,5 +2,6 @@
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View file

@ -2,5 +2,6 @@
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View file

@ -2,5 +2,6 @@
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>

0
ncep/gov.noaa.nws.ncep.ui.nsharp/BigNsharp/INSTALL Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/BigNsharp/Makefile.64 Normal file → Executable file
View file

View file

View file

View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/BigNsharp/SNDG Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/BigNsharp/Sharp95 Normal file → Executable file
View file

View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/BigNsharp/freako Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/BigNsharp/gemglb.nts Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/BigNsharp/last.nts Normal file → Executable file
View file

File diff suppressed because it is too large Load diff

View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/BigNsharp/rlt.script Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/BigNsharp/sfcmap.out Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/BigNsharp/siglist.txt Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/BigNsharp/sncmn.cmn Normal file → Executable file
View file

7
ncep/gov.noaa.nws.ncep.ui.nsharp/BigNsharp/so_new.csh Normal file → Executable file
View file

@ -15,7 +15,7 @@
# (in ~/.alias)
#
$RM *.o glibnsharp.so
$RM *.o glibnsharp.so Sndglib/*.o
set myLinkflags = "-L$AWIPS2/tools/lib -shared -Wl,-soname,libbignsharp.so -o libbignsharp.so"
set myLinktail = "-lg2c -lc $XLIBS -lz -lm"
@ -40,7 +40,7 @@ echo " "
#
set myLibs = "./libsndg.a $OS_LIB/ginitp_alt.o $OS_LIB/gendp_alt.o $OS_LIB/libsnlist.a $OS_LIB/libsnlib.a $OS_LIB/libsflist.a $OS_LIB/libsflib.a $OS_LIB/libnxmlib.a $OS_LIB/libdiaglib.a $OS_LIB/libgemlib.a $OS_LIB/libprmcnvlib.a $OS_LIB/libgridlib.a $OS_LIB/libgplt.a $OS_LIB/libgridlib.a $OS_LIB/libcgemlib.a $OS_LIB/libdevice.a $OS_LIB/libxwp.a $OS_LIB/libxw.a $OS_LIB/libps.a $OS_LIB/libgn.a $OS_LIB/libgemlib.a $OS_LIB/libnetcdf.a $OS_LIB/libtextlib.a $OS_LIB/libxml2.a $OS_LIB/libxslt.a $OS_LIB/libiconv.a $OS_LIB/libbz2.a"
set myLibs = "$OS_LIB/ginitp_alt.o $OS_LIB/gendp_alt.o $OS_LIB/libsnlist.a $OS_LIB/libsnlib.a $OS_LIB/libsflist.a $OS_LIB/libsflib.a $OS_LIB/libnxmlib.a $OS_LIB/libdiaglib.a $OS_LIB/libgemlib.a $OS_LIB/libprmcnvlib.a $OS_LIB/libgridlib.a $OS_LIB/libgplt.a $OS_LIB/libgridlib.a $OS_LIB/libcgemlib.a $OS_LIB/libdevice.a $OS_LIB/libxwp.a $OS_LIB/libxw.a $OS_LIB/libps.a $OS_LIB/libgn.a $OS_LIB/libgemlib.a $OS_LIB/libnetcdf.a $OS_LIB/libtextlib.a $OS_LIB/libxml2.a $OS_LIB/libxslt.a $OS_LIB/libiconv.a $OS_LIB/libbz2.a"
@ -50,7 +50,7 @@ set myLibs = "./libsndg.a $OS_LIB/ginitp_alt.o $OS_LIB/gendp_alt.o $OS_LIB/libsn
#
echo "Compiling C program... "
echo " "
$CC $myCflags *.c
$CC $myCflags *.c Sndglib/*.c
#
# Compile all Fortran programs
@ -74,6 +74,7 @@ if ( $check == "libbignsharp.so") then
echo "****** Shared library is created ******\n "
echo " "
cp libbignsharp.so $DEV_BASE/workspace/build.cave/static/common/cave/caveEnvironment/lib
cp libbignsharp.so $DEV_BASE/workspace/gov.noaa.nws.ncep.ui.nsharp.linux32
else
echo "****** Houston, we got problems ******\n "
endif

View file

@ -1,939 +0,0 @@
FILENAME CAT MLMIXR ML CAPE ML CIN MLCL(MAGL) 0-1SRH 0-6KT STPC 500 T (C) 500DIR 7-5 LR 0-3(KT) 0-9(KT) 0-3 KM SRH (M2/S2)
00042320.TXK 2 12.9 1702 -1 657 134 61.7 2.3 -14.0 250 6.5 32.8 76.6 166
00042001.PPF 2 13.5 2614 -50 1216 227 59.9 4.7 -12.9 234 7.5 39.7 73.5 244
00032900.FTW 2 13.1 2058 -42 1069 83 49.7 1.3 -15.2 245 8.0 21.9 87.1 126
00032304.SJT 2 11.9 1680 -119 896 119 61.1 1.1 -15.5 212 9.1 38.4 66.9 217
00031622.ATT 2 9.4 1019 -7 1566 12 45.8 0.0 -17.5 249 8.0 34.4 53.7 159
00021323.LRF 2 9.2 1256 -9 1066 82 46.9 0.8 -21.2 249 7.5 32.3 51.4 114
00010323.MEI 2 13.4 1148 -15 769 241 57.2 2.6 -10.0 226 6.1 38.8 71.2 288
00010319.GWO 2 12.8 1168 -9 770 202 66.4 2.4 -13.0 223 7.5 47.3 75.1 246
03050500.UMN 2 13.8 2392 -10 773 341 66.3 8.2 -13.4 237 7.7 49.1 93.8 411
03050500.JBR 2 15.7 2713 -22 862 266 57.8 6.9 -10.7 240 7.1 50.5 82.9 440
03050421.TUL 2 16.1 3621 -15 843 147 63.1 5.3 -11.7 230 7.3 45.6 100.2 160
03050421.MKC 2 13.7 2002 -67 478 479 68.4 8.5 -14.6 224 7.9 48.1 89.8 508
03050420.P#F 2 15.7 3397 -1 660 166 58.5 5.5 -12.7 230 7.8 34.3 100.9 195
03050321.P#T 2 12.7 3156 -2 1967 61 36.2 0.0 -9.8 247 7.5 27.2 67.1 207
03042503.JAN 2 13.5 2568 -27 924 257 44.3 4.9 -15.4 255 7.7 41.1 76.9 279
03041922.PNC 2 11.5 1157 -40 665 212 87.9 2.5 -17.9 223 7.3 46.5 111.5 242
03041523.CDS 2 10.7 1020 -106 1534 326 74.0 1.0 -12.4 234 7.5 56.1 83.8 531
03041522.LBB 2 8.8 883 -53 1986 116 77.2 0.0 -11.7 243 7.5 48.5 87.4 276
03040702.CLN 2 13.1 488 -133 780 363 62.7 0.8 -11.4 244 7.1 33.6 74.1 411
03040623.ESF 2 15.8 1847 -29 621 166 51.8 2.6 -11.0 246 6.8 26.8 50.8 161
03032722.MIA 2 12.4 299 -31 1074 187 48.8 0.4 -10.5 261 5.8 20.5 87.0 197
01061900.ROS 2 13.6 2218 -30 1076 140 67.7 2.9 -11.1 250 8.2 40.5 73.6 279
01061401.LNK 2 17.2 4665 -15 1190 173 39.2 4.3 -10.5 215 8.3 32.6 50.7 217
01061120.ILL 2 14.7 3400 -120 1255 270 56.1 3.4 -10.8 259 8.6 41.9 54.8 448
01060222.LOZ 2 9.7 164 -10 898 117 51.4 0.2 -13.4 270 5.3 39.8 66.8 189
01053000.AMA 2 13.0 2887 -76 1322 166 48.4 2.2 -10.1 246 8.4 38.6 50.6 216
01052902.LHX 2 10.9 1698 -120 1285 185 52.1 1.0 -10.0 251 8.2 38.9 60.5 365
01052118.OZW 2 12.5 494 -2 775 133 33.4 0.4 -10.3 188 5.6 34.2 36.9 174
01052022.MIN 2 16.9 3331 -2 711 122 47.8 3.2 -11.0 244 7.3 36.0 67.7 201
01051022.MIW 2 12.8 2912 -24 1091 65 36.4 1.0 -16.0 255 7.9 28.8 43.0 141
01051001.FBL 2 9.5 2106 -90 1776 330 50.0 1.0 -16.6 265 8.2 42.9 50.3 516
01050200.AUM 2 11.2 1434 -74 1331 179 38.8 0.9 -13.3 251 7.5 36.0 52.3 237
01042202.GBD 2 12.6 2145 -40 777 165 61.8 3.5 -13.6 229 7.8 41.6 62.6 328
01041423.P28 2 12.3 2168 -54 827 145 76.4 3.1 -16.2 256 8.3 45.0 89.5 235
01041117.LWD 2 11.9 968 -3 632 282 77.0 2.7 -15.1 208 7.5 38.2 81.4 327
01040918.BVI 2 10.7 1326 -11 1210 102 57.2 1.0 -15.4 266 7.7 32.1 32.1 174
01022422.SGT 2 11.8 1020 -15 967 335 52.8 3.0 -14.3 213 7.7 53.6 64.9 450
00110820.HEZ 2 15.9 2158 -6 881 236 47.1 4.0 -8.5 204 6.2 29.0 68.5 266
00103122.HLC 2 11.0 1274 -14 954 110 47.4 1.1 -14.1 202 7.4 32.6 74.4 169
00092022.DAY 2 13.9 1299 -7 971 215 63.4 2.8 -8.2 237 6.1 37.5 61.0 237
00072601.OTG 2 14.5 2869 -49 1055 88 42.5 1.7 -12.6 290 7.2 33.4 41.3 161
00072523.RWF 2 14.6 2791 -13 1068 96 39.4 1.6 -12.0 275 7.0 29.2 35.8 163
00071122.BKX 2 14.7 1167 -47 944 134 42.8 1.1 -7.8 261 6.8 27.2 67.9 205
00070601.SNY 2 13.6 2847 -18 1681 52 57.5 0.5 -7.4 248 8.1 19.0 74.4 122
00052319.BWG 2 13.7 2114 -41 1128 167 38.6 2.0 -11.4 294 6.9 36.9 62.8 278
00051722.LXN 2 14.0 3552 -16 910 111 27.5 1.8 -13.9 169 8.4 28.1 44.5 170
00051200.ALO 2 16.5 4382 -13 1110 168 51.1 5.6 -7.9 254 6.7 33.2 51.6 199
00050101.MWL 2 13.0 2207 -103 1176 253 47.3 2.4 -12.4 227 8.2 40.3 37.8 297
00042323.SHV 2 13.4 2001 -19 928 216 58.9 4.2 -13.0 261 6.7 41.9 60.0 296
04051923.GFK 2 11.2 967 -44 828 233 54.9 2.1 -16.6 243 7.2 39.5 86.1 229
04051302.ICT 2 15.9 3157 -12 538 223 36.4 4.3 -9.4 232 6.4 23.8 51.5 245
04051101.LIC 2 9.0 1549 -59 1592 233 43.4 1.0 -11.5 244 8.4 35.1 46.6 395
04042022.PIA 2 12.4 1852 -11 728 320 36.4 3.6 -14.7 235 6.2 38.5 40.1 488
04032718.DDC 2 10.0 1332 -8 893 190 41.4 1.7 -16.6 206 7.5 30.8 47.5 198
04030418.ABI 2 10.7 626 -20 1108 319 46.5 1.4 -13.7 196 7.0 40.3 84.2 350
03111718.HOU 2 16.4 1980 -1 445 137 48.2 2.2 -12.4 207 6.6 24.0 77.0 158
03111223.MFD 2 8.3 64 -56 890 219 99.1 0.1 -15.7 261 5.7 55.1 123.1 275
03111220.MIE 2 9.7 388 -1 757 123 91.0 0.5 -15.6 258 5.7 47.1 117.3 205
03082201.JXN 2 17.2 3046 -36 1091 255 31.0 3.6 -5.9 285 6.6 34.4 33.2 304
03072122.AVP 2 14.3 1810 -16 1228 162 51.1 1.9 -7.9 239 5.6 45.7 49.9 148
03072104.CID 2 17.8 2344 -22 462 187 48.9 3.6 -7.0 291 7.0 34.2 63.6 237
03072101.ALO 2 15.0 1859 -107 921 156 49.6 1.5 -8.0 297 7.0 28.2 58.2 248
03062500.HON 2 17.0 3737 -23 1021 335 52.2 10.7 -7.4 227 7.5 43.4 61.6 550
03062422.MHE 2 19.5 5088 -22 717 256 55.5 12.1 -8.0 228 7.9 40.9 58.4 422
03062421.MHE 2 17.5 3584 -16 768 252 56.0 8.4 -7.9 220 7.8 38.8 57.2 348
03062302.P#8 2 16.8 3414 -169 1003 367 38.7 1.7 -6.8 227 7.6 30.2 57.1 437
03062223.P#8 2 17.7 4366 -39 972 253 38.8 7.2 -8.3 246 8.6 34.3 54.7 387
03061001.P#9 2 12.6 2103 -97 1467 421 51.0 2.8 -11.2 266 7.9 45.5 63.9 651
03053103.CMI 2 12.6 701 -119 899 482 64.7 1.8 -11.6 292 6.3 36.9 85.1 523
03053101.ILX 2 12.4 784 -55 1108 474 76.0 3.2 -8.5 294 5.0 45.0 90.9 524
03051100.UIN 2 14.7 2093 -27 738 302 63.1 6.3 -11.7 240 7.7 43.7 97.9 354
03051004.C34 2 17.3 3493 -14 749 452 53.6 14.1 -8.8 228 7.7 32.1 77.0 511
03050923.HBR 2 11.1 1389 -64 2135 137 56.8 0.0 -9.1 231 7.7 35.8 78.1 219
03050900.C30 2 14.6 1749 -112 819 321 69.8 3.3 -8.9 227 6.8 57.0 72.2 306
03050823.C34 2 17.9 3605 -25 669 342 65.2 12.3 -7.2 233 7.1 42.3 72.0 318
03050822.W#N 2 17.4 3730 -13 635 141 70.0 5.3 -10.1 228 7.6 45.5 81.3 173
03050821.LW1 2 19.1 5309 -6 876 145 63.2 7.7 -8.7 235 7.4 31.6 71.3 182
03050807.ADM 2 17.1 3114 -53 730 439 47.4 10.6 -9.3 253 8.0 50.2 61.5 608
03050805.SPS 2 16.0 2409 -148 836 382 44.4 2.4 -9.1 262 7.9 43.1 59.0 798
03050703.PAH 2 15.8 2873 -49 602 390 36.8 6.9 -13.6 237 7.9 35.3 70.1 454
03050701.CGI 2 15.1 2935 -47 799 431 61.0 12.6 -14.4 269 7.8 32.8 83.2 580
03050504.MKL 2 15.6 2334 -16 833 615 59.6 14.3 -9.9 251 7.1 62.0 77.1 842
03050501.LZK 2 15.9 2390 -18 719 361 67.0 8.6 -11.0 237 7.4 41.7 97.3 397
99120301.GOK 2 10.2 1811 -12 858 234 47.2 3.3 -21.1 202 8.2 32.4 63.0 262
99081601.JMS 2 13.6 1255 -165 1044 130 48.5 0.3 -9.9 240 8.1 30.2 89.4 174
99070900.ONA 2 18.4 3379 -18 992 385 46.0 10.0 -5.8 275 6.5 42.9 49.4 571
99070400.OSC 2 15.9 1760 -27 1078 101 26.7 0.7 -6.7 320 6.2 28.3 31.6 163
99060620.HCO 2 14.6 3241 -5 904 65 29.6 1.0 -16.1 175 8.1 26.8 70.8 115
99060500.IEN 2 12.1 2533 -37 1323 70 52.4 1.0 -11.4 201 8.2 32.9 60.1 191
99060400.HLC 2 15.7 4348 -16 1101 154 38.3 3.9 -9.3 240 7.5 36.9 40.6 277
99060200.TBN 2 14.9 2338 -19 838 136 37.3 2.0 -10.3 259 6.5 40.0 21.6 223
99060123.MKO 2 17.3 3739 0 888 68 38.1 1.6 -10.6 279 7.9 32.2 23.0 135
99060100.LIC 2 9.1 1877 -49 1439 56 56.8 0.6 -13.7 249 9.2 34.3 62.4 140
99051621.OMA 2 16.1 4691 0 824 102 38.6 3.1 -14.5 223 8.8 33.7 41.5 176
99051122.BMQ 2 15.0 3545 -92 1026 40 35.1 0.6 -12.3 259 8.0 21.8 29.6 59
99050408.JCT 2 13.0 2082 -218 838 355 55.0 0.0 -11.2 254 8.3 46.8 58.7 506
99050402.GOK 2 13.9 3154 -61 723 366 51.4 9.2 -14.6 240 8.2 36.8 57.5 441
99050401.ICT 2 12.6 2748 -7 1016 257 31.8 3.7 -14.7 227 7.9 40.5 70.4 415
99050323.OKC 2 15.2 4117 -15 733 308 43.5 9.2 -13.2 243 7.8 43.2 70.1 401
99050300.HSI 2 8.0 203 -4 845 168 41.5 0.2 -17.7 222 6.7 28.6 32.1 221
99042200.END 2 12.7 3301 -34 1156 225 46.1 4.8 -15.4 236 8.1 35.1 48.2 242
04082700.RDD 2 18.4 3706 -37 940 184 41.0 4.7 -6.9 255 7.1 28.7 60.7 258
04071823.GFK 2 16.7 3575 -36 1246 117 45.4 2.4 -7.9 310 6.8 35.1 45.5 292
04071302.GRI 2 15.9 3090 -197 1538 152 29.0 0.0 -7.9 298 8.5 13.8 50.5 173
04062402.OSH 2 11.1 1428 -30 700 187 62.2 2.7 -16.7 257 6.5 50.9 79.3 234
04061620.LAA 2 12.3 1494 -63 908 129 51.4 1.5 -9.4 252 7.7 34.1 57.1 369
04061300.W#N 2 16.4 3866 -17 1255 231 34.6 3.8 -9.2 251 7.9 37.4 44.2 387
04060701.MOT 2 10.4 295 -316 1541 461 68.3 0.0 -8.4 254 6.7 33.2 82.6 561
04060621.C02 2 9.9 1824 -59 2285 83 55.5 0.0 -10.8 234 7.9 39.7 69.2 64
04053023.IND 2 17.3 2618 -10 577 361 58.6 9.2 -9.1 248 6.9 35.7 45.1 369
04053020.SDF 2 16.6 2653 -2 807 250 52.4 5.8 -9.4 245 6.8 37.1 41.1 317
04053002.OKC 2 15.5 2559 -32 1162 314 55.7 6.2 -7.3 244 7.0 35.6 70.5 434
04053002.ICT 2 16.1 3240 -98 992 315 44.2 5.1 -10.4 245 7.9 25.8 56.2 399
04053000.MCI 2 16.0 3437 -5 863 239 36.5 5.0 -12.8 232 8.3 27.4 42.9 372
04052922.C33 2 16.5 4081 -4 1356 126 51.4 2.8 -7.8 244 7.4 36.9 74.7 248
04052921.TOP 2 16.1 3843 -13 936 78 32.5 1.6 -12.5 233 8.0 17.3 39.0 190
04052421.STJ 2 15.6 3982 -40 991 76 40.4 2.0 -11.9 234 7.7 26.3 67.6 270
04052300.P#8 2 15.0 3882 -47 1262 228 54.5 5.9 -10.5 233 7.9 34.1 69.9 334
04052221.MCK 2 13.2 3453 -37 1185 103 72.0 2.9 -12.3 231 8.6 35.5 82.5 224
04052219.GLD 2 9.9 1898 -54 1700 22 59.0 0.1 -12.7 233 8.4 12.6 69.5 76
04052122.CID 2 15.4 2960 -48 971 309 36.6 5.6 -11.5 268 7.4 36.1 50.0 390
53031321.FWH 2 10.8 727 -98 981 119 51.2 0.5 -16.3 248 8.1 30.6 80.9 266 V
55052521.LTS 2 15.0 4060 -25 1509 322 66.4 6.4 -12.3 225 8.6 37.0 53.5 355 V
56041521.GUN 2 11.7 1189 -11 1302 251 72.4 2.1 -13.6 230 7.3 55.7 66.8 370 V
57040221.FWH 2 13.2 3580 -3 942 94 35.8 2.0 -15.8 189 7.9 26.1 52.8 122 V
57052021.TOP 2 14.0 2801 -2 920 142 55.7 3.7 -13.8 207 7.7 48.0 77.2 228 V
57052121.BYH 2 15.7 2854 -5 1106 236 49.7 5.0 -10.9 230 7.2 33.0 92.5 240 V
57061418.PIA 2 15.9 2118 -6 986 394 50.0 7.0 -8.6 252 6.9 52.8 52.1 496 V
59040100.FWH 2 12.6 3068 -26 987 124 42.8 2.7 -17.6 247 9.0 28.0 61.5 142 V
61050800.FSM 2 14.5 2844 -7 1215 261 61.7 5.8 -11.4 240 7.5 42.2 65.9 323 V
61050600.FSM 2 14.3 2667 -12 1121 245 65.5 5.8 -13.1 240 8.3 61.7 43.1 430 V
62052600.OKC 2 14.3 4171 -76 1591 154 33.3 1.2 -12.0 264 8.6 25.3 43.2 228 V
62080700.TOP 2 20.6 6024 -12 1167 160 42.3 5.7 -7.3 250 7.7 32.4 60.6 243 V
64050600.OMA 2 12.7 2395 -61 1048 349 68.6 7.4 -13.8 224 8.8 54.6 89.3 498 V
65041200.FNT 2 11.2 1814 -1 974 166 91.0 3.0 -17.7 250 7.7 46.4 91.6 372 V
66042800.FWH 2 14.1 3342 -17 1291 148 38.0 2.2 -11.8 265 7.2 39.3 49.0 269 V
66030400.HKS 2 12.2 1434 -10 831 138 47.6 1.6 -14.0 234 7.6 49.0 77.8 142 V
67061100.OKC 2 14.4 3497 0 1569 144 32.2 1.2 -11.0 235 8.7 35.0 51.1 260 V
68110400.VPS 2 12.8 1596 -2 812 129 50.5 1.7 -13.4 251 5.9 30.3 72.0 184 V
69041806.VPS 2 15.2 1013 -8 445 370 55.8 3.5 -11.0 248 6.9 42.3 73.3 439 V
69062400.TIK 2 18.4 4403 -4 776 317 37.5 8.7 -9.4 240 7.5 45.3 56.2 431 V
70100600.TIK 2 13.7 1865 -3 772 241 41.1 3.1 -12.2 230 6.7 35.4 55.6 335 V
71022200.JAN 2 12.8 938 -4 930 470 74.7 4.4 -11.8 211 6.7 57.8 77.3 590 V
73052800.MGM 2 16.4 2337 -2 1017 293 53.5 6.0 -7.9 239 6.2 45.6 45.2 386 V
73041600.VCT 2 15.4 2861 -37 1272 385 48.1 6.4 -12.9 231 8.1 35.7 72.2 377 V
74040400.MGM 2 14.8 2955 -2 1017 161 52.0 4.1 -12.8 235 8.2 39.5 59.4 253 V
74040400.BNA 2 14.6 2744 -31 970 209 77.8 5.7 -13.3 238 7.8 57.0 80.2 301 V
74040400.DAY 2 12.8 2185 -7 986 619 90.8 13.5 -13.1 235 7.1 71.9 91.6 919 V
75042500.UMN 2 15.7 5306 -1 837 145 53.3 6.8 -13.8 255 7.3 41.6 61.8 185 V
74060900.UMN 2 17.0 3643 -2 987 363 37.0 8.1 -6.7 231 7.6 41.4 27.5 508 V
75063000.BIS 2 13.6 3158 -76 1566 198 41.8 1.6 -12.3 233 8.6 26.8 55.7 204 V
76042000.SEP 2 13.7 3326 0 1092 305 45.1 6.9 -14.1 240 7.6 33.7 48.9 358 V
77040418.CKL 2 14.1 1633 0 994 247 66.8 4.0 -9.8 231 6.0 52.7 80.0 333 V
78060100.TOP 2 16.2 4279 -1 1160 267 35.7 5.7 -12.7 233 7.6 36.3 57.0 349 V
79041021.SEP 2 12.8 2186 -9 912 345 48.2 6.1 -13.1 228 8.1 42.9 54.3 468 V
79050300.OKC 2 13.9 2775 -4 877 218 73.2 6.0 -12.3 246 7.2 57.7 103.2 279 V
79033000.OMA 2 10.1 1322 -24 1155 223 56.4 2.4 -15.8 232 7.1 49.1 52.9 345 V
80040800.UMN 2 10.2 2256 -3 1473 97 39.6 0.8 -18.5 236 8.4 39.7 92.1 247 V
84060800.TOP 2 16.2 2284 -16 918 560 74.0 12.8 -6.0 237 6.2 49.1 84.6 705 V
84031600.1M1 2 12.2 2339 -1 1056 250 47.1 4.3 -14.9 251 6.9 30.4 55.5 292 V
86072900.OMA 2 16.4 4252 -21 1667 112 48.4 1.3 -10.6 268 8.6 28.2 81.3 151 V
87111600.GGG 2 12.8 1593 -8 723 298 61.9 4.8 -15.3 178 7.9 43.3 65.2 326 V
90061600.LBF 2 16.1 3827 -1 1050 21 42.1 0.5 -10.6 185 8.5 24.5 74.1 95 V
90060300.PAH 2 15.6 2246 -3 1039 274 47.1 4.7 -7.6 251 7.0 57.8 49.8 384 V
91042700.OUN 2 15.8 4387 -8 898 195 50.3 7.2 -11.5 242 7.0 44.2 54.9 370 V
92062800.AMA 2 14.6 3148 -3 1020 83 44.3 1.9 -10.3 249 7.9 32.7 52.7 220 V
92061700.OVN 2 18.7 4878 -1 1119 262 50.4 9.5 -6.5 237 6.9 46.6 64.6 473 V
93042500.OUN 2 11.6 2675 0 1209 113 49.6 2.0 -14.6 235 6.9 35.5 65.5 168 V
93050700.TOP 2 13.7 2046 -7 666 484 58.8 9.7 -13.1 217 7.0 55.4 51.4 644 V
93060700.LBF 2 15.9 4738 0 930 328 59.3 15.3 -8.6 229 7.6 41.9 67.6 583 V
94042600.SEP 2 12.9 2562 -34 1365 201 51.9 2.8 -11.5 258 7.4 41.3 51.0 198 V
95051900.BMX 2 15.7 2868 -5 989 239 39.3 4.5 -9.9 247 6.7 31.9 49.1 230 V
98040900.BMX 2 14.6 2259 -18 642 136 77.9 3.1 -13.9 240 7.9 50.3 100.1 290 V
98041700.BMX 2 14.7 2038 0 704 263 73.4 5.4 -11.9 245 6.8 36.3 98.6 327 V
99050400.OUN 2 13.4 3644 -22 1050 271 41.4 6.5 -14.9 225 8.4 32.0 37.7 343 V
00121618.BMX 2 12.0 1369 -1 737 279 66.9 3.8 -14.1 220 6.7 51.3 90.8 339 V
00092100.ILN 2 12.5 747 -19 1280 611 75.3 3.3 -7.5 240 5.4 64.7 73.0 810 V
01061400.OAX 2 16.8 4639 -1 1278 127 38.6 2.8 -11.3 215 9.0 35.2 48.5 145 V
01112412.JAN 2 13.0 1392 -2 773 366 50.4 4.3 -10.1 225 5.7 52.4 48.8 504 V
01112418.BMX 2 13.4 1498 -1 655 227 52.0 3.0 -11.3 220 6.1 43.1 61.9 319 V
02111018.ILN 2 11.3 1239 0 734 385 54.4 4.3 -13.7 230 6.6 49.5 103.8 417 V
02062400.ABR 2 17.1 4378 0 1112 85 50.6 2.8 -10.5 245 8.2 29.8 57.9 153 V
03050900.OUN 2 17.0 3871 -32 990 336 62.0 13.0 -6.9 235 6.3 53.9 80.1 364 V
94032718.CKL 2 15.5 1965 0 743 344 72.9 6.8 -9.1 233 6.3 54.7 56.0 403 V
81052300.OKC 2 13.1 2411 -70 1142 203 49.1 3.0 -13.7 235 9.0 37.6 49.1 249 V
65041100.LIT 2 12.7 1815 -1 1365 140 52.3 1.4 -11.1 248 7.2 39.4 64.4 212 V
53051121.FWH 2 13.2 1452 -55 1150 122 53.0 1.3 -11.2 248 7.3 40.4 64.4 209 V
90082900.PIA 2 21.0 6470 -2 974 110 33.6 4.0 -7.3 297 7.1 23.3 54.6 147 V
55042411.GUN 2 13.1 1784 -7 917 345 68.7 6.2 -12.7 248 7.1 44.1 85.9 375 V
56040321.HKS 2 13.0 1491 -14 1212 173 82.1 2.0 -12.4 221 7.5 52.1 107.5 267 V
56051221.MTC 2 13.8 2444 -8 1001 124 69.2 3.0 -14.4 266 7.5 25.2 94.3 162 V
60052000.TOP 2 14.3 3120 -23 1112 167 43.1 3.3 -13.3 213 8.2 32.6 58.1 244 V
66060900.TOP 2 15.9 2226 -24 819 296 59.5 6.5 -8.6 223 7.1 47.3 69.8 397 V
68082000.GRB 2 16.1 2780 -11 1217 173 50.0 3.1 -7.3 258 6.4 27.0 43.6 195 V
74040318.BNA 2 13.0 2906 -5 1157 205 63.1 5.0 -15.5 229 8.2 48.6 76.4 333 V
61051500.PIA 2 12.4 1259 -2 817 196 68.7 2.5 -13.0 202 6.6 36.7 80.9 205 V
54050121.TIK 2 13.0 1988 -17 709 242 56.2 4.5 -13.5 203 8.0 39.2 73.2 282 V
55060421.SLN 2 13.4 3594 -5 1422 36 25.3 0.3 -12.7 225 7.9 23.8 30.4 152 V
70061300.COU 2 16.5 3499 -11 949 204 64.2 7.2 -7.8 246 5.5 49.6 57.1 318 V
76032700.1M1 2 11.8 1820 -17 961 187 41.8 2.4 -17.1 230 8.2 57.3 71.8 243 V
04071318.ILX 2 19.0 4958 -10 1102 117 37.5 3.3 -10.9 305 7.9 33.8 45.3 197 V
68051600.LIT 2 15.6 2612 -4 971 250 52.8 5.7 -11.7 260 8.6 45.5 72.5 337 V
65031700.OKC 2 11.1 1628 -3 687 269 91.0 4.4 -17.9 235 7.1 58.8 114.4 325 V
00061300.DIK 1 11.1 1786 -3 1286 88 51.7 1.0 -13.3 237 7.5 40.6 50.2 180
00061122.MOT 1 11.3 2235 -22 1420 120 55.4 1.4 -14.8 231 7.6 39.0 57.9 252
00060802.JDN 1 7.4 755 -232 3045 106 49.5 0.0 -10.8 230 8.9 34.6 71.9 282
00060402.OFK 1 10.0 668 -199 1628 156 44.9 0.0 -11.7 284 7.7 38.1 49.1 406
00060402.NFW 1 16.8 1734 -9 639 117 28.9 1.0 -7.5 270 5.9 23.5 32.0 202
00052719.MAR 1 16.0 4104 -12 1610 26 26.6 0.2 -12.4 258 8.8 17.5 43.3 95
00052700.THK 1 14.7 3226 -62 1771 46 35.7 0.2 -9.0 238 8.3 28.1 55.2 83
00052700.ADK 1 15.9 4170 -7 1457 60 38.4 0.9 -10.1 248 7.9 22.8 55.2 91
00051202.LWC 1 16.0 3233 -93 1098 243 43.4 3.7 -7.0 245 6.5 28.2 57.5 246
00050802.RWF 1 11.7 1550 -17 1609 79 45.4 0.4 -12.5 230 7.1 29.3 54.1 203
00050702.TOR 1 8.6 1203 -94 1663 106 57.4 0.3 -15.3 235 9.1 39.5 72.5 258
00042622.ONL 1 6.5 337 -109 1466 129 40.6 0.1 -21.7 284 8.4 30.1 73.0 229
00042118.EZF 1 10.3 898 -4 877 28 58.9 0.3 -17.2 220 6.6 30.7 62.4 94
00032902.CRS 1 14.5 2234 -6 743 161 50.8 3.0 -14.0 258 7.8 26.8 92.5 244
00032823.DTO 1 12.9 2286 -24 1256 75 45.3 1.0 -14.5 246 7.7 20.6 88.2 121
00032701.BAZ 1 14.1 1797 -31 945 101 61.6 1.8 -10.9 294 7.0 32.6 86.8 184
00032623.MLC 1 11.7 1998 -24 1176 73 50.5 1.0 -14.4 296 6.9 29.7 68.1 193
00032221.UPT 1 11.4 2370 -12 1181 167 63.0 3.2 -15.3 196 8.2 44.6 83.1 213
00032207.ODO 1 11.4 1900 -1 561 280 54.6 4.9 -16.5 195 8.4 45.8 80.2 519
00032207.DRT 1 13.4 2593 -107 837 215 40.0 2.3 -14.9 225 8.9 40.7 64.3 569
00032201.DYS 1 9.6 140 -194 1028 77 44.2 0.0 -12.2 197 6.4 33.8 61.9 126
00031523.END 1 9.1 877 -2 1153 56 37.8 0.3 -16.7 241 6.6 26.4 36.5 119
00031023.BMQ 1 12.1 2702 -18 1209 70 48.2 1.2 -14.5 275 7.6 28.5 52.2 143
00030823.MKE 1 11.0 1510 -13 1038 185 54.8 2.5 -16.1 213 6.7 42.7 47.9 221
00030208.MAF 1 11.4 1969 -62 631 373 64.7 6.7 -16.7 225 8.8 39.2 68.5 410
00022502.ARN 1 11.3 2487 -19 846 226 54.1 5.1 -16.8 208 8.1 38.3 67.9 247
00022303.DLF 1 8.7 884 -128 1728 29 68.1 0.0 -16.1 277 7.8 32.4 70.9 86
01042100.SUX 1 8.8 765 -22 1661 84 43.9 0.2 -16.8 206 7.9 27.0 64.5 204
01041123.BIV 1 12.3 587 -74 777 368 64.3 1.8 -11.6 220 5.9 42.8 48.1 410
01041107.ADH 1 11.8 556 -140 952 259 56.9 0.5 -12.1 207 7.2 40.1 68.6 271
01041100.SUS 1 13.7 2171 -35 926 93 64.4 2.0 -12.3 258 6.5 38.6 74.7 252
01041022.SZL 1 14.3 2693 -55 696 170 63.3 4.4 -12.9 245 6.7 37.7 83.2 242
01040923.PIA 1 11.9 2755 -12 1469 63 57.1 0.9 -15.8 272 7.5 28.4 73.8 164
00111220.HYI 1 15.0 1358 0 575 130 66.4 1.8 -11.5 257 7.0 30.5 99.4 240
00110822.TUP 1 14.5 1023 -4 743 229 62.2 2.3 -9.9 225 6.6 34.8 71.9 291
00110121.BIS 1 8.9 739 -22 512 134 42.6 0.7 -21.9 135 8.3 30.9 61.9 177
00103122.FNB 1 12.8 1776 -6 916 106 37.0 1.2 -13.0 217 6.9 22.0 45.0 157
00102922.LNK 1 10.2 657 -14 724 192 49.1 1.0 -16.4 188 6.2 32.0 43.8 218
00102919.AUH 1 8.7 191 -3 740 83 38.8 0.1 -16.4 158 6.1 31.7 39.6 118
00102900.JCT 1 12.1 704 -63 868 232 49.5 1.2 -10.5 218 7.0 32.5 72.8 338
00102818.GOV 1 11.9 922 -5 443 156 35.8 0.9 -12.3 192 6.7 29.9 31.1 195
00102423.ODO 1 12.0 1308 -7 918 73 40.2 0.6 -11.4 215 7.4 30.0 51.0 103
00102300.TIK 1 13.8 1236 -5 453 143 32.3 1.0 -11.8 212 6.3 24.0 44.2 171
00102123.WLT 1 12.4 655 -43 561 114 29.4 0.4 -11.7 196 5.0 24.0 39.6 153
00090201.GXY 1 10.1 1399 -61 1894 64 48.6 0.1 -8.8 219 8.0 24.5 58.2 133
00081501.OEO 1 16.6 2661 -111 1084 275 47.1 3.1 -7.7 281 7.5 38.3 69.3 408
00072500.ANW 1 14.5 3660 -50 1579 99 43.1 1.1 -9.2 307 8.3 23.5 62.3 152
00072302.LAA 1 11.0 1368 -108 1806 33 48.7 0.0 -8.9 325 7.7 25.9 61.1 115
00072104.P28 1 14.3 1660 -216 1167 146 41.4 0.0 -9.2 286 7.8 30.2 58.9 374
00072004.GLD 1 12.8 1625 -153 1450 69 50.3 0.2 -8.9 286 8.4 26.3 57.9 113
00071823.SUS 1 17.9 2488 -23 946 101 35.0 1.5 -7.4 262 6.2 32.7 35.7 194
00071023.GGW 1 11.5 1838 -22 1490 19 53.5 0.2 -11.1 239 6.6 29.9 73.1 81
00070823.RPD 1 18.8 4320 -44 798 124 39.2 3.5 -8.3 282 6.7 21.3 43.9 183
00070802.LJF 1 19.5 4388 -7 680 348 43.9 11.2 -9.0 258 8.4 34.1 50.6 438
00070600.OVE 1 7.4 115 -46 1571 14 34.5 0.0 -17.8 243 7.0 10.2 60.4 40
00070400.MCK 1 14.2 1661 -19 1452 131 41.3 0.8 -6.2 236 6.6 26.2 46.5 200
00070222.RYV 1 15.9 2122 -22 737 96 36.0 1.2 -9.2 288 5.9 30.2 35.4 223
00062923.GLD 1 11.9 2724 -35 2040 95 44.6 0.0 -10.0 295 8.8 34.1 62.4 180
00062522.AMA 1 13.7 3217 -9 2155 26 36.2 0.0 -6.9 271 8.3 18.7 36.3 97
00062501.HAO 1 13.1 422 -35 1552 152 35.2 0.2 -7.7 249 5.7 29.2 32.5 226
00062019.MTO 1 15.3 938 -10 830 185 29.7 0.9 -7.9 246 6.3 38.8 17.7 268
00062001.HSI 1 14.0 1763 -84 1164 234 40.3 1.8 -8.2 248 7.0 27.7 49.5 343
00061621.IPT 1 16.3 2224 -6 898 126 25.2 1.2 -7.2 258 5.6 34.7 21.7 251
00061323.PRT 1 14.6 3313 -86 1730 52 37.5 0.2 -7.5 265 8.2 21.9 60.1 117
00061321.RDK 1 17.0 3477 -23 902 260 35.7 5.4 -9.8 237 7.9 30.5 30.4 304
00061300.LBF 1 10.3 2216 -34 2374 46 34.8 0.0 -10.3 241 8.4 19.0 34.1 135
00061300.GFK 1 11.1 1031 -80 1371 163 45.4 0.6 -13.5 239 7.2 30.8 40.7 248
03031919.CSV 1 9.7 329 -12 552 167 68.4 0.6 -16.4 213 7.0 45.4 103.6 306
03031917.CSV 1 9.6 129 -21 493 196 62.6 0.3 -16.0 222 6.7 61.8 100.8 422
03031915.HSV 1 10.9 546 0 538 221 80.9 1.2 -16.0 224 6.4 51.0 103.8 393
03031800.FSI 1 11.0 983 -10 789 157 47.9 1.2 -17.1 242 7.4 21.2 84.6 148
03031722.SPS 1 10.7 981 -38 1183 127 34.3 0.6 -15.4 236 7.3 19.3 95.8 139
03031721.HBR 1 10.6 1028 -46 917 133 27.4 0.6 -15.9 217 7.1 22.3 90.0 154
01062101.DEN 1 8.5 516 -90 1464 2 57.2 0.0 -10.9 293 7.2 41.8 50.9 136
01061403.DDC 1 14.7 4480 -83 1698 161 58.3 1.7 -11.1 234 9.3 30.0 58.2 280
01061323.PQN 1 15.8 3695 -5 1047 117 31.9 2.2 -10.3 212 8.0 28.2 46.4 193
01061000.MBS 1 8.3 401 -7 1604 78 43.1 0.1 -16.3 312 6.3 19.1 70.0 124
01060923.BIS 1 13.0 2950 -51 1333 25 50.8 0.4 -12.4 272 7.7 30.4 52.9 158
01060521.P28 1 15.5 2749 -10 880 99 38.9 1.8 -11.4 241 8.1 28.3 45.3 182
01060521.CDS 1 15.0 3410 -11 1645 9 34.8 0.1 -9.6 266 8.0 23.5 28.9 110
01060421.LIC 1 8.2 167 -117 1162 92 45.0 0.1 -12.6 233 7.5 32.1 65.5 170
01060402.WLD 1 15.9 3250 -135 778 339 39.0 3.1 -9.4 254 8.1 35.7 49.4 535
01060121.MXO 1 8.9 416 -12 968 81 51.7 0.3 -17.7 275 6.4 33.3 51.6 153
01053000.CDS 1 13.5 2478 -201 1327 184 58.9 0.0 -9.9 240 8.4 43.6 59.7 269
01052423.JCT 1 11.1 2121 -41 2081 21 42.8 0.0 -12.9 298 8.3 34.2 39.7 254
01052423.BHM 1 10.8 1036 -32 1179 118 47.3 0.8 -14.7 258 6.9 44.8 49.5 280
01051022.OLZ 1 11.3 1843 -33 1200 61 42.2 0.6 -15.7 256 7.4 31.2 46.0 179
01050823.CNK 1 8.0 560 -40 1902 58 51.8 0.0 -16.7 317 7.3 21.6 51.7 171
01050621.ILE 1 16.4 3719 -9 838 53 30.9 1.0 -13.1 261 7.0 24.3 54.4 118
01050621.1F0 1 14.4 2826 -1 776 124 27.7 1.6 -13.9 256 6.8 24.7 55.3 157
01050602.COT 1 16.2 2790 -11 863 180 42.4 3.6 -10.7 247 7.2 33.3 76.0 223
01050601.HBR 1 10.8 1071 -47 991 113 60.9 1.2 -14.6 218 6.8 35.4 66.2 149
01050600.WLD 1 10.9 813 -3 986 94 45.9 0.6 -13.4 211 6.5 34.0 50.5 174
01050521.ACT 1 14.9 2393 -3 716 65 41.0 1.1 -11.6 229 6.7 21.6 53.3 125
01050422.FNB 1 13.2 1315 -10 654 80 33.2 0.6 -12.0 205 5.5 25.5 43.0 144
01050412.SPS 1 13.3 1511 -11 818 233 45.0 2.6 -11.2 211 5.9 37.5 53.7 290
01050223.CDS 1 12.5 3652 -132 1895 166 31.7 0.2 -13.0 217 9.2 26.5 37.9 210
01050123.RPD 1 11.7 2374 -31 1338 213 46.8 2.6 -14.3 249 7.2 38.7 54.2 348
01050123.RGK 1 12.1 2710 -41 1464 239 44.1 2.6 -14.6 250 7.7 37.9 54.3 370
01050100.TQE 1 9.6 1164 -13 1373 125 29.7 0.5 -16.8 267 7.6 24.5 30.9 158
01050100.BGD 1 8.6 1497 -7 2135 23 54.7 0.0 -14.0 327 8.0 22.4 64.0 136
01042300.OAX 1 11.5 527 -10 586 257 62.9 1.4 -12.4 193 5.9 51.0 62.5 288
03060800.ECG 1 15.9 456 -52 671 256 26.7 0.5 -5.9 244 4.7 33.3 37.0 264
03060500.CVS 1 8.5 804 -116 2160 108 56.7 0.0 -9.7 295 8.0 53.0 55.1 313
03060422.TCC 1 10.6 1847 -48 1858 84 47.9 0.2 -10.4 290 8.6 41.0 53.3 227
03060103.BFF 1 11.3 1434 -103 1288 72 46.7 0.4 -9.1 291 7.2 22.6 47.7 113
03052820.PIA 1 11.7 1566 -31 860 135 36.1 1.3 -16.6 318 7.2 30.1 54.2 203
03052323.V#L 1 10.7 657 -22 998 134 47.6 0.7 -13.2 312 7.1 36.4 63.1 269
03051401.TXK 1 13.6 1354 -97 1023 210 48.8 1.5 -11.3 301 7.8 39.5 74.4 571
03051323.C04 1 12.3 338 -272 641 212 57.3 0.0 -12.4 299 8.0 32.1 67.8 353
03050920.FVX 1 13.5 1153 -108 1077 253 59.2 1.6 -11.6 288 7.8 44.4 56.6 335
03050918.CHO 1 15.0 1961 -22 782 298 58.7 5.7 -11.4 296 7.3 46.4 63.9 473
03050800.ABI 1 11.7 1368 -77 2113 150 68.5 0.0 -6.9 244 6.8 41.7 79.4 428
03050721.ANB 1 14.0 798 -104 694 354 51.0 1.5 -9.4 268 6.5 39.0 46.7 422
03050719.BMX 1 15.8 2069 -6 591 233 43.2 3.5 -10.7 274 6.8 31.7 48.0 302
03050700.FAM 1 13.4 2397 -56 1026 270 72.9 6.1 -14.5 269 7.6 38.6 77.4 402
03050518.MKL 1 15.9 2561 0 610 165 70.0 4.2 -11.5 253 7.0 46.3 90.9 195
03050423.C35 1 15.5 2257 -12 619 309 68.9 7.0 -11.1 234 7.3 35.2 111.6 297
03050421.ADM 1 16.6 3573 -3 898 108 77.1 3.9 -8.7 238 6.2 51.9 109.7 213
03050320.BFF 1 7.9 1569 -35 1574 91 55.3 0.6 -17.6 237 9.1 30.0 121.3 150
03050121.TUL 1 15.3 4038 -2 592 93 35.5 2.2 -13.9 263 7.7 27.5 53.2 205
03043023.FOE 1 13.9 4015 -6 1059 116 26.7 2.0 -14.3 236 7.7 24.7 34.3 165
03042821.BYI 1 4.3 220 -74 1877 74 40.4 0.0 -21.3 217 8.4 19.6 47.5 151
03042522.MGM 1 13.1 2112 -13 1028 106 63.3 2.2 -14.2 266 6.8 41.2 42.5 199
03042521.LWT 1 6.2 193 -34 1157 84 33.2 0.1 -19.0 194 7.6 23.8 44.0 191
03042518.TCL 1 11.3 524 -50 815 216 66.5 1.1 -14.0 256 6.7 54.5 74.3 295
03042423.PIB 1 13.2 710 -91 552 278 47.4 1.1 -13.2 256 7.3 29.9 47.5 367
03042422.FOE 1 9.2 537 -24 443 119 31.9 0.3 -19.7 184 6.7 33.6 18.6 155
03042419.BTR 1 14.3 2208 -2 816 43 52.0 0.8 -13.0 244 7.4 27.5 46.2 86
03041923.MLC 1 12.8 1448 -52 744 271 64.7 3.9 -11.2 230 5.7 51.5 81.0 283
03040618.JAN 1 12.9 801 -40 747 201 51.3 1.4 -14.4 243 7.5 28.4 87.0 298
03040614.MLU 1 13.4 517 -86 382 358 50.8 1.2 -13.9 229 7.4 36.9 73.2 428
03040601.FWD 1 11.1 461 -111 865 325 67.8 0.9 -13.5 245 6.9 40.1 93.4 563
03040420.SPI 1 11.2 1687 -7 802 102 38.9 1.1 -17.7 252 7.6 39.5 59.0 176
03032721.PBI 1 12.4 384 -64 873 185 47.9 0.5 -12.0 240 6.3 8.1 99.7 189
03032720.TMB 1 13.5 878 -5 1007 102 59.6 0.9 -10.7 241 5.9 21.4 97.6 157
04040822.ROW 1 7.6 885 -35 1457 25 42.6 0.1 -16.3 225 7.7 31.8 52.9 136
04040616.VCT 1 13.2 671 0 457 159 42.0 0.8 -12.5 228 5.9 29.4 48.5 233
04040615.CRP 1 14.5 1276 0 405 109 39.2 0.9 -12.3 238 7.0 30.2 44.3 209
04032723.C33 1 12.5 2394 -14 752 342 44.2 6.0 -15.0 235 7.2 45.6 56.4 529
04032721.C33 1 12.5 2248 -11 742 183 42.7 2.9 -14.5 230 7.1 29.5 50.7 257
04032718.GAG 1 11.6 1959 -2 705 243 43.2 3.4 -16.1 217 7.9 33.2 51.9 263
04020601.TCL 1 11.9 190 -48 628 310 45.1 0.4 -12.7 222 6.4 48.7 58.2 536
03111803.GLS 1 16.5 1327 -28 566 364 46.5 3.8 -8.7 230 6.1 33.7 77.0 402
03111722.GLS 1 10.1 1092 -23 682 103 65.1 1.1 -18.5 220 7.2 45.6 115.8 218
03110520.IAD 1 13.7 626 -17 1058 109 35.5 0.4 -9.7 248 6.0 23.4 50.7 109
03100923.GLS 1 18.1 1654 -5 454 164 35.3 1.6 -5.9 253 5.5 26.9 46.4 209
03100523.C10 1 11.8 1332 -9 1262 56 39.6 0.4 -7.5 295 5.6 37.5 47.9 168
03090807.MAF 1 11.7 777 -160 1418 169 29.0 0.1 -10.5 282 7.9 18.5 32.7 262
03082523.RAD 1 12.0 1595 -36 1379 139 56.3 1.3 -11.7 280 6.3 16.2 82.0 142
03080122.MIE 1 14.8 2465 -19 976 39 23.4 0.0 -10.9 251 6.4 10.2 49.8 63
03072100.SUX 1 21.5 6268 -16 748 130 47.0 6.4 -7.5 313 7.3 28.4 42.4 175
03072022.SUX 1 20.7 5887 -14 863 100 42.2 4.2 -7.3 304 7.8 47.1 46.8 375
03072022.OFK 1 19.2 6004 -19 1398 33 31.9 0.6 -7.5 313 8.2 30.8 31.8 166
03071922.STC 1 15.2 2711 -22 1042 103 46.1 2.1 -10.6 310 7.0 34.7 54.6 221
03071102.NHK 1 16.5 987 -67 757 159 22.6 0.0 -7.7 240 6.4 20.9 29.8 187
03070921.RWF 1 13.6 1319 -19 765 52 42.5 0.5 -10.8 262 7.0 23.9 51.9 91
03070919.P#3 1 13.7 1228 -1 615 65 49.7 0.7 -10.0 258 6.5 18.9 58.3 80
03070902.ATH 1 11.5 2088 -216 2152 184 48.4 0.0 -8.0 269 9.4 34.4 71.3 315
03062823.BRD 1 10.3 984 -41 828 98 44.5 0.7 -16.0 285 5.9 30.4 65.1 168
03062820.BJI 1 8.9 792 -1 1152 76 36.4 0.3 -17.5 276 6.2 21.6 57.0 122
03062802.C22 1 8.5 251 -78 1075 74 33.2 0.1 -17.0 302 6.9 33.5 39.2 110
03062800.P11 1 8.9 130 -58 757 94 34.6 0.1 -16.9 294 6.8 32.0 41.6 182
03062223.GRI 1 18.1 5092 -19 1060 137 41.0 4.5 -7.9 238 8.0 29.8 45.3 215
03062119.GCC 1 9.0 940 -32 1043 126 52.6 1.0 -13.9 234 7.3 37.7 61.9 271
03061423.GLD 1 11.1 1240 -11 1151 21 28.6 0.1 -11.5 347 7.2 20.2 27.1 107
03061202.9V9 1 11.9 1311 -150 1237 252 55.7 0.8 -12.0 277 7.7 34.4 64.5 403
03061123.PIR 1 12.2 2019 -91 1257 201 52.8 1.9 -12.8 252 7.7 30.1 78.9 352
03060922.AIH 1 12.2 3211 -62 1638 201 43.3 1.6 -13.0 253 9.0 35.4 67.6 306
04052223.P#A 1 15.1 2952 -11 774 39 53.1 1.0 -12.0 243 7.6 22.0 68.8 112
04052223.OAX 1 13.7 2734 -22 1169 83 52.1 1.6 -11.3 232 7.4 29.5 77.9 274
04052201.OFK 1 14.7 3647 -8 1268 198 35.6 3.1 -11.0 240 7.8 35.9 59.8 310
04052201.AIH 1 12.5 2491 -49 1041 183 43.4 3.2 -12.7 241 8.1 37.2 66.0 201
04052122.GEG 1 8.3 1152 -51 831 61 20.9 0.0 -20.3 270 7.3 16.0 22.9 86
04051821.PIA 1 13.2 1154 -20 811 45 38.0 0.3 -11.1 240 5.6 36.6 42.0 114
04051701.C07 1 9.6 1682 -36 2011 261 50.5 0.0 -10.9 271 7.9 35.3 62.3 740
04051700.GRI 1 11.3 1410 -72 1036 313 44.9 2.7 -14.9 227 8.2 36.5 55.1 498
04051420.MBS 1 13.4 793 -7 834 109 40.9 0.6 -10.0 223 5.5 35.3 48.3 177
04051416.SBN 1 13.7 499 0 429 86 47.3 0.3 -10.0 213 5.3 45.7 43.4 226
04051323.G#4 1 15.5 3158 -12 977 153 38.7 3.1 -11.1 260 7.5 26.9 14.0 223
04051223.C32 1 11.4 2949 -2 1894 52 53.9 0.2 -12.4 230 8.0 35.8 51.2 184
04051117.VCT 1 16.3 1839 0 387 110 21.6 0.0 -10.4 236 6.4 21.8 22.3 236
04043018.SPS 1 12.8 1694 -16 674 115 47.0 1.5 -14.9 221 8.0 24.4 40.3 122
04042921.CDS 1 9.5 1110 -130 1817 -14 26.8 0.0 -14.5 244 8.2 30.9 40.8 112
04042900.DRT 1 11.7 872 -12 771 192 46.2 1.3 -13.3 241 6.5 37.1 66.5 291
04042320.SPS 1 14.3 3037 -1 1026 34 40.0 0.7 -13.4 226 7.4 18.9 49.8 60
04042317.C11 1 10.4 439 -226 1267 41 38.3 0.0 -12.0 218 8.0 22.5 52.0 77
04042300.FYV 1 11.8 1066 -33 829 252 39.7 1.8 -14.3 264 7.5 32.0 68.1 287
04042222.TUL 1 13.0 1845 -5 720 136 58.2 2.4 -14.9 261 7.6 42.3 60.4 262
04042220.P#P 1 13.3 2326 -1 748 134 58.8 3.1 -15.9 266 8.0 37.4 58.0 199
04042200.GAG 1 10.8 1625 -5 908 47 32.4 0.4 -16.4 262 7.4 23.8 78.1 203
04042122.G#1 1 7.3 762 -3 1736 51 74.4 0.1 -18.1 267 7.9 29.6 109.6 287
04042100.TUL 1 10.6 632 -70 1159 363 52.0 1.5 -13.5 244 6.5 34.2 55.8 403
04042023.GVS 1 10.8 283 0 524 272 32.9 0.4 -14.5 241 5.8 36.7 31.1 351
04042022.C34 1 11.4 1441 -8 1212 105 50.3 1.0 -12.2 244 6.3 35.5 57.3 152
04042019.HUF 1 9.9 107 -34 769 282 37.1 0.2 -14.7 239 5.8 35.7 36.3 292
04042001.G#1 1 10.9 1585 -37 948 193 46.4 2.4 -14.6 237 7.8 39.5 70.5 374
04041923.AMA 1 10.3 1602 -8 1272 103 41.6 0.8 -12.3 237 6.8 29.9 68.2 173
04041823.HYR 1 9.5 788 -51 1551 610 67.8 2.1 -14.2 237 6.6 48.6 102.0 685
04041822.YKN 1 8.5 781 -30 1937 -47 67.4 0.0 -14.5 231 7.3 50.2 99.2 231
04041820.STC 1 9.5 1332 -37 1772 54 48.6 0.1 -15.2 231 8.6 26.3 87.5 167
04041803.MCW 1 11.3 1606 -164 1042 529 61.4 2.0 -14.5 249 8.2 51.8 78.3 736
04041800.FRM 1 6.2 0 -9999 2233 126 60.4 0.0 -15.8 250 8.3 48.2 86.0 376
04041318.MHX 1 14.5 829 -6 376 471 48.2 3.1 -10.4 209 5.7 50.3 59.5 492
04041101.HOU 1 14.2 1196 -29 574 -14 42.4 -0.1 -12.2 228 6.1 21.1 49.7 59
04040922.MLC 1 9.5 826 -4 1253 59 50.6 0.3 -15.2 263 6.2 30.9 65.3 245
04081001.LIC 1 13.1 2627 -14 833 10 31.8 0.1 -7.6 302 6.9 29.5 39.6 240
04080923.LIC 1 12.3 2929 -24 1366 16 34.5 0.2 -7.1 291 7.3 33.3 41.5 174
04080222.BH5 1 9.0 780 -79 2692 -22 40.8 0.0 -7.8 269 8.3 36.1 53.6 117
04080101.FSD 1 15.5 3162 -71 1296 126 42.1 1.7 -10.0 298 7.7 29.5 43.5 211
04071502.PWD 1 11.6 1241 -85 1817 -10 41.6 0.0 -9.7 293 7.4 25.5 68.5 104
04071421.NHK 1 15.8 2262 -34 1229 29 22.0 0.0 -9.0 266 6.6 17.0 40.9 95
04070822.CDR 1 8.4 1172 -184 2535 65 52.1 0.0 -10.6 252 9.0 39.8 58.2 155
04070800.RSL 1 16.8 3857 -81 950 330 43.6 7.3 -6.9 302 7.3 32.9 43.0 525
04062401.MSN 1 11.0 1731 -10 1132 139 52.2 1.8 -15.8 264 6.6 37.4 69.1 149
04062202.AMA 1 14.9 2631 -32 851 69 48.2 1.5 -9.3 256 8.0 30.2 68.7 322
04062201.AMA 1 13.9 2569 -24 1161 158 51.4 2.9 -9.1 264 8.2 37.1 79.6 378
04062123.AMA 1 14.3 3017 -3 1129 34 46.0 0.7 -9.8 253 7.9 30.1 66.4 233
04062100.LAA 1 13.7 2855 -58 1180 172 53.2 3.4 -9.9 265 8.0 19.8 59.2 173
04062021.PUB 1 9.4 1660 -152 1943 219 45.3 0.1 -10.7 255 9.0 31.5 55.0 312
04062019.COS 1 10.8 2562 -34 1009 45 38.2 0.7 -12.0 275 8.7 28.8 54.8 98
04061501.HYS 1 14.0 3081 -123 1665 173 58.2 0.9 -9.0 287 8.2 39.1 57.5 526
04061401.RDD 1 12.6 881 -112 1018 143 43.3 0.5 -9.7 283 6.4 45.8 43.1 223
04061322.LNK 1 10.8 941 -69 1877 47 38.4 0.0 -9.3 287 5.7 33.3 45.8 183
04061318.RQB 1 13.7 1000 -12 900 139 52.4 1.2 -10.7 233 6.1 36.9 55.2 229
04061121.FRM 1 16.5 2686 -15 680 177 37.0 2.9 -11.0 219 7.7 18.6 49.4 252
04061103.HSI 1 12.4 1209 -300 1522 316 36.6 0.0 -10.8 210 9.0 34.1 53.9 333
04060921.APA 1 8.8 1388 -12 2068 90 27.2 0.0 -10.0 186 8.8 22.9 47.8 104
04053022.SLO 1 18.2 3905 -16 909 156 45.8 4.6 -9.2 240 6.9 43.6 52.3 241
04052701.PNC 1 15.4 2665 -48 1261 221 69.9 4.4 -8.5 266 6.3 33.5 88.2 272
04052623.G011 1 12.4 1626 -109 1852 49 70.8 0.1 -9.9 262 7.1 37.0 94.0 147
04052622.P#T 1 11.9 1612 -29 2366 155 49.7 0.0 -7.5 252 7.6 30.5 79.4 164
04052602.ABI 1 14.8 1459 -96 876 180 51.9 1.6 -7.9 237 7.1 20.8 85.8 179
04052500.FDR 1 16.4 3848 -41 1381 227 52.9 4.8 -10.3 248 8.8 44.6 77.8 373
04052421.MCI 1 15.5 3926 -27 1068 147 47.7 4.3 -11.9 239 7.8 31.2 69.7 377
04052421.CDS 1 11.5 2298 -45 2458 72 49.8 0.0 -9.7 246 8.0 26.4 75.8 113
04052420.HSI 1 15.0 4625 -31 1086 83 34.0 2.0 -15.1 231 9.5 23.3 61.8 166
04052420.BGM 1 11.0 1383 -50 1291 107 43.0 0.8 -13.2 261 6.4 38.3 57.1 215
04052400.MKX 1 12.6 2101 -6 936 253 43.7 3.9 -15.6 243 8.0 47.2 76.4 303
04052302.P#8 1 14.4 3064 -83 1357 338 64.2 5.2 -12.5 243 8.9 33.2 52.0 372
04052301.P#A 1 15.3 2427 -11 641 38 43.9 0.7 -11.1 235 7.5 24.0 58.7 130
04052301.OMA 1 15.2 2700 -10 801 171 47.0 3.6 -10.9 219 7.5 25.3 68.4 216
99060823.N60 1 13.7 3155 -15 1051 78 41.1 1.6 -13.0 219 8.3 21.8 42.4 152
99060620.MIW 1 16.5 2747 -2 728 95 46.5 2.0 -11.3 215 7.4 25.8 54.4 126
99060619.DVL 1 13.3 2802 -18 814 23 14.6 0.0 -16.8 148 8.2 13.8 14.2 55
99060522.LRJ 1 15.2 2964 -17 1289 56 44.7 0.9 -10.3 227 8.2 27.6 63.5 157
99060405.VTN 1 12.9 2518 -114 1075 129 40.8 1.2 -11.7 252 8.4 33.9 47.9 180
99060300.GTF 1 7.5 3 -80 1259 78 32.1 0.0 -12.7 166 6.6 32.1 44.8 172
99060300.AMA 1 12.9 2756 -67 1541 95 38.7 0.7 -10.0 227 8.6 29.5 72.3 208
99060123.SPI 1 14.9 2287 -19 881 194 49.6 3.7 -12.9 240 7.2 40.7 42.9 303
99060110.MLC 1 16.0 1956 -157 477 193 43.7 0.8 -10.8 251 8.4 34.4 54.4 257
99060101.RSL 1 13.0 1705 -20 907 93 50.1 1.3 -12.2 250 8.3 32.2 70.0 179
99060100.SJT 1 10.8 1391 -136 2395 53 45.7 0.0 -8.1 279 8.0 23.3 44.1 151
99060100.CSM 1 13.8 2748 -119 1593 116 55.1 0.7 -10.4 262 8.3 31.9 59.4 205
99053122.LBL 1 12.8 2910 -27 1574 106 61.1 1.3 -11.1 247 8.1 34.8 75.6 204
99053023.LXN 1 11.3 1917 -2 1506 20 24.9 0.0 -12.7 282 7.1 22.6 26.3 85
99052700.INK 1 10.3 1701 -31 1781 9 53.5 0.0 -13.0 263 8.4 26.7 60.4 107
99052521.ROW 1 8.6 1056 -1 2099 26 43.2 0.0 -11.4 250 7.4 17.0 57.8 56
99051701.P28 1 14.1 3996 -25 1498 52 41.4 0.7 -12.2 235 7.9 28.4 44.1 137
99050922.P07 1 10.6 1793 -96 2053 72 29.7 0.0 -11.9 197 8.5 25.8 74.2 77
99050419.EWK 1 9.8 1172 -30 1060 87 56.5 0.9 -17.0 185 7.4 27.6 56.8 112
99050401.ONL 1 9.2 1561 -17 1532 160 31.3 0.6 -15.4 205 7.3 24.3 33.6 208
99050220.HDE 1 8.7 687 -3 649 100 31.9 0.4 -19.2 208 7.1 21.5 23.0 124
99050122.MAF 1 12.3 1710 -9 776 232 56.9 3.8 -11.2 237 6.8 32.4 76.7 295
99043021.INK 1 13.0 2707 -11 1033 174 50.2 3.8 -11.8 197 7.3 35.6 67.7 236
99042421.AGS 1 9.7 443 -32 1749 52 54.7 0.1 -12.4 292 6.7 37.3 65.4 176
99042300.MKO 1 13.6 2181 -13 1003 243 55.3 4.9 -11.4 253 7.8 35.3 67.1 248
04082522.FOE 1 16.3 3285 -59 1225 128 33.5 1.7 -8.6 243 6.8 34.0 42.4 233
04082423.DPA 1 15.3 616 -29 685 237 28.3 0.7 -6.6 213 5.2 26.6 21.5 254
04082401.FOE 1 17.3 2862 -33 582 300 33.1 4.7 -7.7 274 6.8 24.8 34.1 345
04082200.C07 1 12.4 2025 -24 1364 108 27.4 0.6 -7.7 278 6.6 14.0 41.6 288
04081522.ATH 1 10.0 1320 -50 1754 133 37.4 0.3 -10.5 325 7.6 38.4 41.5 249
04081420.HAT 1 16.9 1221 -20 693 281 41.3 2.4 -6.1 204 4.5 32.5 54.5 312
04081219.FAY 1 15.4 835 -29 887 115 48.5 0.8 -7.1 211 5.4 29.3 50.5 134
04081215.CAE 1 16.3 1332 -11 579 78 38.5 0.7 -8.3 217 5.9 37.1 28.4 136
99112300.TUL 1 11.8 1383 -12 847 203 54.3 2.5 -15.7 217 6.9 37.0 60.1 264
99092823.LAF 1 14.3 1880 -26 925 44 46.4 0.6 -9.8 226 5.9 31.8 53.4 131
99092700.ICT 1 13.7 1942 -99 1005 119 45.8 1.2 -7.8 271 6.2 28.6 45.7 170
99092003.OGD 1 5.9 7 -95 1490 6 35.4 0.0 -14.8 306 7.3 17.3 39.8 59
99091023.OKM 1 14.1 1578 -173 1285 75 38.5 0.1 -9.8 284 6.9 29.7 41.2 205
99090400.AKO 1 11.6 1401 -21 1298 3 44.8 0.0 -8.1 221 7.3 26.8 60.0 143
99081920.SME 1 11.4 1158 -29 2080 34 42.9 0.0 -10.2 267 6.9 18.4 33.8 78
99081621.GLD 1 14.3 3184 -9 1787 78 34.9 0.3 -7.0 231 7.7 23.6 46.0 131
99081503.JDN 1 7.8 368 -225 2152 37 52.5 0.0 -11.9 242 8.0 36.8 72.2 220
99080923.MKT 1 16.2 2484 -10 814 229 44.4 4.2 -9.7 289 7.7 38.9 63.1 274
99073100.DMH 1 14.4 2057 -58 1629 66 38.0 0.3 -8.8 331 7.0 18.2 55.7 83
99072800.COQ 1 11.9 957 -73 1267 208 61.5 1.2 -12.4 294 7.3 37.9 75.1 349
99072300.ABR 1 15.9 3073 -48 1643 51 26.1 0.2 -7.9 237 7.7 10.4 43.4 60
99072201.GGW 1 8.8 1107 -147 2618 58 49.5 0.0 -11.3 230 8.7 27.6 92.9 163
99072022.OLZ 1 19.5 3709 -2 737 170 42.4 4.4 -5.2 268 5.5 29.8 44.8 294
99071400.MOT 1 10.3 1025 -92 1759 96 63.9 0.2 -11.0 284 7.1 34.6 66.5 248
99070300.LBF 1 18.3 5887 -62 1227 118 33.7 2.8 -6.4 235 9.0 23.9 55.3 163
99070123.IPT 1 14.7 908 -27 884 203 33.0 1.0 -6.8 229 5.6 30.6 31.5 243
99062922.GUY 1 13.7 3266 -87 2035 154 43.7 0.0 -7.8 283 9.0 32.3 53.8 237
99062802.OGA 1 12.3 1529 -168 1178 203 64.3 0.5 -9.7 266 8.8 33.4 87.6 253
99062701.MCK 1 16.5 3830 -43 1226 55 34.0 0.9 -7.8 258 8.2 20.8 57.0 152
99062700.SNY 1 12.1 2217 -42 1612 24 49.9 0.2 -8.9 251 8.2 28.2 77.8 141
99062300.MHE 1 14.1 1832 -74 977 196 23.4 0.0 -9.7 239 7.3 17.5 18.0 213
00050901.AIZ 0 13.1 1987 -68 1453 84 35.7 0.5 -11.3 241 8.5 41.9 28.1 204
00050722.SNY 0 9.8 2015 -39 1845 23 56.1 0.1 -12.4 245 8.7 34.2 64.8 128
00050707.OGA 0 11.6 1205 -190 787 34 39.5 0.0 -11.3 236 8.2 22.0 47.2 115
00050323.RBD 0 11.2 940 -3 1077 54 42.9 0.3 -14.6 290 6.2 28.9 58.4 174
00043001.ABI 0 11.9 2549 -66 1686 111 39.6 0.5 -11.8 268 8.4 26.8 40.5 228
00042423.LAA 0 5.4 613 -132 2566 97 54.0 0.0 -16.3 278 8.9 29.1 72.7 192
00042422.EHA 0 6.7 706 -56 2143 58 53.8 0.0 -15.2 295 8.1 25.8 83.4 159
00042021.BWG 0 11.2 1126 -13 1162 167 52.1 1.4 -13.5 240 7.4 46.8 53.8 253
00042021.BNA 0 11.2 989 -26 1114 165 53.6 1.3 -13.7 242 7.7 45.4 65.0 244
00042001.MCI 0 12.4 2093 -43 1300 141 61.9 2.1 -12.3 226 7.0 33.4 81.4 163
00042000.JCT 0 13.1 2950 -156 1701 170 51.7 0.4 -9.4 253 8.2 40.5 71.8 240
00041822.SJT 0 7.1 414 -185 3169 -7 49.4 0.0 -9.5 243 8.2 32.3 60.6 45
00041620.SUS 0 9.5 579 -1 968 46 41.8 0.2 -18.1 247 6.6 30.2 69.5 154
00041602.GRA 0 10.2 901 -182 1269 251 56.8 0.2 -17.0 244 8.6 34.1 76.8 276
00033000.SHV 0 12.6 1635 -14 797 147 57.7 2.3 -15.2 267 7.2 33.9 91.9 219
00032900.HYI 0 15.8 2875 -10 771 106 60.6 3.0 -11.6 251 7.3 36.4 82.8 192
00032522.BNA 0 8.3 268 -8 1461 34 37.5 0.0 -16.9 270 6.2 23.2 61.3 60
00032207.MAF 0 11.5 1952 0 562 249 54.6 4.4 -16.4 196 8.3 45.0 77.8 468
00031600.CSM 0 8.3 808 -99 1327 59 34.5 0.1 -17.7 251 7.6 25.7 34.3 101
00031022.BHM 0 10.3 614 -95 1034 103 48.9 0.4 -15.8 238 7.0 33.1 49.4 179
00030923.LRD 0 13.5 2701 -7 1360 -13 41.3 -0.2 -12.5 256 7.5 20.8 59.4 95
00030920.GFL 0 7.1 1 -425 1416 88 63.6 0.0 -18.7 242 8.1 39.6 77.0 165
00030900.UNU 0 9.9 1306 -11 1121 172 50.6 1.7 -17.3 203 6.6 39.6 44.1 206
00030900.CLI 0 9.4 673 -29 1009 196 53.3 1.2 -16.9 202 6.6 39.4 53.8 226
00030302.PWG 0 12.0 1469 -17 1106 252 60.9 3.3 -12.2 259 6.1 45.0 75.3 323
00030222.AFW 0 11.1 999 -6 913 256 68.3 2.6 -13.5 238 6.5 36.9 80.1 345
00022606.CRS 0 13.3 2158 -10 637 191 48.7 3.3 -14.8 239 6.9 25.4 69.2 184
00022523.FSD 0 7.3 495 -2 929 82 38.3 0.3 -21.9 172 7.7 30.1 52.5 83
00022405.FAM 0 9.2 437 -46 772 315 46.8 1.1 -18.0 235 6.3 29.2 42.2 331
00072222.BBW 0 11.9 1462 -1 1218 36 35.2 0.2 -11.1 328 6.5 26.6 43.9 124
00072220.GLD 0 10.6 1162 -15 1699 26 39.9 0.1 -10.2 319 7.4 19.8 55.8 82
00072122.BFF 0 9.8 1738 -8 2036 34 42.0 0.0 -9.9 297 7.7 36.2 48.9 131
00072022.AKO 0 14.0 3465 -7 1063 22 46.2 0.6 -10.2 278 8.3 29.1 64.7 106
00072000.BVX 0 17.4 3847 -11 1674 30 36.4 0.2 -7.1 298 6.9 26.0 29.2 130
00071022.RCA 0 13.2 1916 -28 1452 23 41.1 0.2 -9.2 238 7.6 21.4 68.1 95
00071001.LBF 0 14.7 2947 -100 1740 24 28.1 0.1 -5.6 239 7.8 23.6 37.9 109
00070922.MHE 0 16.8 3556 -34 1430 6 40.7 0.1 -6.1 258 6.7 18.8 41.5 109
00070922.GGW 0 13.3 2242 -12 1039 31 46.6 0.5 -11.4 226 7.4 18.7 71.4 74
00070901.LWT 0 8.7 874 -65 1998 38 58.4 0.0 -11.5 232 8.1 32.4 92.6 236
00070805.LVN 0 18.2 2722 -69 530 388 37.6 5.8 -9.2 261 8.1 22.9 53.3 407
00070803.JDN 0 7.6 57 -220 2275 33 69.9 0.0 -11.7 240 7.8 39.2 84.5 167
00070601.CUT 0 11.7 2058 -14 1543 37 55.5 0.3 -9.9 245 8.5 28.5 78.8 136
00070523.MCK 0 16.4 3979 -55 1631 151 45.4 1.6 -6.8 254 8.1 24.5 59.5 231
00070521.RAP 0 14.5 3135 -2 1289 15 44.0 0.3 -10.0 233 8.0 19.5 68.5 93
00070501.2WX 0 11.2 1574 -93 1339 -29 47.6 -0.2 -12.4 230 8.6 28.2 78.4 64
00070421.JDN 0 8.1 1033 -47 1927 -17 41.2 0.0 -15.0 209 7.9 26.2 68.3 49
00070302.GGW 0 10.6 1484 -86 1685 121 67.7 0.4 -12.6 252 7.9 36.1 78.0 267
00070222.FOD 0 17.4 3585 -43 1097 53 23.7 0.0 -9.5 292 7.5 16.4 31.4 91
00070201.ABR 0 14.2 3411 -108 1790 100 24.5 0.0 -10.0 259 8.3 16.6 39.9 145
00070123.ELO 0 13.3 2835 -49 1339 117 57.8 2.1 -13.1 291 7.7 31.9 66.7 228
00070122.ABI 0 13.9 1505 -15 1776 40 26.6 0.1 -5.4 261 5.7 21.4 25.5 120
00070100.JLN 0 15.5 2255 -3 786 81 43.6 1.3 -7.6 313 5.9 25.5 56.4 208
00062923.ELM 0 8.8 332 -11 1098 19 33.4 0.0 -16.5 253 6.2 19.9 82.5 60
00062923.D07 0 9.6 1600 -26 1649 30 42.4 0.1 -15.7 295 7.7 30.2 50.5 90
00062901.LAM 0 11.8 506 -57 1728 28 25.5 0.0 -6.5 268 6.3 18.5 25.2 126
00062519.AIO 0 14.7 2632 -77 1269 122 38.0 1.2 -10.6 279 7.3 29.0 32.0 250
00062402.RCA 0 11.5 1507 -76 1200 0 40.3 0.0 -11.0 273 7.9 29.4 67.6 159
00062322.SDA 0 16.8 4294 -9 1398 56 28.6 0.7 -9.2 284 7.3 21.1 46.7 160
00061522.OKV 0 14.5 746 -31 749 130 32.3 0.5 -8.8 240 6.0 35.1 29.5 198
00061323.P28 0 14.3 3106 -53 1734 60 41.3 0.3 -10.0 260 8.0 15.7 31.7 91
00061122.DFS 0 13.5 3143 -11 1597 67 28.6 0.4 -8.2 251 7.7 28.8 45.0 62
00060400.GLD 0 9.0 1430 -74 2560 51 35.6 0.0 -10.7 313 8.7 29.0 38.3 146
00060221.CEF 0 12.1 326 -141 1452 156 38.5 0.1 -9.8 279 6.6 44.9 47.0 277
00052701.SZL 0 13.7 1477 -23 1157 198 50.0 2.1 -9.7 244 6.7 38.9 69.4 232
00052501.PPA 0 15.2 3731 -83 1597 78 46.6 0.7 -8.0 249 8.4 33.0 60.7 288
00052501.ADK 0 16.3 4569 -134 1861 108 40.3 0.2 -7.8 255 8.7 36.4 49.3 291
00052219.AVC 0 10.1 628 -1 1000 2 52.8 0.0 -13.8 256 5.9 28.0 59.1 95
00052021.VPC 0 13.0 805 -6 1196 15 39.2 0.1 -9.8 231 6.1 19.7 47.6 87
00050922.IRS 0 12.0 729 -2 928 68 49.6 0.4 -13.6 230 6.9 46.6 41.5 178
01041105.JCT 0 14.1 1545 -229 832 346 71.9 0.0 -9.7 230 8.5 44.0 97.0 386
01041004.IND 0 11.4 1318 -107 1240 185 57.8 1.1 -13.8 292 7.2 35.6 68.3 216
01040321.UNO 0 12.3 1279 -42 722 107 57.2 1.3 -13.7 270 7.4 36.3 60.7 225
01040300.BFF 0 5.0 0 -9999 1708 161 63.5 0.0 -17.8 241 7.5 37.7 81.7 433
01032404.ABI 0 10.8 1700 -61 813 65 27.5 0.5 -18.2 289 8.0 17.4 46.6 180
01031202.FTW 0 11.7 1341 -9 490 161 53.1 1.9 -17.9 240 7.3 37.5 47.3 201
01031123.BWD 0 10.1 846 -18 912 76 47.4 0.5 -17.4 245 7.7 31.1 69.7 133
01022500.TOP 0 7.3 153 -15 715 148 78.6 0.2 -21.3 203 6.8 32.9 92.4 170
00110907.GZH 0 15.4 1005 -3 768 172 47.3 1.4 -7.8 213 6.0 36.2 52.6 220
00110906.EET 0 14.9 674 -3 539 277 52.5 1.6 -8.6 217 5.7 41.9 58.8 327
00110121.CID 0 12.2 1537 -17 1087 164 40.8 1.6 -12.1 210 6.0 36.7 41.3 225
00102323.ELP 0 9.8 1432 -3 1298 24 68.0 0.2 -14.2 201 7.5 36.8 65.9 132
00102212.MWL 0 13.4 1016 -7 525 152 31.3 0.8 -11.5 208 6.2 22.4 43.6 149
00101423.INK 0 8.5 757 -27 2381 63 29.5 0.0 -10.8 243 7.2 27.3 48.1 91
00101408.CNM 0 11.5 1524 -124 1147 79 34.2 0.3 -10.4 246 7.2 29.4 55.6 119
00101400.SLN 0 11.5 577 -49 879 26 58.0 0.1 -11.3 234 5.7 28.9 63.6 76
00100401.GCK 0 8.5 341 -281 1869 -16 53.4 0.0 -11.5 263 8.5 38.0 70.8 124
00090523.GTF 0 7.6 277 -43 1393 8 65.8 0.0 -15.8 219 7.4 34.7 93.3 112
00090300.ISN 0 10.7 654 -10 754 62 42.1 0.3 -13.8 225 6.8 27.3 72.5 95
00090120.SLC 0 5.7 78 -67 2129 29 41.1 0.0 -14.3 198 7.4 15.4 53.6 53
00081820.BUY 0 15.3 1702 -37 1351 58 34.7 0.4 -8.2 275 6.5 38.7 13.2 134
00081723.IND 0 19.2 4115 -13 791 158 47.3 5.1 -7.9 275 6.9 37.5 49.8 224
00081720.LEX 0 16.6 2579 -6 1129 81 36.5 1.1 -6.7 284 5.9 24.9 42.3 141
00081420.AIT 0 16.2 2299 -120 690 282 52.2 3.0 -9.8 267 8.0 37.9 69.5 368
00080623.CDJ 0 14.7 1350 -119 1250 43 35.9 0.1 -6.8 272 6.3 24.5 54.6 88
00080601.HNR 0 18.6 4073 -16 990 54 37.6 1.4 -7.0 271 7.3 25.9 55.8 92
00080522.AIA 0 7.8 312 -3 2875 0 43.4 0.0 -8.3 272 7.7 22.1 49.4 52
00080502.PIR 0 14.4 2629 -128 1844 202 48.0 0.3 -7.4 270 7.5 30.4 64.1 318
00080502.ANW 0 11.5 1035 -228 2157 138 37.9 0.0 -6.3 276 7.6 25.6 46.8 227
00080222.FKL 0 13.7 1168 -22 892 104 26.2 0.5 -9.1 253 5.9 27.0 55.7 145
00080202.LWT 0 8.3 700 -130 2701 50 46.5 0.0 -8.4 286 8.6 19.4 78.7 94
00080202.GGW 0 10.8 1193 -207 1955 94 51.1 0.0 -9.6 293 8.0 25.1 71.3 230
00072622.AIO 0 16.7 3711 -2 964 67 44.8 1.9 -10.2 324 7.6 29.1 43.1 186
00072501.HON 0 13.9 2463 -99 1314 85 29.5 0.5 -11.1 271 8.3 13.2 40.3 91
01060123.LWC 0 11.2 1268 -25 1421 113 62.6 0.8 -13.2 305 6.4 37.6 79.8 249
01060122.P28 0 11.4 1141 -69 1552 80 51.2 0.3 -9.7 308 6.6 21.4 62.5 156
01053100.CVN 0 8.5 1309 -86 2195 -18 45.9 0.0 -10.8 289 8.3 24.1 38.5 138
01052801.END 0 13.1 2369 -85 1258 150 47.1 1.6 -12.5 280 8.2 39.8 67.4 370
01052400.OKF 0 7.6 314 -55 2200 85 59.2 0.0 -15.3 298 7.1 43.3 63.3 244
01052022.GRK 0 15.6 2852 -21 1408 32 40.1 0.4 -7.9 242 6.8 30.2 75.1 60
01051801.RUL 0 11.1 1624 -134 2428 24 25.8 0.0 -8.5 258 8.1 18.9 46.6 76
01051623.BIE 0 13.4 3208 -41 1905 35 30.0 0.1 -10.4 274 7.5 20.5 32.1 103
01051218.DDH 0 8.9 325 -25 1493 21 36.4 0.0 -16.2 229 6.4 25.9 46.8 102
01051000.OLU 0 9.6 2423 -73 2081 70 30.6 0.0 -15.8 265 8.8 23.7 36.8 157
01050823.GBD 0 8.1 447 -90 1828 55 44.5 0.0 -15.8 323 7.4 25.4 50.6 207
01050701.COT 0 15.9 3113 -16 1068 4 34.1 0.1 -12.2 267 8.1 10.5 56.5 73
01050700.ADS 0 14.6 2915 -5 1038 115 37.4 2.0 -13.7 248 7.3 23.1 63.5 148
01050623.BMQ 0 16.4 4217 -12 955 48 38.2 1.3 -13.0 257 7.5 27.3 64.9 143
01050501.COT 0 14.3 1453 -9 1075 113 48.9 1.2 -9.9 226 7.0 33.1 73.5 169
01050200.AUD 0 10.0 1544 -80 1896 85 31.2 0.1 -14.7 266 8.2 22.1 40.9 170
01050101.SLN 0 10.5 1695 -66 1383 122 37.1 0.7 -16.7 295 8.0 24.3 61.4 188
01050100.P28 0 9.9 1422 -94 1553 70 45.7 0.2 -15.7 309 7.8 24.3 54.0 188
01042317.STE 0 9.5 775 -5 970 86 55.4 0.6 -18.0 210 6.8 38.9 110.9 170
01042304.JCT 0 14.1 2210 -11 659 190 53.5 3.8 -11.8 248 7.8 31.4 55.1 214
01042222.MWL 0 11.8 1193 -8 1373 116 46.2 0.7 -10.2 212 6.2 33.4 58.0 105
01042123.PIA 0 12.1 1857 -13 1175 79 41.0 0.8 -13.4 257 7.5 25.7 51.8 94
01042123.CDS 0 10.3 2000 -70 2105 81 55.8 0.0 -11.8 230 7.9 27.2 70.8 141
01042102.SLN 0 11.5 2072 -206 1218 280 50.2 0.0 -15.1 239 8.7 44.2 73.5 374
01041702.SJT 0 13.0 1793 -30 989 96 38.8 1.1 -10.9 296 7.0 26.3 65.2 260
01041700.LBB 0 8.1 406 -65 1861 42 46.3 0.0 -12.1 288 7.1 32.9 80.6 256
01041500.ABI 0 12.6 2222 -121 1474 76 59.9 0.5 -13.2 249 8.7 28.8 78.5 130
01041423.ADM 0 14.2 1613 -86 524 248 67.7 3.1 -14.2 254 8.6 38.9 90.8 310
01041422.PCS 0 13.6 2872 -90 1455 5 57.7 0.1 -10.8 245 8.2 21.5 77.6 85
01041422.EMP 0 8.9 652 -15 1486 57 59.4 0.2 -16.8 254 7.2 31.9 84.7 218
01041421.HBR 0 13.9 2647 -29 786 167 70.6 4.4 -14.3 255 8.2 39.1 91.1 239
03050100.BRL 0 12.7 2707 -10 1047 121 47.3 2.5 -15.8 247 8.2 27.0 50.9 270
03043021.AIA 0 12.3 2247 -53 863 158 49.0 2.8 -15.7 243 8.1 37.1 49.5 276
03043003.LIC 0 8.7 1228 -82 574 264 52.2 2.2 -15.9 216 8.8 43.9 59.2 676
03042900.APA 0 6.3 1056 -56 1639 56 35.9 0.1 -15.6 239 8.3 10.6 65.7 63
03042600.HRL 0 12.4 1634 -219 1994 5 43.7 0.0 -11.1 286 8.3 25.0 72.5 36
03042522.FTY 0 11.2 645 -12 811 160 61.6 1.0 -14.4 253 6.7 33.8 66.6 259
03042520.ANB 0 11.5 783 -1 777 164 64.0 1.3 -14.0 259 6.2 36.4 64.7 319
03042400.SEP 0 14.4 2485 -6 558 393 62.4 9.8 -14.6 238 7.9 39.1 92.6 485
03042022.MKL 0 12.5 1017 -22 789 92 57.6 0.9 -14.3 251 6.9 29.0 70.2 188
03042019.MEM 0 13.1 1682 -6 857 78 50.6 1.1 -14.2 252 7.3 29.0 57.0 148
03041922.P#0 0 11.7 1623 -17 730 127 72.6 2.1 -19.4 223 7.9 35.5 102.9 148
03041920.END 0 10.6 1171 -12 629 144 57.4 1.6 -21.0 215 8.4 39.0 99.4 219
03041907.FDR 0 12.6 1046 -418 613 365 65.8 0.0 -13.9 207 8.9 40.5 101.8 352
03040720.HOU 0 16.5 2215 -1 373 67 57.9 1.4 -11.4 231 7.6 30.3 77.2 191
03040718.BPT 0 13.8 933 -139 741 16 59.0 0.1 -12.1 226 7.4 26.5 91.0 110
03040717.LFT 0 14.1 780 -168 559 29 50.5 0.0 -12.0 233 7.3 29.3 84.8 74
03040605.C12 0 11.3 655 -128 639 328 69.4 1.0 -14.6 250 7.3 45.3 111.0 697
03040601.C11 0 12.1 2056 -4 832 109 75.1 2.2 -15.3 251 7.6 26.4 93.3 198
03040400.LW1 0 13.3 2761 -1 682 153 54.3 3.8 -15.1 242 7.6 32.9 52.2 224
03040322.HBR 0 9.5 1315 -38 1655 57 42.4 0.2 -14.8 235 7.5 33.0 47.0 130
03032821.MBS 0 7.7 95 -1 1423 199 68.1 0.1 -17.6 223 6.6 48.9 65.7 252
03032819.AZO 0 8.9 146 -2 830 200 60.9 0.3 -17.3 225 6.7 54.5 64.3 255
03031722.SPS 0 10.7 981 -38 1183 127 34.3 0.6 -15.4 236 7.3 19.3 95.8 139
03031720.SPS 0 10.2 947 -44 1140 35 24.3 0.0 -16.7 216 7.4 15.4 100.9 42
03031221.PBI 0 14.2 1790 -2 1215 21 36.5 0.2 -12.1 258 7.7 2.8 67.6 -23
03031218.FPR 0 15.8 2760 -2 892 -28 38.6 -0.5 -14.1 256 8.0 11.8 71.6 86
01062102.ICT 0 13.9 1917 -38 976 89 37.8 1.1 -11.3 291 7.3 26.8 48.8 202
01061623.JMS 0 8.9 600 -4 1096 41 40.5 0.2 -18.1 283 7.1 25.4 84.9 82
01061122.RGK 0 14.3 3269 -77 1618 201 51.8 1.8 -10.9 265 8.4 35.2 56.2 397
01060502.CSM 0 15.8 3992 -79 1412 107 34.9 1.2 -8.4 251 8.1 28.3 40.7 227
01060501.LHX 0 8.3 615 -248 1957 94 44.0 0.0 -11.2 243 9.0 29.0 49.3 127
03062823.RST 0 8.8 203 -71 1471 26 40.8 0.0 -12.1 287 4.8 15.4 60.6 57
03062822.BH4 0 6.7 253 -82 2374 15 53.7 0.0 -12.2 288 8.0 39.8 64.9 352
03062820.WSC 0 9.5 432 -25 1288 24 38.2 0.1 -13.2 292 5.0 20.7 57.7 45
03062800.C07 0 9.3 1323 -51 2202 29 36.5 0.0 -9.3 311 7.4 12.9 41.7 81
03062800.8V7 0 10.5 2208 -13 2023 82 42.3 0.0 -8.2 320 7.8 44.3 44.0 293
03062722.8V7 0 11.1 2543 -6 1821 66 38.6 0.2 -8.4 315 7.5 40.0 47.0 258
03062721.C07 0 8.9 1146 -29 2232 32 35.4 0.0 -9.2 306 7.2 11.7 50.1 74
03062401.CYS 0 10.5 1054 -23 891 146 67.4 1.5 -8.4 210 6.6 44.6 77.5 258
03062022.ROW 0 10.0 1448 -1 2438 18 41.2 0.0 -8.3 220 7.9 29.6 51.3 74
03062022.CVS 0 12.0 1680 -21 1220 96 32.9 0.7 -8.5 224 7.2 20.3 41.0 110
03062020.CVS 0 12.3 2087 -2 1100 14 22.8 0.0 -9.4 233 7.4 10.8 35.9 48
03061501.CNM 0 11.3 2677 -1 2178 -48 31.4 0.0 -11.2 338 8.5 17.4 38.2 109
03061423.HOB 0 9.6 1525 -68 2132 7 32.6 0.0 -11.5 330 8.5 14.0 32.3 24
03061223.C11 0 20.9 5150 -8 501 190 32.5 5.3 -8.9 269 8.0 41.4 58.8 339
03061221.AGC 0 13.1 691 -9 1032 158 35.1 0.6 -8.8 227 5.9 34.2 44.2 256
03060401.TCC 0 11.4 1746 -91 1622 -15 59.6 -0.1 -9.6 288 8.2 44.8 48.7 398
03060322.LBB 0 13.6 2239 -128 1199 80 45.2 0.5 -9.1 302 7.9 31.8 57.3 316
03060302.LRD 0 17.3 3023 -81 1418 -4 35.4 0.0 -5.0 285 7.3 27.3 67.7 -12
03053121.ILM 0 13.5 1237 -102 1265 394 58.4 2.3 -10.4 275 6.3 47.7 74.8 576
03052001.ADM 0 16.8 3033 -19 1155 81 33.3 1.2 -8.4 288 7.5 14.5 61.0 188
03051922.FSI 0 15.9 2088 -80 836 131 37.4 1.4 -8.3 246 8.1 40.1 50.7 385
03051409.C12 0 13.9 2056 -415 1151 505 44.5 0.0 -12.7 290 9.5 25.4 80.3 466
03051406.LW1 0 15.8 3351 -219 819 259 50.4 0.0 -11.8 274 8.3 12.9 74.5 238
03051401.C11 0 13.9 3239 -178 1774 132 58.3 0.1 -9.9 286 8.2 22.1 60.4 192
03051322.CDS 0 12.4 3323 -92 2274 79 49.1 0.0 -10.1 280 8.6 18.1 68.8 98
03051223.MRF 0 11.6 1914 -2 1612 41 42.7 0.2 -6.0 279 6.7 33.9 49.2 174
03051019.MLC 0 14.5 849 -221 615 158 58.7 0.0 -8.7 240 7.6 34.0 74.3 199
03051017.P#Q 0 16.5 2801 -34 619 97 68.4 2.7 -9.2 235 7.2 32.3 77.8 168
03051000.P#J 0 16.2 3929 -21 888 74 55.8 2.7 -12.5 247 7.6 33.6 64.7 227
03050922.LEX 0 15.5 2304 -3 715 119 55.3 2.5 -9.5 278 7.4 32.8 69.7 185
03050921.COU 0 16.1 4338 -12 941 67 45.4 2.2 -11.8 246 7.4 35.8 73.5 264
03050920.SDF 0 15.2 2300 -15 871 88 52.2 1.8 -10.2 268 7.2 36.6 70.7 247
03050520.MKL 0 15.8 2332 -17 581 247 71.6 5.8 -11.9 263 7.3 40.2 88.1 300
03050223.BMX 0 15.4 3487 -10 686 61 44.2 1.6 -13.2 283 6.8 21.9 38.7 114
03050221.HSV 0 13.0 2237 -40 946 139 42.3 2.2 -13.8 264 7.0 27.8 33.8 201
03050221.ABL 0 13.6 3056 -5 1063 81 40.9 1.6 -14.7 280 7.2 27.0 27.0 130
03050219.SJT 0 15.1 4252 -2 1189 17 38.9 0.4 -12.5 277 8.1 4.7 61.7 18
03050219.ABL 0 12.9 2572 -28 1072 45 27.2 0.5 -13.7 261 6.7 22.6 36.0 82
03050218.MSL 0 13.0 2367 -24 912 19 25.5 0.2 -14.5 257 7.4 24.2 40.8 60
03050201.ACT 0 13.6 2339 -88 1301 -44 31.1 -0.3 -11.9 280 8.3 21.3 53.8 -77
03050102.END 0 14.0 3853 -58 1033 227 43.6 5.8 -13.5 250 7.4 27.5 43.5 247
03071221.AVL 0 11.9 710 -2 1196 56 37.5 0.2 -8.5 266 5.6 31.7 43.3 103
03071201.FOE 0 16.7 3598 -41 1289 -96 59.4 -2.4 -10.2 313 7.9 33.9 54.8 89
03071200.FOE 0 16.2 3683 -11 1441 -16 63.8 -0.3 -11.0 315 7.7 31.9 59.2 109
03071123.P#H 0 12.6 927 -26 1632 97 59.9 0.3 -9.9 322 7.2 45.3 55.0 319
03070904.PHP 0 14.6 2161 -292 1066 549 72.4 0.0 -8.6 260 8.8 53.5 55.7 683
03070900.BH3 0 8.3 1108 -106 2627 277 55.8 0.0 -7.9 250 8.4 55.7 68.2 568
03070723.LVS 0 8.8 850 -179 2135 85 20.0 0.0 -6.4 329 8.7 24.3 27.9 305
03070720.DSM 0 18.0 4261 -35 1012 20 39.2 0.6 -9.9 262 8.0 13.2 34.7 79
03070719.LVS 0 9.9 1337 -68 1800 12 22.3 0.0 -7.2 336 8.0 27.0 21.0 98
03070600.VTN 0 11.6 1572 -201 1584 157 52.8 0.0 -9.5 273 8.2 30.3 50.1 293
03070521.RAP 0 8.7 803 -208 2327 67 22.6 0.0 -11.2 272 8.5 6.7 33.0 46
03070521.P#7 0 10.3 1147 -137 2084 84 43.4 0.0 -10.3 249 8.1 22.9 55.2 239
03070517.BH3 0 8.9 1171 -147 2263 -14 27.2 0.0 -12.5 293 9.1 15.8 39.6 51
03070305.GDV 0 9.1 634 -206 1972 120 22.6 0.0 -13.9 250 8.7 30.3 58.1 255
03063018.AUG 0 11.8 1327 -56 1152 60 42.9 0.5 -12.3 267 5.3 24.4 72.0 118
03081800.BH5 0 9.0 725 -5 2392 -33 27.4 0.0 -9.3 180 7.6 12.2 31.3 76
03081322.XRW 0 16.6 1031 -16 519 88 21.6 0.0 -6.2 187 5.5 23.7 39.1 164
03081202.SEP 0 12.7 373 -104 1300 -113 55.9 -0.2 -8.4 345 6.8 38.0 68.0 -12
03081200.FWD 0 12.2 1050 -51 2135 -30 50.2 0.0 -8.8 339 6.7 35.0 52.7 68
03081023.P#9 0 13.9 1702 0 1195 30 41.7 0.3 -9.2 346 6.8 25.8 56.8 104
03080902.P#C 0 15.5 3216 -71 1472 8 27.4 0.1 -6.4 277 7.9 17.3 40.8 199
03080900.MIB 0 15.0 3325 -48 1477 39 33.2 0.4 -9.0 291 7.7 10.7 43.9 102
03080900.P#C 0 14.4 3127 -1 1826 10 25.0 0.0 -5.8 262 7.5 12.2 42.3 64
03080622.GLD 0 12.9 3132 -2 2338 21 28.1 0.0 -7.1 306 8.2 14.7 32.7 115
03080601.CNU 0 15.8 2262 -28 1629 -18 34.6 -0.1 -5.1 317 6.6 25.1 42.1 49
03080600.SUX 0 15.5 1945 -3 996 54 38.2 0.7 -8.6 321 7.0 35.9 44.6 171
03080521.TOP 0 16.0 2857 -24 1592 -7 30.8 0.0 -6.8 308 6.3 19.6 40.9 101
03080520.DAN 0 15.0 2224 -8 858 8 18.6 0.0 -10.1 275 6.4 27.6 30.4 121
03080422.P#R 0 15.1 1771 -64 1131 59 51.1 0.7 -8.5 326 6.5 23.7 72.7 144
03080401.BVX 0 16.9 2856 -38 1072 96 33.8 1.4 -8.7 308 6.7 18.2 47.9 100
03080202.LUS 0 9.3 520 -170 1828 -21 47.7 0.0 -8.2 291 7.9 30.7 60.7 11
03080123.CRL 0 13.5 2544 -8 1131 18 35.3 0.2 -12.9 299 7.9 26.6 36.1 109
03080103.MCW 0 11.0 914 -111 1515 8 24.1 0.0 -12.2 281 7.0 26.6 47.8 60
03073123.C31 0 8.6 251 -238 2988 79 50.4 0.0 -8.0 311 8.0 29.8 74.4 268
03073120.TVL 0 10.6 1275 -24 1488 33 34.5 0.1 -7.4 90 7.8 32.3 17.1 170
03072700.IWD 0 15.1 1598 -19 1386 149 42.6 1.0 -6.1 276 5.9 27.7 60.4 150
03071802.BH1 0 13.9 2073 -132 1543 52 64.4 0.2 -6.9 291 7.8 47.0 77.9 171
03071721.RAP 0 14.6 3713 -127 1972 107 39.2 0.0 -6.2 280 8.5 31.5 54.8 181
03071320.MSL 0 16.4 2839 -21 1060 37 23.4 0.0 -9.3 310 7.1 4.1 36.8 35
03071320.DIK 0 9.2 2113 -26 3189 -19 27.9 0.0 -9.3 266 9.0 11.0 36.6 31
04040721.P#U 0 11.2 1509 -10 1060 103 47.1 1.2 -15.7 268 6.4 35.8 60.8 191
04040702.SPS 0 8.6 230 -53 980 110 36.0 0.2 -17.3 236 6.3 19.0 53.3 110
04040700.FTW 0 10.4 641 -8 948 43 57.7 0.3 -14.3 228 6.4 22.9 60.1 83
04040422.LRD 0 13.8 2148 -1 827 171 49.4 3.0 -12.9 244 7.0 31.5 38.8 217
04040421.ALI 0 13.2 1124 -3 718 10 40.8 0.1 -13.2 238 7.0 18.0 35.9 100
04032701.DHT 0 9.5 1004 -128 1142 153 30.2 0.3 -13.4 233 8.2 31.2 63.3 235
04032623.RAP 0 8.7 1651 -52 1568 172 42.5 0.9 -15.5 205 8.0 26.0 46.8 264
04031802.FSM 0 8.0 442 -99 1939 211 48.0 0.0 -17.1 278 7.5 37.8 72.5 338
04031800.P#P 0 9.4 1357 -30 1585 127 45.0 0.5 -17.4 288 7.7 34.4 66.4 269
04030121.ORD 0 7.2 534 -1 908 208 58.9 1.1 -23.3 222 6.6 37.3 72.6 297
04030120.RFD 0 6.8 505 -7 892 172 55.3 0.8 -24.3 220 6.8 34.8 71.1 256
04022416.MCO 0 13.1 534 -37 687 121 47.0 0.5 -10.8 255 5.0 28.8 81.9 156
04022407.G#5 0 10.5 962 -124 801 -16 47.4 -0.1 -18.2 218 7.7 31.4 83.7 14
04022316.MSY 0 11.3 0 -9999 417 436 51.3 0.0 -11.2 240 6.1 44.9 86.2 531
04020601.BTR 0 11.7 57 -172 540 186 69.9 0.0 -13.3 214 7.0 48.1 87.1 199
04020514.LFT 0 11.1 165 -244 1109 583 49.0 0.0 -11.7 217 6.5 46.0 63.5 611
04020512.LCH 0 13.6 1421 -64 497 282 49.1 3.0 -12.5 222 6.8 41.7 68.1 319
04011921.VRB 0 10.3 196 -20 878 -16 82.2 0.0 -14.0 242 5.1 46.9 123.3 207
03112718.RUE 0 10.5 681 0 396 4 92.3 0.0 -20.1 238 7.0 35.8 100.8 153
03110923.SAC 0 6.9 156 -14 892 38 24.7 0.0 -25.3 234 7.5 14.4 91.8 77
03102818.CTY 0 16.5 1074 -53 594 181 37.6 1.2 -7.8 217 6.3 23.6 51.5 193
03100822.VAD 0 14.1 1355 -7 765 -4 27.1 0.0 -11.2 277 6.4 13.9 52.0 68
03092718.CBE 0 11.6 969 -2 1256 109 40.4 0.5 -12.3 213 6.1 33.1 58.2 137
03092620.UIN 0 12.7 1139 -3 844 177 50.2 1.7 -14.6 266 7.9 42.7 77.1 266
03092619.BRL 0 11.1 906 -34 824 125 50.2 1.0 -14.9 256 6.9 40.9 76.6 149
03091200.MRF 0 9.8 747 -2 1645 9 36.3 0.0 -6.8 276 6.2 25.5 49.1 163
03090900.MAF 0 9.9 1214 -1 2565 13 32.3 0.0 -8.4 313 7.4 22.4 35.6 163
03083123.HUF 0 14.8 27 -163 471 268 39.8 0.0 -6.8 243 6.3 41.6 43.2 340
03082601.P#4 0 12.9 980 -231 1606 140 42.5 0.0 -9.4 277 7.1 39.4 44.3 283
03082600.ABR 0 14.2 3471 -76 1925 104 37.8 0.1 -11.4 289 8.6 27.8 43.9 143
03082221.LOL 0 9.6 944 -94 1467 89 64.9 0.3 -12.3 188 8.3 46.4 77.0 299
03082119.APX 0 14.4 2077 -120 1359 80 36.1 0.3 -8.3 255 7.1 34.1 35.4 132
03082100.DLH 0 16.1 2503 -11 1009 166 39.5 2.7 -8.1 226 6.2 24.3 46.3 201
04051501.PUB 0 3.9 204 -85 2585 153 55.2 0.0 -18.2 268 8.8 42.0 78.8 355
04051423.COS 0 4.6 230 -87 1664 52 57.1 0.0 -18.0 274 8.2 45.2 68.4 179
04051300.HBR 0 14.0 4148 -28 1710 172 41.2 1.4 -11.1 244 7.8 44.0 46.5 333
04051100.LUS 0 8.3 917 -69 1429 204 53.5 0.8 -11.5 237 7.4 28.1 44.2 323
04050923.CVS 0 5.9 554 -61 3040 -32 23.7 0.0 -12.6 309 9.6 17.1 15.5 78
04050921.STC 0 9.9 1302 -52 1737 185 49.7 0.5 -14.2 264 7.5 46.1 49.8 400
04050900.P#A 0 13.8 2438 -42 1008 193 29.0 2.3 -12.7 278 7.7 19.9 36.2 251
04050822.BH3 0 5.3 996 -6 3054 49 48.0 0.0 -15.0 280 9.6 8.9 60.8 58
04050522.RIC 0 8.3 824 -38 1493 133 43.8 0.4 -20.4 310 7.1 34.9 60.9 251
04050101.FWD 0 13.9 2471 -39 907 158 44.9 2.9 -14.8 225 8.3 23.0 58.2 185
04043021.C12 0 13.3 2483 -8 1029 37 45.1 0.7 -14.1 236 7.9 32.8 46.0 48
04043020.DYS 0 14.1 2950 -10 638 71 52.3 1.8 -14.3 236 7.8 34.1 51.0 143
04043018.ABI 0 12.0 2372 -1 1211 -3 32.6 0.0 -13.6 230 7.7 22.8 40.3 -22
04042920.MLU 0 12.9 972 0 744 72 46.0 0.5 -14.5 232 6.6 29.2 45.8 176
04042821.G#2 0 10.1 747 -3 1175 139 56.7 0.8 -14.7 252 7.4 32.3 53.8 179
04042521.CDS 0 7.1 679 -5 2042 20 45.4 0.0 -17.7 276 7.7 27.7 76.8 88
04042300.SGF 0 9.8 113 -134 794 263 69.4 0.1 -15.2 267 7.5 51.1 79.0 572
04042300.P#P 0 14.6 2114 -9 448 155 49.9 2.7 -13.6 245 7.2 26.3 46.7 258
04042223.C12 0 12.6 1615 -11 1173 56 54.8 0.7 -10.8 266 6.6 36.5 68.7 191
04042222.UMN 0 10.5 412 -29 663 220 60.2 0.9 -17.5 254 8.2 45.7 67.6 357
04042221.C34 0 11.2 1504 -22 1170 72 53.8 0.8 -15.5 265 7.8 38.9 55.3 252
04042200.ADM 0 11.7 1347 -25 1310 194 51.9 1.6 -13.2 269 6.8 28.4 68.1 339
04042122.C12 0 11.5 1550 -3 1449 83 53.3 0.6 -13.2 261 6.6 30.3 65.8 168
04041921.HOB 0 11.3 2173 -1 1395 86 53.9 1.0 -10.9 235 6.7 32.7 83.0 143
04041801.MFD 0 10.8 1224 -65 1060 185 23.7 0.0 -16.5 288 8.0 29.7 50.0 245
04041723.MFD 0 11.9 2519 -15 1046 104 26.5 1.1 -15.5 303 7.2 29.2 37.6 184
04041105.MFE 0 15.8 2222 -37 402 26 39.9 0.4 -11.6 248 7.5 2.1 69.3 23
04041019.ILM 0 9.2 180 -45 1165 111 41.2 0.1 -16.1 267 6.0 29.7 69.5 345
04041001.PRX 0 8.8 516 -75 1780 210 42.3 0.1 -14.1 270 6.7 37.6 59.1 314
04040818.DAB 0 13.2 1058 -19 810 73 56.2 0.7 -15.8 264 7.7 33.6 94.9 186
04040815.DHN 0 11.9 877 -2 522 78 53.9 0.6 -15.8 257 6.5 30.9 87.6 111
04071305.CHE 0 17.6 3151 -107 771 181 49.7 2.9 -8.9 301 7.9 29.7 60.2 300
04070104.HBR 0 15.7 1988 -45 801 174 24.0 0.0 -8.2 259 7.0 25.9 23.7 276
04062402.FNT 0 10.0 608 -67 1046 219 50.4 1.0 -15.3 260 6.5 32.1 72.4 270
04062222.BIS 0 7.2 504 -14 1518 9 56.3 0.0 -18.7 301 6.3 28.7 75.6 88
04062023.DHT 0 8.4 905 -127 2633 107 47.8 0.0 -9.3 270 8.8 36.3 67.8 192
04061902.G#1 0 13.2 1631 -27 1122 144 35.1 1.2 -8.6 284 7.3 37.4 58.3 408
04061900.HDN 0 6.4 316 -26 1668 -40 51.4 0.0 -13.3 257 8.3 36.5 73.3 29
04061820.FAM 0 15.9 1842 -13 923 65 31.0 0.6 -7.0 271 5.7 23.9 35.7 131
04061800.LHX 0 12.7 2059 -86 777 206 47.3 2.5 -11.2 235 8.4 37.4 49.6 651
04052700.CHE 0 8.9 347 -4 1255 145 31.1 0.2 -14.7 268 6.1 31.0 44.9 228
04052623.TYS 0 14.7 1654 -44 919 199 50.1 2.8 -9.7 275 5.9 37.8 71.9 255
04052623.OKC 0 15.9 3047 -69 1198 124 56.8 2.5 -7.9 261 6.8 24.4 82.9 79
04052622.FSD 0 9.4 835 -34 1187 143 35.4 0.6 -17.3 267 7.3 33.1 47.2 271
04052621.CSV 0 14.4 1608 -15 870 176 59.8 2.8 -9.3 268 6.2 35.9 58.7 237
04052621.C33 0 13.6 2405 -23 1847 104 55.5 0.4 -9.6 256 7.5 30.4 80.9 72
04052603.CAI 0 15.4 1463 -14 609 129 47.0 1.5 -11.0 277 7.2 31.6 59.9 153
04052402.P#7 0 7.8 400 -213 1358 246 41.2 0.0 -15.5 247 8.2 35.3 62.4 412
04052400.STL 0 16.1 3087 -3 604 162 45.4 3.8 -12.7 253 8.0 28.6 58.7 195
04052400.CDR 0 5.8 117 -187 2181 178 56.7 0.0 -14.5 256 8.0 30.8 66.1 338
04052323.BGM 0 14.6 2244 0 781 156 41.1 2.4 -11.9 272 7.8 30.1 44.7 249
04052320.PIN 0 12.0 1300 -3 1376 120 33.7 0.6 -11.8 267 6.7 36.9 31.3 199
04052300.ELM 0 12.4 1089 -41 1163 226 43.8 1.5 -9.7 281 5.7 46.2 46.0 359
04052201.G#1 0 12.3 2404 -84 1771 261 33.8 0.6 -8.2 246 7.9 36.9 50.5 385
04052201.SNY 0 7.0 484 -214 2287 78 62.8 0.0 -12.7 227 9.0 42.4 81.2 214
04052123.HYS 0 12.7 3460 -27 2109 75 39.7 0.0 -10.8 236 8.6 29.0 45.1 157
04052100.FKL 0 14.7 2440 -9 772 269 42.7 4.7 -10.6 299 6.4 28.6 49.2 346
04052100.DEN 0 9.0 1781 -3 1934 76 49.3 0.1 -11.5 231 8.4 30.6 60.1 225
04051723.DSM 0 13.3 1669 -24 854 23 36.8 0.2 -11.5 251 6.5 26.2 51.1 132
04051723.PUB 0 9.2 546 -83 1212 147 55.3 0.5 -11.9 251 7.8 44.9 72.1 222
04051601.9V9 0 7.5 608 -65 1315 120 61.8 0.5 -19.3 286 7.0 35.7 85.8 189
04051521.PIR 0 6.8 724 -30 1545 91 60.8 0.3 -21.3 289 7.3 36.7 70.4 224
04051520.Y26 0 7.0 965 -32 1206 89 60.4 0.7 -23.7 287 7.8 40.0 67.1 217
99053023.P07 0 12.1 2286 -113 1897 53 39.7 0.1 -8.5 315 7.8 22.5 45.3 165
99052800.FTW 0 12.2 1104 -4 954 41 33.8 0.3 -12.6 256 6.8 24.6 36.5 103
99052503.FST 0 10.3 1116 -185 1882 122 53.5 0.0 -9.7 271 8.3 44.1 67.4 157
99052502.INK 0 11.4 1576 -110 1665 119 56.3 0.4 -10.0 270 7.8 39.9 60.4 191
99052420.ABQ 0 8.1 781 -71 1338 71 34.2 0.2 -13.9 212 8.5 24.7 44.7 132
99052220.TUL 0 16.0 3471 -3 869 32 31.1 0.6 -12.1 269 7.3 20.4 36.1 91
99052200.SNY 0 8.7 1439 -7 1674 53 48.7 0.2 -12.8 266 7.7 28.2 65.4 147
99052123.RAP 0 8.6 1729 -70 1711 131 43.6 0.4 -16.2 256 8.7 23.0 67.0 178
99052001.MOT 0 8.0 903 -1 1506 2 27.5 0.0 -17.4 240 7.0 14.4 59.7 47
99051700.LAA 0 7.5 817 -141 1731 124 65.0 0.1 -15.0 234 8.6 43.8 78.0 361
99050519.MVN 0 12.9 1777 -10 790 108 57.7 1.8 -14.1 237 6.6 41.0 44.8 194
99043001.INK 0 12.4 2333 -60 967 95 52.8 1.8 -11.4 237 8.1 32.9 71.8 280
99042900.BIL 0 6.5 60 -143 1109 133 46.8 0.0 -17.8 182 7.5 39.8 84.0 324
99042800.EVV 0 9.5 305 -3 1146 22 26.2 0.0 -15.6 225 6.4 18.9 38.1 56
99042701.OKC 0 8.9 873 -24 1056 47 27.4 0.2 -20.3 275 7.9 23.0 44.2 88
99042322.LOZ 0 12.8 1995 -5 979 77 37.3 1.0 -11.6 287 6.9 30.4 44.4 71
99042319.EZF 0 10.2 1142 -51 1722 106 57.2 0.3 -14.2 276 6.9 38.0 68.5 172
99042203.GOK 0 12.3 2307 -132 894 364 53.9 3.4 -16.0 254 8.5 31.2 54.6 401
99042123.BMI 0 11.6 1687 -24 839 261 53.4 3.9 -16.4 252 7.8 45.9 57.4 408
04083002.GCK 0 10.7 1029 -108 1687 204 32.5 0.2 -8.1 315 6.8 29.0 26.2 278
04083000.SUX 0 10.7 779 -7 1471 199 42.6 0.6 -12.9 289 6.7 36.3 45.9 296
04082622.C23 0 10.2 983 -43 1349 25 41.1 0.1 -15.8 254 7.2 17.8 70.6 46
04082621.MCW 0 15.4 2478 -27 1087 26 46.1 0.5 -9.9 239 7.0 37.9 68.9 181
04082522.FSM 0 18.2 3688 -45 1240 101 33.9 1.6 -6.7 244 6.2 16.5 39.6 113
04082522.BIS 0 10.2 2077 -41 1811 74 38.1 0.2 -15.2 230 8.4 22.8 43.2 103
04082503.MHK 0 19.2 4217 -59 627 274 31.2 5.7 -7.9 224 7.5 31.4 51.8 392
04082501.MHK 0 18.9 4262 -45 721 150 29.9 3.2 -7.4 240 7.1 28.3 50.9 241
04082020.BGM 0 14.6 1425 -21 712 95 53.2 1.2 -9.5 238 5.9 38.1 53.7 106
04082018.ORH 0 15.1 2067 -19 1051 47 40.0 0.6 -8.9 256 6.1 29.0 39.9 132
04081918.LBE 0 14.4 1183 -7 597 105 39.9 0.8 -8.7 270 5.6 40.5 44.4 152
04081901.PIA 0 13.9 1294 -107 1203 377 40.4 1.6 -7.9 277 5.6 39.8 43.3 465
04081822.BRL 0 15.3 2600 -41 963 377 41.3 6.8 -9.4 276 6.6 42.5 42.9 508
04081421.LIC 0 9.9 1288 -66 1242 15 32.2 0.1 -10.2 333 7.8 25.5 42.7 65
04080321.OAX 0 18.7 4816 -44 1389 92 36.9 1.7 -5.9 259 7.0 23.6 38.1 189
04080202.Y26 0 15.4 3187 -169 1209 336 55.2 1.6 -9.3 291 8.1 28.5 83.2 385
04080123.Y22 0 8.5 1290 -28 3011 -1 45.9 0.0 -10.5 298 8.6 30.2 71.2 158
04073101.GAG 0 14.4 2006 -116 1300 54 42.0 0.3 -6.2 308 6.7 14.8 44.7 98
04072102.FSD 0 19.9 4659 -49 869 261 26.0 5.3 -5.9 278 7.3 28.0 37.4 426
99081101.HLC 0 17.4 3928 -33 1289 71 38.3 1.3 -5.1 243 6.7 21.0 34.5 152
99081023.AKO 0 14.9 2910 -32 1271 87 33.9 1.0 -6.5 232 7.6 22.7 45.7 163
99080901.DIK 0 12.0 2409 -98 1891 48 58.5 0.1 -10.8 267 8.5 29.7 54.5 94
99080822.2WX 0 10.3 1972 -32 2526 39 44.1 0.0 -8.8 262 8.3 27.2 41.0 117
99080702.RAP 0 12.7 921 -36 1200 35 33.6 0.1 -6.6 268 6.3 20.0 48.7 72
99080301.LWT 0 8.5 449 -155 1772 53 48.3 0.0 -10.3 278 7.8 29.4 70.4 131
99073100.JKL 0 15.8 3605 -30 1833 89 22.3 0.0 -5.9 355 6.7 22.8 19.6 158
99073020.IPT 0 15.0 2685 -12 1238 32 34.0 0.4 -8.7 319 6.3 16.0 50.7 72
99072922.FVX 0 14.5 1431 -13 1556 81 34.3 0.3 -6.0 327 5.6 22.6 48.0 117
99072902.XVG 0 12.7 1459 -186 1710 319 58.3 0.1 -9.5 302 7.7 41.9 73.8 381
99072900.ADG 0 14.8 1974 -6 1415 63 37.3 0.5 -9.4 298 7.1 21.7 66.3 118
99072420.MHT 0 14.8 1594 -17 1088 66 27.8 0.5 -9.7 275 6.5 25.2 56.1 134
99072319.RAP 0 10.6 1320 -19 2145 52 38.7 0.0 -7.5 263 7.3 22.5 54.0 87
99072300.FAR 0 16.2 2819 -34 1355 81 35.4 0.9 -8.5 247 7.6 27.9 55.9 137
99071923.GDV 0 11.9 1807 -31 1654 21 41.3 0.1 -11.2 254 7.9 18.9 69.4 67
99071302.FAR 0 12.1 1948 -48 1552 125 38.2 0.7 -12.5 297 7.2 27.2 61.0 158
99071302.DVL 0 10.4 1453 -76 1761 69 42.5 0.1 -13.5 288 7.5 28.3 62.4 124
99071300.OLF 0 9.2 1101 -38 2374 25 49.7 0.0 -10.3 281 7.3 26.5 65.7 106
99071202.AIA 0 9.4 1094 -73 1844 -8 27.8 0.0 -11.3 327 8.0 26.7 47.0 79
99070804.GDV 0 14.2 2058 -209 1364 472 61.7 0.0 -7.6 251 8.0 40.8 78.6 551
99070421.ERY 0 19.1 3756 -61 791 95 32.9 1.8 -6.7 267 8.2 22.2 36.6 98
99070207.SFD 0 9.5 32 -374 1535 254 82.4 0.0 -10.7 263 7.4 45.0 92.7 464
99070103.SWO 0 18.3 2994 -18 703 229 51.1 5.8 -4.6 303 6.4 25.9 51.9 297
99070103.GCK 0 15.2 2113 -124 873 95 73.0 1.0 -6.5 294 7.5 37.6 74.8 319
99063023.LBF 0 9.7 291 -114 1136 0 76.3 0.0 -12.3 289 6.9 54.3 115.6 214
99062801.BGD 0 13.8 2864 -63 2251 73 37.7 0.0 -5.0 266 8.5 22.5 43.1 130
99062522.DIK 0 12.8 2775 -1 1732 -52 57.7 -0.4 -10.3 230 8.2 35.4 58.9 132
99062501.VTN 0 11.7 1035 -41 1545 55 41.3 0.2 -8.2 282 6.6 23.6 41.7 120
99062400.BGD 0 12.2 2544 -17 2195 10 13.6 0.0 -6.5 288 7.8 22.6 35.1 91
99060601.P07 0 11.8 1543 -130 1771 -31 45.2 0.0 -8.7 243 7.9 18.4 58.3 32
99060523.LBF 0 10.7 2070 -28 1957 91 62.6 0.1 -12.9 197 8.5 25.9 90.4 131
99060302.IML 0 10.0 869 -198 1657 237 43.7 0.0 -11.0 225 8.5 39.8 66.5 421
99060202.GCC 0 6.3 226 -83 1883 18 41.3 0.0 -15.4 262 8.3 26.0 42.6 126
99060200.FTW 0 16.8 3982 -31 1338 62 35.0 1.0 -11.1 275 8.5 25.7 60.3 144
99053102.MHK 0 11.6 903 -51 1360 108 32.8 0.3 -11.3 270 6.9 30.0 24.5 179
99120303.ADM 0 9.7 1355 -50 974 250 42.8 2.4 -22.1 217 8.5 35.9 65.7 332
99112303.RBD 0 13.2 1077 -16 789 138 48.1 1.2 -13.6 235 6.4 25.1 60.9 176
99112302.HBR 0 8.7 124 -124 660 53 47.7 0.0 -17.1 219 6.7 41.5 75.7 132
99100823.FSI 0 10.1 649 -14 1313 5 36.2 0.0 -13.6 219 6.3 14.3 67.9 56
99092600.GKY 0 13.1 1483 -15 1429 43 28.0 0.2 -9.4 340 6.3 21.5 55.3 182
99092522.D07 0 6.4 163 -199 2219 136 65.7 0.0 -15.8 242 8.3 31.8 105.7 206
99092004.RRC 0 11.2 292 -200 1044 70 37.2 0.0 -11.2 270 6.7 28.8 60.6 216
99092000.OKC 0 11.1 1068 -42 1896 56 39.5 0.0 -10.1 290 6.8 29.0 60.9 190
99091923.CSM 0 11.9 1645 -3 1885 18 41.3 0.0 -9.8 280 7.0 27.5 64.0 178
99091920.CGZ 0 11.2 802 -16 1905 19 39.1 0.0 -8.7 245 6.5 16.0 60.3 61
99091207.SLP 0 15.6 2094 -69 507 92 45.4 1.3 -10.8 271 8.2 16.8 55.8 121
99091200.LBL 0 11.9 1180 -121 1590 31 43.2 0.1 -9.0 275 7.8 25.7 65.5 84
99091122.HLC 0 12.4 1517 -36 1221 59 37.8 0.4 -11.3 253 7.4 21.0 66.2 94
99091101.AFW 0 13.1 1250 -24 1970 21 29.5 0.0 -7.4 297 6.2 21.7 52.8 139
99082300.ABR 0 11.7 1432 -38 1851 61 40.1 0.1 -9.6 289 6.9 20.3 45.5 101
99082104.HON 0 13.3 1187 -244 1155 197 38.1 0.0 -8.9 281 7.4 31.4 54.2 238
99082100.LBF 0 9.8 20 -311 1794 44 34.8 0.0 -7.8 321 7.1 19.7 46.1 126
99082022.DIK 0 11.7 1445 -10 1669 21 33.6 0.1 -7.8 298 6.3 17.8 36.0 58
99081922.MLS 0 7.1 393 -105 3278 19 33.8 0.0 -10.0 244 8.6 22.0 37.3 120
99081800.RRT 0 11.4 1524 -26 847 90 49.2 1.1 -17.7 268 7.3 32.2 62.0 126
99081400.ALB 0 16.8 1843 -4 701 196 38.5 2.3 -6.3 249 5.8 29.9 48.4 252
99081202.GCC 0 10.6 877 -99 1162 63 34.5 0.2 -10.2 218 7.5 17.7 54.6 98

0
ncep/gov.noaa.nws.ncep.ui.nsharp/BigNsharp/test Normal file → Executable file
View file

View file

View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/BigNsharp/xtnd Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/BigNsharp/xv.h_linux Normal file → Executable file
View file

View file

View file

@ -36,6 +36,7 @@ Import-Package: com.raytheon.edex.meteoLib,
com.raytheon.viz.core.graphing,
com.raytheon.viz.skewt,
com.vividsolutions.jts.geom,
gov.noaa.nws.ncep.common.dataplugin.ncuair,
gov.noaa.nws.ncep.edex.common.sounding,
gov.noaa.nws.ncep.viz.common.soundingQuery,
gov.noaa.nws.ncep.viz.common.ui,
@ -44,8 +45,6 @@ Import-Package: com.raytheon.edex.meteoLib,
gov.noaa.nws.ncep.viz.resources,
gov.noaa.nws.ncep.viz.resources.manager,
gov.noaa.nws.ncep.viz.ui.display,
gov.noaa.nws.ncep.viz.ui.locator,
gov.noaa.nws.ncep.viz.ui.locator.resource,
javax.measure.converter,
javax.measure.unit,
ncsa.hdf.hdf5lib,

0
ncep/gov.noaa.nws.ncep.ui.nsharp/nsharp_c/basics.c Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/nsharp_c/basics.h Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/nsharp_c/decoder.c Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/nsharp_c/decoder.h Normal file → Executable file
View file

View file

View file

View file

View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/nsharp_c/mapdraw.f Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/nsharp_c/mapmark.f Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/nsharp_c/mapw.c Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/nsharp_c/nsharp.mk Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/nsharp_c/readdata.c Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/nsharp_c/readdata.h Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/nsharp_c/sharp95.h Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/nsharp_c/skparams.c Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/nsharp_c/skparams.h Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/nsharp_c/sndata.f Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/nsharp_c/so_new.csh Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/nsharp_c/thermo.c Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/nsharp_c/thermo.h Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/nsharp_c/winds.c Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/nsharp_c/winds.h Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/nsharp_c/xwvid1.c Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/nsharp_c/xwvid2.c Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/nsharp_c/xwvid3.c Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/nsharp_c/xwvid4.c Normal file → Executable file
View file

0
ncep/gov.noaa.nws.ncep.ui.nsharp/nsharp_c/xwvid5.c Normal file → Executable file
View file

View file

@ -18,8 +18,8 @@ package gov.noaa.nws.ncep.ui.nsharp;
* @author Chin Chen
* @version 1.0
*/
//import gov.noaa.nws.ncep.viz.localization.NcPathManager;
//import gov.noaa.nws.ncep.viz.localization.NcPathManager.NcPathConstants;
import gov.noaa.nws.ncep.viz.localization.NcPathManager;
import gov.noaa.nws.ncep.viz.localization.NcPathManager.NcPathConstants;
import java.text.DecimalFormat;
import javax.measure.converter.UnitConverter;
@ -376,12 +376,12 @@ public class NsharpConstants {
public static int filelistHeight = 100;
public static int dsiplayPanelSize = 2;
// public static String getNlistFile() {
// return NcPathManager.getInstance().getStaticFile(
// NcPathConstants.NSHARP_NLIST_FILE ).getAbsolutePath();
// }
// public static String getSupFile() {
// return NcPathManager.getInstance().getStaticFile(
// NcPathConstants.NSHARP_SUP_FILE ).getAbsolutePath();
// }
public static String getNlistFile() {
return NcPathManager.getInstance().getStaticFile(
NcPathConstants.NSHARP_NLIST_FILE ).getAbsolutePath();
}
public static String getSupFile() {
return NcPathManager.getInstance().getStaticFile(
NcPathConstants.NSHARP_SUP_FILE ).getAbsolutePath();
}
}

View file

@ -22,6 +22,7 @@ package gov.noaa.nws.ncep.ui.nsharp.maprsc;
import gov.noaa.nws.ncep.edex.common.sounding.NcSoundingLayer;
import gov.noaa.nws.ncep.ui.nsharp.NsharpStationInfo;
import gov.noaa.nws.ncep.ui.nsharp.SurfaceStationPointData;
import gov.noaa.nws.ncep.ui.nsharp.menu.ModelSoundingDialogContents;
import gov.noaa.nws.ncep.ui.nsharp.menu.NsharpLoadDialog;
import gov.noaa.nws.ncep.ui.nsharp.skewt.NsharpSkewTDisplay;
@ -29,7 +30,6 @@ import gov.noaa.nws.ncep.ui.nsharp.skewt.NsharpSkewTEditor;
import gov.noaa.nws.ncep.ui.nsharp.skewt.rsc.NsharpSkewTResource;
import gov.noaa.nws.ncep.ui.pgen.tools.InputHandlerDefaultImpl;
import gov.noaa.nws.ncep.viz.ui.display.NCMapEditor;
import gov.noaa.nws.ncep.viz.ui.locator.resource.SurfaceStationPointData;
import java.util.ArrayList;
import java.util.HashMap;

View file

@ -44,8 +44,8 @@ import com.raytheon.uf.viz.core.rsc.ResourceList.RemoveListener;
import com.raytheon.uf.viz.core.exception.VizException;
import com.raytheon.viz.ui.EditorUtil;
//import gov.noaa.nws.ncep.viz.localization.NcPathManager;
//import gov.noaa.nws.ncep.viz.localization.NcPathManager.NcPathConstants;
import gov.noaa.nws.ncep.viz.localization.NcPathManager;
import gov.noaa.nws.ncep.viz.localization.NcPathManager.NcPathConstants;
import gov.noaa.nws.ncep.viz.resources.manager.RbdBundle;
import gov.noaa.nws.ncep.viz.resources.manager.ResourceBndlLoader;
@ -124,8 +124,8 @@ public class NsharpMapResource extends AbstractVizResource<NsharpMapResourceDat
}
private static void createMapEditor(){
// create an editor MapEditor
// File rbdFile = NcPathManager.getInstance().getStaticFile(
// NcPathConstants.DFLT_RBD );
File rbdFile = NcPathManager.getInstance().getStaticFile(
NcPathConstants.DFLT_RBD );
try {
IEditorPart ep = EditorUtil.getActiveEditor();
if (ep instanceof NCMapEditor) {
@ -133,10 +133,10 @@ public class NsharpMapResource extends AbstractVizResource<NsharpMapResourceDat
}else {
mapEditor = NmapUiUtils.createNatlCntrsEditor("BasicWX-US","NSHARP" );
}
// RbdBundle rbd = RbdBundle.unmarshalRBD( rbdFile, null );
// rbd.setNcEditor((NCMapEditor) mapEditor );
RbdBundle rbd = RbdBundle.unmarshalRBD( rbdFile, null );
rbd.setNcEditor((NCMapEditor) mapEditor );
ResourceBndlLoader rbdLoader = new ResourceBndlLoader("DefaultMap");
// rbdLoader.addRBD( rbd );
rbdLoader.addRBD( rbd );
VizApp.runSync( rbdLoader );
//System.out.println("NsharpMapResource create editor "+ mapEditor.toString());
}

View file

@ -25,6 +25,7 @@ import gov.noaa.nws.ncep.edex.common.sounding.NcSoundingProfile;
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 gov.noaa.nws.ncep.ui.nsharp.SurfaceStationPointData;
import gov.noaa.nws.ncep.ui.nsharp.maprsc.NsharpMapResource;
import gov.noaa.nws.ncep.ui.nsharp.natives.NsharpDataHandling;
import gov.noaa.nws.ncep.ui.nsharp.skewt.NsharpSkewTDisplay;
@ -32,7 +33,6 @@ import gov.noaa.nws.ncep.ui.nsharp.skewt.NsharpSkewTEditor;
import gov.noaa.nws.ncep.ui.nsharp.skewt.rsc.NsharpSkewTResource;
import gov.noaa.nws.ncep.viz.common.soundingQuery.NcSoundingQuery;
import gov.noaa.nws.ncep.viz.common.ui.NmapCommon;
import gov.noaa.nws.ncep.viz.ui.locator.resource.SurfaceStationPointData;
import java.sql.Timestamp;
import java.util.ArrayList;

View file

@ -172,7 +172,7 @@ public class ObservedSoundingDialogContents {
uairBtn.addListener( SWT.MouseUp, new Listener() {
public void handleEvent(Event event) {
sndTimeList.removeAll();
// currentSndType = NcSoundingProfile.ObsSndType.NCUAIR;
currentSndType = NcSoundingProfile.ObsSndType.NCUAIR;
createObsvdSndUairList();
//System.out.println("new obvSnd dialog uair btn");
}
@ -254,9 +254,9 @@ public class ObservedSoundingDialogContents {
timeLimit = false;
//refresh sounding list if file type is selected already
// if(currentSndType== NcSoundingProfile.ObsSndType.NCUAIR /*|| currentSndType == NcSoundingProfile.ObsSndType.UAIR*/|| currentSndType == NcSoundingProfile.ObsSndType.BUFRUA){
// createObsvdSndUairList();
// }
if(currentSndType== NcSoundingProfile.ObsSndType.NCUAIR /*|| currentSndType == NcSoundingProfile.ObsSndType.UAIR*/|| currentSndType == NcSoundingProfile.ObsSndType.BUFRUA){
createObsvdSndUairList();
}
}
@ -264,14 +264,14 @@ public class ObservedSoundingDialogContents {
rawBtn = new Button(parent, SWT.CHECK | SWT.BORDER);
rawBtn.setText("raw data");
rawBtn.setEnabled( true );
// rawBtn.addListener( SWT.MouseUp, new Listener() {
// public void handleEvent(Event event) {
// if(rawBtn.getSelection())
// rawData = true;
// else
// rawData = false;;
// }
// } );
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_ETCHED_IN);
sndTimeListGp.setText("Sounding Times:");

View file

@ -24,13 +24,14 @@ Require-Bundle: org.eclipse.ui,
gov.noaa.nws.ncep.viz.tools;bundle-version="1.0.0",
gov.noaa.nws.ncep.gempak.parameters;bundle-version="1.0.0",
org.junit;bundle-version="1.0.0",
gov.noaa.nws.ncep.viz.ui.locator;bundle-version="1.0.0"
com.raytheon.viz.core.gl;bundle-version="1.12.1174"
Bundle-ActivationPolicy: lazy
Export-Package: gov.noaa.nws.ncep.ui.pgen,
gov.noaa.nws.ncep.ui.pgen.contours,
gov.noaa.nws.ncep.ui.pgen.display,
gov.noaa.nws.ncep.ui.pgen.elements,
gov.noaa.nws.ncep.ui.pgen.elements.labeledLines,
gov.noaa.nws.ncep.ui.pgen.elements.tcm,
gov.noaa.nws.ncep.ui.pgen.file,
gov.noaa.nws.ncep.ui.pgen.gfa,
gov.noaa.nws.ncep.ui.pgen.rsc,

View file

@ -3,4 +3,5 @@ output.. = bin/
bin.includes = META-INF/,\
.,\
plugin.xml,\
icons/
icons/,\
localization/

View file

@ -10,198 +10,208 @@
name="Product Generation">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenSingleDraw"
name="Pgen Single Point Drawing">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenVolcanoDraw"
name="Pgen Volcano Drawing">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenDualDraw"
name="Pgen Dual Point Drawing">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenMultiDraw"
name="Pgen Multi Point Drawing">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.outlookDraw"
name="Pgen Outlook Drawing">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenOutlookSetCont"
name="Pgen Outlook Set Continue Lines">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenJetDraw"
name="Pgen Jet Drawing">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenGfaDraw"
name="Pgen Gfa Drawing">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenLabeledLineDraw"
name="Pgen Cloud Drawing">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenLabeledLineModify"
name="Pgen Labeled Line Modify">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenWatchBoxDraw"
name="Pgen Watch Box Drawing">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenWatchStatusLineDraw"
name="Pgen Watch Status Line Drawing">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenWatchBoxModify"
name="Pgen Watch Box Modify">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenVectorDraw"
name="Pgen Vector Drawing">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenTextDraw"
name="Pgen Text Drawing">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenAvnTextDraw"
name="Pgen Aviation Text Drawing">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenSelect"
name="Pgen Selecting">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenMultiSelect"
name="Pgen Multi Selecting">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenDeleteElement"
name="Pgen Deleting Element">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenCopyElement"
name="Pgen Copy Element">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenMoveElement"
name="Pgen Move Element">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenFlipDrawingElement"
name="Pgen Flip Element">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenDeleteAll"
name="Pgen Deleting All">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenProd"
name="Pgen Prod">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenDeletePoint"
name="Pgen Deleting Point">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenAddPoint"
name="Pgen Add Point">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenAddPointAlt"
name="Pgen Add Point Alt">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenDistance"
name="Pgen Distance">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenDeletePart"
name="Pgen Deleting Part">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenDeleteObj"
name="Pgen Deleting Obj">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenRotateElement"
name="Pgen Rotate Element">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenRotateElement"
name="Pgen Rotate Element">
</command>
<command
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenModifyTool"
name="Pgen Modify Lines">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenConnect"
name="Pgen Connect">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenExtrapTool"
name="Pgen Extrapolate Object">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenInterpTool"
name="Pgen Interpolate Object">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenFilterTool"
name="Pgen Filter">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenFromTool"
name="From">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenCycleTool"
name="Cycle selection">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenIncDec"
name="Pgen Inc/Dec">
</command>
<command
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenGfaFormatTool"
name="Cycle selection">
</command>
@ -209,7 +219,7 @@
id="gov.noaa.nws.ncep.ui.pgen.fileManage"
name="Manage Product File">
</command>
<command categoryId="com.raytheon.viz.ui.modalTool"
<command categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.exit"
name="Exit Product Generation">
</command>
@ -222,16 +232,16 @@
name="Start PGEN Layering">
</command>
<command
id="gov.noaa.nws.ncep.ui.pgen.productManage"
name="Manage Products">
id="gov.noaa.nws.ncep.ui.pgen.activityManage"
name="Manage PGEN Activities">
</command>
<command
id="gov.noaa.nws.ncep.ui.pgen.launchProduct"
name="Launch Products">
id="gov.noaa.nws.ncep.ui.pgen.activityProduct"
name="Launch PGEN Activities">
</command>
<command
id="gov.noaa.nws.ncep.ui.pgen.productConfigure"
name="Configure Product Types">
id="gov.noaa.nws.ncep.ui.pgen.activityConfigure"
name="Configure PGEN Acitivities">
</command>
<command
id="gov.noaa.nws.ncep.ui.pgen.PgenHelp"
@ -246,19 +256,23 @@
optional="false">
</commandParameter>
</command>
<command categoryId="com.raytheon.viz.ui.modalTool"
<command categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.tca"
name="TCA">
</command>
<command
categoryId="com.raytheon.viz.ui.modalTool"
categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.contours"
name="Contours">
</command>
<command categoryId="com.raytheon.viz.ui.modalTool"
<command categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenVolCreate"
name="Pgen Volcano Create">
</command>
<command categoryId="gov.noaa.nws.ncep.viz.ui.modalTool"
id="gov.noaa.nws.ncep.ui.pgen.rsc.PgenTCMtool"
name="Pgen TCM Create">
</command>
<command
id="gov.noaa.nws.ncep.ui.pgen.layering.PgenLayeringHotKeyCommand"
name="Activate Layer From Hot Key">
@ -290,6 +304,10 @@
class="gov.noaa.nws.ncep.ui.pgen.tools.PgenMultiPointDrawingTool"
commandId="gov.noaa.nws.ncep.ui.pgen.rsc.PgenMultiDraw">
</handler>
<handler
class="gov.noaa.nws.ncep.ui.pgen.tools.PgenIncDecTool"
commandId="gov.noaa.nws.ncep.ui.pgen.rsc.PgenIncDec">
</handler>
<handler
class="gov.noaa.nws.ncep.ui.pgen.tools.PgenJetDrawingTool"
commandId="gov.noaa.nws.ncep.ui.pgen.rsc.PgenJetDraw">
@ -440,11 +458,11 @@
</handler>
<handler
class="gov.noaa.nws.ncep.ui.pgen.productManage.ProductManageHandler"
commandId="gov.noaa.nws.ncep.ui.pgen.productManage">
commandId="gov.noaa.nws.ncep.ui.pgen.activityManage">
</handler>
<handler
class="gov.noaa.nws.ncep.ui.pgen.productManage.ProductConfigureHandler"
commandId="gov.noaa.nws.ncep.ui.pgen.productConfigure">
commandId="gov.noaa.nws.ncep.ui.pgen.activityConfigure">
</handler>
<handler
class="gov.noaa.nws.ncep.ui.pgen.productManage.PgenHelpHandler"
@ -478,6 +496,10 @@
class="gov.noaa.nws.ncep.ui.pgen.layering.PgenLayeringHotKeyHandler"
commandId="gov.noaa.nws.ncep.ui.pgen.layering.PgenLayeringHotKeyCommand">
</handler>
<handler
class="gov.noaa.nws.ncep.ui.pgen.tools.PgenTcmDrawingTool"
commandId="gov.noaa.nws.ncep.ui.pgen.rsc.PgenTCMtool">
</handler>
</extension>
<extension
@ -499,19 +521,19 @@
<menuContribution
locationURI="toolbar:gov.noaa.nws.ncep.ui.PGEN">
<command
commandId="gov.noaa.nws.ncep.ui.pgen.productManage"
commandId="gov.noaa.nws.ncep.ui.pgen.activityManage"
label="Start"
mnemonic="S"
style="pulldown"
id="gov.noaa.nws.ncep.ui.pgen.PGEN.productLaunch">
id="gov.noaa.nws.ncep.ui.pgen.PGEN.activityLaunch">
</command>
<command
commandId="gov.noaa.nws.ncep.ui.pgen.productConfigure"
<!--command
commandId="gov.noaa.nws.ncep.ui.pgen.activityConfigure"
label="Configure"
mnemonic="C"
style="push">
</command>
</command-->
<command
commandId="gov.noaa.nws.ncep.ui.pgen.PgenHelp"
@ -526,10 +548,10 @@
<extension
point="org.eclipse.ui.menus">
<menuContribution
locationURI="menu:gov.noaa.nws.ncep.ui.pgen.PGEN.productLaunch">
locationURI="menu:gov.noaa.nws.ncep.ui.pgen.PGEN.activityLaunch">
<dynamic
class="gov.noaa.nws.ncep.ui.pgen.productManage.ProductLauncher"
id="gov.noaa.nws.ncep.ui.pgen.productManage.productLauncher">
id="gov.noaa.nws.ncep.ui.pgen.productManage.activityLauncher">
</dynamic>
</menuContribution>
</extension>
@ -540,16 +562,17 @@
name="Open"
label="Open MetObject File"
commandId="gov.noaa.nws.ncep.ui.pgen.fileManage"
alwaysVisible="true"
icon="icons/open.gif" />
<control
name="Save"
label="Save MetObject File"
label="Save Current Product to Configured File"
commandId="gov.noaa.nws.ncep.ui.pgen.fileManage"
alwaysVisible="true"
icon="icons/save.gif" />
<control
name="Save As"
label="Save As..."
label="Save Current Product As..."
commandId="gov.noaa.nws.ncep.ui.pgen.fileManage"
alwaysVisible="true"
icon="icons/saveas.gif" />
@ -583,8 +606,9 @@
-->
<control
name="Save All"
label="SAVE All"
commandId="com.raytheon.viz.ui.actions.notImplemented"
label="SAVE All Products to Configured Files"
alwaysVisible="true"
commandId="gov.noaa.nws.ncep.ui.pgen.fileManage"
icon="icons/saveall.gif" />
<control
name="ProdCtrl"
@ -690,6 +714,11 @@
label="From"
commandId="gov.noaa.nws.ncep.ui.pgen.rsc.PgenFromTool"
icon="icons/from.gif" />
<action
name="PROD_AIRMET"
label="Airmet Format"
commandId="gov.noaa.nws.ncep.ui.pgen.rsc.PgenGfaFormatTool"
icon="icons/airmet.gif" />
<action
name="Cycle"
label="Cycle selection"
@ -710,6 +739,11 @@
label="Distance Options"
commandId="gov.noaa.nws.ncep.ui.pgen.rsc.PgenDistance"
icon="icons/distance.gif" />
<action
name="IncDec"
label="Inc/Dec"
commandId="gov.noaa.nws.ncep.ui.pgen.rsc.PgenIncDec"
icon="icons/inc_dec.gif" />
<class
name="Front"
@ -731,10 +765,12 @@
name="Track"
label="Track"
icon="icons/track.gif" />
<!--
<class
name="Prod"
label="Prod"
icon="icons/prod.gif" />
-->
<class
name="Text"
label="Text"
@ -1171,13 +1207,13 @@
icon="icons/spsym13.gif" />
<object
name="HIGH_PRESSURE_H"
label="High pressure H (filled)"
label="High pressure H"
className="Symbol"
commandId="gov.noaa.nws.ncep.ui.pgen.rsc.PgenSingleDraw"
icon="icons/spsym10.gif" />
<object
name="LOW_PRESSURE_L"
label="Low pressure L (filled)"
label="Low pressure L"
className="Symbol"
commandId="gov.noaa.nws.ncep.ui.pgen.rsc.PgenSingleDraw"
icon="icons/spsym11.gif" />
@ -2611,12 +2647,7 @@
className="Track"
commandId="gov.noaa.nws.ncep.ui.pgen.rsc.PgenMultiDraw"
icon="icons/trkstorm.gif" />
<object
name="PROD_AIRMET"
label="Airmet Format"
className="Prod"
commandId="gov.noaa.nws.ncep.ui.pgen.rsc.PgenGfaFormatTool"
icon="icons/airmet.gif" />
<object
name="LINE_SOLID"
label="Solid Line"
@ -2939,6 +2970,12 @@
className="MET"
commandId="gov.noaa.nws.ncep.ui.pgen.rsc.PgenLabeledLineDraw"
icon="icons/textturb.gif" />
<object
name="TCM"
label="TCM"
className="MET"
commandId="gov.noaa.nws.ncep.ui.pgen.rsc.PgenTCMtool"
icon="icons/hcntrak.gif" />
<object
name="INTL_SIGMET"
label="INTL_SIGMET"
@ -3003,59 +3040,6 @@
category="org.eclipse.jface.Prerences">
</page>
</extension>
<extension
point="gov.noaa.nws.ncep.viz.localization.localizationData">
<singleLocalizationValue
name="g2g_Grphgd"
location="pgen"
fileName="grphgd.tbl">
</singleLocalizationValue>
<singleLocalizationValue
name="outlookType"
location="pgen"
fileName="outlooktype.xml">
</singleLocalizationValue>
<singleLocalizationValue
name="outlookTimes"
location="pgen"
fileName="outlooktimes.xml">
</singleLocalizationValue>
<singleLocalizationValue
name="outlookSettings"
location="pgen"
fileName="outlooksettings.xml">
</singleLocalizationValue>
<singleLocalizationValue
fileName="red_cross.png"
location="pgen"
name="redCrossImageFile">
</singleLocalizationValue>
<singleLocalizationValue
fileName="contoursInfo.xml"
location="pgen"
name="contoursInfo">
</singleLocalizationValue>
<singleLocalizationValue
fileName="product.xsd"
location="pgen"
name="Pgen_Product_Schema">
</singleLocalizationValue>
<singleLocalizationValue
fileName="productTypes.xml"
location="pgen"
name="Pgen_Product_Types">
</singleLocalizationValue>
<singleLocalizationValue
fileName="mt_obsc_states.xml"
location="pgen"
name="mtObscStates">
</singleLocalizationValue>
<singleLocalizationValue
fileName="pgenFileOrganizer.xml"
location="pgen"
name="pgenFileOrganizer">
</singleLocalizationValue>
</extension>
<extension
point="org.eclipse.ui.bindings"
id="gov.noaa.nws.ncep.ui.pgen.pgenKeyBinding"
@ -3223,4 +3207,17 @@
</key>
</extension>
<extension
point="com.raytheon.uf.viz.localization.localizationpath">
<path
application="NCEP"
localizationType="CAVE_STATIC"
name="PGEN"
recursive="true"
value="ncep/pgen"
extensionFilter=".xml,.tbl,.png,.txt,.xsl,.xlt,.xslt">
</path>
</extension>
</plugin>

View file

@ -63,6 +63,7 @@ public class Activator extends AbstractUIPlugin {
*/
if ( myprefs == null ) {
myprefs = super.getPreferenceStore();
myprefs.setDefault( PgenPreferences.P_OPR_DIR, PgenPreferences.V_OPR_DIR);
myprefs.setDefault( PgenPreferences.P_WORKING_DIR, PgenPreferences.V_WORKING_DIR);
myprefs.setDefault( PgenPreferences.P_RECOVERY_DIR, PgenPreferences.V_RECOVERY_DIR);
myprefs.setDefault( PgenPreferences.P_AUTO_FREQ, 5);

View file

@ -36,6 +36,7 @@ import org.eclipse.ui.IWorkbenchPreferencePage;
* 02/10/11 ? B. Yin Add maximum distance to be selected
* 02/11 #405 J. Wu Added P_WORKING_DIR.
* 05/11 ? J. Wu Added P_COMP_COORD
* 08/11 #335 J. Wu Added P_BASE_DIR
*
* </pre>
*
@ -59,6 +60,12 @@ public class PgenPreferences extends FieldEditorPreferencePage implements
public final static String P_WORKING_DIR = "PGEN_WORKING_DIR";
public final static String V_WORKING_DIR = System.getProperty("user.home");
//Preference for the operational directory to store PGEN product file.
public final static String P_OPR_DIR = "PGEN_BASE_DIR";
public final static String V_OPR_DIR = ( System.getenv( "PGEN_OPR" ) != null ) ?
System.getenv( "PGEN_OPR" ) :
System.getProperty("user.home");
//Preference for PGEN computational coordinates
public final static String P_COMP_COORD = "PGEN_COMP_COORD";
public final static String CED_COMP_COORD = "ced/0;0;0|18.00;-137.00;58.00;-54.00";
@ -76,6 +83,9 @@ public class PgenPreferences extends FieldEditorPreferencePage implements
@Override
public void createFieldEditors() {
this.addField(new DirectoryFieldEditor(P_OPR_DIR,
"&PGEN Base Directory:", getFieldEditorParent()));
this.addField(new DirectoryFieldEditor(P_WORKING_DIR,
"&PGEN Working Directory:", getFieldEditorParent()));
@ -132,14 +142,13 @@ public class PgenPreferences extends FieldEditorPreferencePage implements
}
} else if (event.getSource() instanceof DirectoryFieldEditor) {
String ovalue = event.getOldValue().toString();
String opref = Activator.getDefault().getPreferenceStore()
.getString(P_WORKING_DIR);
String prefname = ((DirectoryFieldEditor)event.getSource()).getPreferenceName();
String opref = Activator.getDefault().getPreferenceStore().getString( prefname );
if ( ovalue.equals(opref) ) {
String nvalue = event.getNewValue().toString();
File nfile = new File( nvalue );
if ( nfile.exists() && nfile.isDirectory() && nfile.canWrite() ) {
Activator.getDefault().getPreferenceStore()
.setValue(P_WORKING_DIR, nvalue);
Activator.getDefault().getPreferenceStore().setValue( prefname, nvalue);
}
}
}

View file

@ -89,6 +89,8 @@ import com.vividsolutions.jts.geom.Polygon;
* 03/11 J. Wu Added getSphPolyArea() && getPolyArea()
* 05/11 J. Wu Added methods to setup/covert between lat/lon
* and a custom coordinate.
* 08/11 J. Wu Added getPgenOprDirectory()
*
* </pre>
*
* @author
@ -467,7 +469,33 @@ public class PgenUtil {
}
}
}
/**
* Load the LabeledLine modifying tool.
* @param ll - LabeledLine to edit when the tool is loaded
*/
public static final void loadTcmTool( DrawableElement elem ) {
IEditorPart part = EditorUtil.getActiveEditor();
ICommandService service = (ICommandService) part.getSite().getService( ICommandService.class );
Command cmd = service.getCommand("gov.noaa.nws.ncep.ui.pgen.rsc.PgenTCMtool");
if (cmd != null ) {
try {
HashMap<String, Object> params = new HashMap<String, Object>();
params.put("editor", part);
params.put("name", elem.getPgenType() );
params.put("className", elem.getPgenCategory());
ExecutionEvent exec = new ExecutionEvent(cmd, params, elem, null);
cmd.executeWithChecks(exec);
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* Load the outlook drawing tool.
*/
@ -1266,4 +1294,89 @@ public class PgenUtil {
}
/**
* Returns the base directory for storing/access PGEN operation product file.
* @return
*/
public static String getPgenOprDirectory() {
return Activator.getDefault().getPreferenceStore().getString( PgenPreferences.P_OPR_DIR );
}
/**
* Format a Calendar date into a string of "DDMMYYYY"
*/
public static String formatDate( Calendar cal ) {
StringBuilder dstr = new StringBuilder();
int day = cal.get( Calendar.DAY_OF_MONTH );
if ( day < 10 ) {
dstr.append( "0" + day );
}
else {
dstr.append( day );
}
int mon = cal.get( Calendar.MONTH ) + 1;
if ( mon < 10 ) {
dstr.append( "0" + mon );
}
else {
dstr.append( mon );
}
dstr.append( cal.get( Calendar.YEAR ) );
return dstr.toString();
}
/**
* Parse the environmental variables to get a full path file name.
// * Default path will be the user's PGEN_OPR directory.
* @param filename
* @return a full path file name or unchanged if no "/" in the input file name
*/
public static String parsePgenFileName( String fileName ) {
String parsedFile = fileName;
if ( fileName != null ) {
if ( fileName.contains( File.separator ) ) {
String[] items = fileName.split( File.separator );
StringBuilder stb = new StringBuilder();
if ( fileName.startsWith( File.separator ) ) {
stb.append( File.separator );
}
for ( String str : items ) {
if ( str.equals(".") ) {
stb.append( System.getProperty("user.home") );
}
else if ( str.startsWith( "$") && System.getenv( str.substring(1) ) != null ) {
stb.append( System.getenv( str.substring(1) ) );
}
else {
stb.append( str );
}
stb.append( File.separator );
}
parsedFile = stb.toString();
if ( !fileName.endsWith( File.separator ) ) {
parsedFile = parsedFile.substring( 0, parsedFile.length() - 1 );
}
}
// else {
// parsedFile = new String( PgenUtil.getPgenOprDirectory() +
// File.separator + fileName );
// }
}
return parsedFile;
}
}

View file

@ -69,17 +69,17 @@ public class ArcAttrDlg extends AttrDlg implements IArc{
private Slider lineWidthSlider;
private Text lineWidthText;
private Label axisRatioLbl;
private Slider axisRatioSlider;
private Text axisRatioText;
protected Label axisRatioLbl;
protected Slider axisRatioSlider;
protected Text axisRatioText;
private Label startAngleLbl;
private Slider startAngleSlider;
private Text startAngleText;
protected Label startAngleLbl;
protected Slider startAngleSlider;
protected Text startAngleText;
private Label endAngleLbl;
private Slider endAngleSlider;
private Text endAngleText;
protected Label endAngleLbl;
protected Slider endAngleSlider;
protected Text endAngleText;
private Button chkBox[];
@ -89,7 +89,7 @@ public class ArcAttrDlg extends AttrDlg implements IArc{
* @param parShell
* @throws VizException
*/
private ArcAttrDlg(Shell parShell) throws VizException {
protected ArcAttrDlg(Shell parShell) throws VizException {
super(parShell);

View file

@ -37,6 +37,7 @@ import org.eclipse.swt.widgets.Shell;
* 07/10 ? B. Yin Seperated Front from lines
* 09/10 #305/306 B. Yin Added Cloud and Turbulence
* 02/11 #318 S. Gilbert Added Distance Display Options Dialog
* 08/11 #? B. Yin Added Pgen Inc/Dec
* </pre>
*
* @author B. Yin
@ -130,6 +131,11 @@ public class AttrDlgFactory {
return PgenInterpDlg.getInstance( parShell );
}
else if ( pgenCategory.equalsIgnoreCase( "IncDec" ) ) {
return IncDecDlg.getInstance( parShell );
}
else if ( pgenCategory.equalsIgnoreCase( "Distance" ) ) {
@ -146,7 +152,7 @@ public class AttrDlgFactory {
return CycleDlg.getInstance( parShell );
}
else if ( pgenCategory.equalsIgnoreCase( "Prod" ) ) {
else if ( pgenCategory.equalsIgnoreCase( "Prod_AIRMET" ) ) {
return GfaFormatAttrDlg.getInstance( parShell );
@ -167,6 +173,11 @@ public class AttrDlgFactory {
return WatchBoxAttrDlg.getInstance( parShell );
}
else if ( pgenType != null && pgenType.equalsIgnoreCase("TCM") ) {
return TcmAttrDlg.getInstance( parShell );
}
else if ( pgenType != null && pgenType.equalsIgnoreCase("Cloud") ) {

View file

@ -14,6 +14,10 @@ import java.util.HashMap;
import java.util.List;
import java.util.TimeZone;
import com.raytheon.uf.common.localization.LocalizationContext;
import com.raytheon.uf.common.localization.LocalizationFile;
import com.raytheon.uf.common.localization.LocalizationContext.LocalizationLevel;
import com.raytheon.uf.common.localization.LocalizationContext.LocalizationType;
import com.raytheon.uf.viz.core.exception.VizException;
import gov.noaa.nws.ncep.ui.pgen.elements.*;
@ -21,7 +25,9 @@ import gov.noaa.nws.ncep.ui.pgen.elements.*;
import gov.noaa.nws.ncep.ui.pgen.file.FileTools;
import gov.noaa.nws.ncep.ui.pgen.file.ProductConverter;
import gov.noaa.nws.ncep.ui.pgen.file.Products;
import gov.noaa.nws.ncep.viz.common.ui.NmapCommon;
import gov.noaa.nws.ncep.ui.pgen.productManage.ProductConfigureDialog;
import gov.noaa.nws.ncep.viz.localization.NcPathManager;
import gov.noaa.nws.ncep.viz.localization.NcPathManager.NcPathConstants;
/**
* Singleton for the default attribute settings of PGEN DrawableElements.
@ -34,7 +40,9 @@ import gov.noaa.nws.ncep.viz.common.ui.NmapCommon;
* 04/09 89 J. Wu Added Arc.
* 07/10 270 B. Yin Use AbstractDrawableComponent instead of IAttribute
* 12/10 359 B. Yin Change loadPgenSettings to public
* 07/11 450 G. Hull settings tbl from NcPathManager
* 08/11 ? B. Yin Put current time for Storm Track
* 11/11 ? B. Yin Load settings for different Activity Type.
*
* </pre>
*
@ -129,19 +137,48 @@ public class AttrSettings {
private void loadSettingsTable() {
/*
* First Try to load from user's local directory; if not found, load from
* the base directory.
* Get the settings table file from localization
*/
String fullFileName = settingsTblLocal + settingsFileName;
File settingsFile = new File( fullFileName );
File settingsFile = NcPathManager.getInstance().getStaticFile(
NcPathConstants.PGEN_SETTINGS_TBL );
if ( !(settingsFile.exists() && settingsFile.isFile() && settingsFile.canRead() ) ) {
fullFileName = NmapCommon.getSettingsTable();
settingsFile = new File( fullFileName );
if ( settingsFile == null ) {
System.out.println("Unable to fing pgen settings table");
}
loadPgenSettings( fullFileName );
loadPgenSettings( settingsFile.getAbsolutePath() );
}
public void loadProdSettings( String prodName ){
if ( prodName == null || prodName.isEmpty() ){
loadSettingsTable();
}
else {
try {
String pt = ProductConfigureDialog.getProductTypes().get(prodName).getType();
String pt1 = pt.replaceAll(" ", "_");
// LocalizationContext userContext = NcPathManager.getInstance().getContext(
// LocalizationType.CAVE_STATIC, LocalizationLevel.USER );
// LocalizationFile lFile1 = NcPathManager.getInstance().getLocalizationFile(
// userContext, ProductConfigureDialog.getSettingFullPath(pt1));
LocalizationFile lFile = NcPathManager.getInstance().getStaticLocalizationFile(ProductConfigureDialog.getSettingFullPath(pt1));
String filePath = lFile.getFile().getAbsolutePath();
if ( !new File( filePath).canRead()){
loadSettingsTable();
}
else {
loadPgenSettings( filePath);
}
}
catch ( Exception e ){
loadSettingsTable();
}
}
}
public boolean loadPgenSettings( String fileName ){
@ -151,6 +188,8 @@ public class AttrSettings {
HashMap<String, AbstractDrawableComponent> newSettings = new HashMap<String, AbstractDrawableComponent>();
File sFile = new File( fileName );
try {
if ( sFile.canRead() ){
Products products = FileTools.read( fileName );
@ -195,6 +234,10 @@ public class AttrSettings {
}
}
}
catch ( Exception e ){
ret = false;
}
return ret;
}

View file

@ -8,6 +8,7 @@
package gov.noaa.nws.ncep.ui.pgen.attrDialog;
import gov.noaa.nws.ncep.ui.pgen.PgenUtil;
import gov.noaa.nws.ncep.ui.pgen.elements.AbstractDrawableComponent;
import gov.noaa.nws.ncep.ui.pgen.elements.DrawableElement;
import gov.noaa.nws.ncep.ui.pgen.display.FillPatternList.FillPattern;
@ -26,7 +27,9 @@ import java.util.Iterator;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
@ -48,6 +51,8 @@ import com.vividsolutions.jts.geom.Coordinate;
* 09/10 B. Yin Initial Creation.
* 10/10 #? B. Yin Use MidLevelCloudText as label.
* 04/11 #? B. Yin Re-factor IAttribute
* 12/11 #523 B. Yin Save the label dialog location
* 12/11 ? B. Yin Added the open/close line button
* </pre>
*
* @author B. Yin
@ -73,7 +78,7 @@ public class CloudAttrDlg extends AttrDlg implements ILine{
protected ColorButtonSelector cs;
//Closed line check box
protected Button closedBtn;
protected Button closedChkBox;
//Add-Line button
private Button addLineBtn;
@ -89,12 +94,15 @@ public class CloudAttrDlg extends AttrDlg implements ILine{
//Flip button
private Button flipBtn;
private Button openCloseBtn;
//Edit Label button
private Button editLabelBtn;
private float lineWidth = 2.0f;
private Point labelDlgLocation;
/**
* Constructor
* @param parShell
@ -189,6 +197,7 @@ public class CloudAttrDlg extends AttrDlg implements ILine{
delLineBtn.setSelection(false);
delLabelBtn.setSelection(false);
flipBtn.setSelection(false);
openCloseBtn.setSelection(false);
}
else {
// cloudTool.setAddLineMode(false);
@ -211,6 +220,7 @@ public class CloudAttrDlg extends AttrDlg implements ILine{
delLineBtn.setSelection(false);
delLabelBtn.setSelection(false);
flipBtn.setSelection(false);
openCloseBtn.setSelection(false);
try {
labelDlg = new LabelAttrDlg( CloudAttrDlg.this.getParentShell() );
//labelDlg = MidLevelCloudAttrDlg.getInstance( CloudAttrDlg.this.getParentShell());
@ -247,12 +257,13 @@ public class CloudAttrDlg extends AttrDlg implements ILine{
@Override
public void widgetSelected(SelectionEvent e) {
if ( ((Button)e.widget).getSelection() ){
cloudTool.setDeleteHandler(true, false);
cloudTool.setDeleteHandler(true, false, false);
addLineBtn.setSelection(false);
addLabelBtn.setSelection(false);
if ( labelDlg != null ) labelDlg.close();
delLabelBtn.setSelection(false);
flipBtn.setSelection(false);
openCloseBtn.setSelection(false);
}
else {
cloudTool.resetMouseHandler();
@ -269,12 +280,13 @@ public class CloudAttrDlg extends AttrDlg implements ILine{
@Override
public void widgetSelected(SelectionEvent e) {
if ( ((Button)e.widget).getSelection() ){
cloudTool.setDeleteHandler(false, false);
cloudTool.setDeleteHandler(false, false, false);
addLineBtn.setSelection(false);
addLabelBtn.setSelection(false);
if ( labelDlg != null ) labelDlg.close();
delLineBtn.setSelection(false);
flipBtn.setSelection(false);
openCloseBtn.setSelection(false);
}
else {
cloudTool.resetMouseHandler();
@ -291,12 +303,13 @@ public class CloudAttrDlg extends AttrDlg implements ILine{
@Override
public void widgetSelected(SelectionEvent e) {
if ( ((Button)e.widget).getSelection() ){
cloudTool.setDeleteHandler(true, true);
cloudTool.setDeleteHandler(true, true, false);
addLineBtn.setSelection(false);
addLabelBtn.setSelection(false);
if ( labelDlg != null ) labelDlg.close();
delLineBtn.setSelection(false);
delLabelBtn.setSelection(false);
openCloseBtn.setSelection(false);
}
else {
cloudTool.resetMouseHandler();
@ -320,6 +333,7 @@ public class CloudAttrDlg extends AttrDlg implements ILine{
delLabelBtn.setSelection(false);
addLabelBtn.setSelection(false);
flipBtn.setSelection(false);
openCloseBtn.setSelection(false);
//labelDlg = MidLevelCloudAttrDlg.getInstance( CloudAttrDlg.this.getParentShell());
try {
labelDlg = new LabelAttrDlg( CloudAttrDlg.this.getParentShell() );
@ -335,13 +349,30 @@ public class CloudAttrDlg extends AttrDlg implements ILine{
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
//'Open/close' button
openCloseBtn = new Button(pane1, SWT.TOGGLE);
openCloseBtn.setText("Open/Close");
openCloseBtn.setLayoutData(new GridData(120,30));
openCloseBtn.addSelectionListener(new SelectionAdapter(){
@Override
public void widgetSelected(SelectionEvent e) {
if ( ((Button)e.widget).getSelection() ){
cloudTool.setDeleteHandler(true, false, true);
addLineBtn.setSelection(false);
addLabelBtn.setSelection(false);
if ( labelDlg != null ) labelDlg.close();
delLineBtn.setSelection(false);
delLabelBtn.setSelection(false);
flipBtn.setSelection(false);
}
else {
cloudTool.resetMouseHandler();
}
}
});
addSeparator(top);
@ -394,10 +425,10 @@ public class CloudAttrDlg extends AttrDlg implements ILine{
public void widgetSelected(SelectionEvent e) {
Button btn = (Button)e.widget;
if(btn.getSelection()){
closedBtn.setEnabled(true);
closedChkBox.setEnabled(true);
}
else {
closedBtn.setEnabled(false);
closedChkBox.setEnabled(false);
}
}
@ -405,8 +436,8 @@ public class CloudAttrDlg extends AttrDlg implements ILine{
});
*/
closedBtn = new Button(comp, SWT.CHECK);
closedBtn.setText("Closed");
closedChkBox = new Button(comp, SWT.CHECK);
closedChkBox.setText("Closed");
}
@Override
@ -414,7 +445,7 @@ public class CloudAttrDlg extends AttrDlg implements ILine{
if ( cloudTool != null && cloudTool.getLabeledLine() != null ){
Line ln = (Line)cloudTool.getLabeledLine().getPrimaryDE();
this.setColor(ln.getColors()[0]);
this.closedBtn.setSelection(ln.isClosedLine());
this.closedChkBox.setSelection(ln.isClosedLine());
}
@ -475,7 +506,7 @@ public class CloudAttrDlg extends AttrDlg implements ILine{
public Boolean isClosedLine(){
// if ( chkBox[ChkBox.CLOSE.ordinal()].getSelection() ){
return closedBtn.getSelection();
return closedChkBox.getSelection();
// }
// else {
// return null;
@ -489,8 +520,8 @@ public class CloudAttrDlg extends AttrDlg implements ILine{
*/
/*private void setClosed( Boolean cls ){
if ( closedBtn != null ){
closedBtn.setSelection( cls );
if ( closedChkBox != null ){
closedChkBox.setSelection( cls );
}
}
*/
@ -559,6 +590,7 @@ public class CloudAttrDlg extends AttrDlg implements ILine{
public boolean close(){
if ( labelDlg != null ) labelDlg.close();
PgenUtil.setSelectingMode();
return super.close();
}
@ -578,6 +610,7 @@ public class CloudAttrDlg extends AttrDlg implements ILine{
*/
private class LabelAttrDlg extends MidLevelCloudAttrDlg {
/**
* constructor
* @param parShell
@ -618,6 +651,31 @@ public class CloudAttrDlg extends AttrDlg implements ILine{
CloudAttrDlg.this.mapEditor.refresh();
close();
}
/**
* Set the location of the dialog
*/
@Override
public int open(){
if(labelDlgLocation != null){
shellLocation = labelDlgLocation;
}
return super.open();
}
/**
* Save location of the dialog.
*/
public boolean close() {
if(getShell() != null){
Rectangle bounds = getShell().getBounds();
labelDlgLocation = new Point(bounds.x, bounds.y);
}
return super.close();
}
}
@Override
@ -634,8 +692,7 @@ public class CloudAttrDlg extends AttrDlg implements ILine{
@Override
public int getSmoothFactor() {
// TODO Auto-generated method stub
return 0;
return 2;
}
@Override
@ -649,5 +706,4 @@ public class CloudAttrDlg extends AttrDlg implements ILine{
// TODO Auto-generated method stub
return null;
}
}

View file

@ -97,6 +97,7 @@ import gov.noaa.nws.ncep.ui.pgen.PgenUtil;
* 04/11 #? B. Yin Re-factor IAttribute
* 07/11 #? J. Wu Updated symbol selection panel and allowed closed
* 08/11 #? J. Wu TTR78: keep line/symbol/label attr window open.
* 01/12 #? J. Wu Fixed exceptions when closing the dialog.
* </pre>
*
* @author J. Wu
@ -198,7 +199,7 @@ public class ContoursAttrDlg extends AttrDlg implements IContours, SelectionList
private LabelAttrDlg labelAttrDlg;
/**
* stored label text attribute
* stored label text attributeSlider
*/
private gov.noaa.nws.ncep.ui.pgen.elements.Text labelTemplate = null;
@ -212,6 +213,16 @@ public class ContoursAttrDlg extends AttrDlg implements IContours, SelectionList
*/
private Symbol minmaxTemplate = null;
/**
* Line attribute dialog
*/
private ContourCircleAttrDlg circleAttrDlg;
/**
* stored line attribute
*/
private Arc circleTemplate = null;
/**
* stored symbol attribute
*/
@ -582,11 +593,53 @@ public class ContoursAttrDlg extends AttrDlg implements IContours, SelectionList
Button circleAttrBtn = new Button( editCircleComp, SWT.PUSH );;
circleAttrBtn.setText("Edit");
circleAttrBtn.setEnabled( false );
circleAttrBtn.setEnabled( true );
circleAttrBtn.setToolTipText( "Edit contour's circle attributes" );
circleAttrBtn.addListener(SWT.MouseDown, new Listener(){
@Override
public void handleEvent(Event event) {
try {
if ( circleAttrDlg == null ){
circleAttrDlg = new ContourCircleAttrDlg(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
}
openAttrDlg( circleAttrDlg );
circleAttrDlg.initDlg();
//get stored attributes
DrawableElement de = drawingLayer.getSelectedDE();
if ( de != null && de.getParent() != null && de.getParent() instanceof ContourCircle ) {
ContourCircle pde = (ContourCircle)de.getParent();
circleAttrDlg.setAttrForDlg( (IAttribute)pde.getCircle() );
}
else {
if ( circleTemplate == null ) {
circleTemplate = (Arc)contoursAttrSettings.get( "Circle" );
circleTemplate.setPgenType( "Circle" );
}
circleAttrDlg.setAttrForDlg( (IAttribute)circleTemplate );
}
// disable un-used attributes
circleAttrDlg.disableWidgets();
}
catch (VizException e) {
e.printStackTrace();
}
}
});
applyAllCircleBtn = new Button( editCircleComp, SWT.CHECK );;
applyAllCircleBtn.setText("All");
applyAllCircleBtn.setEnabled( false );
applyAllCircleBtn.setEnabled( true );
// Create a composite to editing the label attributes.
@ -1099,6 +1152,9 @@ public class ContoursAttrDlg extends AttrDlg implements IContours, SelectionList
disableActionButtons();
this.getButton(IDialogConstants.CANCEL_ID).setEnabled(false);
this.getButton(IDialogConstants.OK_ID).setEnabled(false);
setButtonColor( addLineBtn, activeButtonColor );
setButtonColor( selectLineBtn, defaultButtonColor );
setButtonColor( deleteLineBtn, defaultButtonColor );
@ -1368,6 +1424,7 @@ public class ContoursAttrDlg extends AttrDlg implements IContours, SelectionList
if ( labelAttrDlg != null ) labelAttrDlg.close();
if ( lineAttrDlg != null ) lineAttrDlg.close();
if ( minmaxAttrDlg != null ) minmaxAttrDlg.close();
if ( circleAttrDlg != null ) circleAttrDlg.close();
}
@ -1400,6 +1457,13 @@ public class ContoursAttrDlg extends AttrDlg implements IContours, SelectionList
return applyAllLabelBtn.getSelection();
}
/**
* See if we need to update all circle's attributes.
*/
private Boolean updateAllCircleAttr() {
return applyAllCircleBtn.getSelection();
}
/**
* @return the labelTemplate
*/
@ -1464,6 +1528,28 @@ public class ContoursAttrDlg extends AttrDlg implements IContours, SelectionList
this.minmaxTemplate = minmaxTemplate;
}
/**
* @return the circleTemplate
*/
public IAttribute getCircleTemplate() {
if ( circleAttrDlg != null && circleAttrDlg.getShell() != null ) {
return circleAttrDlg;
}
else if ( circleTemplate != null ) {
return circleTemplate;
}
else {
circleTemplate = (Arc)contoursAttrSettings.get( "Circle" );
return circleTemplate;
}
}
/**
* @param circleTemplate the circleTemplate to set
*/
public void setCircleTemplate(Arc circleTemplate) {
this.circleTemplate = circleTemplate;
}
/**
* Initialize and open the line and label attribute editing dialog
* @param dlg
@ -1873,6 +1959,165 @@ public class ContoursAttrDlg extends AttrDlg implements IContours, SelectionList
}
/**
* Private Contour Circle attribute dialog class
* @author jwu
*
*/
private class ContourCircleAttrDlg extends ArcAttrDlg {
private ContourCircleAttrDlg(Shell parShell) throws VizException {
super( parShell );
}
/**
* Update the circle attributes
*/
@Override
public void okPressed(){
/*
* Update the circle template first.
*/
circleTemplate = (gov.noaa.nws.ncep.ui.pgen.elements.Arc)new DrawableElementFactory().create(DrawableType.ARC,
this, "Arc", "Circle", (Coordinate)null, null );
/*
* Update the Contours.
*/
updateCircleAttributes();
}
/**
* closes the circle attribute dialog only
*/
@Override
public void cancelPressed(){
this.close();
}
/**
* disable un-used widgets
*/
private void disableWidgets() {
axisRatioLbl.setEnabled(false);
axisRatioSlider.setEnabled(false);
axisRatioText.setEnabled(false);
startAngleLbl.setEnabled(false);
startAngleSlider.setEnabled(false);
startAngleText.setEnabled(false);
endAngleLbl.setEnabled(false);
endAngleSlider.setEnabled(false);
endAngleText.setEnabled(false);
}
/**
* initialize dialog
*/
private void initDlg() {
this.getShell().setText("Contour Circle Attributes");
}
}
/**
* Updates the selected contours' circle attributes, then redraws the PGEN layer.
*/
private void updateCircleAttributes() {
/*
* If no Contourcircle is selected and "All" is not checked, do nothing.
*/
DrawableElement de = drawingLayer.getSelectedDE();
if ( de == null || de.getParent() == null || !(de.getParent() instanceof ContourCircle ) ) {
return;
}
/*
* Create a new Contours with all components in the old Contours and update
* the line attributes if required.
*/
DrawableElement newEl = null;
Contours oldContours = null;
if ( de != null && de.getParent() instanceof ContourCircle ) {
newEl = (DrawableElement)de.copy();
oldContours = (Contours)de.getParent().getParent();
}
else {
oldContours = currentContours;
}
if ( oldContours != null ) {
Iterator<AbstractDrawableComponent> iterator = oldContours.getComponentIterator();
Contours newContours = new Contours();
/*
* Copy all contour lines and update the line attributes.
*/
while ( iterator.hasNext() ) {
AbstractDrawableComponent oldAdc = iterator.next();
AbstractDrawableComponent newAdc = oldAdc.copy();
if ( newAdc instanceof ContourCircle ) {
if ( updateAllCircleAttr() ) {
Arc oneCircle = (Arc)((ContourCircle)newAdc).getCircle();
oneCircle.update( circleTemplate );
}
if ( newEl != null && oldAdc.equals( de.getParent() ) ) {
newEl.setParent( newAdc );
if ( newEl instanceof Arc ) {
((DECollection)newAdc).replace( ((ContourCircle)newAdc).getCircle(), newEl );
}
((ContourCircle)newAdc).getCircle().update( circleTemplate );
}
}
newAdc.setParent( newContours );
newContours.add( newAdc );
}
/*
* Update the contours attributes and replace the old one with the new Contours.
*/
newContours.update( oldContours );
drawingLayer.replaceElement( oldContours, newContours );
/*
* Reset the selected contours and DE to the updated ones.
*/
currentContours = newContours;
if ( newEl != null ) {
drawingLayer.removeSelected();
drawingLayer.setSelected( newEl );
}
}
if ( mapEditor != null ) {
mapEditor.refresh();
}
}
/*
* Open the dialog to do graph-to-grid processing.
*/
@ -2045,18 +2290,14 @@ public class ContoursAttrDlg extends AttrDlg implements IContours, SelectionList
* Get the line type (pgenType string).
*/
public String getContourLineType() {
return lineTypeBtn.getData().toString();
}
/**
* Check if the circle drawing button is selected.
*/
public boolean drawCircle() {
return drawCircleBtn.getSelection();
}
/**
@ -2070,9 +2311,7 @@ public class ContoursAttrDlg extends AttrDlg implements IContours, SelectionList
* Check if the circle label hiding button is selected.
*/
public boolean hideCircleLabel() {
return hideCircleLabelBtn.getSelection();
}
/**
@ -2576,8 +2815,8 @@ public class ContoursAttrDlg extends AttrDlg implements IContours, SelectionList
numOfQuickSymbols = selected;
if ( selected == 0 ) {
lbls.put( "HIGH_PRESSURE_H", true );
lbls.put( "LOW_PRESSURE_L", true );
lbls.put( "FILLED_HIGH_PRESSURE_H", true );
lbls.put( "FILLED_LOW_PRESSURE_L", true );
numOfQuickSymbols = 2;
}
@ -2601,12 +2840,16 @@ public class ContoursAttrDlg extends AttrDlg implements IContours, SelectionList
contoursAttrSettings.put( str, retrieveDefaultSettings( str ) );
}
//Get Default for Circle.
// contoursAttrSettings.put( "Circle", retrieveDefaultSettings( "Circle" ) );
/*
* Get line, text, and symbols/markers found in the Contours in "settings.tbl"
* Get line, text, symbols/markers, circles found in the Contours in "settings.tbl"
*/
AbstractDrawableComponent adc = retrieveDefaultSettings( "Contours" );
boolean lineFound = false;
boolean labelFound = false;
boolean circleFound = false;
if ( adc != null && adc instanceof Contours ) {
List<ContourLine> cline = ((Contours)adc).getContourLines();
if ( cline != null && cline.size() > 0 ) {
@ -2637,9 +2880,25 @@ public class ContoursAttrDlg extends AttrDlg implements IContours, SelectionList
}
}
List<ContourCircle> ccircles = ((Contours)adc).getContourCircles();
if ( ccircles != null && ccircles.size() > 0 ) {
Arc cc = (Arc)ccircles.get(0).getCircle();
if ( cc != null ) {
contoursAttrSettings.put( cc.getPgenType(), cc.copy() );
circleFound = true;
}
// Build a default line and text as template
if ( !labelFound ) {
if ( ccircles.get(0).getLabel() != null ) {
labelFound = true;
contoursAttrSettings.put( ccircles.get(0).getLabel().getPgenType(),
ccircles.get(0).getLabel().copy() );
}
}
}
}
// Build a default line, text, circle as template
if ( !lineFound ) {
Line dln = new Line( null, new Color[]{ Color.red },
2.0f, 2.0, false, false, null, 2,
@ -2658,6 +2917,15 @@ public class ContoursAttrDlg extends AttrDlg implements IContours, SelectionList
contoursAttrSettings.put( "General Text", txt );
}
if ( !circleFound ) {
Arc ccr = new Arc( null, Color.red,
2.0f, 2.0, false, false,2, FillPattern.SOLID, "Circle",
null, null, "Arc", 1.0, 0.0, 360.0 );
contoursAttrSettings.put( "Circle", ccr );
}
}
}
@ -2680,7 +2948,7 @@ public class ContoursAttrDlg extends AttrDlg implements IContours, SelectionList
retrieveContoursSettings();
String type = new String( "LINE_SOLID" );
for ( AbstractDrawableComponent adc : contoursAttrSettings.values() ) {
if ( adc instanceof Line ) {
if ( adc instanceof Line && !(adc instanceof Arc) ) {
type = new String( adc.getPgenType() );
break;
}

View file

@ -15,7 +15,8 @@ import java.util.List;
import java.util.TimeZone;
import gov.noaa.nws.ncep.ui.pgen.contours.IContours;
import gov.noaa.nws.ncep.viz.localization.impl.LocalizationManager;
import gov.noaa.nws.ncep.viz.localization.NcPathManager;
import gov.noaa.nws.ncep.viz.localization.NcPathManager.NcPathConstants;
import org.dom4j.Document;
import org.dom4j.Node;
@ -46,6 +47,7 @@ import com.raytheon.viz.ui.dialogs.CaveJFACEDialog;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* 10/09 #167 J. Wu Initial Creation.
* 07/11 #450 G. Hull NcPathManager
*
* </pre>
*
@ -472,7 +474,8 @@ public class ContoursInfoDlg extends CaveJFACEDialog implements IContours {
if ( contoursInfoTbl == null) {
try {
String cntrInfoFile = LocalizationManager.getInstance().getFilename("contoursInfo");
String cntrInfoFile = NcPathManager.getInstance().getStaticFile(
NcPathConstants.PGEN_CONTOURS_INFO ).getAbsolutePath();
SAXReader reader = new SAXReader();
contoursInfoTbl = reader.read(cntrInfoFile);
} catch (Exception e) {

View file

@ -9,6 +9,7 @@
package gov.noaa.nws.ncep.ui.pgen.attrDialog;
import static gov.noaa.nws.ncep.ui.pgen.gfa.GfaInfo.*;
import gov.noaa.nws.ncep.ui.pgen.PgenSession;
import gov.noaa.nws.ncep.ui.pgen.PgenUtil;
import gov.noaa.nws.ncep.ui.pgen.elements.AbstractDrawableComponent;
import gov.noaa.nws.ncep.ui.pgen.elements.DrawableElement;
@ -21,7 +22,8 @@ import gov.noaa.nws.ncep.ui.pgen.gfa.PreloadGfaDataThread;
import gov.noaa.nws.ncep.ui.pgen.sigmet.SigmetInfo;
import gov.noaa.nws.ncep.ui.pgen.tools.PgenCycleTool;
import gov.noaa.nws.ncep.viz.common.ui.color.ColorButtonSelector;
import gov.noaa.nws.ncep.viz.localization.impl.LocalizationManager;
import gov.noaa.nws.ncep.viz.localization.NcPathManager;
import gov.noaa.nws.ncep.viz.localization.NcPathManager.NcPathConstants;
import java.awt.Color;
import java.util.*;
@ -55,6 +57,11 @@ import com.vividsolutions.jts.geom.Coordinate;
* 03/2010 #223 M.Laryukhin Initial Creation.
* 04/11 #? B. Yin Re-factor IAttribute
* 05/11 #? J. Wu Retrieve cycle hour from PgenCycleTool
* 07/11 #450 G. Hull NcPathManager
* 11/11 #? J. Wu Add linkage between GFA hazard type
* and GAIRMET layer names.
* 12/11 #? B. Yin Set voxText
*
* </pre>
*
* @author mlaryukhin
@ -120,10 +127,9 @@ public class GfaAttrDlg extends LineAttrDlg implements IGfa {
private HashMap<String, Label> requiredCrosses = new HashMap<String, Label>();
private Label warning;
// private final String RED_CROSS_PATH = LocalizationManager.getBaseDir()
// + NmapCommon.NatlCntrsBaseDir + NmapCommon.GfaAttrDir + "red_cross.png";
private final String RED_CROSS_PATH = LocalizationManager.getInstance().getFilename("redCrossImageFile");
//End of change made by Michael Gao
private final String RED_CROSS_PATH =
NcPathManager.getInstance().getStaticFile(
NcPathConstants.PGEN_RED_CROSS_IMG ).getAbsolutePath();
/** Digits, semicolon*/
private final String TIME = "[01234569]?|12|[012345]?:|[012345]?:(0|1|3|4|00|15|30|45)";
@ -806,16 +812,8 @@ public class GfaAttrDlg extends LineAttrDlg implements IGfa {
SelectionAdapter s1 = new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
if(addRemoveTypeDlg != null&& !addRemoveTypeDlg.isDisposed()) {
addRemoveTypeDlg.close();
addRemoveTypeDlg = null;
}
if(type != null) type.setText("");
typeCheckboxes.clear();
values.clear();
widgets.clear();
addRemoveDlgCheckboxes.clear();
redrawHazardSpecificPanel();
updateHazard();
linkHazardWithLayer( hazardCbo.getText() );
}
};
SelectionAdapter s2 = new SelectionAdapter() {
@ -1135,12 +1133,7 @@ public class GfaAttrDlg extends LineAttrDlg implements IGfa {
if(adc instanceof Gfa) selectedGfa = (Gfa) adc;
}
if(selectedGfa != null) {
ArrayList<Coordinate> pts = selectedGfa.getPoints();
pts = SigmetInfo.getSnapWithStation(pts,SigmetInfo.VOR_STATION_LIST,10,16, false) ;
Coordinate[] a = new Coordinate[pts.size()];
a = pts.toArray(a);
String s = SigmetInfo.getVORText(a, " TO ", "Area", -1, true, false, true );
textVOR.setText(s);
setVorText( selectedGfa );
}
}
@ -1441,7 +1434,14 @@ public class GfaAttrDlg extends LineAttrDlg implements IGfa {
if(statesBtnEnabled || (top != null && !top.isDisposed())) {
return CANCEL;
}
return super.open();
int open = super.open();
switchHazard( PgenSession.getInstance().getPgenResource().getActiveLayer().getName() );
return open;
// return super.open();
}
private void correctOtherText() {
@ -1827,4 +1827,96 @@ public class GfaAttrDlg extends LineAttrDlg implements IGfa {
// TODO Auto-generated method stub
return PgenCycleTool.getCycleHour();
}
/**
* Check if Gfa attribute window is open
*/
public boolean isGfaOpen() {
return ( hazardCbo != null && !hazardCbo.isDisposed() );
}
/**
* Switch Gfa hazard type to a given type.
*/
public void switchHazard( String hazard ) {
if ( isGfaOpen() ) {
String currentHaz = hazardCbo.getText();
if ( hazard != null && !currentHaz.equals( hazard ) ) {
int index = hazardCbo.indexOf( hazard );
if ( index >= 0 ) {
hazardCbo.select(index);
hazardIndexLastUsed = index;
updateHazard();
}
}
}
}
/*
* Update GFA GUI using the current Gfa hazard.
*/
private void updateHazard() {
if ( addRemoveTypeDlg != null&& !addRemoveTypeDlg.isDisposed() ) {
addRemoveTypeDlg.close();
addRemoveTypeDlg = null;
}
if ( type != null ) type.setText( "" );
typeCheckboxes.clear();
values.clear();
widgets.clear();
addRemoveDlgCheckboxes.clear();
redrawHazardSpecificPanel();
}
/*
* Update the active layer in the product manage GUI or the layering control window
* to the current Gfa hazard type.
*/
private void linkHazardWithLayer( String layer ) {
if ( PgenSession.getInstance().getPgenResource().getProductManageDlg() != null &&
PgenSession.getInstance().getPgenResource().getProductManageDlg().isOpen() ) {
PgenSession.getInstance().getPgenResource().getProductManageDlg().switchLayer( layer );
}
else if ( PgenSession.getInstance().getPgenResource().getLayeringControlDlg() != null &&
PgenSession.getInstance().getPgenResource().getLayeringControlDlg().isOpen() ) {
PgenSession.getInstance().getPgenResource().getLayeringControlDlg().switchLayer( layer );
}
}
/**
* Sets vorText field in the GFA dialog from the input GFA.
* @param gfa
*/
public void setVorText( Gfa gfa ){
ArrayList<Coordinate> pts = gfa.getPoints();
pts = SigmetInfo.getSnapWithStation(pts,SigmetInfo.VOR_STATION_LIST,10,16, false) ;
Coordinate[] a = new Coordinate[pts.size()];
a = pts.toArray(a);
String s = "";
if ( gfa.getGfaHazard().equalsIgnoreCase("FZLVL")){
if ( gfa.isClosedLine() ){
s = SigmetInfo.getVORText(a, "-", "Area", -1, true, false, true );
}
else {
s = SigmetInfo.getVORText(a, "-", "Line", -1, true, false, true );
}
}
else if ( gfa.getGfaHazard().equalsIgnoreCase("LLWS")){
s = SigmetInfo.getVORText(a, "-", "Area", -1, true, false, true );
}
else {
s = SigmetInfo.getVORText(a, " TO ", "Area", -1, true, false, true );
}
textVOR.setText(s);
}
}

View file

@ -29,6 +29,7 @@ import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.RowLayout;
@ -520,6 +521,8 @@ public class JetAttrDlg extends LineAttrDlg {
* close barb info dialg and all attribute dialogs
*/
public void closeBarbDlg(){
if ( barbDlg.getShell() != null ){
barbDlg.close();
if ( barbAttrDlg != null ){
barbAttrDlg.close();
@ -534,6 +537,7 @@ public class JetAttrDlg extends LineAttrDlg {
((PgenJetDrawingTool)jetTool).deSelect();
}
}
}
/**
@ -639,6 +643,14 @@ public class JetAttrDlg extends LineAttrDlg {
return flDepth;
}
/**
* clears top and bottom fields.
*/
public void clearFLDepth(){
barbDlg.topTxt.setText("");
barbDlg.btmTxt.setText("");
}
/**
* get barb attributes. If the dialog is open, get attributes from the dialog,
* otherwise, get them from the stored attributes.
@ -766,6 +778,13 @@ public class JetAttrDlg extends LineAttrDlg {
return super.open();
}
@Override
public boolean close() {
if ( jetTool != null ) jetTool.resetMouseHandler(); //de-activate addBarbTool
return super.close();
}
}
/**

View file

@ -41,7 +41,7 @@ public class LabeledSymbolAttrDlg extends SymbolAttrDlg {
static private LabeledSymbolAttrDlg INSTANCE = null;
private Button labelChkBox;
protected Button labelChkBox;
private Button labelColorChkBox;
private boolean lastLabelStatus;

Some files were not shown because too many files have changed in this diff Show more