Problems
Real geospatial problems, graded automatically. Choose a track, a level and what you want to hand in.
- Not started, Are these country polygons fit to assign cities to?Data qualitySQLPostGIS / SQLadvancedDifficulty: advanced300 XP~45 min5 checksPostGIS / SQLadvancedDifficulty: advanced
A point-in-polygon audit that exposes what 1:50m generalisation does to a coastline — and which places the attribute and the geometry disagree about.
You hand in a spatial SQL query.
Datasets
- Populated places · Point · 1,251 features · EPSG:4326
- Countries · MultiPolygon · 241 features · EPSG:4326
What you’ll do
- Join points to the polygon containing them with an outer join
- Compare an attribute to a derived value with NULL-safe semantics
- Return the disagreement list, including the points nothing contains
ST_Containsouter joinIS DISTINCT FROMgeneralisationdata qualityAlso trains Data ManagementOpen problem - Not started, Build an earthquake contact reconnaissance queueProjectDecision support3 stepsSpatial AnalysisadvancedDifficulty: advanced550 XP~95 min12 checksSpatial AnalysisadvancedDifficulty: advanced
Screen strong shallow events, quantify airfield and settlement proximity, and hand over a traceable contact map.
Worked in 3 steps, each checked before the next one opens.
- Select the event queue · SQL
- Measure contact gaps · Answers
- Hand over the access map · Python
Datasets
- Global M5.5+ earthquakes, Jan–Mar 2025 · Point · 86 features · EPSG:4326
- World airports · Point · 893 features · EPSG:4326
- Populated places · Point · 1,251 features · EPSG:4326
What you’ll do
- Select a reproducible event queue in SQL
- Measure two independent global proximity indicators
- Deliver an auditable access map with an explicit contact-gap distinction
projectUSGSnearest neighbourlogisticsglobalAlso trains Python, Data Management, CartographyOpen project - Not started, Classify a map where most of the values are zeroCartographyAnswersCartographyadvancedDifficulty: advanced290 XP~45 min6 checksCartographyadvancedDifficulty: advanced
Quantile breaks collapse on a distribution dominated by zeros. Measure how, on the river-kilometres-per-country table, and say what a map maker should do instead.
You hand in your answers as values.
Datasets
- Countries · MultiPolygon · 241 features · EPSG:4326
- Rivers and lake centrelines · LineString · 461 features · EPSG:4326
What you’ll do
- Reproduce a derived per-country measure
- Compute quantile and equal-interval breaks on a zero-heavy distribution
- Quantify how each scheme distributes the countries
choroplethclassificationquantileszero-inflatedhydrologyAlso trains Python, Spatial AnalysisOpen problem - Not started, Defend a borough greening shortlistProjectDecision support3 stepsRemote SensingadvancedDifficulty: advanced620 XP~110 min13 checksRemote SensingadvancedDifficulty: advanced
Measure canopy and summer vegetation on their own grids, then add low-ground context and apply one transparent shortlist rule.
Worked in 3 steps, each checked before the next one opens.
- Audit the vegetation rasters · Answers
- Deliver the borough evidence table · Dataset file
- Add low-ground context and shortlist · GeoJSON
Datasets
- 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
- Greater London elevation (Copernicus DEM GLO-30) · Raster · EPSG:4326
- London boroughs · Polygon · 33 features · EPSG:4326
What you’ll do
- Audit the two vegetation measures from observed raster pixels
- Hand over a per-borough canopy and NDVI table as a GIS file
- Add area-weighted low ground and an explicit shortlist flag
zonal statisticsNDVIland coverDEMmulti-criteriaLondonAlso trains Spatial Analysis, Data ManagementOpen project - Not started, Deliver a compact sewer review mapProjectWeb delivery3 stepsWeb GISadvancedDifficulty: advanced580 XP~90 min9 checksWeb GISadvancedDifficulty: advanced
Extract a review cohort, make its browser payload inspectable, and measure the transfer budget.
Worked in 3 steps, each checked before the next one opens.
- Extract the review cohort · SQL
- Prepare the browser layer · Python
- Measure the transfer budget · Answers
Dataset
- NYC 311 sewer requests, 1–7 June 2025 · Point · 408 features · EPSG:4326
What you’ll do
- Query the exact review cohort
- Serve a compact, inspectable WGS 84 point layer
- Measure raw and compressed payload size from the delivered layer
NYC 311urban servicestemporal GISheat mapGeoPandasAlso trains PostGIS / SQL, PythonOpen project - Not started, Deliver a field-ready public asset registerProjectData preparation4 stepsData ManagementadvancedDifficulty: advanced600 XP~105 min17 checksData ManagementadvancedDifficulty: advanced
Merge two open asset extracts into a quality-controlled GeoPackage for field inspection.
Worked in 4 steps, each checked before the next one opens.
- Audit both incoming sources · Answers
- Build the common asset model · Dataset file
- Verify and round coordinates · GeoJSON
- Package and verify the handover · Dataset file
Datasets
- Melbourne toilet source · Point · 7 features · EPSG:4326
- Melbourne drinking-water source · Point · 21 features · EPSG:4326
What you’ll do
- Profile and reconcile two source layers without multiplying assets.
- Normalise access without representing unknown status as public.
- Deliver a reproducible, typed WGS 84 GeoPackage handover.
data-preparationprojectgeopackagemelbournehandoverAlso trains Spatial Analysis, CartographyOpen project - Not started, Deliver an access-safe public toilet layerData preparationDataset fileData ManagementadvancedDifficulty: advanced365 XP~55 min6 checksData ManagementadvancedDifficulty: advanced
Classify access honestly and deliver a typed projected GeoPackage without null locations.
You hand in a prepared dataset file.
Dataset
- Amsterdam toilet access staging · Point · 14 features · EPSG:4326
What you’ll do
- Distinguish missing access from public access.
- Preserve first-source precedence and drop null geometry.
- Deliver a named GeoPackage in the receiving CRS.
data-preparationamsterdamfileAlso trains Spatial AnalysisOpen problem - Not started, Design the global event map and detail serviceGeospatial systemsDecisionsGIS ArchitectureadvancedDifficulty: advanced430 XP~65 min6 checksGIS ArchitectureadvancedDifficulty: advanced
Separate a frequently refreshed spatial overview from authoritative event details and revision history.
You hand in a set of design decisions.
Dataset
- Global M5.5+ earthquakes, Jan–Mar 2025 · Point · 86 features · EPSG:4326
What you’ll do
- Size the cost of browser fan-out against the measured snapshot
- Choose a shared ingestion and overview delivery pattern
- Separate global summary from per-event detail
system designUSGSGeoJSON feedcacheevent revisionsglobalAlso trains Web GIS, Data ManagementOpen problem - Not started, Design the searchable imagery archiveGeospatial systemsDecisionsGIS ArchitectureadvancedDifficulty: advanced460 XP~70 min5 checksGIS ArchitectureadvancedDifficulty: advanced
Choose a search, storage, preview and revision pattern for an imagery service with reproducible results.
You hand in a set of design decisions.
Dataset
- Greater London, Sentinel-2 red and NIR, 11 July 2025 · Raster · EPSG:32630
What you’ll do
- Separate scene discovery from pixel storage and map rendering
- Select an access pattern suited to small viewport reads and flexible band expressions
- Preserve exact-version provenance through corrections
system designSTACcloud optimized GeoTIFFraster tilesprovenanceAlso trains Remote Sensing, Data Management, Web GISOpen problem - Not started, How much of each state is built up?Spatial analysisPythonPythonadvancedDifficulty: advanced320 XP~55 min5 checksPythonadvancedDifficulty: advanced
Overlay the urban footprints on the states in an equal-area projection and credit each side of a state line only what lies on it.
You hand in a Python script.
Datasets
- United States states · Polygon · 51 features · EPSG:4326
- Urban areas · Polygon · 2,143 features · EPSG:4326
What you’ll do
- Reproject both layers to an equal-area CRS
- Clip the urban footprints to the states with an overlay
- Sum clipped area per state and express it as a share of the state's area
GeoPandasoverlayequal-areaAlbersland useAlso trains Spatial Analysis, Data ManagementOpen problem - Not started, Mean NDVI per borough, across a projection boundaryRaster analysisGeoJSONRemote SensingadvancedDifficulty: advanced300 XP~50 min7 checksRemote SensingadvancedDifficulty: advanced
Zonal statistics where the raster is in UTM and the polygons are in WGS 84: reproject the right layer, compute the index per borough, and hand back a map.
You hand in a GeoJSON result.
Datasets
- Greater London, Sentinel-2 red and NIR, 11 July 2025 · Raster · EPSG:32630
- London boroughs · Polygon · 33 features · EPSG:4326
What you’ll do
- Recognise a CRS mismatch between a raster and a vector layer
- Reproject the vector layer rather than resample the raster
- Compute a per-zone mean of a derived index
NDVIzonal statisticsCRSUTMSentinel-2LondonAlso trains Spatial Analysis, Data ManagementOpen problem - Not started, Model event and airfield condition checksGeospatial systemsSchemaData ManagementadvancedDifficulty: advanced520 XP~85 min12 checksData ManagementadvancedDifficulty: advanced
Design a PostGIS schema that keeps earthquake events, airfields and repeated condition checks traceable.
You hand in a database schema (DDL).
What you’ll do
- Model stable event and airfield identities with timestamped condition observations
- Declare point type and WGS 84 SRID at the database boundary
- Build spatial and chronological indexes that support the response dashboard
projectPostGISschemadata engineeringemergency responseAlso trains PostGIS / SQL, GIS ArchitectureOpen problem
12 of 22 problems shown