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, 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 - 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, 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, Where are the bikes, as a share of the docks?Spatial analysisPythonPythonintermediateDifficulty: intermediate190 XP~35 min5 checksPythonintermediateDifficulty: intermediate
A scripted per-borough ratio from a live snapshot: bikes over docking points, every borough kept, so it can run again on the next snapshot.
You hand in a Python script.
Datasets
- London boroughs · Polygon · 33 features · EPSG:4326
- Santander Cycles docking stations (live snapshot) · Point · 799 features · EPSG:4326
What you’ll do
- Read both layers from /data and assign stations to boroughs with a spatial predicate
- Sum two columns per borough and compute their ratio, with zero where the denominator is zero
- Assign the finished GeoDataFrame, one row per borough, to result
GeoPandasspatial joinratioreproducibilitytransportLondonAlso trains Spatial AnalysisOpen 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, Urban share of each state, in SQLSpatial analysisSQLPostGIS / SQLadvancedDifficulty: advanced
ST_Intersection for the pieces and ST_Area on geography for the metres — the overlay-and-measure pattern inside the database.
You hand in a spatial SQL query.
Datasets
- United States states · Polygon · 51 features · EPSG:4326
- Urban areas · Polygon · 2,143 features · EPSG:4326
What you’ll do
- Overlay polygons with ST_Intersection
- Measure the pieces on geography rather than in degrees
- Aggregate per state, keeping the states with nothing
ST_IntersectiongeographyoverlayGROUP BYland useAlso trains Spatial AnalysisOpen problem - Not started, Which metros straddle an international border?Spatial analysisGeoJSONSpatial AnalysisadvancedDifficulty: advanced320 XP~50 min5 checksSpatial AnalysisadvancedDifficulty: advanced
Overlay 2,143 urban footprints on 241 countries and keep the ones with real built-up area on both sides of a line.
You hand in a GeoJSON result.
Datasets
- Urban areas · Polygon · 2,143 features · EPSG:4326
- Countries · MultiPolygon · 241 features · EPSG:4326
What you’ll do
- Overlay a footprint layer on a boundary layer
- Measure the pieces in an equal-area projection and apply a minimum
- Aggregate pieces back to the footprint and keep the multi-country ones
overlayequal-areaaggregationbordersglobalAlso trains Data ManagementOpen problem - Not started, River kilometres per country, measured on the ellipsoidSpatial analysisPythonPythonexpertDifficulty: expert400 XP~70 min6 checksPythonexpertDifficulty: expert
Clip the river centrelines to the country polygons and measure each piece geodesically — no projection is right for a layer that spans the planet.
You hand in a Python script.
Datasets
- Countries · MultiPolygon · 241 features · EPSG:4326
- Rivers and lake centrelines · LineString · 461 features · EPSG:4326
What you’ll do
- Find every river–country pair that intersects
- Cut each river to the country polygon
- Measure the pieces geodesically and sum per country
GeoPandaspyprojgeodesicoverlayhydrologyglobalAlso trains Spatial Analysis, Data ManagementOpen problem - Not started, Screen rivers for a shared-water annexSpatial analysisPythonPythonexpertDifficulty: expert
Measure mapped river lengths by country and screen the rivers whose courses are meaningfully shared.
You hand in a Python script.
Datasets
- Rivers and lake centrelines · LineString · 461 features · EPSG:4326
- Countries · MultiPolygon · 241 features · EPSG:4326
What you’ll do
- Intersect every river with every country it touches and measure each piece geodesically
- Aggregate the pieces per river into a count of meaningful holders and a dominance share
- Assign the shared rivers, ranked by how evenly they are shared, to result
GeoPandaspyprojgeodesicoverlayhydrologyglobalAlso trains Spatial Analysis, Data ManagementOpen problem