Use of QDOAS with hyperspectral data

Hi,

I’m interested in trying using PRISMA hyperspectral data with QDOAS to evaluate the possibility of trace gas retrieval. The data has the following characteristics:

  • Spectral resolution of about 10 nm
  • An amount of 240 bands in the spectral range from 400 nm to 2500 nm.

I’m currently facing issues and errors in trying to run the software. I tried to generate an input netcdf file with the same characteristics of the file accepted from the software in the case of TROPOMI, but with a different number of channels and spectral resolution.

I then tried to use the “APEX” format. However, I have not found information in the QDOAS manual on the structure of the APEX format, particularly regarding the format of the files containing the spectra to be analyzed and the reference spectrum. For example, if it is in netCDF format, how should it be structured? Specifically, what are the variable names containing the data for both the analysis files and the reference files?

Thank you in advance for taking into account my request and for your help.

Hi Davide,

indeed proper documentation for the APEX format is missing… I’ll briefly explain the structure of the files.

APEX files are NetCDF files with the following structure (CDL template):
example for the radiance:

netcdf apex_example {
dimensions:
	col_dim = 10 ;
	row_dim = 100 ;
	spectral_dim = 1280 ;
variables:
	double radiance(row_dim, col_dim, spectral_dim) ;
		radiance:comment = "Elastic earthshine radiance" ;
	double radiance_wavelength(spectral_dim) ;
		radiance_wavelength:Units = "nm" ;
	double solar_zenith_angle(row_dim, col_dim) ;
	double viewing_zenith_angle(row_dim, col_dim) ;
	double relative_azimuth_angle(row_dim, col_dim) ;
	double latitude(row_dim, col_dim) ;
	double longitude(row_dim, col_dim) ;
}

example CDL template for the reference:

netcdf apex_reference {
dimensions:
	col_dim = 10 ;
	spectral_dim = 1280 ;
variables:
	double reference_radiance(col_dim, spectral_dim) ;
		reference_radiance:comment = "Reference solar  irradiance" ;
	double reference_wavelength(spectral_dim) ;
		reference_wavelength:Units = "nm" ;
}

You can save these templates to files apex_example.cdl and apex_ref_example.cdl, and generate empty example netCDF files with the command ncgen <template_file.cdl> -o example_file.nc.

The dimension parameters given here are just examples, and the values should be adjusted to fit the PRISMA instrument. The meaning of the dimensions is:

spectral_dim: number of spectral bands in your data (from your question, I understand it would be 240 in your case?). This number must be the same between the radiance and reference files used in the analysis.

col_dim: this is meant for imager type instruments such as OMI or Tropomi, where the instrument consists of an array of detectors (if you are familiar with Tropomi L1B data, this equivalent to the pixel or ground_pixel dimensions of Tropomi). Qdoas will perform a separate wavelength / instrument response function calibration for every column. I’m not familiar with PRISMA, but if it is not an imager, col_dim should be 1. Again, col_dim of reference and radiance files should match.

row_dim: this is the number of observations per column (think of scanline in the Tropomi L1B).

The meaning of the variables:

radiance: the observed sepctra you want to analyse
radiance_wavelength: initial wavelength calibration for the radiance. Qdoas can optimize this using shift/stretch, but the initial values should be reasonable. A single wavelength calibration is expected for all rows and columns.
*_angle, latitude, longitude: observation geometry and location

reference_radiance: the radiance with respect to which you analyse the absorption in your DOAS analysis (can be solar irradiance or another radiance, depending on your method).
reference_wavelength: initial wavelength calibration for your reference.

I hope this helps you get started, please ask if anything is unclear.

Thomas

Interesting topic! @davide.desantis Have you figured out the correct way to input the hyperspectral data? I feel the NetCDF method sounds more straightforward. What kind of error did you get when you applied that?

@thomasd I have also tried to search the APEX keyword in the User Guide to understand how to use it, but I couldn’t find it. Any link of guide would be useful!

I have two main questions:

  • Should we use the same dimension name? such as row_dim, col_dim, spectral_dim.
  • How do we get the proper Reference solar irradiance? Is it already saved somewhere and we only need to do some interpolation?

Thanks for your help,
Xin

Should we use the same dimension name? such as row_dim, col_dim, spectral_dim.

Yes, the names of all variables and dimensions should be exactly as in the example provided. QDOAS uses these names to read the data from the file.

How do we get the proper Reference solar irradiance? Is it already saved somewhere and we only need to do some interpolation?

The reference spectrum should also be a measurement taken by your instrument. For satellites, this could be an irradiance measurement taken by the satellite, but also a radiance (or averaged radiance) taken over a “clean” background area, or area with known (or assumed, from a model?) concentration, …

1 Like