Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

ESRI-LULC-Simbology

A QGIS toolbox that automatically symbolizes Esri 10m Land Cover rasters as labeled, colored vector polygons.

Repositori di GitHub

A QGIS toolbox that automatically symbolizes Esri 10m Land Cover rasters as labeled, colored vector polygons. It supports all versions: the annual 2017–2025 (9 classes) collection and the Esri 2020 (10 classes) map, each in both the GEE and the Original pixel-value scheme.

Data produced by Impact Observatory for Esri (© 2021 Esri, CC BY 4.0). This toolbox is not officially affiliated with Esri or Impact Observatory. See NOTICE.md.

https://github.com/user-attachments/assets/9711dd43-0e88-4719-919b-fc37ef878931

Features

Tool Architecture & Workflow

1. Processing workflow

2. Which scheme should I pick?

3. Components

4. Code structure

5. Run sequence

6. Data model

File Structure

Esri-Landcover-style-QGIS-Toolbox/
├── esri_landcover_style_qgis_toolbox.py   # Main Processing script
├── startup_esri_landcover.py              # Toolbar button (optional)
├── NOTICE.md
├── LICENSE
└── README.md

Installation

  1. Open the Processing Toolbox → click the Python icon → Add Script to Toolbox...

  2. Select esri_landcover_style_qgis_toolbox.py. The tool appears under Esri Land Cover Custom Visualization Toolbox.

  3. (Optional, toolbar button) — open your QGIS profile folder: Settings → User Profiles → Open Active Profile Folder → python.

    • No startup.py yet → copy startup_esri_landcover.py there and rename it to startup.py.

    • You already have a startup.py (e.g. from the MapBiomas toolbox) → do not overwrite it; paste the contents of startup_esri_landcover.py at the very bottom of the existing file. Both buttons can coexist.

Usage

ParameterDescription
Esri 10m Land Cover rasterInput raster layer
BandDefault Band 1
Esri Land Cover version & pixel-value schemePick one of the 4 options below, matching where your raster came from
Output vector polygonsSave location (default GeoJSON)
Load to canvasTick to display the result immediately with symbology

Version / scheme options

OptionUse whenNoData removed
2017–2025 (9 classes) — Remapped 1–9Raster already remapped to 1–9, e.g. exported from GEE after applying remap([1,2,4,5,7,8,9,10,11], [1,2,3,4,5,6,7,8,9])0
2017–2025 (9 classes) — Original 1,2,4,5,7,8,9,10,11Official GeoTIFF from Esri / Impact Observatory, or the raw ESRI_Global-LULC_10m_TS asset exported without remapping0
2020 (10 classes) — GEE catalog (1–11)Raster from the GEE catalog ESRI_Global-LULC_10m (value 1 = No Data)0 and 1
2020 (10 classes) — Original 1–10Official Esri 2020 GeoTIFF0

Do not pick the wrong scheme. The same number can mean different classes across schemes (e.g. value 4 = Flooded Vegetation in 9-class Original, but Crops in 9-class Remapped and Grass in 2020 GEE). If a “Gridcodes not recognized” warning appears, the version is almost certainly mismatched.

Classes & Colors

2017–2025, 9 classes — Remapped 1–9

Pixel valueLand Cover ClassHexColor
1Water#1A5BAB
2Trees#358221
3Flooded Vegetation#87D19E
4Crops#FFDB5C
5Built Area#ED022A
6Bare Ground#EDE9E4
7Snow/Ice#F2FAFF
8Clouds#C8C8C8
9Rangeland#C6AD8D

2017–2025, 9 classes — Original

Pixel valueLand Cover ClassHexColor
1Water#1A5BAB
2Trees#358221
4Flooded Vegetation#87D19E
5Crops#FFDB5C
7Built Area#ED022A
8Bare Ground#EDE9E4
9Snow/Ice#F2FAFF
10Clouds#C8C8C8
11Rangeland#C6AD8D

2020, 10 classes — GEE catalog (value 1 = No Data, removed)

Pixel valueLand Cover ClassHexColor
2Water#1A5BAB
3Trees#358221
4Grass#A7D282
5Flooded Vegetation#87D19E
6Crops#FFDB5C
7Scrub/Shrub#EECFA8
8Built Area#ED022A
9Bare Ground#EDE9E4
10Snow/Ice#F2FAFF
11Clouds#C8C8C8

2020, 10 classes — Original

Pixel valueLand Cover ClassHexColor
1Water#1A5BAB
2Trees#358221
3Grass#A7D282
4Flooded Vegetation#87D19E
5Crops#FFDB5C
6Scrub/Shrub#EECFA8
7Built Area#ED022A
8Bare Ground#EDE9E4
9Snow/Ice#F2FAFF
10Clouds#C8C8C8

Sources: S2TSLULC and esrilc2020. The Original 2020 numbering (1–10) follows the official class order on the esrilc2020 page.

Output Attributes

FieldDescription
gridcodePixel value from the raster (polygonize result)
class_enClass name (English)
hex_colorHex color code
lulc_verVersion & scheme selected when running the tool

Performance Tips

Esri 10 m rasters are very detailed. For large areas, clip the raster to your study area first before running the tool (polygonizing a large raster can be very slow and produce huge files).

Requirements

QGIS 3.x with GDAL (included in the standard QGIS installation).

Author

Defani Arman Alfitriansyah — github.com/Defani

License

Code: MIT (see LICENSE). Data: CC BY 4.0, © Esri / Impact Observatory (see NOTICE.md).