DOI: 10.5281/zenodo.14439376
title: Global tree percent cover and impervious surfaces (urban) cover based on GLC_FCS30D for years 1985 and 2022 at 30 m spatial resolution

description: Global tree percent cover and impervious surfaces (urban) cover for years 1985 and 2022 at 30 m spatial resolution based on the GLC_FCS30D data set produced by the State Key Laboratory of Remote Sensing, Aerospace Information Research Institute, Chinese Academy of Sciences, Beijing. The tree cover has been estimated using the 37 class legend (GLC_FCS30D_legend.csv) and is only an approximation of might have been the actual tree cover. Note: the GLC_FCS30D data set is probably over-estimating tree-based vegetation types in arid and semi-arid areas so this would need to be corrected; in addition, several artifacts due to the tiling system / locally fitted classification are visible in the GLC_FCS30D maps. The GLC_FCS30D data set is available for viewing from https://OpenLandMap.org and is explained in detail in:



Zhang, X., Liu, L., Chen, X., Gao, Y., Xie, S., and Mi, J. (2021): GLC_FCS30: global land-cover product with fine classification system at 30 m using time-series Landsat imagery, Earth Syst. Sci. Data, 13, 2753–2776, https://doi.org/10.5194/essd-13-2753-2021


It is estimated that world has lost 1/3rd of original pre-industrial forest areas, however, many current forest areas also have a thinner tree cover than before.

Similar data sets (not used here) are the JRC's Tropical Moist Forests product (TMFv2023) which is also available for download although it only covers tropical forest areas, GlobalForestWatch data set, and the MapBiomas data set:



Laso Bayas, J. C., See, L., Georgieva, I., Schepaschenko, D., Danylo, O., Dürauer, M., ... & Fritz, S. (2022). Drivers of tropical forest loss between 2008 and 2019. Scientific data, 9(1), 146. https://doi.org/10.1038/s41597-022-01227-3

Souza Jr, C. M., Z. Shimbo, J., Rosa, M. R., Parente, L. L., A. Alencar, A., Rudorff, B. F., ... & Azevedo, T. (2020). Reconstructing three decades of land use and land cover changes in brazilian biomes with landsat archive and earth engine. Remote Sensing, 12(17), 2735. https://doi.org/10.3390/rs12172735

Vancutsem, C., Achard, F., Pekel, J. F., Vieilledent, G., Carboni, S., Simonetti, D., ... & Nasi, R. (2021). Long-term (1990–2019) monitoring of forest cover changes in the humid tropics. Science advances, 7(10), eabe1603. https://doi.org/10.1126/sciadv.abe1603


To convert GLC_FCS30D to tree cover and urban cover I've used the following code:

library(terra); library(parallel)
g1 = terra::vect("glc_100km_tiles.gpkg")gcl = read.csv("GLC_FCS30D_legend.csv")rcl = gcl[,c("GLC_FCS30D","Tree_cover")]
fraction.cover <- function(tif, tile, rcl){
  bb = as.vector(ext(tile))
  year = substr(strsplit(tif, "_")[[1]][6], 1, 4)
  out.tif = paste0("./t", year, "/tree.cover_30m_", year, "_", paste(bb, collapse = "."), ".tif")
  if(!file.exists(out.tif)|!file.exists(gsub("30m", "1km", out.tif))){
    r = terra::rast(tif)
    r.t = terra::crop(r, ext(tile))
    m = terra::classify(r.t, rcl)
    writeRaster(m, filename=out.tif, wopt= list(gdal=c("COMPRESS=DEFLATE")), datatype='INT1U', NAflag=255)
    system(paste0('gdal_translate ', out.tif, ' ', gsub("30m", "1km", out.tif), ' -co COMPRESS=DEFLATE -tr 0.008333333 0.008333333 -r "average" -q'))
    m0 = terra::ifel(r.t==190, 100, 0)
    writeRaster(m0, filename=gsub("tree", "urban", out.tif), wopt= list(gdal=c("COMPRESS=DEFLATE")), datatype='INT1U', NAflag=255)
    rm(m); rm(m0); gc()
    tmpFiles(remove=TRUE)
  }
}
## run in parallel:
tif = "lc_glc.fcs30d_c_30m_s_20220101_20221231_go_epsg.4326_v20231026.tif"
#tif = "lc_glc.fcs30d_c_30m_s_19850101_19851231_go_epsg.4326_v20231026.tif"
x = parallel::mclapply(1:length(g1), function(i){try( fraction.cover(tif, tile=g1[i], rcl=rcl) )}, mc.cores=80)