Use of QDOAS with hyperspectral data


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 {
	col_dim = 10 ;
	row_dim = 100 ;
	spectral_dim = 1280 ;
	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 {
	col_dim = 10 ;
	spectral_dim = 1280 ;
	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

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.