Re: [cf-satellite] cf-satellite Digest, Vol 14, Issue 1

NOTE: The cf-satellite mailing list is no longer active. The list archives are made available for historical reasons.

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi all,

So that everyone can better follow this discussion, I attach the ncdump
of a seviri file.

Best regards,
Martin

On 24/10/11 17:08, Martin Raspaud wrote:
> On 24/10/11 15:35, Peter Miu wrote:
>> Hi Martin,
> 
> Hi Pete,
> 
>> Thanks for the fast feedback.  Before I answer your questions, I would just 
>> like to let you know
>> that the EUMETSAT Data Centre is currently planning the implementation 
>> NetCDF formats as the 
>> common delivery format for all orderable data sets from the Archive.  
> 
>> A pilot has already been performed for the level 1B and 2 products from the 
>> Metop-A ASCAT instrument
>> and these are available for user feedback under the following URL:
> 
>> http://gsics.eumetsat.int/thredds/ascat.html
> 
>> The ASCAT NetCDF products were also presented to users in this year's 
>> EUMETSAT user conference held in Oslo.
> 
>> The development of usable NetCDF formats is our top priority as we want to 
>> ensure that all users (novice and expert) 
>> can immediately use our data so it is very important that guidelines 
>> regarding best practises, filename conventions, 
>> CF-Conventions and standards are followed.  A Format Advisory Group has been 
>> set up at EUMETSAT to discuss these 
>> guidelines with a view to publishing them so that users are aware how our 
>> data is organised and also to 
>> propose updates to the CF-conventions for satellite data as work is needed 
>> here (hence the existence of this mailing list! :o)
> 
> I was at the EUMETSAT conference this year :)
> 
>> Here are the answers to your questions:
> 
>> - Why are southMostLine, eastMostPixel, northMostLine, westMostPixel, and 
>> numberOfChannels dimensions and not attributes ?
> 
>> Apart from the HRV channel, these values remain constant for all channels in 
>> the data sets so we can be specify 
>> them as global attributes.  If the channel arrays store different 'sub-area' 
>> then we would need these value to be stored
>> as variable attributes for each channel array.  This is not the case for our 
>> NetCDF data set i.e. all channel arrays hold the 
>> same area for the same time.
> 
>> Note, the NetCDF file follows the Unidata recommendation for identifying the 
>> coordinates of the data in the channel arrays 
>> (Coordinate System Object Model - Current Encodings). Longitude and latitude 
>> arrays exist in the data set and 
>> their contents are used to geo-locating the pixel counts for each channel 
>> onto a projection.
> 
>> See: http://www.unidata.ucar.edu/software/netcdf-java/CDM/
> 
> Ok. I don't really understand the interest of having these
> dimensions/attributes though, since I guess you will have to define
> lon/lats anyway for each different resolution...
> 
>> - - How would you deal with the inclusion of the HRV channel ?
> 
>> We have not implemented the HRV channel in our NetCDF data sets as GSICS 
>> does not use this channel for calibration.
> 
>> To implement this channel in our NetCDF data sets, we would just need to add 
>> another longitude and latitude array 
>> specifying the location of each HRV pixel counts and a 2D array holding the 
>> HRV pixel counts.
> 
> Sounds good, but the HRV has 2 sub-areas: would you have a different
> variable for each or would you group the in one big channel ? (We
> implemented the latter, since the netcdf compression works well in this
> case)
> 
>> - - Are the longitudes and latitudes values different from what a "vertical 
>> perspective" with right parameters would provide ? If they do, why ? If they 
>> don't, why not include a grid-mapping definition ?
> 
>> Not sure what you mean here, perhaps the following explain it:
> 
>> For the pixel count in ch1( y, x ), it is located at latitude lat( y, x ) 
>> and longitude lon( y, x ).
>> By assigning the lat and lon as the coordinates system for any channel 
>> array, applications know how to geo-locate its contents.
> 
>>   float lat(y,x);
>>   float lon(y,x);
>>   int ch1(y,x);
>>   ch1:coordinates="lat lon";
> 
>>   int ch2(y,x);
>>   ch2:coordinates="lat lon";
> 
> My question was if the lon/lats differ from what one would get from
> running proj.4 with parameters like
> +proj=geos +lon0=0 +a=... etc.
> If one would get the same lon/lat data, then I would recommend to record
> also these parameters in a grid mapping variable. In this case, the
> lon/lats arrays would even become optional.
> 
>> - - On the cf-satellite list, we have long been discussing "band"s. Did you 
>> consider using those ?
> 
>> Sorry, I don't know what bands are.
> 
> Well, this is a bit sad :(. We have been working quite a lot on this
> list toward having band variables that would correctly describe
> satellite channels (or bands). My colleagues and I have tried to drag
> Eumetsat's attention to this list and the work done here on several
> occasions. Tom Whittaker was also at the Eumetsat conference last year
> in Cordoba to present CF conventions and the possibility to apply these
> to satellite. But apparently that was not enough...
> 
> You can read more on the band variable and related questions here:
> http://www.unidata.ucar.edu/mailing_lists/archives/cf-satellite/2011/thread.html
> 
>> - - Did you consider grouping channels in 3d arrays instead of having them 
>> separated ?
> 
>> I'm not sure what value a 3D arrays would give to the data.  Applications 
>> like the Unidata can 
>> plot the arrays on top of each other if needed.
> 
>> As mentioned above, we want our data to be immediately usable by all users 
>> and by following guidelines,
>> we add values to the data as the contents can be examined and plotted by 
>> existing free NetCDF applications
>> without any further processing by the users.
> 
>> - - Could you provide in the file calibration coefficients needed to convert 
>> radiances to reflectances and brightness temperatures ?
> 
>> Yes we can add any variable attribute to the channel arrays to support the 
>> needs of our users.
>> The power of NetCDF is as long as we don't remove or reorganise any 
>> attributes and/or arrays, 
>> existing users and applications will not 'break' by the change.  The only 
>> concern here is we need to 
>> ensure that a standard convention is followed for representing measurements 
>> that can be stored in different units 
>> (e.g. temperature can be stored as Celsius, Fahrenheit, Kelvin, ... ).  What 
>> unit is used should be
>> based on the needs of the 'core' users and this unit with a standard name 
>> should be included in the CF-conventions.
> 
> That would be nice :) Thanks a lot.
> 
> Best regards,
> Martin
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.14 (GNU/Linux)
Comment: Using GnuPG with Red Hat - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJOpkyaAAoJEBdvyODiyJI4njoIAKgFcS4f3JKNlcBV1bM3be40
o7Rjl+f1s5RUr547iPaK7dTGPMpSLII+EuC6fbBdpWUNvYR1J0Dz05VjrcuJzw8Z
RFTT/eO8gLKjhkd8NlfQakORb7zj64QTIyoNGGG1aDy18QSC3aPl2qzXaPZpXZYC
R88xddqIAfYrEXzjRQvV0T9M4wzgAGygIx3YhJiheQQhsb0ZcGPUnJ/6RkVPXYmC
ZSoMt/fXAqwUqyIR2w92mJLcLWfKbiuZfgeBiXGr4S+Z4byOufA0bG04944i6xPo
AHuIu91wlaLjgUukqHSa9kJH8o38QkWGatYPyvugRc0ykWdFKkIG9nCnY/ISM/4=
=vuE+
-----END PGP SIGNATURE-----
netcdf 
W_XX-EUMETSAT-Darmstadt\,VIS+IR+IMAGERY\,MSG2+SEVIRI_C_EUMG_20111024221511 {
dimensions:
        yc = 2345 ;
        xc = 2356 ;
        southMostLine = 686 ;
        eastMostPixel = 679 ;
        northMostLine = 3030 ;
        westMostPixel = 3034 ;
        numberOfChannels = 11 ;
        totalNumberOfSeviriChannels = 12 ;
variables:
        short ch1(yc, xc) ;
                ch1:standard_name = 
"satellite_geo_meteosat_vis_0.6_pixel_count" ;
                ch1:long_name = "SEVIRI visible 0.6 micron pixel counts" ;
                ch1:scale_factor = 0.0204191002994776 ;
                ch1:add_offset = -1.04137411527336 ;
                ch1:units = "1" ;
                ch1:valid_min = 0s ;
                ch1:valid_max = 1023s ;
                ch1:comment = "Radiance in mW m-2 sr-1(cm-1)-1 = add_offset + ( 
pixelCount * scale_factor )" ;
        short ch2(yc, xc) ;
                ch2:standard_name = 
"satellite_geo_meteosat_vis_0.8_pixel_count" ;
                ch2:long_name = "SEVIRI visible 0.8 micron pixel counts" ;
                ch2:scale_factor = 0.0261677000671625 ;
                ch2:add_offset = -1.33455270342529 ;
                ch2:units = "1" ;
                ch2:valid_min = 0s ;
                ch2:valid_max = 1023s ;
                ch2:comment = "Radiance in mW m-2 sr-1(cm-1)-1 = add_offset + ( 
pixelCount * scale_factor )" ;
        short ch3(yc, xc) ;
                ch3:standard_name = "satellite_geo_meteosat_ir_1.6_pixel_count" 
;
                ch3:long_name = "SEVIRI infrared 1.6 micron pixel counts" ;
                ch3:scale_factor = 0.0223222002387047 ;
                ch3:add_offset = -1.13843221217394 ;
                ch3:units = "1" ;
                ch3:valid_min = 0s ;
                ch3:valid_max = 1023s ;
                ch3:comment = "Radiance in mW m-2 sr-1(cm-1)-1 = add_offset + ( 
pixelCount * scale_factor )" ;
        short ch4(yc, xc) ;
                ch4:standard_name = "satellite_geo_meteosat_ir_3.9_pixel_count" 
;
                ch4:long_name = "SEVIRI infrared 3.9 micron pixel counts" ;
                ch4:scale_factor = 0.00365866686960072 ;
                ch4:add_offset = -0.186592010349637 ;
                ch4:units = "1" ;
                ch4:valid_min = 0s ;
                ch4:valid_max = 1023s ;
                ch4:comment = "Radiance in mW m-2 sr-1(cm-1)-1 = add_offset + ( 
pixelCount * scale_factor )" ;
        short ch5(yc, xc) ;
                ch5:standard_name = "satellite_geo_meteosat_wv_6.2_pixel_count" 
;
                ch5:long_name = "SEVIRI water vapour 6.2 micron pixel counts" ;
                ch5:scale_factor = 0.0083181111898559 ;
                ch5:add_offset = -0.424223670682651 ;
                ch5:units = "1" ;
                ch5:valid_min = 0s ;
                ch5:valid_max = 1023s ;
                ch5:comment = "Radiance in mW m-2 sr-1(cm-1)-1 = add_offset + ( 
pixelCount * scale_factor )" ;
        short ch6(yc, xc) ;
                ch6:standard_name = "satellite_geo_meteosat_wv_7.3_pixel_count" 
;
                ch6:long_name = "SEVIRI water vapour 7.3 micron pixel counts" ;
                ch6:scale_factor = 0.0386219681754982 ;
                ch6:add_offset = -1.96972037695041 ;
                ch6:units = "1" ;
                ch6:valid_min = 0s ;
                ch6:valid_max = 1023s ;
                ch6:comment = "Radiance in mW m-2 sr-1(cm-1)-1 = add_offset + ( 
pixelCount * scale_factor )" ;
        short ch7(yc, xc) ;
                ch7:standard_name = "satellite_geo_meteosat_ir_8.7_pixel_count" 
;
                ch7:long_name = "SEVIRI infrared 8.7 micron pixel counts" ;
                ch7:scale_factor = 0.126744318685915 ;
                ch7:add_offset = -6.46396025298166 ;
                ch7:units = "1" ;
                ch7:valid_min = 0s ;
                ch7:valid_max = 1023s ;
                ch7:comment = "Radiance in mW m-2 sr-1(cm-1)-1 = add_offset + ( 
pixelCount * scale_factor )" ;
        short ch8(yc, xc) ;
                ch8:standard_name = "satellite_geo_meteosat_ir_9.7_pixel_count" 
;
                ch8:long_name = "SEVIRI infrared 9.7 micron pixel counts" ;
                ch8:scale_factor = 0.103960910697578 ;
                ch8:add_offset = -5.30200644557646 ;
                ch8:units = "1" ;
                ch8:valid_min = 0s ;
                ch8:valid_max = 1023s ;
                ch8:comment = "Radiance in mW m-2 sr-1(cm-1)-1 = add_offset + ( 
pixelCount * scale_factor )" ;
        short ch9(yc, xc) ;
                ch9:standard_name = 
"satellite_geo_meteosat_ir_10.8_pixel_count" ;
                ch9:long_name = "SEVIRI infrared 10.8 micron pixel counts" ;
                ch9:scale_factor = 0.20503567620766 ;
                ch9:add_offset = -10.4568194865907 ;
                ch9:units = "1" ;
                ch9:valid_min = 0s ;
                ch9:valid_max = 1023s ;
                ch9:comment = "Radiance in mW m-2 sr-1(cm-1)-1 = add_offset + ( 
pixelCount * scale_factor )" ;
        short ch10(yc, xc) ;
                ch10:standard_name = 
"satellite_geo_meteosat_ir_12.0_pixel_count" ;
                ch10:long_name = "SEVIRI infrared 12.0 micron pixel counts" ;
                ch10:scale_factor = 0.222311146680895 ;
                ch10:add_offset = -11.3378684807256 ;
                ch10:units = "1" ;
                ch10:valid_min = 0s ;
                ch10:valid_max = 1023s ;
                ch10:comment = "Radiance in mW m-2 sr-1(cm-1)-1 = add_offset + 
( pixelCount * scale_factor )" ;
        short ch11(yc, xc) ;
                ch11:standard_name = 
"satellite_geo_meteosat_ir_13.4_pixel_count" ;
                ch11:long_name = "SEVIRI infrared 13.4 micron pixel counts" ;
                ch11:scale_factor = 0.157606896877807 ;
                ch11:add_offset = -8.03795174076818 ;
                ch11:units = "1" ;
                ch11:valid_min = 0s ;
                ch11:valid_max = 1023s ;
                ch11:comment = "Radiance in mW m-2 sr-1(cm-1)-1 = add_offset + 
( pixelCount * scale_factor )" ;
        byte channelAvailableFlags(totalNumberOfSeviriChannels) ;
                channelAvailableFlags:standard_name = 
"satellite_geo_channels_available_flags" ;
                channelAvailableFlags:valid_max = "1b" ;
                channelAvailableFlags:flag_meaning = 
"channel_not_available_in_file channel_available_in_file" ;
                channelAvailableFlags:long_name = "Channel Available in File 
Flags" ;
                channelAvailableFlags:flag_masks = "0b, 1b" ;
                channelAvailableFlags:valid_min = "0b" ;
                channelAvailableFlags:units = "1" ;
        float lat(yc, xc) ;
                lat:missing_value = -999.f ;
                lat:_CoordinateAxisType = "Lat" ;
                lat:standard_name = "latitude" ;
                lat:valid_max = 90.f ;
                lat:long_name = "Latitudes for each pixel count" ;
                lat:valid_min = -90.f ;
                lat:units = "degrees_north" ;
        float lon(yc, xc) ;
                lon:missing_value = -999.f ;
                lon:_CoordinateAxisType = "Lon" ;
                lon:standard_name = "longitude" ;
                lon:valid_max = 180.f ;
                lon:long_name = "Longitude for each pixel count" ;
                lon:valid_min = -180.f ;
                lon:units = "degrees_east" ;

// global attributes:
                :Conventions = "CF-1.4" ;
                :Metadata_Conventions = "Unidata Dataset Discovery v1.0" ;
                :title = "MSG15 channel data in NetCDF." ;
                :summary = "MSG15 channel pixel counts with calibration 
coefficients and geo-location values." ;
                :keywords = "EUMETSAT, GSICS, ARCHIVE, UNIDATA, SEVIRI, 
CALIBRATION COEFFICIENT - SLOPE-OFFSET, NetCDF" ;
                :history = "V1.0 - EUMETSAT COPYRIGHT 2009" ;
                :comment = "OPERATIONAL VERSION" ;
                :creator_name = "EUMETSAT Archive" ;
                :creator_url = "http://archive.eumetsat.int"; ;
                :creator_email = "ops@xxxxxxxxxxxx" ;
                :institution = "EUMETSAT" ;
                :time_converage_start = "2011-10-24T22:15:11Z" ;
                :time_converage_end = "2011-10-24T22:27:41Z" ;
                :license = "CopyRight EUMETSAT 2009" ;
                :references = "Unidata NetCDF, Climate Format Conventions, 
EUMETSAT MSG1.5 Native Format Guide" ;
                :format_authors = "EUMETSAT" ;
                :format_version = "1.0" ;
                :source_formats = 
"MSG2-SEVI-MSG15-0100-NA-20111024222741.515000000Z-2514381.tmp" ;
                :format_name = "SEVIRI_CALIBRATION_COEFFICIENT" ;
                :satellite_identifier = "MSG2" ;
                :instrument = "SEVI" ;
                :disposition_mode = "OPE" ;
                :quality = "OK" ;
                :wmo_filename = 
"W_XX-EUMETSAT-Darmstadt,VIS+IR+IMAGERY,MSG2+SEVIRI_C_EUMG_20111024221511.nc" ;
                :wmo_data_category = "101" ;
                :wmo_international_data_sub_category = "000" ;
                :subSatellitePoint = "000.0000" ;
                :originalSubSatellitePoint = "0.0" ;
                :scanMode = "ALTHRV" ;
                :fullScanTime = "742.4_seconds" ;
                :rsScanTime = "246_seconds" ;
                :pixelScanTimeFormula = 
"StartScanTime+(LineNumber/NumberOfLines)*NorthSouthScanTime" ;
                :channel_available_flag_1 = "VIS06" ;
                :channel_available_flag_2 = "VIS08" ;
                :channel_available_flag_3 = "IR16" ;
                :channel_available_flag_4 = "IR39" ;
                :channel_available_flag_5 = "WV62" ;
                :channel_available_flag_6 = "WV73" ;
                :channel_available_flag_7 = "IR87" ;
                :channel_available_flag_8 = "IR97" ;
                :channel_available_flag_9 = "IR108" ;
                :channel_available_flag_10 = "IR120" ;
                :channel_available_flag_11 = "IR134" ;
                :channel_available_flag_12 = "NotUsedAlwaysSetToZero" ;
}

Attachment: seviri.txt.sig
Description: PGP signature

begin:vcard
fn:Martin Raspaud
n:Raspaud;Martin
org:SMHI
adr;quoted-printable;quoted-printable:;;Folkborgsv=C3=A4gen 
1;Norrk=C3=B6ping;;60176;Sweden
email;internet:martin.raspaud@xxxxxxx
tel;work:+46 (0)11 495 8261
tel;cell:+46 (0)11 495 8261
url:www.smhi.se
version:2.1
end:vcard

  • 2011 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the cf-satellite archives: