stcorp / harp

Data harmonization toolset for scientific earth observation data
http://stcorp.github.io/harp/doc/html/index.html
BSD 3-Clause "New" or "Revised" License
55 stars 18 forks source link

OSIRIS L2 NetCDF format #245

Open zxdawn opened 2 years ago

zxdawn commented 2 years ago

I downloaded the OSIRIS L2 NO2 data from the ftp server mentioned on the OSIRIS on Odin website.

That's the NetCDF format file. However, what the harp-ingest-osiris_l2.c supports is the HDF file.

In case you want to check the head of the NetCDF file, I attach it here:

Click to expand ``` File "NITROGEN-L2-LP-OSIRIS_ODIN-SASK_v7_1-201807.nc" File type: Hierarchical Data Format, version 5 netcdf file:/home/xin/NITROGEN-L2-LP-OSIRIS_ODIN-SASK_v7_1-201807.nc { dimensions: profile_id = 634; altitude = 50; variables: int profile_id(profile_id=634); :cf_role = "profile_id"; :non_standard_name = "scan_number"; :long_name = "OSIRIS scan number"; float altitude(altitude=50); :standard_name = "altitude"; :long_name = "height above WGS84 geoid"; :units = "km"; :positive = "up"; :axis = "Z"; float pressure(profile_id=634, altitude=50); :_FillValue = NaNf; // float :standard_name = "air_pressure"; :description = "Pressure taken from MERRA 2 and interpolated to the current geometrical altitude grid"; :units = "hPa"; :coordinates = "time longitude latitude altitude"; :_ChunkSizes = 634U, 50U; // uint float temperature(profile_id=634, altitude=50); :description = "Temperature taken from MERRA 2 and interpolated to the current geometrical altitude grid"; :coordinates = "time longitude latitude altitude"; :_FillValue = NaNf; // float :standard_name = "air_temperature"; :units = "K"; :_ChunkSizes = 634U, 50U; // uint float NO2_concentration(profile_id=634, altitude=50); :_FillValue = NaNf; // float :standard_name = "mole_concentration_of_nitrogen_dioxide_in_air"; :long_name = "mole concentration of nitrogen dioxide in air"; :units = "mol m-3"; :description = "mole concentration or number of moles per unit volume (molarity) of nitrogen dioxide"; :multiplication_factor_to_convert_to_molecules_percm3 = 6.02214076E17; // double :_ChunkSizes = 634U, 50U; // uint float _rtm_internal_NO2_concentration(profile_id=634, altitude=50); :description = "The mole concentration or number of moles per unit volume (molarity) of nitrogen dioxide. This product is the NO2 profile used in the radiative transfer model when performing the retrieval. It includes values above and below the retrieval range as well as non-converged altitudes. As such, it is not recommended for scientific use, but included for completeness and exploratory and debugging purposes."; :_FillValue = NaNf; // float :standard_name = "mole_concentration_of_nitrogen_dioxide_in_air"; :long_name = "mole concentration of nitrogen dioxide"; :units = "mol m-3"; :multiplication_factor_to_convert_to_molecules_percm3 = 6.02214076E17; // double :_ChunkSizes = 634U, 50U; // uint float NO2_concentration_standard_error(profile_id=634, altitude=50); :_FillValue = NaNf; // float :non_standard_name = "standard_uncertainty_of_nitrogen_dioxide_concentration"; :long_name = "standard_uncertainty_of_nitrogen_dioxide_concentration"; :multiplication_factor_to_convert_to_molecules_percm3 = 6.02214076E17; // double :units = "mol m-3"; :_ChunkSizes = 634U, 50U; // uint float vertical_resolution(profile_id=634, altitude=50); :description = "FWHM of the averaging kernel"; :units = "km"; :long_name = "vertical_resolution"; :non_standard_name = "vertical_resolution"; :_FillValue = NaNf; // float :_ChunkSizes = 634U, 50U; // uint float saa(profile_id=634); :_FillValue = NaNf; // float :non_standard_name = "solar_azimuth_angle"; :long_name = "solar azimuth angle"; :units = "degree"; :description = "Solar azimuth angle at the 30 km point of each scan"; float ssa(profile_id=634); :_FillValue = NaNf; // float :non_standard_name = "solar_scattering_angle"; :long_name = "solar scattering angle"; :units = "degree"; :description = "Solar scattering angle at the 30 km point of each scan"; float sza(profile_id=634); :_FillValue = NaNf; // float :standard_name = "solar_zenith_angle"; :long_name = "solar zenith angle"; :units = "degree"; :description = "Solar zenith angle at the 30 km point of each scan"; float albedo(profile_id=634); :description = "The retrieved albedo of the surface"; :_FillValue = NaNf; // float :standard_name = "albedo"; :units = "None"; float local_solar_time(profile_id=634); :long_name = "local solar time"; :units = "clock hours"; :description = "Local solar time at the 30 km point of each scan"; :_FillValue = NaNf; // float :non_standard_name = "local_solar_time"; float cloud_top_altitude(profile_id=634); :description = "Retrieved altitude of the cloud top"; :_FillValue = NaNf; // float :standard_name = "cloud_top_altitude"; :units = "km"; float psc_altitude(profile_id=634); :description = "Retrieved altitude of a polar stratospheric cloud"; :_FillValue = NaNf; // float :standard_name = "psc_altitude"; :units = "km"; float tropopause_altitude(profile_id=634); :units = "km"; :description = "Tropopause based on WMO lapse-rate tropopause definition; the first parameter for the lowest tropopause.Calculated from MERRA 2 temperature profiles."; :_FillValue = NaNf; // float :standard_name = "tropopause_altitude"; :long_name = "tropopause altitude"; float retrieval_lowerbound(profile_id=634); :units = "km"; :_FillValue = NaNf; // float :standard_name = "NO2_retrieval_lowerbound"; :description = "Lowest altitude that is valid for the NO2 retrieval"; float convergence_ratio(profile_id=634); :units = "None"; :_FillValue = NaNf; // float :standard_name = "NO2_convergence_ratio"; :description = "Convergence ratio of the NO2 retrieval"; float chi_sq(profile_id=634); :description = "chi sq value of the NO2 retrieval"; :units = "None"; :_FillValue = NaNf; // float :standard_name = "NO2_chi_sq"; float latitude(profile_id=634); :standard_name = "latitude"; :long_name = "latitude"; :units = "degree_north"; :axis = "Y"; :description = "Latitude at the 30 km point of each scan"; float longitude(profile_id=634); :standard_name = "longitude"; :long_name = "longitude"; :units = "degree_east"; :axis = "X"; :description = "Longitude at the 30 km point of each scan"; double time(profile_id=634); :standard_name = "time"; :long_name = "time"; :calendar = "standard"; :units = "days since 1900-01-01 00:00:00"; :description = "Time corresponding to 30 km altitude in each scan"; // global attributes: :title = "Level 2 Odin/OSIRIS NO2 concentration profiles"; :institution = "University of Saskatchewan"; :source = "OSIRIS Limb L2 V7-1"; :history = "Product generated with SASKTRAN"; :references = "odin-osiris.usask.ca,arg.usask.ca"; :comment = "These data were produced with OSIRIS spectrograph data using the SASKTRAN radiative transfer model at the University of Saskatchewan as part of the CSA OSIRIS project with third party missions funding from ESA."; :Conventions = "CF-1.7"; :standard_name_table = "v48"; :featureType = "profile"; :platform = "Odin"; :sensor = "OSIRIS"; :principal_investigator = "Doug Degenstein"; :pi_email = "doug.degenstein@usask.ca"; :affiliation = "University of Saskatchewan"; :address = "116 Science Place, Saskatoon, SK, Canada, S7N 5E2"; :creator_name = "Chris Roth"; :creator_email = "chris.roth@usask.ca"; :date_created = "20210622051723Z"; :level_1_data_version = "5"; :level_2_data_version = "7.1"; :file_id = "NITROGEN-L2-LP-OSIRIS_ODIN-SASK_v7_1-201807.nc"; :keywords = "nitrogen dioxide,no2,satellite,remote sensing,observation,atmosphere,osiris,cci"; :license = "ESA Terms and Conditions for the Utilisation of Data under ESA\'s Third Party Missions scheme"; :geospatial_lat_min = 6.686610577123867; // double :geospatial_lat_max = 82.44396930886042; // double :geospatial_lon_min = "-180"; :geospatial_lon_max = "180"; :geospatial_vertical_min = "0.5 km"; :geospatial_vertical_max = "49.5 km"; :string_date_format = "YYYYMMDDTHHmmssZ"; :time_coverage_start = "20180725104147Z"; :time_coverage_end = "20180731231027Z"; :number_of_altitude_levels = 50L; // long :number_of_profiles = 634L; // long } ```
svniemeijer commented 2 years ago

We indeed need to update the ingestion support for the Odin/OSIRIS data. The new data format seems to be the HARMOZ format. We will pick this up after the vacation period.

zxdawn commented 2 years ago

Thanks! Take your time and enjoy your vacation.