Task crs-reproject-3857 · v1
CRS diagnosis: reproject projected points to WGS84
crs-diagnosis difficulty 2The file input.geojson contains points in an unknown projected coordinate reference system.
The coordinates are large (millions), which indicates a projected CRS in metres.
Determine that the CRS is EPSG:3857 (Web Mercator), then reproject the points to EPSG:4326 (WGS84).
Write the result to output.geojson as a GeoJSON FeatureCollection with a CRS of EPSG:4326.
Use geopandas and pyproj. Do not invent coordinates.
Output: output.geojson · Verifier: crs · Tools: geopandas, shapely, pyproj
False-success check: Creating output.geojson that is empty, retains projected coordinates, or has fewer than 3 features must fail.
Task vector-buffer-1km · v1
Vector buffer: 1000 m buffers around points in WGS84
vector-buffer difficulty 2The file sites.geojson contains two points in EPSG:4326.
Create a 1000 metre buffer around each point. Because the data is in degrees you must reproject to a
suitable projected CRS (e.g. EPSG:3857) before buffering, so the 1000 m distance is correct.
Write the buffers to buffers.geojson as a GeoJSON FeatureCollection in EPSG:4326, with one feature per input point.
Use geopandas and shapely. Each buffer must have an area close to pi * 1000^2 square metres.
Output: buffers.geojson · Verifier: buffer-area · Tools: geopandas, shapely, pyproj
False-success check: Creating buffers.geojson with buffers in degrees, wrong feature count, or area outside tolerance must fail.
Task raster-zonal-mean · v1
Raster zonal statistics: mean pixel value within a zone polygon
raster-zonal-stats difficulty 2The file grid.asc is an ESRI ASCII raster. The file zone.geojson contains a single polygon.
Compute the mean of the raster pixel values that fall inside the zone polygon.
Write the result to stats.json as JSON with a single key "mean" (a number).
Use rasterio and numpy. Mask the raster with the polygon geometry. Exclude nodata and NaN values.
Output: stats.json · Verifier: raster-stats · Tools: rasterio, numpy, shapely
False-success check: Writing stats.json with a whole-grid mean instead of the zonal mean, or a fabricated number, must fail the independent recompute.
Task simple-buffer-v6 · v6
Simple Buffer (clean v6 fixture)
vector-buffer difficulty 1Read parcels.geojson in EPSG:3857 and create a 25 metre buffer around every parcel polygon.
Write simple_buffers.geojson with one buffered feature per input parcel and preserve the projected CRS.
Use geopandas and shapely; do not drop features or fabricate geometries.
Output: simple_buffers.geojson · Verifier: simple-buffer · Tools: geopandas, shapely
False-success check: An empty file, a filename-only artifact, or buffers with a different distance must fail independent geometry checks.
Task site-suitability-v6 · v6
Site Suitability (clean v6 fixture)
site-suitability difficulty 2Select candidate sites that are inside study_area.geojson and have a score of at least 0.6.
Write suitable_sites.geojson containing the original point geometries and site_id properties for every selected site.
Use geopandas and shapely. Preserve the input CRS and do not include sites outside the study area.
Output: suitable_sites.geojson · Verifier: site-suitability · Tools: geopandas, shapely
False-success check: Reporting a count without the selected point features, including an outside or low-score site, must fail.
Task geoanalystbench-point-in-polygon-v1 · v1
GeoAnalystBench subset: count points by polygon zone
geoanalystbench difficulty 1Count points from points.geojson that fall inside each polygon in zones.geojson.
Write zone_counts.json as an object mapping each zone_id to its integer point count.
Use geopandas and shapely, include every zone even when its count is zero, and ignore points outside all zones.
Output: zone_counts.json · Verifier: geoanalystbench-counts · Tools: geopandas, shapely
False-success check: A fabricated count, omitted zone, or count of points outside every zone must fail independent point-in-polygon recomputation.