Skip to content
Study / Workflows

Workflows

Each topic follows one task from start to finish, with the steps, the code, the checks in between and the mistakes to avoid.

26 guides

Downloading data

13 guides
  1. 01
    How to Download Sentinel-2 Imagery: Copernicus Browser and PythonTwo ways to get free Sentinel-2 scenes for your study area: the Copernicus Browser, where you click and download a zip, and a short Python script that reads only the pixels you need, with no account.Beginner
    TheoryBrowserPython
  2. 02
    How to Download Landsat Imagery: EarthExplorer and PythonGet free Landsat 8 and 9 surface reflectance for your study area, either by searching and downloading in USGS EarthExplorer or with a short Python script that reads only your area and needs no account.Beginner
    TheoryBrowserPython
  3. 03
    How to Download a DEM: Copernicus DEM Tiles for Your Study AreaDownload free 30 m elevation data for any place: pick the right tile by its name, download it with a link or a short Python script, join tiles when your area crosses an edge, and check that the heights make sense.Beginner
    TheoryBrowserPython
  4. 04
    How to Download OpenStreetMap Data: QuickOSM and the Overpass APIGet roads, buildings, hospitals and other features from OpenStreetMap for your study area, either with the QuickOSM plugin in QGIS or with a short Python script, and save them as a GeoPackage you can use anywhere.Beginner
    TheoryQGISPython
  5. 05
    How to Download Rainfall Data: CHIRPS Monthly FilesDownload free monthly rainfall for the whole tropics and sub-tropics, read the value for your place, build a year of rainfall as a table, and learn what a 5 km rainfall cell can and cannot tell you.Beginner
    TheoryBrowserPython
  6. 06
    How to Download Administrative Boundaries: States and Districts from geoBoundaries, GADM and Natural EarthGet state and district polygons for any country, pick a district by name, find its neighbours, and see how much three free sources disagree, so that you can choose one and say which you used.Beginner
    TheoryBrowserPython
  7. 07
    How to Download Land Cover: ESA WorldCover 10 m Tiles for Your Study AreaGet a free 10 m land cover map for any place, read the class codes, count what covers your area, and keep the colours and the credit line that go with it. Python reads only your window from a tile of 100 MB.Beginner
    TheoryBrowserPython
  8. 08
    How to Download Sentinel-1 Radar Data: Cloud-Free Images in PythonGet free Sentinel-1 radar images for your area, choose scenes that you can compare, read the VV and VH bands for just your window, convert them to decibels, reduce the speckle, and see what water, fields and buildings look like in radar.Beginner
    TheoryBrowserPython
  9. 09
    How to Download Weather Data for a Place: ERA5 Rainfall and Temperature in PythonGet daily rainfall and temperature for any point on Earth back to 1940, with no account, from the ERA5 reanalysis through the Open-Meteo archive. See what a reanalysis is, check for missing values, and compare it with CHIRPS.Beginner
    TheoryBrowserPython
  10. 10
    How to Download Building Footprints: Microsoft Global Buildings in PythonGet the outline of every building in your area from the free Microsoft Global ML Building Footprints, find the right file from a quadkey, cut it to your box, count and measure the buildings, and compare the count with OpenStreetMap.Beginner
    TheoryPython
  11. 11
    How to Download Night Lights (VIIRS) for Your AreaGet the yearly VIIRS night lights map for a country, cut it to your district, read the brightness, find where the light is, and learn what the number means and what it misses.Beginner
    TheoryBrowserPython
  12. 12
    How to Download Soil Moisture and Land Surface TemperatureGet soil moisture for a place from a free weather model, get land surface temperature from MODIS satellite images, compare the two with rainfall, and learn what each number means and where it is weak.Beginner
    TheoryPython
  13. 13
    How to Download Roads and Rivers for a DistrictGet the roads and the rivers, canals and drains of a district from OpenStreetMap, cut them to the district boundary, measure their length by type, and learn what OSM lines can and cannot tell you.Beginner
    TheoryQGISPython

Preparing data

6 guides
  1. 14
    How to Mosaic Rasters: Join Tiles into One Raster in QGIS and PythonJoin several tiles or scenes into one seamless raster, check that they match first, choose what happens where they overlap, and avoid the empty edge row and column that a mosaic can leave behind.Beginner
    TheoryQGISPython
  2. 15
    How to Clip a Raster to a Boundary: Cut a DEM to a District in QGIS and PythonCut a raster to the shape of a district or any polygon, so that only your study area remains. Learn the difference between cropping to an extent and masking to a shape, and the CRS mistake that returns nothing.Beginner
    TheoryQGISPython
  3. 16
    How to Reproject a Raster: From Degrees to a UTM Zone in QGIS and PythonMove a raster from latitude and longitude to a projected CRS in metres, pick the right UTM zone for your place, choose a resampling method that fits your data, and check that areas and slopes now make sense.Beginner
    TheoryQGISPython
  4. 17
    How to Mask Clouds in Sentinel-2 with the Scene Classification LayerUse the scene classification layer (SCL) that comes with every Level-2A scene to hide clouds, cloud shadow and cirrus before you calculate an index, and see how much the mask changes the answer.Beginner
    TheoryQGISPython
  5. 18
    How to Convert Between Geospatial Formats: Shapefile, GeoPackage, GeoJSON and Cloud Optimized GeoTIFFMove vector data between Shapefile, GeoPackage and GeoJSON, and turn a GeoTIFF into a Cloud Optimized GeoTIFF, in QGIS and in Python. Know what each format keeps, what it loses, and which one to choose.Beginner
    TheoryQGISPython
  6. 19
    How to Georeference a Scanned Map: Ground Control Points in QGIS and PythonTurn a scanned paper map or a picture of a map into a GeoTIFF that sits in the right place on the Earth, by matching points on the scan to known coordinates, and then measure how good the fit is.Beginner
    TheoryQGISPython

Satellite imagery

1 guide
  1. 20
    NDVI from Sentinel-2: A Step-by-Step Satellite Imagery WorkflowDownload a Sentinel-2 scene, mask clouds with the scene classification layer, calculate NDVI with Rasterio and check the result before you trust it.Intermediate
    TheoryPython

Using data

6 guides
  1. 21
    How to Extract Raster Values at Points: Height, Rainfall or NDVI for Every LocationRead the value of a raster under each point of a layer, such as the height under every hospital, in QGIS with Sample Raster Values and in Python with rasterio. Handle points that fall on NoData, and check the result two ways.Beginner
    TheoryQGISPython
  2. 22
    How to Calculate Zonal Statistics: Mean Height of Every District from a DEMSummarise a raster for each polygon of a layer, such as the mean, lowest and highest height of every district, in QGIS with Zonal Statistics and in Python with rasterio. Learn what the cell rule and NoData do to the answer.Beginner
    TheoryQGISPython
  3. 23
    How to Turn a Table into Points and Join It to Polygons: CSV, Spatial Join and Attribute JoinMake a point layer from a CSV with coordinates, count points in each polygon, and join a table of numbers to a layer by code. See how a join by name silently loses rows, and how to join so that it does not.Beginner
    TheoryQGISPython
  4. 24
    How to Calculate Slope, Aspect and Hillshade from a DEM in QGIS and PythonTurn a DEM into three maps that describe the terrain: how steep it is, which way it faces, and what it looks like under a low sun. Do it in QGIS with the Raster Analysis tools and in Python with a short function that matches them.Intermediate
    TheoryQGISPython
  5. 25
    How to Measure Distance and Find the Nearest Feature: Buffers and Nearest Neighbour in QGIS and PythonFind the distance from every hospital to the nearest main road, the nearest hospital to each town, and the hospitals within 2 km of a place, using nearest-feature joins and buffers. Know why the layers must be in metres, and what a straight-line distance leaves out.Beginner
    TheoryQGISPython
  6. 26
    How to Get a Time Series for a Point from a Stack of RastersRead the value of one place from twelve monthly NDVI rasters, in QGIS with a virtual stack and in Python with rasterio, turn it into a table, and check what one pixel does and does not tell you.Beginner
    TheoryQGISPython