Hi Gordon-
Gordon Carrie wrote:
Hi folks,
I need to view Sigmet Raw products in IDV. These are Sigmet's
equivalent of Level II files. I see two options:
1) Adapt the programs for reading WSR88D Level II files in
/metapps/ucar/unidata/data/radar.
This would probably be your best bet. I'd create a
SigmetRadarDataSource that handles that format. You might
be able to leverage some of the other classes in that package.
2) Convert the Sigmet files to NetCDF. I see source code for
reading radar data from NetCDF files in NetcdfRadarDataSource.java
and NetcdfSweepfileAdapter.java, but I cannot find the format
for the NetCDF files it reads (i.e. metadata, variable and
dimension names, etc.). Does anyone know where I can find this
specification? Output from ncdump on a sample file would be
sufficient.
The NetcdfSweepfileAdapter is that actual data munger that
NetcdfRadarDataSource uses. An example CDL is attached.
This is a format used by NCAR for their SPOL radar.
If I don't hear anything, I will proceed with option 1. Stay tuned.
I think that's the best option.
Good luck!
Don
*************************************************************
Don Murray UCAR Unidata Program
dmurray@xxxxxxxxxxxxxxxx P.O. Box 3000
(303) 497-8628 Boulder, CO 80307
http://www.unidata.ucar.edu/staff/donm
"There's someone in my head, but it's not me" Roger Waters
*************************************************************
netcdf ncswp_SPOL_20000705_234939.847_v1_s8_59.0_RHI_ {
dimensions:
Time = UNLIMITED ; // (41 currently)
maxCells = 1008 ;
numSystems = 1 ;
variables:
int base_time ;
base_time:long_name = "Unix Date/Time value for first record" ;
base_time:units = "seconds since 1970-01-01 00:00 UTC" ;
base_time:_FillValue = 0 ;
float Fixed_Angle ;
Fixed_Angle:long_name = "Targeted fixed angle for this scan" ;
Fixed_Angle:units = "degrees" ;
Fixed_Angle:_FillValue = 0.f ;
float Range_to_First_Cell ;
Range_to_First_Cell:long_name = "Range to the center of the
first cell" ;
Range_to_First_Cell:units = "meters" ;
Range_to_First_Cell:_FillValue = 0.f ;
float Cell_Spacing ;
Cell_Spacing:long_name = "Distance between cells" ;
Cell_Spacing:units = "meters" ;
Cell_Spacing:_FillValue = 0.f ;
float Nyquist_Velocity ;
Nyquist_Velocity:long_name = "Effective unambigous velocity" ;
Nyquist_Velocity:units = "meters/second" ;
Nyquist_Velocity:_FillValue = 0.f ;
float Unambiguous_Range ;
Unambiguous_Range:long_name = "Effective unambigous range" ;
Unambiguous_Range:units = "meters" ;
Unambiguous_Range:_FillValue = 0.f ;
double Latitude ;
Latitude:long_name = "Latitude of the instrument" ;
Latitude:units = "degrees_north" ;
Latitude:valid_range = -90.f, 90.f ;
Latitude:missing_value = -999.f ;
Latitude:_FillValue = -888. ;
double Longitude ;
Longitude:long_name = "Longitude of the instrument" ;
Longitude:units = "degrees_east" ;
Longitude:valid_range = -360.f, 360.f ;
Longitude:missing_value = -999.f ;
Longitude:_FillValue = -888. ;
double Altitude ;
Altitude:long_name = "Altitude in meters (asl) of the
instrument" ;
Altitude:units = "meters" ;
Altitude:valid_range = -10000.f, 90000.f ;
Altitude:missing_value = -99999.f ;
Altitude:_FillValue = -88888. ;
float Radar_Constant(numSystems) ;
Radar_Constant:long_name = "Radar constant" ;
Radar_Constant:units = "???" ;
Radar_Constant:_FillValue = 0.f ;
float rcvr_gain(numSystems) ;
rcvr_gain:long_name = "Receiver Gain" ;
rcvr_gain:Comment = "Most entries are 2 dimension arrays one
for each polarity" ;
rcvr_gain:units = "db" ;
rcvr_gain:missing_value = -999.f ;
rcvr_gain:_FillValue = -888.f ;
float ant_gain(numSystems) ;
ant_gain:long_name = "Antenna Gain" ;
ant_gain:units = "db" ;
ant_gain:missing_value = -999.f ;
ant_gain:_FillValue = -888.f ;
float sys_gain(numSystems) ;
sys_gain:long_name = "System Gain" ;
sys_gain:units = "db" ;
sys_gain:missing_value = -999.f ;
sys_gain:_FillValue = -888.f ;
float bm_width(numSystems) ;
bm_width:long_name = "Beam Width" ;
bm_width:units = "degrees" ;
bm_width:missing_value = -999.f ;
bm_width:_FillValue = -888.f ;
float pulse_width(numSystems) ;
pulse_width:long_name = "Pulse Width" ;
pulse_width:units = "seconds" ;
pulse_width:missing_value = -999.f ;
pulse_width:_FillValue = -888.f ;
float band_width(numSystems) ;
band_width:long_name = "Band Width" ;
band_width:units = "hertz" ;
band_width:missing_value = -999.f ;
band_width:_FillValue = -888.f ;
float peak_pwr(numSystems) ;
peak_pwr:long_name = "Peak Power" ;
peak_pwr:units = "watts" ;
peak_pwr:missing_value = -999.f ;
peak_pwr:_FillValue = -888.f ;
float xmtr_pwr(numSystems) ;
xmtr_pwr:long_name = "Transmitter Power" ;
xmtr_pwr:units = "dBm" ;
xmtr_pwr:missing_value = -999.f ;
xmtr_pwr:_FillValue = -888.f ;
float noise_pwr(numSystems) ;
noise_pwr:long_name = "Noise Power" ;
noise_pwr:units = "dBm" ;
noise_pwr:missing_value = -999.f ;
noise_pwr:_FillValue = -888.f ;
float tst_pls_pwr(numSystems) ;
tst_pls_pwr:long_name = "Test Pulse Power" ;
tst_pls_pwr:units = "dBm" ;
tst_pls_pwr:missing_value = -999.f ;
tst_pls_pwr:_FillValue = -888.f ;
float tst_pls_rng0(numSystems) ;
tst_pls_rng0:long_name = "Range to start of test pulse" ;
tst_pls_rng0:units = "meters" ;
tst_pls_rng0:_FillValue = 0.f ;
float tst_pls_rng1(numSystems) ;
tst_pls_rng1:long_name = "Range to end of test pulse" ;
tst_pls_rng1:units = "meters" ;
tst_pls_rng1:_FillValue = 0.f ;
double time_offset(Time) ;
time_offset:long_name = "time offset of the current record from
base_time" ;
time_offset:units = "seconds" ;
time_offset:_FillValue = 0. ;
float Azimuth(Time) ;
Azimuth:long_name = "Earth relative azimuth of the ray" ;
Azimuth:Comment = "Degrees clockwise from true North" ;
Azimuth:units = "degrees" ;
Azimuth:valid_range = -360.f, 360.f ;
Azimuth:missing_value = -999.f ;
Azimuth:_FillValue = -888.f ;
float Elevation(Time) ;
Elevation:long_name = "Earth relative elevation of the ray" ;
Elevation:Comment = "Degrees from earth tangent towards zenith"
;
Elevation:units = "degrees" ;
Elevation:valid_range = -360.f, 360.f ;
Elevation:missing_value = -999.f ;
Elevation:_FillValue = -888.f ;
short DBZ(Time, maxCells) ;
DBZ:long_name = "Reflectivity factor" ;
DBZ:units = "dBz" ;
DBZ:scale_factor = 0.01f ;
DBZ:add_offset = 0.f ;
DBZ:missing_value = -32768s ;
DBZ:_FillValue = -32768s ;
DBZ:polarization = "Horizontal" ;
DBZ:Frequencies_GHz = 2.80900001525879 ;
DBZ:InterPulsePeriods_secs = 0.00104149997234344 ;
short ZDR(Time, maxCells) ;
ZDR:long_name = "Polarization_diversity" ;
ZDR:units = "dBm" ;
ZDR:scale_factor = 0.01f ;
ZDR:add_offset = 0.f ;
ZDR:missing_value = -32768s ;
ZDR:_FillValue = -32768s ;
ZDR:polarization = "Horizontal and Vertical" ;
ZDR:Frequencies_GHz = 2.80900001525879 ;
ZDR:InterPulsePeriods_secs = 0.00104149997234344 ;
short LDR(Time, maxCells) ;
LDR:long_name = "Linear Depolarization Ratio" ;
LDR:units = "dBm" ;
LDR:scale_factor = 0.01f ;
LDR:add_offset = 0.f ;
LDR:missing_value = -32768s ;
LDR:_FillValue = -32768s ;
LDR:polarization = "Horizontal" ;
LDR:Frequencies_GHz = 2.80900001525879 ;
LDR:InterPulsePeriods_secs = 0.00104149997234344 ;
short NCP(Time, maxCells) ;
NCP:long_name = "Normalized Coherent Power" ;
NCP:units = "" ;
NCP:scale_factor = 0.01f ;
NCP:add_offset = 0.f ;
NCP:missing_value = -32768s ;
NCP:_FillValue = -32768s ;
NCP:polarization = "Horizontal" ;
NCP:Frequencies_GHz = 2.80900001525879 ;
NCP:InterPulsePeriods_secs = 0.00104149997234344 ;
short VR(Time, maxCells) ;
VR:long_name = "Doppler velocity" ;
VR:units = "meters/second" ;
VR:scale_factor = 0.01f ;
VR:add_offset = 0.f ;
VR:missing_value = -32768s ;
VR:_FillValue = -32768s ;
VR:polarization = "Horizontal" ;
VR:Frequencies_GHz = 2.80900001525879 ;
VR:InterPulsePeriods_secs = 0.00104149997234344 ;
short PHIDP(Time, maxCells) ;
PHIDP:long_name = "Differential Phase" ;
PHIDP:units = "deg." ;
PHIDP:scale_factor = 0.1f ;
PHIDP:add_offset = 0.f ;
PHIDP:missing_value = -32768s ;
PHIDP:_FillValue = -32768s ;
PHIDP:polarization = "Horizontal and Vertical" ;
PHIDP:Frequencies_GHz = 2.80900001525879 ;
PHIDP:InterPulsePeriods_secs = 0.00104149997234344 ;
short RHOHV(Time, maxCells) ;
RHOHV:long_name = "Copolar Cross Correlation" ;
RHOHV:units = "" ;
RHOHV:scale_factor = 0.001f ;
RHOHV:add_offset = 0.f ;
RHOHV:missing_value = -32768s ;
RHOHV:_FillValue = -32768s ;
RHOHV:polarization = "Horizontal and Vertical" ;
RHOHV:Frequencies_GHz = 2.80900001525879 ;
RHOHV:InterPulsePeriods_secs = 0.00104149997234344 ;
short SW(Time, maxCells) ;
SW:long_name = "Spectral width" ;
SW:units = "meters/second" ;
SW:scale_factor = 0.01f ;
SW:add_offset = 0.f ;
SW:missing_value = -32768s ;
SW:_FillValue = -32768s ;
SW:polarization = "Horizontal" ;
SW:Frequencies_GHz = 2.80900001525879 ;
SW:InterPulsePeriods_secs = 0.00104149997234344 ;
short DM(Time, maxCells) ;
DM:long_name = "Reflected power in dBm" ;
DM:units = "dBm" ;
DM:scale_factor = 0.01f ;
DM:add_offset = 0.f ;
DM:missing_value = -32768s ;
DM:_FillValue = -32768s ;
DM:polarization = "Horizontal" ;
DM:Frequencies_GHz = 2.80900001525879 ;
DM:InterPulsePeriods_secs = 0.00104149997234344 ;
short DX(Time, maxCells) ;
DX:long_name = "Crosspole Reflected power in dBm" ;
DX:units = "dBm" ;
DX:scale_factor = 0.01f ;
DX:add_offset = 0.f ;
DX:missing_value = -32768s ;
DX:_FillValue = -32768s ;
DX:polarization = "Horizontal and Vertical" ;
DX:Frequencies_GHz = 2.80900001525879 ;
DX:InterPulsePeriods_secs = 0.00104149997234344 ;
// global attributes:
:Content = "This file contains one scan of remotely sensed
data" ;
:Conventions = "NCAR_ATD-NOAA_ETL/Scanning_Remote_Sensor" ;
:Instrument_Name = "SPOL" ;
:Instrument_Type = "GROUND" ;
:Scan_Mode = "RHI" ;
:Start_Time = "07/05/100 23:49:39.847" ;
:Year = 2000 ;
:Month = 7 ;
:Day = 5 ;
:Hour = 23 ;
:Minute = 49 ;
:Second = 39 ;
:Volume_Number = 1 ;
:Scan_Number = 8 ;
:Num_Samples = 128 ;
:Index_of_horizontal_information = 0 ;
:Project_Name = "STEPS2000" ;
:Production_Date = "Fri Jul 7 13:53:21 2000" ;
:Producer_Name = "NSF/UCAR/NCAR/ATD" ;
:Software = "xltrs" ;
}