Exploring Land Cover Data (Impact Observatory)
Contents
Exploring Land Cover Data (Impact Observatory)¶
General Exploration Standard Python
Context¶
Purpose¶
Introduce manipulation and exploratory analysis of classified land use and cover data, using example data created by Impact Observatory from ESA Sentinel-2 imagery.
Dataset description¶
There are now many classified (categorical) land cover data products freely available that are useful for Environmental Data Science. These include:
ESA CCI land cover, 300m spatial resolution global extent for years 1992-2015
Copernicus Global Land Cover, 100m spatial resolution global extent for years 2015-2019
USGS LCMAP, 30m spatial resolution for USA for years 1985-2020
UKCEH LCMs, various spatial resolutions for UK for various years 1990-2020
mapbiomas, 30m spatial resolution for Brazil for years 1985-2020
Impact Observatory, 10m spatial resolution global extent for 2017-2021
These products are provided as 2D rasters (spatial) or 3D data cubes (spatio-temporal). The number and classification of discrete land cover classes varies between products, but at their most basic will distinguish between broad land covers such as ‘crops’, ‘forest’ and ‘built-up’. The nominal (categorical) character of the data influences the types of analysis appropriate.
This notebook uses data created by Impact Observatory. The data are a time series for 2017-2021 of annual global land use and land cover (LULC) mapped at 10m spatial resolution. The data are derived from ESA Sentinel-2 imagery with each annual map specifying individual pixels as belonging to one of 9 LULC classes. The Impact Observatory LULC model uses deep learning methods to infer a single annual LULC class for each pixel in a Sentinel-2 image. Each annual global LULC map is produced by aggregating multiple inferences for images from across a given year (requiring processing approximately 2 million images to create each annual map).
Highlights¶
Fetch land cover product data from an online repository
Visualise the data (maps and spatio-temporal plots)
Analyse aggregate change through bar charts and similar visualisation
Analyse pixel-by-pixel change including use of sankey diagrams
Analyse zonal change using ancillary vector data
Contributions¶
Notebook¶
James Millington (author), Dept of Geography, King’s College London, @jamesdamillington
Anne Fouilloux (reviewer), Dept of Geosciences, University of Oslo, @annefou
Amandine Debus (reviewer), Dept of Geography, University of Cambridge, @aedebus
Dataset originator/creator¶
Esri (licensor)
Impact Observatory (processor, producer, licensor)
Microsoft (host)
The data are available under a Creative Commons BY-4.0 license.
Dataset reference and documentation¶
Krishna Karra, Caitlin Kontgis, Zoe Statman-Weil, Joseph C. Mazzariello, Mark Mathis, and Steven P. Brumby. Global land use / land cover with sentinel 2 and deep learning. In 2021 IEEE International Geoscience and Remote Sensing Symposium IGARSS, volume, 4704–4707. 2021. doi:10.1109/IGARSS47720.2021.9553499.
Impact Observatory. Methodology & accuracy summary. URL: https://www.impactobservatory.com/static/lulc_methodology_accuracy-ee742a0a389a85a0d4e7295941504ac2.pdf (visited on 2022-07-01).
Code¶
Data loading code built on snippet from @acocac via ODC.stac docs and a Microsoft Planetary example notebook.
Load libraries¶
#system
import os
import warnings
warnings.filterwarnings(action='ignore')
#data handling
import pystac_client
import odc.stac
from pystac.extensions.item_assets import ItemAssetsExtension
import geopandas as gpd
import rasterio as rio
import numpy as np
import pandas as pd
from shapely.geometry import Polygon
import xarray as xr
import rioxarray
#visualisation
import matplotlib.pyplot as plt
import matplotlib.colors as mplc
import holoviews as hv
import hvplot.pandas
from holoviews import opts, dim
#data analysis
from sklearn import metrics #for confusion matrix
from rasterstats import zonal_stats