i.modis.qc(1)
i.modis.qc π β¨ β GRASS GIS User's Manual π°οΈπ
okay bestie, sit down, hydrate, because this one is a unit of a module. it lives in the GRASS GIS family and it's here to pull the quality-control receipts out of your MODIS QC layers. no cap. π
πΈ NAME πΈ
i.modis.qc β extracts quality control parameters from MODIS QC layers. π¦
π·οΈ KEYWORDS π·οΈ
imagery, imagery quality assessment, reflectance, land surface temperature, vegetation, satellite, MODIS
π SYNOPSIS π
i.modis.qc
i.modis.qc --help
i.modis.qc input=name output=name productname=string qcname=string
[band=string] [--overwrite] [--help] [--verbose] [--quiet] [--ui]
π© Flags π©
--overwriteβ let your output files bulldoze whatever's already sitting there with the same name. no survivors, periodt.--helpβ prints the usage summary. your little "what does this do again" safety net. π«Ά--verboseβ verbose module output. she talks more. we love a chatty queen. π¬--quietβ quiet module output. shhh. she keeps it to herself. π€«--uiβ force-launches the GUI dialog. main character energy, but with a window. π
ποΈ Parameters ποΈ
input=name[required] β name of the input surface reflectance QC layer [bit array]. yes, a bit array, bestie, buckle up. π’output=name[required] β name for the output QC type classification layer. this is where the extracted tea gets written. πΎproductname=string[required] β name of the MODIS product type. you gotta tell her which product you're working with, she's not a mind reader. π§
Options:
mod09Q1, mod09A1, mod09A1s, mod09GA, mod09GAs, mod09CMG,
mod09CMGs, mod09CMGi, mod11A1, mod11A2, mod13A2, mcd43B2, mcd43B2q,
mod13Q1
mod09Q1: surf. refl. 250m 8-daysmod09A1: surf. refl. 500m 8-daysmod09A1s: surf. refl. 500m 8-days, State QAmod09GA: surf. refl. 500m dailymod09GAs: surf. refl. 500m daily, State QAmod09CMG: surf. refl. 5000m dailymod09CMGs: surf. refl. 5000m daily, State QAmod09CMGi: surf. refl. 5000m daily, Internal Climatologymod11A1: LST 1km daily (Day/Night)mod11A2: LST 1km 8-days (Day/Night)mod13A2: VI 1km 16-daysmcd43B2: Brdf-Albedo Quality (Ancillary SDS) 1km 8-daysmcd43B2q: Brdf-Albedo Quality (BRDF SDS) 1km 8-daysmod13Q1: VI 250m 16-days
qcname=string[required] β name of the QC type to extract. this is the flavor of quality info you want her to dig out for you. π
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_shadow
and here's what each one actually means, because the names alone are giving cryptic: π
adjcorr: mod09: Adjacency Correctionatcorr: mod09: Atmospheric Correctioncloud: mod09: Cloud Statedata_quality: mod09: Band-Wise Data Quality Flagdiff_orbit_from_500m: mod09: 250m Band is at Different Orbit than 500mmodland_qa: mod13Q1: MODIS Land General Quality Assessmentmandatory_qa_11A1: mod11A1: MODIS Land General Quality Assessmentdata_quality_flag_11A1: mod11A1: Detailed Quality Indicationsemis_error_11A1: mod11A1: Average Emissivity Error Classeslst_error_11A1: mod11A1: Average LST Error Classesdata_quality_flag_11A2: mod11A2: Detailed Quality Indicationsemis_error_11A2: mod11A2: Average Emissivity Error Classesmandatory_qa_11A2: mod11A2: MODIS Land General Quality Assessmentlst_error_11A2: mod11A2: Average LST Error Classesaerosol_quantity: mod13Q1: Quantity range of Aerosolbrdf_correction_performed: mod13Q1: if BRDF correction performedcirrus_detected: mod09*s: StateQA Cirrus Detectedcloud_shadow: mod09*s: StateQA Cloud Shadowcloud_state: mod09*s: StateQA Cloud Stateinternal_cloud_algorithm: mod09*s: StateQA Internal Cloud Algorithminternal_fire_algorithm: mod09*s: StateQA Internal Fire Algorithminternal_snow_mask: mod09*s: StateQA Internal Snow Maskland_water: mod13Q1: separate land from various water objectsmod35_snow_ice: mod09*s: StateQA mod35 Snow Icepixel_adjacent_to_cloud: mod13Q1: if pixel is a cloud neighboursalt_pan: mod09*s: StateQA Salt Pan (mod09GAs)icm_cloudy: mod09*i: Internal CM: Cloudyicm_clear: mod09*i: Internal CM: Clearicm_high_clouds: mod09*i: Internal CM: High Cloudsicm_low_clouds: mod09*i: Internal CM: Low Cloudsicm_snow: mod09*i: Internal CM: Snowicm_fire: mod09*i: Internal CM: Fireicm_sun_glint: mod09*i: Internal CM: Sun Glinticm_dust: mod09*i: Internal CM: Dusticm_cloud_shadow: mod09*i: Internal CM: Cloud Shadowicm_pixel_is_adjacent_to_cloud: mod09*i: Internal CM: Pixel is Adjacent to Cloudicm_cirrus: mod09*i: Internal CM: Cirrusicm_pan_flag: mod09*i: Internal CM: Pan Flagicm_criteria_for_aerosol_retrieval: mod09*i: Internal CM: Criteria for Aerosol Retrievalicm_aot_has_clim_val: mod09*i: Internal CM: AOT (aerosol optical depth) has clim. val.vi_usefulness: mod13Q1: Quality estimation of the pixelmixed_clouds: mod13Q1: if pixel mixed with cloudspossible_snow_ice: mod13Q1: if snow/ice present in pixelpossible_shadow: mod13Q1: if shadow is present in pixelplatform: mcd43B2: Quality of BRDF correction performedsun_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, 7
1: Band 1: Red2: Band 2: NIR3: Band 3: Blue4: Band 4: Green5: Band 5: SWIR 16: Band 6: SWIR 27: Band 7: SWIR 3
π DESCRIPTION π
so like, i.modis.qc extracts Requested Quality Assessment flags from the following MODIS products: MOD09A1, MOD09Q1, MOD11A1, MOD11A2, MOD13A2, MOD13Q1, MCD43B2. and yes, this does include the MOD09A1 QA_state_500m layer (peep the Notes, iykyk). π
Added MOD09GA support in 2016, it follows MOD09A1 and its StateQA, but does not have BRDF State QA, instead has Salt Pan State QA. okay so she evolved, we love growth. π±
π§΄ MOD09A1 and MOD09Q1 π§΄
- MOD09A1/Q1: MODLAND QA Bits. 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])
not me flagging that[11]overrides[01]β that's the drama, bestie, don't forget it. π
- MOD09Q1: Cloud State. 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-wise Data Quality 250m bits=[4-7][8-11]
- MOD09A1: Band-wise Data Quality 500m bits=[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: Atmospheric correction bit=[12]/[30]
[0]= class 0: Not Corrected product[1]= class 1: Corrected product
- MOD09A1/Q1: Adjacency correction bit=[13]/[31]
[0]= class 0: Not Corrected product[1]= class 1: Corrected product
- MOD09Q1: Different orbit from 500m product, bit=[14]
[0]= class 0: same orbit as 500m[1]= class 1: different orbit from 500m
- MOD09A1s: Cloud State bits=[0-1]
[00]= class 0: clear[01]= class 1: cloudy[10]= class 2: mixed[11]= class 3: not set, assumed clear
- MOD09A1s: Cloud shadow bits=[2]
[0]= class 0: no[1]= class 1: yes
- MOD09A1s: Land/Water Flag bits=[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: Aerosol Quantity bits=[6-7]
[00]= class 0: Climatology[01]= class 1: Low[10]= class 2: Average[11]= class 3: High
- MOD09A1s: Cirrus detected bits=[8-9]
[00]= class 0: None[01]= class 1: Small[10]= class 2: Average[11]= class 3: High
- MOD09A1s: Internal Cloud Algorithm Flag bits=[10]
[0]= class 0: No cloud[1]= class 1: Cloud
- MOD09A1s: Internal Fire Algorithm Flag bits=[11]
[0]= class 0: No fire[1]= class 1: Fire
- MOD09A1s: MOD35 snow/ice flag bits=[12]
[0]= class 0: No[1]= class 1: Yes
- MOD09A1s: Pixel adjacent to cloud bits=[13]
[0]= class 0: No[1]= class 1: Yes
- MOD09A1s: BRDF correction performed bits=[14]
[0]= class 0: No[1]= class 1: Yes
- MOD09A1s: Internal Snow Mask bits=[15]
[0]= class 0: No snow[1]= class 1: Snow
π‘οΈ MOD11A1 π‘οΈ
- MOD11A1: Mandatory QA Flags bits=[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: Data Quality Flag bits=[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: Emis Error Flag bits=[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: LST Error Flag bits=[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. π
MOD11A2
MOD11A2: Mandatory QA Flags bits=[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: Data Quality Flag bits=[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: Emis Error Flag bits=[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: LST Error Flag bits=[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. π
MOD13A2
MOD13A2: Mandatory QA Flags 1km bits[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: VI Usefulness Flag bits[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: Aerosol quantity Flags 1km bits[6-7]
[00]β class 0: Climatology. π[01]β class 1: Low. π€οΈ[10]β class 2: Average. β[11]β class 3: High. π«οΈ
MOD13A2: Adjacent cloud detected 1km bit[8]
[00]β class 0: No. π«[01]β class 1: Yes. βοΈ
MOD13A2: Atmosphere BRDF correction performed 1km bit[9]
[00]β class 0: No. π«[01]β class 1: Yes. β
MOD13A2: Mixed clouds 1km bit[10]
[00]β class 0: No. π«[01]β class 1: Yes. βοΈ
MOD13A2: Land/Water Flags 1km bits[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: Possible Snow/Ice 1km bits[14]
[0]β class 0: No. π«[1]β class 1: Yes. βοΈ
MOD13A2: Possible Shadow 1km bits[15]
[0]β class 0: No. π«[1]β class 1: Yes. π
MOD13Q1
MOD13Q1: Mandatory QA Flags 250m bits[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: VI Usefulness Flag 250m bits[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: Aerosol quantity Flags 250m bits[6-7]
[00]β class 0: Climatology. π[01]β class 1: Low. π€οΈ[10]β class 2: Average. β[11]β class 3: High. π«οΈ
MOD13Q1: Adjacent cloud detected 250m bit[8]
[00]β class 0: No. π«[01]β class 1: Yes. βοΈ
MOD13Q1: Atmosphere BRDF correction performed 250m bit[9]
[00]β class 0: No. π«[01]β class 1: Yes. β
MOD13Q1: Mixed clouds 250m bit[10]
[00]β class 0: No. π«[01]β class 1: Yes. βοΈ
MOD13Q1: Land/Water Flags 250m bits[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: Possible Snow/Ice 250m bits[14]
[0]β class 0: No. π«[1]β class 1: Yes. βοΈ
MOD13Q1: Possible Shadow 250m bits[15]
[0]β class 0: No. π«[1]β class 1: Yes. π
MCD43B2
MCD43B2: Albedo Quality Ancillary Platform Data 1km bits[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: Albedo Quality Ancillary Land/Water Data 1km bits[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: Albedo Quality Ancillary Sun Zenith Angle at Local Solar Noon Data 1km bits[8-14]
SDS: BRDF_Albedo_Ancillary
Returns integer value [0-90], 127 is Fill Value. βοΈ
MCD43B2: Band-wise Albedo Quality Data 1km
SDS: 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. π³οΈ
π 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. π
bestie, this is important! don't skip this. π
TODO
Add more daily products. π
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
AUTHOR
Yann Chemin
SOURCE CODE
Available at: i.modis.qc source code (history)
Accessed: Saturday Jan 17 05:41:43 2026
Main index | Imagery index | Topics index | Keywords index | Graphical index | Full index
Β© 2003-2025 GRASS Development Team, GRASS GIS 8.4.2 Reference Manual
And that's the tea, bestie! This was i.modis.qc(1) from GRASS 8.4.2, accessed Saturday Jan 17 05:41:43 2026. Stay slay! πβ¨
π¦ where this page comes from
- fedora 44: grass 8.4.2-4.fc44 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms