Problems
Real geospatial problems, graded automatically. Choose a track, a level and what you want to hand in.
- Not started, Docks and bikes per borough, in one querySpatial analysisSQLPostGIS / SQLbeginnerDifficulty: beginner150 XP~25 min4 checksPostGIS / SQLbeginnerDifficulty: beginner
A point-in-polygon join with GROUP BY — and the outer join that keeps the boroughs with nothing to count.
You hand in a spatial SQL query.
Datasets
- London boroughs · Polygon · 33 features · EPSG:4326
- Santander Cycles docking stations (live snapshot) · Point · 799 features · EPSG:4326
What you’ll do
- Join stations to boroughs with a spatial predicate
- Aggregate per borough
- Keep every borough, including the ones outside the scheme
ST_ContainsGROUP BYouter jointransportLondonAlso trains Spatial AnalysisOpen problem - Not started, Normalise the map before you shade itCartographyGeoJSONCartographybeginnerDifficulty: beginner140 XP~25 min6 checksCartographybeginnerDifficulty: beginner
Turn a count into a rate: population per square kilometre for every country, with the area measured rather than looked up.
You hand in a GeoJSON result.
Dataset
- Countries · MultiPolygon · 241 features · EPSG:4326
What you’ll do
- Measure every polygon's area in an equal-area projection
- Compute a rate by dividing the count by the area
- Return every country, ready to shade
choroplethnormalisationEqual EarthdensityglobalAlso trains Spatial AnalysisOpen problem - Not started, Package one playground location per source featureData preparationDataset fileData ManagementbeginnerDifficulty: beginner130 XP~30 min6 checksData ManagementbeginnerDifficulty: beginner
Turn mixed playground points and areas into a projected GeoPackage site directory.
You hand in a prepared dataset file.
Dataset
- Sydney playground mixed-geometry source · Point · 8 features · EPSG:4326
What you’ll do
- Convert mixed source geometry into a consistent site layer.
- Reproject coordinates to the receiving metric CRS.
- Package exact schema and layer name in GeoPackage.
data-preparationsydneyfileAlso trains Spatial AnalysisOpen problem - Not started, Which airports sit inside a city?Spatial analysisGeoJSONSpatial AnalysisbeginnerDifficulty: beginner130 XP~20 min5 checksSpatial AnalysisbeginnerDifficulty: beginner
Point-in-polygon screening: the airports whose point falls inside a built-up footprint, for a noise-exposure programme.
You hand in a GeoJSON result.
Datasets
- World airports · Point · 893 features · EPSG:4326
- Urban areas · Polygon · 2,143 features · EPSG:4326
What you’ll do
- Test each point for containment in any polygon of a second layer
- Return the qualifying points once each, with their attributes
point-in-polygonspatial joinscreeningaviationglobalAlso trains Data ManagementOpen problem - Not started, Which boroughs is the cycle-hire scheme actually in?Spatial analysisGeoJSONSpatial AnalysisbeginnerDifficulty: beginner130 XP~25 min6 checksSpatial AnalysisbeginnerDifficulty: beginner
Join 799 docking stations to 33 boroughs and rank them by docks per square kilometre.
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
- Spatially join docking stations to the borough that contains them
- Sum docking points per borough without dropping the boroughs that have none
- Measure borough area in a metric CRS and compute docks per km²
spatial joinaggregationCRStransportLondonAlso trains Data ManagementOpen problem - Not started, Which countries have no airport in the registry?Spatial analysisPythonPythonbeginnerDifficulty: beginner150 XP~30 min4 checksPythonbeginnerDifficulty: beginner
A points-in-polygons count as a script the grader runs: one row per country, zeros kept, on a global registry that misses a lot of places.
You hand in a Python script.
Datasets
- Countries · MultiPolygon · 241 features · EPSG:4326
- World airports · Point · 893 features · EPSG:4326
What you’ll do
- Read both layers from /data and join points to polygons with a spatial predicate
- Count per country without losing the countries that count zero
- Assign the finished GeoDataFrame, one row per country, to result
GeoPandasspatial joinreproducibilityaviationglobalAlso trains Spatial AnalysisOpen problem