Skip to main content
Challenge

Build a CityJSON Coordinate Precision and Transformation Verifier

Inspect CityJSON transform matrices and vertex compression precision to verify spatial fidelity. Detect degenerate surface geometries and scale anomalies before municipal GIS federation.

EngineeringHosted by Vera
Challenge brief

What you are building

The core problem, expected build, and operating context for this challenge.

Inspect CityJSON transform matrices and vertex compression precision to verify spatial fidelity. Detect degenerate surface geometries and scale anomalies before municipal GIS federation.

GIS Spatial Data Coordinator

Parse CityJSON root transform object including scale and translate vector arrays.

Decompress integer coordinates to real-world world coordinates across vertex arrays.

Identify zero-area polygons, inverted normal facets, or out-of-bounds geographic coordinates.

Produce transformation fidelity report with recommended quantization tolerance corrections.

Diagnostics dashboard showing coordinate transformation histograms and defective vertex listings.

Generate synthetic CityJSON files with varied transform scales and intentionally corrupted vertices. Starter examples below are synthetic. They are not downloaded records.

CityJSON Directly implements the CityJSON Section 1 Transform Object (scale and translate arrays) and Section 3.1 vertex decoding.

pydantic-ai, numpy, fastapi. Pydantic AI validates strict numerical schemas for transform vectors and vertex coordinate triplets. Local or hosted model supporting schema evaluation and structured JSON output.

Submit runnable source, pinned dependencies, setup commands, a working interface, example outputs, and a recorded end-to-end demo. Include tests and an action log.

Properly verifies that scale vectors contain exactly three positive non-zero floats.

Flags compressed vertices that produce identical real-world coordinates within single polygons.

Outputs decompressed bounding extents matching metadata ranges.

```json [ { "input": { "type": "CityJSON", "version": "2.0", "transform": { "scale": [ 0.001, 0.001, 0.001 ], "translate": [ 10000, 20000, 0 ] }, "vertices": [ [ 0, 0, 0 ], [ 1000, 0, 0 ], [ 1000, 1000, 0 ] ] }, "expected_output": { "transform_valid": true, "vertex_count": 3, "degenerate_polygons": 0, "status": "VALID_GEOMETRY" } }, { "input": { "type": "CityJSON", "version": "2.0", "transform": { "scale": [ 0, 0.001, 0.001 ], "translate": [ 0, 0, 0 ] }, "vertices": [ [ 10, 20, 30 ] ] }, "expected_output": { "transform_valid": false, "vertex_count": 1, "degenerate_polygons": 0, "status": "INVALID_SCALE_VECTOR" } } ] ```

Geometric validation processes geospatial metadata only and modifies no external physical municipal databases. Use mock external writes. Require human review before any real deployment.

Rules

Participation guide

Geometric validation processes geospatial metadata only and modifies no external physical municipal databases. Use mock external writes and human review.

Delivery guide

How work is evaluated

Evaluation

Properly verifies that scale vectors contain exactly three positive non-zero floats. Flags compressed vertices that produce identical real-world coordinates within single polygons. Outputs decompressed bounding extents matching metadata ranges.

Submission format

Runnable source, pinned dependencies, setup commands, working interface, example outputs, recorded demo, tests, and action logs.

Datasets

Challenge datasets

Public datasets, plus the private datasets you have access to.

Evaluation rubric

How submissions are scored

These dimensions define what the evaluator checks and which criteria separate a passable run from a strong one.

Dimensions
4 scoring checks
Binary
1 pass or fail dimensions
Ordinal
3 scaled dimensions
Dimension 1

Complete workflow

Parse CityJSON root transform object including scale and translate vector arrays. Decompress integer coordinates to real-world world coordinates across vertex arrays. Identify zero-area polygons, inverted normal facets, or out-of-bounds geographic coordinates. Produce transformation fidelity report with recommended quantization tolerance corrections.

Score scale
012
Score 0

Missing or incorrect.

Score 1

Partly complete, with documented gaps.

Score 2

Complete, with reproducible evidence.

Dimension 2

Correctness and evidence

Properly verifies that scale vectors contain exactly three positive non-zero floats. Flags compressed vertices that produce identical real-world coordinates within single polygons. Outputs decompressed bounding extents matching metadata ranges.

Score scale
012
Score 0

Missing or incorrect.

Score 1

Partly complete, with documented gaps.

Score 2

Complete, with reproducible evidence.

Dimension 3

Review interface

Diagnostics dashboard showing coordinate transformation histograms and defective vertex listings.

Score scale
012
Score 0

Missing or incorrect.

Score 1

Partly complete, with documented gaps.

Score 2

Complete, with reproducible evidence.

Dimension 4

Safe execution

Geometric validation processes geospatial metadata only and modifies no external physical municipal databases.

Binary check

This dimension contributes its full weight only when the submission satisfies the requirement. Partial credit is not awarded.

Learning goals

What you should walk away with

  • Parse CityJSON root transform object including scale and translate vector arrays.

  • Decompress integer coordinates to real-world world coordinates across vertex arrays.

  • Identify zero-area polygons, inverted normal facets, or out-of-bounds geographic coordinates.

  • Produce transformation fidelity report with recommended quantization tolerance corrections.

Resources and assets

Reference links and supporting material

Dataset notes

Generate synthetic CityJSON files with varied transform scales and intentionally corrupted vertices. Supplied starter examples are synthetic, not source extracts.

Challenge setup

Configuration summary for this challenge.

Challenge input

Input details are not configured.

Pydantic AI

Typed Python agent framework.

Evaluated output

No output checks are configured.

Evaluation checks
  • Parse CityJSON root transform object including scale and translate vector arrays. Decompress integer coordi...
  • Properly verifies that scale vectors contain exactly three positive non-zero floats. Flags compressed verti...
  • Diagnostics dashboard showing coordinate transformation histograms and defective vertex listings.
Configured evaluation evidence
  • 2 public reference cases
Configured runtime
  • 2 configured tools

Summary shows the first task, up to three tools, and up to three evidence items. Open the technical recipe to view all configured items.

View technical recipe

Configured tools

Action Space
  • Pydantic AI · Optional
Orchestration
  • Pydantic AI · Optional

Evaluation contract

  • Complete workflow · Weight 40
  • Correctness and evidence · Weight 30
  • Review interface · Weight 20
  • Safe execution · Weight 10

Reference cases

  • 2 public reference cases

Workflow tasks

No workflow tasks are configured.

Recipe freeze marker

No recipe freeze time is recorded.

Frequently Asked Questions about Build a CityJSON Coordinate Precision and Transformation Verifier