Skip to content
Kharita Challenges

Problems

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

14 of 59 problems

Pick one for me
  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
Show 2 more problems

12 of 14 problems shown