DOI: 10.5281/zenodo.15594682
title: EGLC: Ensemble Global Land Cover Reference Dataset (2000-2022)

description: EGLC: Ensemble Global Land Cover Reference Dataset (2000-2022)

The Ensemble Global Land Cover (EGLC) dataset is a harmonized global compilation of land cover reference samples from 2000 to 2022. It integrates and standardizes data from multiple authoritative sources to support global-scale land cover classification and validation.

Reference points datasets



eglc_c_go_epsg.4326.parquet (~72M points)Compiled dataset with all original points (before class harmonization).

eglc_harmonized_c_go_epsg.4326.parquet (~22M points)Reference points selected per class and dataset from compiled points (above) and harmonized land cover classes (see details below).

samples_eglc_c_us_epsg.4326.parquet (~2.4M points)Pilot points for US (CONUS).


Source datasets and class harmonization



GLanCE (Global Land Cover Estimation)Data Range: 2000-2021Original Classes Used: Beach/Sand, Rock, Soil, Developed, Shrub, Deciduous, Evergreen, Mixed, WaterHarmonized Classes: Shifting Sand, Rock Outcrops, Bare Soil, Developed/Urban, Shrubland, Deciduous Forest, Evergreen Forest, Mixed Forest, WaterReference: Friedl et al. (2022)

Dynamic WorldData Range: 2017-2019Original Classes Used: Flooded Vegetation, Snow/Ice, WaterHarmonized Classes: Wetland, Permanent Snow/Ice, WaterReference: Tait et al. (2021)

GPW (Global Pasture Watch)Data Range: 2000-2022Original Classes Used: Cultivated grassland, Natural/Semi-natural grasslandHarmonized Classes: Cultivated Grassland/Pasture, Natural Semi-Natural GrasslandReference: Parente et al. (2024)

MangrovesDB (Temporally augmented)Data Range: 2000-2021 (Visual inspected for 2021. Augmented points backwards in time from imagery year to 2000, assuming temporal persistence).Compiled points:Original Class Used: MangroveHarmonized Class: MangroveReference: Maxwell et al. (2023)

Compiled WorldCerealData Range: 2016-2022Original Classes Used: Annual cropland, Cropland, Deciduous forest, Evergreen forest, Mixed/unknown forest, Shrubland, Snow / ice, WaterHarmonized Classes: Cropland, Deciduous Forest, Evergreen Forest, Mixed Forest, Shrubland, Permanent Snow/Ice, WaterReference: Oliveira et al. (2024)


Data processing and integration



Data Ingestion: Each dataset was loaded and converted into a common tabular-geospatial format with a consistent CRS (EPSG:4326).

Specific Adjustments: MangrovesDB samples were manually relocated and verified using VHR imagery before temporal expansion.

Schema Standardization: All datasets were standardized to use the following fields: dataset, id, original_class_1, original_class_2, class, year, lon, lat, tile, geometry.


Final harmonized land cover classes



Bare Soil

Cropland

Cultivated Grassland/Pasture

Deciduous Forest

Developed/Urban

Evergreen Forest

Mangrove

Mixed Forest

Natural Semi-Natural Grassland

Permanent Snow/Ice

Rock Outcrops

Shifting Sand

Shrubland

Water

Wetland


Technical details

Spatial Coverage: Global (excluding Antarctica)Temporal Range: 2000-2022Coordinate Reference System: EPSG:4326Data Format: Parquet

Dataset structure



dataset: Identifier of the original source (e.g., GLanCE-5, GPW-calibration, WorldCereal).

id: Identifier (source-specific information).

original_class_1: First-level land cover label from the original dataset.

original_class_2: Second-level label when applicable (e.g., GLanCE level 2 class).

class: Final harmonized land cover class mapped to a unified 15-class legend.

year: Observation year.

lon: Longitude in WGS84 coordinates (EPSG:4326).

lat: Latitude in WGS84 coordinates (EPSG:4326).

tile: ID of the spatial tile intersected by the sample (used for spatial indexing).

geometry: Point geometry in WKT or binary format (CRS: EPSG:4326).


How to Load the Data

In Python (DuckDB):

import duckdb

con = duckdb.connect()
df = con.execute("SELECT * FROM '{parquet_path}'").fetchdf()


In Python (GeoPandas):

import geopandas as gpd

gdf = gpd.read_parquet("{parquet_path}")


In R:

library(arrow)

df <- read_parquet("{parquet_path}")