Skip to content
Kharita Challenges

Problems

Real geospatial problems, graded automatically. Choose a track, a level and what you want to hand in.

59 problems

Pick one for me
  1. Not started, Can the cycle parking feed report real capacity?Data preparationSQL

    Clean a Berlin cycle parking staging table for an operations map and capacity rollup.

    Data ManagementbeginnerDifficulty: beginner130 XP~25 min7 checks

    You hand in a spatial SQL query.

    Dataset

    • Berlin bicycle parking capacity staging · Point · 27 features · EPSG:4326

    What you’ll do

    • Resolve source precedence before casting.
    • Keep unknown capacity distinct from zero.
    • Return geometry for the operational map.
    data-preparationberlinsqlAlso trains PostGIS / SQL
    Open problem
  2. Not started, Docks and bikes per borough, in one querySpatial analysisSQL

    A point-in-polygon join with GROUP BY — and the outer join that keeps the boroughs with nothing to count.

    PostGIS / SQLbeginnerDifficulty: beginner150 XP~25 min4 checks

    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 Analysis
    Open problem
  3. Not started, How many mapped rivers touch each country?Spatial analysisSQL

    ST_Intersects between lines and polygons with GROUP BY — and the outer join that keeps the countries with none.

    PostGIS / SQLbeginnerDifficulty: beginner150 XP~25 min4 checks

    You hand in a spatial SQL query.

    Datasets

    • Countries · MultiPolygon · 241 features · EPSG:4326
    • Rivers and lake centrelines · LineString · 461 features · EPSG:4326

    What you’ll do

    • Join lines to polygons with a spatial predicate
    • Aggregate per polygon
    • Keep every polygon, including those with no match
    ST_IntersectsGROUP BYouter joinhydrologyglobal
    Open problem
  4. Not started, How many tiles does an offline London need?Web deliveryAnswers

    From a bounding box to a tile count: size the offline basemap for a field app across zoom 10–15.

    Web GISbeginnerDifficulty: beginner140 XP~25 min3 checks

    You hand in your answers as values.

    Dataset

    • London boroughs · Polygon · 33 features · EPSG:4326

    What you’ll do

    • Take the bounding box of the borough layer
    • Convert box corners to tile coordinates at each zoom
    • Count tiles per zoom and total them into a storage estimate
    XYZ tilesWeb Mercatorofflinecapacity planningLondonAlso trains Cartography
    Open problem
  5. Not started, Make the pharmacy handover loadableData preparationPython

    Repair a field table so a Paris health directory can map its pharmacy locations reliably.

    Data ManagementbeginnerDifficulty: beginner125 XP~25 min6 checks

    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 Python
    Open problem
  6. Not started, Normalise the map before you shade itCartographyGeoJSON

    Turn a count into a rate: population per square kilometre for every country, with the area measured rather than looked up.

    CartographybeginnerDifficulty: beginner140 XP~25 min6 checks

    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 Analysis
    Open problem
  7. Not started, Package one playground location per source featureData preparationDataset file

    Turn mixed playground points and areas into a projected GeoPackage site directory.

    Data ManagementbeginnerDifficulty: beginner130 XP~30 min6 checks

    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 Analysis
    Open problem
  8. Not started, What is Greater London made of?Raster analysisAnswers

    A class histogram on a 10 m land-cover raster: the shares a planning document quotes, and the reason a pixel count is not quite an area.

    Remote SensingbeginnerDifficulty: beginner140 XP~25 min5 checks

    You hand in your answers as values.

    Dataset

    • Greater London land cover 2021 (ESA WorldCover 10 m) · Raster · EPSG:4326

    What you’ll do

    • Read a categorical raster and count pixels per class
    • Express classes as shares of the valid pixels
    • State what the number is and is not
    land coverWorldCoverhistogramrasterLondonAlso trains Data Management
    Open problem
  9. Not started, Which airport codes will break the schedule join?Data qualityAnswers

    Audit a registry's identifiers before they become a join key: missing, malformed and duplicated codes, and positions that are only approximate.

    Data ManagementbeginnerDifficulty: beginner130 XP~25 min5 checks

    You hand in your answers as values.

    Dataset

    • World airports · Point · 893 features · EPSG:4326

    What you’ll do

    • Find nulls, duplicates and malformed values in an identifier column
    • Distinguish a key defect from a position defect
    • Report counts the integration can be sized against
    data qualityidentifiersjoin keysaviationAlso trains Python
    Open problem
  10. Not started, Which airports sit inside a city?Spatial analysisGeoJSON

    Point-in-polygon screening: the airports whose point falls inside a built-up footprint, for a noise-exposure programme.

    Spatial AnalysisbeginnerDifficulty: beginner130 XP~20 min5 checks

    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 Management
    Open problem
  11. Not started, Which boroughs is the cycle-hire scheme actually in?Spatial analysisGeoJSON

    Join 799 docking stations to 33 boroughs and rank them by docks per square kilometre.

    Spatial AnalysisbeginnerDifficulty: beginner130 XP~25 min6 checks

    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 Management
    Open problem
  12. Not started, Which countries have no airport in the registry?Spatial analysisPython

    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.

    PythonbeginnerDifficulty: beginner150 XP~30 min4 checks

    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 Analysis
    Open problem
  13. Not started, Accept the rasters, or send them backData qualityAnswers

    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.

    Data ManagementintermediateDifficulty: intermediate200 XP~35 min6 checks

    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 Sensing
    Open problem
  14. Not started, Airports per state, as a script that runs againSpatial analysisPython

    Spatially join a global airport layer to US states and hand back one row per state, zeros included — in a script the grader runs.

    PythonintermediateDifficulty: intermediate190 XP~35 min5 checks

    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 Analysis
    Open problem
  15. Not started, At which zoom does every capital get its own tile?Web deliveryAnswers

    Count capitals per XYZ tile across zooms to decide where a label layer switches from clustering to one label per city.

    Web GISintermediateDifficulty: intermediate180 XP~25 min4 checks

    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 Cartography
    Open problem
  16. Not started, At which zoom does the dock layer fit in a tile?Web deliveryAnswers

    Count features per XYZ tile across zoom levels to set a vector-tile pipeline's minimum zoom and its per-tile limit honestly.

    Web GISintermediateDifficulty: intermediate190 XP~30 min4 checks

    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 Analysis
    Open problem
  17. Not started, Build the global seismic reconnaissance watchlistDecision supportPython

    Turn a fixed USGS event feed into a mapped, reproducible shallow strong-event watchlist for requesting impact products.

    Spatial AnalysisintermediateDifficulty: intermediate240 XP~40 min5 checks

    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, Cartography
    Open problem
  18. Not started, How big does Web Mercator make Greenland?CartographyAnswers

    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.

    CartographyintermediateDifficulty: intermediate210 XP~30 min4 checks

    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 Analysis
    Open problem
  19. Not started, How green was London on 11 July 2025?Raster analysisAnswers

    Compute NDVI from a two-band Sentinel-2 clip, handle nodata and integer types properly, and report the distribution a monitoring programme quotes.

    Remote SensingintermediateDifficulty: intermediate220 XP~35 min4 checks

    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 mathnodataLondon
    Open problem
  20. Not started, How much of each borough lies below ten metres?Raster analysisGeoJSON

    Threshold a DEM, count inside polygons, and turn pixels into square kilometres on a geographic grid — a flood-screening figure per borough.

    Spatial AnalysisintermediateDifficulty: intermediate240 XP~40 min6 checks

    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 Sensing
    Open problem
  21. Not started, How much of Inner London is a five-minute walk from a dock?Spatial analysisGeoJSON

    Buffer, dissolve and clip: the covered share of each Inner London borough at a 400 m walk.

    Spatial AnalysisintermediateDifficulty: intermediate240 XP~45 min5 checks

    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 Cartography
    Open problem
  22. Not started, Protect the bus stop key during the loadData preparationSQL

    Recover zero-padded stop identifiers before a transport timetable join.

    Data ManagementintermediateDifficulty: intermediate210 XP~40 min7 checks

    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 / SQL
    Open problem
  23. Not started, Redirect the rider at an empty dockDecision supportSQL

    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.

    PostGIS / SQLintermediateDifficulty: intermediate250 XP~40 min5 checks

    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
    KNNLATERALGiSTgeographyperformancetransport
    Open problem
  24. Not started, The buffer that shrank on the way to the mapCartographyAnswers

    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.

    CartographyintermediateDifficulty: intermediate200 XP~30 min4 checks

    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 Analysis
    Open problem
  25. Not started, When the attributes and the geometry disagreeData qualityAnswers

    A reference gazetteer carries a latitude and a longitude column beside its geometry. Audit how far apart they are, and what else does not add up.

    Data ManagementintermediateDifficulty: intermediate200 XP~35 min5 checks

    You hand in your answers as values.

    Dataset

    • Populated places · Point · 1,251 features · EPSG:4326

    What you’ll do

    • Compare each feature's geometry to the coordinate attributes it carries
    • Count the disagreements at two thresholds and identify the worst
    • Find keys the downstream spreadsheet cannot distinguish
    data qualitygazetteerhaversineduplicatesglobalAlso trains Python
    Open problem
  26. Not started, Where are the bikes, as a share of the docks?Spatial analysisPython

    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.

    PythonintermediateDifficulty: intermediate190 XP~35 min5 checks

    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 Analysis
    Open problem
  27. Not started, Where should a waterway survey start?Decision supportSQL

    Screen large global urban footprints for mapped river contact while keeping scale limitations explicit.

    Spatial AnalysisintermediateDifficulty: intermediate320 XP~50 min9 checks

    You hand in a spatial SQL query.

    Datasets

    • Urban areas · Polygon · 2,143 features · EPSG:4326
    • Rivers and lake centrelines · LineString · 461 features · EPSG:4326

    What you’ll do

    • Apply a spatial join to real river and urban geometry
    • Keep zero-contact footprints in the inventory
    • Distinguish map-scale contact classes for survey planning
    Natural Earthurban waterPostGISspatial screeningcategorical mapglobalAlso trains PostGIS / SQL, Cartography, Data Management
    Open problem
  28. Not started, Where should the sewer service desk review closure lag?Decision supportPython

    Turn a fixed 311 complaint cohort into a map of requests open longer than an analyst-defined day.

    Spatial AnalysisintermediateDifficulty: intermediate320 XP~50 min5 checks

    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 Management
    Open problem
  29. Not started, Which airfields should the response desk check?Decision supportSQL

    Use a metre-based spatial join to identify civil airfields near strong, shallow earthquake epicentres, with the facilities drawn on the map.

    PostGIS / SQLintermediateDifficulty: intermediate260 XP~45 min6 checks

    You hand in a spatial SQL query.

    Datasets

    • Global M5.5+ earthquakes, Jan–Mar 2025 · Point · 86 features · EPSG:4326
    • World airports · Point · 893 features · EPSG:4326

    What you’ll do

    • Filter events by magnitude and depth
    • Join the selected events to civil airfields within 250 km in metres
    • Return traceable, mapped airport points and measured distances
    PostGISearthquake responseairportsgeographyglobalAlso trains Spatial Analysis, Cartography
    Open problem
  30. Not started, Which boroughs have the least tree cover?Raster analysisGeoJSON

    Zonal statistics on a categorical raster: the share of tree-cover pixels inside each borough polygon, for a tree-planting programme's targeting.

    Remote SensingintermediateDifficulty: intermediate230 XP~40 min7 checks

    You hand in a GeoJSON result.

    Datasets

    • Greater London land cover 2021 (ESA WorldCover 10 m) · Raster · EPSG:4326
    • London boroughs · Polygon · 33 features · EPSG:4326

    What you’ll do

    • Compute zonal statistics of a categorical raster over polygons
    • Express the class as a share per zone
    • Return the polygons ready for a choropleth
    zonal statisticsland coverraster–vectorWorldCoverLondonAlso trains Spatial Analysis
    Open problem
  31. Not started, Which capitals are more than an hour from a scheduled airport?Decision supportGeoJSON

    Nearest-neighbour from 200 national capitals to 872 civil airports, geodesically, with a threshold that has to be applied honestly.

    Spatial AnalysisintermediateDifficulty: intermediate230 XP~40 min5 checks

    You hand in a GeoJSON result.

    Datasets

    • Populated places · Point · 1,251 features · EPSG:4326
    • World airports · Point · 893 features · EPSG:4326

    What you’ll do

    • Filter the places to national capitals and the airports to civil scheduled-traffic fields
    • Find each capital's nearest qualifying airport with a geodesic distance
    • Keep the capitals beyond 75 km and report the airport and the distance
    nearest neighbourgeodesichaversinelogisticsglobalAlso trains Data Management
    Open problem
  32. Not started, Which places can the emissions change map actually compare?Data qualityPython

    Audit two-date indicator coverage and map the places excluded before showing a climate trend.

    Data ManagementintermediateDifficulty: intermediate290 XP~45 min6 checks

    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, Cartography
    Open problem
  33. Not started, Which ports are within 25 km of a capital?Spatial analysisSQL

    ST_DWithin on geography: a proximity join in true metres that the index can still answer.

    PostGIS / SQLintermediateDifficulty: intermediate220 XP~35 min5 checks

    You hand in a spatial SQL query.

    Datasets

    • Populated places · Point · 1,251 features · EPSG:4326
    • Ports · Point · 1,081 features · EPSG:4326

    What you’ll do

    • Write a proximity join with ST_DWithin
    • Measure in metres on SRID 4326 data by casting to geography
    • Keep the predicate in a form the GiST index can serve
    ST_DWithingeographyGiSTproximityglobal
    Open problem
  34. Not started, Which ports in the registry are the same port?Data qualityAnswers

    Find probable duplicates in a facility registry by combining a name match with a distance rule — and separate them from the honest homonyms.

    Data ManagementintermediateDifficulty: intermediate190 XP~30 min4 checks

    You hand in your answers as values.

    Dataset

    • Ports · Point · 1,081 features · EPSG:4326

    What you’ll do

    • Find repeated identifiers in a registry
    • Combine an attribute match with a spatial rule to separate duplicates from homonyms
    • Size the missing attribute that would resolve the rest
    data qualitydeduplicationhaversineregistryglobalAlso trains Spatial Analysis
    Open problem
  35. Not started, Why a cloud-optimised GeoTIFF is cheap to serveWeb deliveryAnswers

    Read a COG's internal structure — tiles, overviews, bytes — and turn it into the numbers a tile server's capacity plan rests on.

    GIS ArchitectureintermediateDifficulty: intermediate200 XP~30 min4 checks

    You hand in your answers as values.

    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

    What you’ll do

    • Read a GeoTIFF's block size and overview structure
    • Count internal tiles from dimensions and block size
    • Relate the structure to what a tile request costs
    COGGeoTIFFtile servercapacity planningrasterAlso trains Web GIS
    Open problem
  36. Not started, Are these country polygons fit to assign cities to?Data qualitySQL

    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.

    PostGIS / SQLadvancedDifficulty: advanced300 XP~45 min5 checks

    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 Management
    Open problem
  37. Not started, Build an earthquake contact reconnaissance queueProjectDecision support3 steps

    Screen strong shallow events, quantify airfield and settlement proximity, and hand over a traceable contact map.

    Spatial AnalysisadvancedDifficulty: advanced550 XP~95 min12 checks

    Worked in 3 steps, each checked before the next one opens.

    1. Select the event queue · SQL
    2. Measure contact gaps · Answers
    3. 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, Cartography
    Open project
  38. Not started, Classify a map where most of the values are zeroCartographyAnswers

    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.

    CartographyadvancedDifficulty: advanced290 XP~45 min6 checks

    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 Analysis
    Open problem
  39. Not started, Defend a borough greening shortlistProjectDecision support3 steps

    Measure canopy and summer vegetation on their own grids, then add low-ground context and apply one transparent shortlist rule.

    Remote SensingadvancedDifficulty: advanced620 XP~110 min13 checks

    Worked in 3 steps, each checked before the next one opens.

    1. Audit the vegetation rasters · Answers
    2. Deliver the borough evidence table · Dataset file
    3. 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 Management
    Open project
  40. Not started, Deliver a compact sewer review mapProjectWeb delivery3 steps

    Extract a review cohort, make its browser payload inspectable, and measure the transfer budget.

    Web GISadvancedDifficulty: advanced580 XP~90 min9 checks

    Worked in 3 steps, each checked before the next one opens.

    1. Extract the review cohort · SQL
    2. Prepare the browser layer · Python
    3. 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, Python
    Open project
  41. Not started, Deliver a field-ready public asset registerProjectData preparation4 steps

    Merge two open asset extracts into a quality-controlled GeoPackage for field inspection.

    Data ManagementadvancedDifficulty: advanced600 XP~105 min17 checks

    Worked in 4 steps, each checked before the next one opens.

    1. Audit both incoming sources · Answers
    2. Build the common asset model · Dataset file
    3. Verify and round coordinates · GeoJSON
    4. 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, Cartography
    Open project
  42. Not started, Deliver an access-safe public toilet layerData preparationDataset file

    Classify access honestly and deliver a typed projected GeoPackage without null locations.

    Data ManagementadvancedDifficulty: advanced365 XP~55 min6 checks

    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 Analysis
    Open problem
  43. Not started, Design the global event map and detail serviceGeospatial systemsDecisions

    Separate a frequently refreshed spatial overview from authoritative event details and revision history.

    GIS ArchitectureadvancedDifficulty: advanced430 XP~65 min6 checks

    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 Management
    Open problem
  44. Not started, Design the searchable imagery archiveGeospatial systemsDecisions

    Choose a search, storage, preview and revision pattern for an imagery service with reproducible results.

    GIS ArchitectureadvancedDifficulty: advanced460 XP~70 min5 checks

    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 GIS
    Open problem
  45. Not started, How much of each state is built up?Spatial analysisPython

    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.

    PythonadvancedDifficulty: advanced320 XP~55 min5 checks

    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 Management
    Open problem
  46. Not started, Mean NDVI per borough, across a projection boundaryRaster analysisGeoJSON

    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.

    Remote SensingadvancedDifficulty: advanced300 XP~50 min7 checks

    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 Management
    Open problem
  47. Not started, Model event and airfield condition checksGeospatial systemsSchema

    Design a PostGIS schema that keeps earthquake events, airfields and repeated condition checks traceable.

    Data ManagementadvancedDifficulty: advanced520 XP~85 min12 checks

    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 Architecture
    Open problem
  48. Not started, Plan a cycle redistribution shiftProjectDecision support3 steps

    Classify the dock snapshot, propose bounded bike moves, and size the resulting shift with its unserved stations visible.

    Spatial AnalysisadvancedDifficulty: advanced600 XP~100 min11 checks

    Worked in 3 steps, each checked before the next one opens.

    1. Classify the snapshot · SQL
    2. Map feasible transfers · GeoJSON
    3. Size the preliminary shift · Answers

    Dataset

    • Santander Cycles docking stations (live snapshot) · Point · 799 features · EPSG:4326

    What you’ll do

    • Classify full and empty active stations in SQL
    • Build a bounded nearest-source transfer map
    • Size a shift and report unserved empties from the same rules
    nearest neighbouroperationscapacityCRStransportLondonAlso trains Data Management, GIS Architecture
    Open project
  49. Not started, Polling a live feed: what does it cost per day?Web deliveryAnswers

    Size the transfer cost of a live layer from the file as served — uncompressed, gzipped, and per day at scale — before choosing between polling and push.

    GIS ArchitectureadvancedDifficulty: advanced280 XP~35 min3 checks

    You hand in your answers as values.

    Dataset

    • Santander Cycles docking stations (live snapshot) · Point · 799 features · EPSG:4326

    What you’ll do

    • Measure a payload as served rather than as re-encoded
    • Quantify what transport compression buys
    • Extrapolate a polling design to a daily transfer figure
    capacity planningpollinggzippayloadarchitectureAlso trains Web GIS
    Open problem
  50. Not started, Repair the park intake without losing its second partData preparationPython

    Repair an invalid park outline while preserving every valid polygon component.

    Data ManagementadvancedDifficulty: advanced370 XP~55 min6 checks

    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 Python
    Open problem
  51. Not started, Screen capital access exceptionsDecision supportGeoJSON

    Use airport and port proximity to flag capitals that need direct logistics verification.

    Spatial AnalysisadvancedDifficulty: advanced580 XP~100 min6 checks

    You hand in a GeoJSON result.

    Datasets

    • Populated places · Point · 1,251 features · EPSG:4326
    • World airports · Point · 893 features · EPSG:4326
    • Ports · Point · 1,081 features · EPSG:4326

    What you’ll do

    • Compute nearest-neighbour distances from capitals to two facility layers, geodesically
    • Apply an ordered rule set to derive a category
    • Return the exceptions with the distances that justify them
    nearest neighbourgeodesicclassificationlogisticsglobalAlso trains Data Management
    Open problem
  52. Not started, Screen Newham’s greening gridProjectRaster analysis3 steps

    Audit a real land-cover chip, deliver a measured grid file, and identify cells for field verification.

    Remote SensingadvancedDifficulty: advanced600 XP~100 min10 checks

    Worked in 3 steps, each checked before the next one opens.

    1. Audit the class chip · Answers
    2. Hand over the measured grid · Dataset file
    3. Map field-verification cells · GeoJSON

    Datasets

    • Newham WorldCover 2021 class chip · Raster · EPSG:4326
    • London boroughs · Polygon · 33 features · EPSG:4326

    What you’ll do

    • Audit class counts in the clipped raster
    • Prepare a traceable borough grid as an uploaded GIS file
    • Return only cells that meet a stated greening screen
    NewhamWorldCoverurban greeningoffline rasterAlso trains Data Management, Spatial Analysis
    Open project
  53. Not started, Show country CO2 change without losing the outlierCartographyPython

    Join two WDI observations to country polygons, preserve the true change, and cap only the display value.

    CartographyadvancedDifficulty: advanced500 XP~85 min7 checks

    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 Management
    Open problem
  54. Not started, Urban share of each state, in SQLSpatial analysisSQL

    ST_Intersection for the pieces and ST_Area on geography for the metres — the overlay-and-measure pattern inside the database.

    PostGIS / SQLadvancedDifficulty: advanced300 XP~45 min5 checks

    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 Analysis
    Open problem
  55. Not started, Which big cities does the gazetteer not know?Data qualityGeoJSON

    Test one layer's completeness against another: large urban footprints with no populated place inside them at all.

    Data ManagementadvancedDifficulty: advanced300 XP~45 min5 checks

    You hand in a GeoJSON result.

    Datasets

    • Urban areas · Polygon · 2,143 features · EPSG:4326
    • Populated places · Point · 1,251 features · EPSG:4326

    What you’ll do

    • Measure footprint area in an equal-area projection and apply a size floor
    • Test each footprint for containment of any point from a second layer
    • Return the uncovered footprints with the area that says how much they matter
    completenessspatial joinequal-areagazetteerglobalAlso trains Spatial Analysis
    Open problem
  56. Not started, Which metros straddle an international border?Spatial analysisGeoJSON

    Overlay 2,143 urban footprints on 241 countries and keep the ones with real built-up area on both sides of a line.

    Spatial AnalysisadvancedDifficulty: advanced320 XP~50 min5 checks

    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 Management
    Open problem
  57. Not started, Which neighborhoods merit a service follow-up?Decision supportSQL

    Join geocoded service requests to neighborhood polygons and map a review share only where the sample supports it.

    PostGIS / SQLadvancedDifficulty: advanced390 XP~65 min8 checks

    You hand in a spatial SQL query.

    Datasets

    • 2020 Neighborhood Tabulation Areas · MultiPolygon · 262 features · EPSG:4326
    • NYC 311 sewer requests, 1–7 June 2025 · Point · 408 features · EPSG:4326

    What you’ll do

    • Join incident locations to neighborhoods with a boundary-inclusive predicate
    • Compute elapsed-time review share with a clear denominator
    • Suppress very small denominator areas before mapping percentages
    NYC 311PostGISspatial joinservice operationsgraduated mapAlso trains Spatial Analysis, Cartography, Data Management
    Open problem
  58. Not started, River kilometres per country, measured on the ellipsoidSpatial analysisPython

    Clip the river centrelines to the country polygons and measure each piece geodesically — no projection is right for a layer that spans the planet.

    PythonexpertDifficulty: expert400 XP~70 min6 checks

    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 Management
    Open problem
  59. Not started, Screen rivers for a shared-water annexSpatial analysisPython

    Measure mapped river lengths by country and screen the rivers whose courses are meaningfully shared.

    PythonexpertDifficulty: expert650 XP~120 min7 checks

    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 Management
    Open problem

That’s all 59 problems.

Back to filters