logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

i.modis.qc - Extracts quality control parameters from MODIS QC layers.

Author

       Yann Chemin

Description

i.modis.qc  extracts  Requested  Quality  Assessment  flags  from  the following MODIS products: MOD09A1,
       MOD09Q1, MOD11A1, MOD11A2, MOD13A2, MOD13Q1, MCD43B2. This does include MOD09A1 QA_state_500m layer  (see
       Notes).
       Added  MOD09GA  support  in  2016,  it  follows MOD09A1 and its StateQA, but does not have BRDF State QA,
       instead has Salt Pan State QA.

   MOD09A1andMOD09Q1MOD09A1/Q1:MODLANDQABits.bits=[0-1]

           •   [00]= class 0: Corrected product produced at ideal quality -- all bands

           •   [01]= class 1: Corrected product produced at less than ideal quality -- some or all bands

           •   [10]= class 2: Corrected product NOT produced due to cloud effect -- all bands

           •   [11]= class 3: Corrected product NOT produced due to other reasons -- some or all bands maybe  be
               fill value (Note that a value of [11] overrides a value of [01])
       MOD09Q1:CloudState.bits=[2-3]

           •   [00]= class 0: Clear -- No clouds

           •   [01]= class 1: Cloudy

           •   [10]= class 2: Mixed

           •   [11]= class 3: Not Set ; Assumed Clear
       MOD09Q1:Band-wiseDataQuality250mbits=[4-7][8-11]MOD09A1:Band-wiseDataQuality500mbits=[2-5][6-9][10-13][14-17][18-21][22-25][26-29]

           •   [0000]= class 0: highest quality

           •   [0111]= class 1: noisy detector

           •   [1000]= class 2: dead detector; data interpolated in L1B

           •   [1001]= class 3: solar zenith ≥ 86 degrees

           •   [1010]= class 4: solar zenith ≥ 85 and < 86 degrees

           •   [1011]= class 5: missing input

           •   [1100]=  class  6:  internal  constant  used  in  place  of  climatological data for at least one
               atmospheric constant

           •   [1101]= class 7: correction out of bounds, pixel constrained to extreme allowable value

           •   [1110]= class 8: L1B data faulty

           •   [1111]= class 9: not processed due to deep ocean or cloud

           •   Class 10-15: Combination of bits unused
       MOD09A1/Q1:Atmosphericcorrectionbit=[12]/[30]

           •   [0]= class 0: Not Corrected product

           •   [1]= class 1: Corrected product
       MOD09A1/Q1:Adjacencycorrectionbit=[13]/[31]

           •   [0]= class 0: Not Corrected product

           •   [1]= class 1: Corrected product
       MOD09Q1:Differentorbitfrom500mproduct,bit=[14]

           •   [0]= class 0: same orbit as 500m

           •   [1]= class 1: different orbit from 500m
       MOD09A1s:CloudStatebits=[0-1]

           •   [00]= class 0: clear

           •   [01]= class 1: cloudy

           •   [10]= class 2: mixed

           •   [11]= class 3: not set, assumed clear
       MOD09A1s:Cloudshadowbits=[2]

           •   [0]= class 0: no

           •   [1]= class 1: yes
       MOD09A1s:Land/WaterFlagbits=[3-5]

           •   [000]= class 0: Shallow ocean

           •   [001]= class 1: Land

           •   [010]= class 2: Ocean coastlines and lake shorelines

           •   [011]= class 3: Shallow inland water

           •   [100]= class 4: Ephemeral water

           •   [101]= class 5: Deep inland water

           •   [110]= class 6: Continental/moderate ocean

           •   [111]= class 7: Deep ocean
       MOD09A1s:AerosolQuantitybits=[6-7]

           •   [00]= class 0: Climatology

           •   [01]= class 1: Low

           •   [10]= class 2: Average

           •   [11]= class 3: High
       MOD09A1s:Cirrusdetectedbits=[8-9]

           •   [00]= class 0: None

           •   [01]= class 1: Small

           •   [10]= class 2: Average

           •   [11]= class 3: High
       MOD09A1s:InternalCloudAlgorithmFlagbits=[10]

           •   [0]= class 0: No cloud

           •   [1]= class 1: Cloud
       MOD09A1s:InternalFireAlgorithmFlagbits=[11]

           •   [0]= class 0: No fire

           •   [1]= class 1: Fire
       MOD09A1s:MOD35snow/iceflagbits=[12]

           •   [0]= class 0: No

           •   [1]= class 1: Yes
       MOD09A1s:Pixeladjacenttocloudbits=[13]

           •   [0]= class 0: No

           •   [1]= class 1: Yes
       MOD09A1s:BRDFcorrectionperformedbits=[14]

           •   [0]= class 0: No

           •   [1]= class 1: Yes
       MOD09A1s:InternalSnowMaskbits=[15]

           •   [0]= class 0: No snow

           •   [1]= class 1: Snow

   MOD11A1MOD11A1:MandatoryQAFlagsbits=[0-1]

           •   [00]= class 0: LST produced, good quality, not necessary to examine more detailed QA

           •   [01]= class 1: LST produced, other quality, recommend examination of more detailed QA

           •   [10]= class 2: LST not produced due to cloud effects

           •   [11]= class 3: LST not produced primarily due to reasons other than cloud
       MOD11A1:DataQualityFlagbits=[2-3]

           •   [00]= class 0: Good data quality of L1B in bands 31 and 32

           •   [01]= class 1: Other quality data

           •   [10]= class 2: TBD

           •   [11]= class 3: TBD
       MOD11A1:EmisErrorFlagbits=[4-5]

           •   [00]= class 0: Average emissivity error ≤ 0.01

           •   [01]= class 1: Average emissivity error ≤ 0.02

           •   [10]= class 2: Average emissivity error ≤ 0.04

           •   [11]= class 3: Average emissivity error > 0.04
       MOD11A1:LSTErrorFlagbits=[6-7]

           •   [00]= class 0: Average LST error ≤ 1

           •   [01]= class 1: Average LST error ≤ 2

           •   [10]= class 2: Average LST error ≤ 3

           •   [11]= class 3: Average LST error > 3

   MOD11A2MOD11A2:MandatoryQAFlagsbits=[0-1]

           •   [00]= class 0: LST produced, good quality, not necessary to examine more detailed QA

           •   [01]= class 1: LST produced, other quality, recommend examination of more detailed QA

           •   [10]= class 2: LST not produced due to cloud effects

           •   [11]= class 3: LST not produced primarily due to reasons other than cloud
       MOD11A2:DataQualityFlagbits=[2-3]

           •   [00]= class 0: Good data quality of L1B in 7 TIR bands

           •   [01]= class 1: Other quality data

           •   [10]= class 2: TBD

           •   [11]= class 3: TBD
       MOD11A2:EmisErrorFlagbits=[4-5]

           •   [00]= class 0: Average emissivity error ≤ 0.01

           •   [01]= class 1: Average emissivity error ≤ 0.02

           •   [10]= class 2: Average emissivity error ≤ 0.04

           •   [11]= class 3: Average emissivity error > 0.04
       MOD11A2:LSTErrorFlagbits=[6-7]

           •   [00]= class 0: Average LST error ≤ 1

           •   [01]= class 1: Average LST error ≤ 2

           •   [10]= class 2: Average LST error ≤ 3

           •   [11]= class 3: Average LST error > 3

   MOD13A2MOD13A2:MandatoryQAFlags1kmbits[0-1]

           •   [00]= class 0: VI produced, good quality

           •   [01]= class 1: VI produced, but check other QA

           •   [10]= class 2: Pixel produced, but most probably cloud

           •   [11]= class 3: Pixel not produced due to other reasons than clouds
       MOD13A2:VIUsefulnessFlagbits[2-5]

           •   [0000]= class 0: Highest quality

           •   [0001]= class 1: Lower quality

           •   [0010]= class 2: Decreasing quality

           •   [0100]= class 3: Decreasing quality

           •   [1000]= class 4: Decreasing quality

           •   [1001]= class 5: Decreasing quality

           •   [1010]= class 6: Decreasing quality

           •   [1100]= class 7: Lowest quality

           •   [1101]= class 8: Quality so low that it is not useful

           •   [1110]= class 9: L1B data faulty

           •   [1111]= class 10: Not useful for any other reason/not processed
       MOD13A2:AerosolquantityFlags1kmbits[6-7]

           •   [00]= class 0: Climatology

           •   [01]= class 1: Low

           •   [10]= class 2: Average

           •   [11]= class 3: High
       MOD13A2:Adjacentclouddetected1kmbit[8]

           •   [00]= class 0: No

           •   [01]= class 1: Yes
       MOD13A2:AtmosphereBRDFcorrectionperformed1kmbit[9]

           •   [00]= class 0: No

           •   [01]= class 1: Yes
       MOD13A2:Mixedclouds1kmbit[10]

           •   [00]= class 0: No

           •   [01]= class 1: Yes
       MOD13A2:Land/WaterFlags1kmbits[11-13]

           •   [000]= class 0: Shallow Ocean

           •   [001]= class 1: Land (Nothing else but land)

           •   [010]= class 2: Ocean Coastlines and lake shorelines

           •   [011]= class 3: Shallow inland water

           •   [100]= class 4: Ephemeral water

           •   [101]= class 5: Deep inland water

           •   [110]= class 6: Moderate or continental ocean

           •   [111]= class 7: Deep ocean
       MOD13A2:PossibleSnow/Ice1kmbits[14]

           •   [0]= class 0: No

           •   [1]= class 1: Yes
       MOD13A2:PossibleShadow1kmbits[15]

           •   [0]= class 0: No

           •   [1]= class 1: Yes

   MOD13Q1MOD13Q1:MandatoryQAFlags250mbits[0-1]

           •   [00]= class 0: VI produced, good quality

           •   [01]= class 1: VI produced, but check other QA

           •   [10]= class 2: Pixel produced, but most probably cloud

           •   [11]= class 3: Pixel not produced due to other reasons than clouds
       MOD13Q1:VIUsefulnessFlag250mbits[2-5]

           •   [0000]= class 0: Highest quality

           •   [0001]= class 1: Lower quality

           •   [0010]= class 2: Decreasing quality

           •   [0100]= class 3: Decreasing quality

           •   [1000]= class 4: Decreasing quality

           •   [1001]= class 5: Decreasing quality

           •   [1010]= class 6: Decreasing quality

           •   [1100]= class 7: Lowest quality

           •   [1101]= class 8: Quality so low that it is not useful

           •   [1110]= class 9: L1B data faulty

           •   [1111]= class 10: Not useful for any other reason/not processed
       MOD13Q1:AerosolquantityFlags250mbits[6-7]

           •   [00]= class 0: Climatology

           •   [01]= class 1: Low

           •   [10]= class 2: Average

           •   [11]= class 3: High
       MOD13Q1:Adjacentclouddetected250mbit[8]

           •   [00]= class 0: No

           •   [01]= class 1: Yes
       MOD13Q1:AtmosphereBRDFcorrectionperformed250mbit[9]

           •   [00]= class 0: No

           •   [01]= class 1: Yes
       MOD13Q1:Mixedclouds250mbit[10]

           •   [00]= class 0: No

           •   [01]= class 1: Yes
       MOD13Q1:Land/WaterFlags250mbits[11-13]

           •   [000]= class 0: Shallow Ocean

           •   [001]= class 1: Land (Nothing else but land)

           •   [010]= class 2: Ocean Coastlines and lake shorelines

           •   [011]= class 3: Shallow inland water

           •   [100]= class 4: Ephemeral water

           •   [101]= class 5: Deep inland water

           •   [110]= class 6: Moderate or continental ocean

           •   [111]= class 7: Deep ocean
       MOD13Q1:PossibleSnow/Ice250mbits[14]

           •   [0]= class 0: No

           •   [1]= class 1: Yes
       MOD13Q1:PossibleShadow250mbits[15]

           •   [0]= class 0: No

           •   [1]= class 1: Yes

   MCD43B2MCD43B2:AlbedoQualityAncillaryPlatformData1kmbits[0-3]SDS:BRDF_Albedo_Ancillary

           •   [0000]= class 0: Satellite Platform: Terra

           •   [0001]= class 1: Satellite Platform: Terrra/Aqua

           •   [0010]= class 2: Satellite Platform: Aqua

           •   [1111]= class 15: Fill Value

           •   Classes 3-14: Not used
       MCD43B2:AlbedoQualityAncillaryLand/WaterData1kmbits[4-7]SDS:BRDF_Albedo_Ancillary

           •   [0000] class 0: Shallow Ocean

           •   [0001] class 1: Land (Nothing else but land)

           •   [0010] class 2: Ocean and lake shorelines

           •   [0011] class 3: Shallow inland water

           •   [0100] class 4: Ephemeral water

           •   [0101] class 5: Deep inland water

           •   [0110] class 6: Moderate or continental ocean

           •   [0111] class 7: Deep ocean

           •   [1111] class 15: Fill Value

           •   Classes 8-14: Not used
       MCD43B2:AlbedoQualityAncillarySunZenithAngleatLocalSolarNoonData1kmbits[8-14]SDS:BRDF_Albedo_Ancillary
           Returns integer value [0-90], 127 is Fill Value
       MCD43B2:Band-wiseAlbedoQualityData1kmSDS:BRDF_Albedo_Band_Quality
       bits[0-3][4-7][8-11][12-15][16-19][20-23][24-27]

           •   [0000]= class 0: best quality, 75% or more with best full inversions

           •   [0001]= class 1: good quality, 75% or more with full inversions

           •   [0010]= class 2: Mixed, 50% or less full inversions and 25% or less fill values

           •   [0011]= class 3: All magnitude inversions or 50% or less fill values

           •   [0100]= class 4: 75% or more fill values

           •   Classes 5-14: Not Used

           •   [1111]= class 15: Fill Value

Keywords

       imagery, imagery quality assessment, reflectance, land surface temperature, vegetation, satellite, MODIS

Name

i.modis.qc  - Extracts quality control parameters from MODIS QC layers.

Notes

       In MOD09A1: It seems that cloud related info is not filled properly in the standard QC (MOD09A1  in  this
       module)  since  version  3, State-QA 500m images (MOD09A1s in this module) should be used (see Vermote et
       al., 2008).  MOD11A2 quality control (QC) bands do not have a FillValue (No-data) according to MODIS Land
       Products site.  However, the metadata of the QC bands (i.e.: gdalinfo  QC_band)  shows  No-data=0.   This
       value  is  then transformed into GRASS NULLs when data is imported through r.in.gdal. Applying i.modis.qc
       on those QC bands will not give the expected range of values in the different QC bits. Therefore,  before
       using i.modis.qc, the user needs to set the NULL value in QC bands back to zero (i.e.: r.null map=QC_band
       null=0)  or  just  edit the metadata with GDAL utilities before importing into GRASS GIS. This is a known
       issue for MOD11A2 (8-day LST product), but other MODIS products might be affected as well.

References

           •   MODIS Products

           •   Vermote E.F., Kotchenova S.Y., Ray J.P. MODIS Surface Reflectance  User’s  Guide.   Version  1.2.
               June 2008. MODIS Land Surface Reflectance Science Computing Facility.  Homepage

See Also

i.vi

Source Code

       Available at: i.modis.qc source code (history)

       Accessed: Friday Apr 04 01:21:00 2025

       Main index | Imagery index | Topics index | Keywords index | Graphical index | Full index

       © 2003-2025 GRASS Development Team, GRASS GIS 8.4.1 Reference Manual

GRASS 8.4.1                                                                                   i.modis.qc(1grass)

Synopsis

i.modis.qci.modis.qc--helpi.modis.qcinput=nameoutput=nameproductname=stringqcname=string   [band=string]    [--overwrite]
       [--help]  [--verbose]  [--quiet]  [--ui]

   Flags:--overwrite
           Allow output files to overwrite existing files

       --help
           Print usage summary

       --verbose
           Verbose module output

       --quiet
           Quiet module output

       --ui
           Force launching GUI dialog

   Parameters:input=name[required]
           Name of input surface reflectance QC layer [bit array]

       output=name[required]
           Name for output QC type classification layer

       productname=string[required]
           Name of MODIS product type
           Options: mod09Q1,mod09A1,mod09A1s,mod09GA,mod09GAs,mod09CMG,mod09CMGs,mod09CMGi,mod11A1,mod11A2,mod13A2,mcd43B2,mcd43B2q,mod13Q1mod09Q1: surf. refl. 250m 8-days
           mod09A1: surf. refl. 500m 8-days
           mod09A1s: surf. refl. 500m 8-days, State QA
           mod09GA: surf. refl. 500m daily
           mod09GAs: surf. refl. 500m daily, State QA
           mod09CMG: surf. refl. 5000m daily
           mod09CMGs: surf. refl. 5000m daily, State QA
           mod09CMGi: surf. refl. 5000m daily, Internal Climatology
           mod11A1: LST 1km daily (Day/Night)
           mod11A2: LST 1km 8-days (Day/Night)
           mod13A2: VI 1km 16-days
           mcd43B2: Brdf-Albedo Quality (Ancillary SDS) 1km 8-days
           mcd43B2q: Brdf-Albedo Quality (BRDF SDS) 1km 8-days
           mod13Q1: VI 250m 16-days

       qcname=string[required]
           Name of QC type to extract
           Options:  adjcorr,atcorr,cloud,data_quality,diff_orbit_from_500m,modland_qa,mandatory_qa_11A1,data_quality_flag_11A1,emis_error_11A1,lst_error_11A1,data_quality_flag_11A2,emis_error_11A2,mandatory_qa_11A2,lst_error_11A2,aerosol_quantity,brdf_correction_performed,cirrus_detected,cloud_shadow,cloud_state,internal_cloud_algorithm,internal_fire_algorithm,internal_snow_mask,land_water,mod35_snow_ice,pixel_adjacent_to_cloud,salt_pan,icm_cloudy,icm_clear,icm_high_clouds,icm_low_clouds,icm_snow,icm_fire,icm_sun_glint,icm_dust,icm_cloud_shadow,icm_pixel_is_adjacent_to_cloud,icm_cirrus,icm_pan_flag,icm_criteria_for_aerosol_retrieval,icm_aot_has_clim_val,modland_qa,vi_usefulness,aerosol_quantity,pixel_adjacent_to_cloud,brdf_correction_performed,mixed_clouds,land_water,possible_snow_ice,possible_shadow,platform,land_water,sun_z_angle_at_local_noon,brdf_correction_performed,modland_qa,vi_usefulness,aerosol_quantity,pixel_adjacent_to_cloud,brdf_correction_performed,mixed_clouds,land_water,possible_snow_ice,possible_shadowadjcorr: mod09: Adjacency Correction
           atcorr: mod09: Atmospheric Correction
           cloud: mod09: Cloud State
           data_quality: mod09: Band-Wise Data Quality Flag
           diff_orbit_from_500m: mod09: 250m Band is at Different Orbit than 500m
           modland_qa: mod13Q1: MODIS Land General Quality Assessment
           mandatory_qa_11A1: mod11A1: MODIS Land General Quality Assessment
           data_quality_flag_11A1: mod11A1: Detailed Quality Indications
           emis_error_11A1: mod11A1: Average Emissivity Error Classes
           lst_error_11A1: mod11A1: Average LST Error Classes
           data_quality_flag_11A2: mod11A2: Detailed Quality Indications
           emis_error_11A2: mod11A2: Average Emissivity Error Classes
           mandatory_qa_11A2: mod11A2: MODIS Land General Quality Assessment
           lst_error_11A2: mod11A2: Average LST Error Classes
           aerosol_quantity: mod13Q1: Quantity range of Aerosol
           brdf_correction_performed: mod13Q1: if BRDF correction performed
           cirrus_detected: mod09*s: StateQA Cirrus Detected
           cloud_shadow: mod09*s: StateQA Cloud Shadow
           cloud_state: mod09*s: StateQA Cloud State
           internal_cloud_algorithm: mod09*s: StateQA Internal Cloud Algorithm
           internal_fire_algorithm: mod09*s: StateQA Internal Fire Algorithm
           internal_snow_mask: mod09*s: StateQA Internal Snow Mask
           land_water: mod13Q1: separate land from various water objects
           mod35_snow_ice: mod09*s: StateQA mod35 Snow Ice
           pixel_adjacent_to_cloud: mod13Q1: if pixel is a cloud neighbour
           salt_pan: mod09*s: StateQA Salt Pan (mod09GAs)
           icm_cloudy: mod09*i: Internal CM: Cloudy
           icm_clear: mod09*i: Internal CM: Clear
           icm_high_clouds: mod09*i: Internal CM: High Clouds
           icm_low_clouds: mod09*i: Internal CM: Low Clouds
           icm_snow: mod09*i: Internal CM: Snow
           icm_fire: mod09*i: Internal CM: Fire
           icm_sun_glint: mod09*i: Internal CM: Sun Glint
           icm_dust: mod09*i: Internal CM: Dust
           icm_cloud_shadow: mod09*i: Internal CM: Cloud Shadow
           icm_pixel_is_adjacent_to_cloud: mod09*i: Internal CM: Pixel is Adjacent to Cloud
           icm_cirrus: mod09*i: Internal CM: Cirrus
           icm_pan_flag: mod09*i: Internal CM: Pan Flag
           icm_criteria_for_aerosol_retrieval: mod09*i: Internal CM: Criteria for Aerosol Retrieval
           icm_aot_has_clim_val: mod09*i: Internal CM: AOT (aerosol optical depth) has clim. val.
           vi_usefulness: mod13Q1: Quality estimation of the pixel
           mixed_clouds: mod13Q1: if pixel mixed with clouds
           possible_snow_ice: mod13Q1: if snow/ice present in pixel
           possible_shadow: mod13Q1: if shadow is present in pixel
           platform: mcd43B2: Quality of BRDF correction performed
           sun_z_angle_at_local_noon: mcd43B2: Quality of BRDF correction performed

       band=string
           Band  number  of  MODIS  product   (mod09Q1=[1,2],mod09A1=[1-7],m[o/y]d09GA=[1-7],m[o/y]d09CMG=[1-7],
           mcd43B2q=[1-7])
           Options: 1,2,3,4,5,6,71: Band 1: Red
           2: Band 2: NIR
           3: Band 3: Blue
           4: Band 4: Green
           5: Band 5: SWIR 1
           6: Band 6: SWIR 2
           7: Band 7: SWIR 3

Todo

       Add more daily products.

See Also