Skip to content
Kharita Challenges

Problems

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

12 of 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