Problems
Real geospatial problems, graded automatically. Choose a track, a level and what you want to hand in.
- Not started, Accept the rasters, or send them backData qualityAnswersData ManagementintermediateDifficulty: intermediate200 XP~35 min6 checksData ManagementintermediateDifficulty: intermediate
The checks a data manager runs on delivered rasters before anyone analyses them: extent, nodata, value range, and whether the figures are plausible for the place.
You hand in your answers as values.
Datasets
- Greater London elevation (Copernicus DEM GLO-30) · Raster · EPSG:4326
- Greater London land cover 2021 (ESA WorldCover 10 m) · Raster · EPSG:4326
- Greater London, Sentinel-2 red and NIR, 11 July 2025 · Raster · EPSG:32630
What you’ll do
- Read raster metadata and full-resolution statistics
- Distinguish nodata from valid extremes
- Record facts a later dispute can start from
raster QAnodatametadataacceptanceLondonAlso trains Remote SensingOpen problem - Not started, Airports per state, as a script that runs againSpatial analysisPythonPythonintermediateDifficulty: intermediate190 XP~35 min5 checksPythonintermediateDifficulty: intermediate
Spatially join a global airport layer to US states and hand back one row per state, zeros included — in a script the grader runs.
You hand in a Python script.
Datasets
- United States states · Polygon · 51 features · EPSG:4326
- World airports · Point · 893 features · EPSG:4326
What you’ll do
- Read both layers from /data and join airports to states with a spatial predicate
- Count airports and major airports per state without losing a state that has none
- Assign the finished GeoDataFrame, one row per state, to the variable named result
GeoPandasspatial joinreproducibilityaviationAlso trains Spatial AnalysisOpen problem - Not started, At which zoom does every capital get its own tile?Web deliveryAnswersWeb GISintermediateDifficulty: intermediate180 XP~25 min4 checksWeb GISintermediateDifficulty: intermediate
Count capitals per XYZ tile across zooms to decide where a label layer switches from clustering to one label per city.
You hand in your answers as values.
Dataset
- Populated places · Point · 1,251 features · EPSG:4326
What you’ll do
- Convert points to tile indices at several zooms
- Find the busiest tile per zoom
- Choose a switch-over zoom from the data
XYZ tileslabelsclusteringzoom levelsglobalAlso trains CartographyOpen problem - Not started, At which zoom does the dock layer fit in a tile?Web deliveryAnswersWeb GISintermediateDifficulty: intermediate190 XP~30 min4 checksWeb GISintermediateDifficulty: intermediate
Count features per XYZ tile across zoom levels to set a vector-tile pipeline's minimum zoom and its per-tile limit honestly.
You hand in your answers as values.
Dataset
- Santander Cycles docking stations (live snapshot) · Point · 799 features · EPSG:4326
What you’ll do
- Convert coordinates to tile indices at several zooms
- Count features per tile and find the maximum
- Choose a minimum zoom from the data rather than a default
vector tilesXYZtippecanoezoom levelsLondonAlso trains Spatial AnalysisOpen problem - Not started, Build the global seismic reconnaissance watchlistDecision supportPythonSpatial AnalysisintermediateDifficulty: intermediate240 XP~40 min5 checksSpatial AnalysisintermediateDifficulty: intermediate
Turn a fixed USGS event feed into a mapped, reproducible shallow strong-event watchlist for requesting impact products.
You hand in a Python script.
Dataset
- Global M5.5+ earthquakes, Jan–Mar 2025 · Point · 86 features · EPSG:4326
What you’ll do
- Apply two inclusive, unit-aware filters to the frozen event snapshot
- Carry stable event identifiers and response metadata into a point GeoDataFrame
- Map event magnitude as a proportional point result without claiming it is impact
USGSearthquakesGeoPandasemergency screeningglobalAlso trains Python, Data Management, CartographyOpen problem - Not started, How big does Web Mercator make Greenland?CartographyAnswersCartographyintermediateDifficulty: intermediate210 XP~30 min4 checksCartographyintermediateDifficulty: intermediate
Put a number on the most famous distortion in cartography: the same countries measured on the ellipsoid and on the projection every web map uses.
You hand in your answers as values.
Dataset
- Countries · MultiPolygon · 241 features · EPSG:4326
What you’ll do
- Measure area geodesically or in an equal-area projection
- Project the same polygons to Web Mercator and take their planar area
- Express the distortion as ratios a reader can repeat
Web Mercatorprojectionarea distortionEqual EarthglobalAlso trains Spatial AnalysisOpen problem - Not started, How green was London on 11 July 2025?Raster analysisAnswersRemote SensingintermediateDifficulty: intermediate220 XP~35 min4 checksRemote SensingintermediateDifficulty: intermediate
Compute NDVI from a two-band Sentinel-2 clip, handle nodata and integer types properly, and report the distribution a monitoring programme quotes.
You hand in your answers as values.
Dataset
- Greater London, Sentinel-2 red and NIR, 11 July 2025 · Raster · EPSG:32630
What you’ll do
- Compute a band ratio index with correct types
- Exclude nodata from every statistic
- Summarise the index as the programme's three figures
NDVISentinel-2band mathnodataLondonOpen problem - Not started, How much of each borough lies below ten metres?Raster analysisGeoJSONSpatial AnalysisintermediateDifficulty: intermediate240 XP~40 min6 checksSpatial AnalysisintermediateDifficulty: intermediate
Threshold a DEM, count inside polygons, and turn pixels into square kilometres on a geographic grid — a flood-screening figure per borough.
You hand in a GeoJSON result.
Datasets
- Greater London elevation (Copernicus DEM GLO-30) · Raster · EPSG:4326
- London boroughs · Polygon · 33 features · EPSG:4326
What you’ll do
- Threshold a continuous raster
- Count the thresholded pixels per polygon
- Convert pixels to ground area on a geographic grid
DEMthresholdzonalpixel areafloodLondonAlso trains Remote SensingOpen problem - Not started, How much of Inner London is a five-minute walk from a dock?Spatial analysisGeoJSONSpatial AnalysisintermediateDifficulty: intermediate240 XP~45 min5 checksSpatial AnalysisintermediateDifficulty: intermediate
Buffer, dissolve and clip: the covered share of each Inner London borough at a 400 m walk.
You hand in a GeoJSON result.
Datasets
- London boroughs · Polygon · 33 features · EPSG:4326
- Santander Cycles docking stations (live snapshot) · Point · 799 features · EPSG:4326
What you’ll do
- Buffer 799 stations by 400 m in a metric CRS
- Dissolve the buffers into one coverage geometry
- Clip the coverage to each Inner London borough
bufferdissolveclipCRStransportLondonAlso trains CartographyOpen problem - Not started, Protect the bus stop key during the loadData preparationSQLData ManagementintermediateDifficulty: intermediate210 XP~40 min7 checksData ManagementintermediateDifficulty: intermediate
Recover zero-padded stop identifiers before a transport timetable join.
You hand in a spatial SQL query.
Dataset
- Singapore bus stop code staging · Point · 31 features · EPSG:4326
What you’ll do
- Preserve identifier semantics through SQL casting.
- Resolve repeated source rows deterministically.
- Return a clean point layer for the timetable join.
data-preparationsingaporesqlAlso trains PostGIS / SQLOpen problem - Not started, Redirect the rider at an empty dockDecision supportSQLPostGIS / SQLintermediateDifficulty: intermediate250 XP~40 min5 checksPostGIS / SQLintermediateDifficulty: intermediate
For every station with no bikes, the nearest station that has one, and the walk in metres — with the KNN operator so it stays fast at 799 stations or 79,000.
You hand in a spatial SQL query.
Dataset
- Santander Cycles docking stations (live snapshot) · Point · 799 features · EPSG:4326
What you’ll do
- Filter to stations with no bikes
- Find each one's nearest stocked station with an index-assisted nearest-neighbour search
- Report the distance in metres
KNNLATERALGiSTgeographyperformancetransportOpen problem - Not started, The buffer that shrank on the way to the mapCartographyAnswersCartographyintermediateDifficulty: intermediate200 XP~30 min4 checksCartographyintermediateDifficulty: intermediate
Quantify what a 400 m buffer drawn in EPSG:3857 actually covers on the ground in London, and how much of the coverage report it loses.
You hand in your answers as values.
Datasets
- Santander Cycles docking stations (live snapshot) · Point · 799 features · EPSG:4326
- London boroughs · Polygon · 33 features · EPSG:4326
What you’ll do
- Derive the Web Mercator scale factor at London's latitude
- Translate a projected buffer distance into its ground equivalent
- Re-run the coverage analysis with the shrunken buffer and measure the shortfall
Web Mercatorscale factorprojectionbufferLondonAlso trains Spatial AnalysisOpen problem
12 of 23 problems shown