Problems
Real geospatial problems, graded automatically. Choose a track, a level and what you want to hand in.
- Not started, Make the pharmacy handover loadableData preparationPythonData ManagementbeginnerDifficulty: beginner125 XP~25 min6 checksData ManagementbeginnerDifficulty: beginner
Repair a field table so a Paris health directory can map its pharmacy locations reliably.
You hand in a Python script.
Dataset
- Raw Paris pharmacy handover · Table · 21 rows · EPSG:4326
What you’ll do
- Parse and validate coordinates before constructing point geometry.
- Preserve the first source record for each reference.
- Deliver a typed, spatially plausible point layer.
data-preparationcoordinatesquality-controlparisAlso trains PythonOpen 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, 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, 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, Where should the sewer service desk review closure lag?Decision supportPythonSpatial AnalysisintermediateDifficulty: intermediate320 XP~50 min5 checksSpatial AnalysisintermediateDifficulty: intermediate
Turn a fixed 311 complaint cohort into a map of requests open longer than an analyst-defined day.
You hand in a Python script.
Dataset
- NYC 311 sewer requests, 1–7 June 2025 · Point · 408 features · EPSG:4326
What you’ll do
- Calculate closure lag from timestamp fields without inventing values for open requests
- Select the service manager's review queue
- Map the concentration of selected requests while retaining per-request details
NYC 311urban servicestemporal GISheat mapGeoPandasAlso trains Python, Cartography, Data ManagementOpen problem - Not started, Which places can the emissions change map actually compare?Data qualityPythonData ManagementintermediateDifficulty: intermediate290 XP~45 min6 checksData ManagementintermediateDifficulty: intermediate
Audit two-date indicator coverage and map the places excluded before showing a climate trend.
You hand in a Python script.
Datasets
- Countries · MultiPolygon · 241 features · EPSG:4326
- CO2 per capita by country, 2010 and 2022 · Point · 241 features · EPSG:4326
What you’ll do
- Audit missingness before a two-date map is interpreted
- Prevent a many-to-many join on nonstandard ISO codes
- Show complete and incomplete coverage on real country polygons
World Bankdata qualitymissing datacategorical mapglobalAlso trains Python, CartographyOpen 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, 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, 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, Repair the park intake without losing its second partData preparationPythonData ManagementadvancedDifficulty: advanced370 XP~55 min6 checksData ManagementadvancedDifficulty: advanced
Repair an invalid park outline while preserving every valid polygon component.
You hand in a Python script.
Dataset
- Cape Town park polygons, geometry intake · Polygon · 11 features · EPSG:4326
What you’ll do
- Repair topology without discarding area.
- Handle null geometry and source precedence before release.
- Deliver a uniform polygon type.
data-preparationcape townpythonAlso trains PythonOpen problem - Not started, Show country CO2 change without losing the outlierCartographyPythonCartographyadvancedDifficulty: advanced500 XP~85 min7 checksCartographyadvancedDifficulty: advanced
Join two WDI observations to country polygons, preserve the true change, and cap only the display value.
You hand in a Python script.
Datasets
- Countries · MultiPolygon · 241 features · EPSG:4326
- CO2 per capita by country, 2010 and 2022 · Point · 241 features · EPSG:4326
What you’ll do
- Audit and join two independently sourced global datasets on a stable country key
- Calculate signed per-capita change while excluding missing year pairs
- Publish a diverging polygon map with a disclosed display cap and the true values retained
projectWorld BankNatural Earthdata joindiverging mapglobalAlso trains Python, 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
That’s all 14 problems.
Back to filters