Skip to main content
Challenge

Build a CityJSON Geometry Template Instantiator for Urban Assets

Parse CityJSON geometry-templates to instantiate repeating urban assets. Validate template vertex decompression and local transformation positioning before generating explicit geometries for simulation environments.

EngineeringHosted by Vera
Challenge brief

What you are building

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

Parse CityJSON geometry-templates to instantiate repeating urban assets. Validate template vertex decompression and local transformation positioning before generating explicit geometries for simulation environments.

Urban simulation developer

Extract the geometry-templates object and identify reusable vertex arrays from a CityJSON payload.

Locate CityObjects referencing templates and extract their local transformation matrices.

Apply scaling and translation to project template vertices into world coordinates using the provided transforms.

Export explicit geometries and generate a summary report of successfully instantiated objects.

Command-line tool or simple web interface accepting a CityJSON file and returning instantiated 3D geometries and an instantiation report.

Use open-source CityJSON samples or generate synthetic CityJSON payloads containing geometry-templates and template-referencing CityObjects. Starter examples below are synthetic. They are not downloaded records.

CityJSON Implements CityJSON Section 3.4 Geometry templates functionality for implicit geometry instantiation.

pydantic-ai, fastapi, numpy, pytest. Pydantic AI enforces type-safe parsing of complex hierarchical CityJSON structures and geometry templates. Fast hosted instruction-tuned LLM capable of structured JSON generation and schema validation.

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.

Successfully extracts and decompresses template vertices from the geometry-templates object.

Correctly applies local transformation matrices to template vertices.

Identifies and handles missing or invalid template references gracefully.

Produces a valid report detailing the world coordinates of instantiated assets.

```json [ { "input": { "type": "CityJSON", "version": "2.0", "transform": { "scale": [ 1, 1, 1 ], "translate": [ 0, 0, 0 ] }, "geometry-templates": { "templates": [ { "type": "GeometryInstance", "template": 0, "vertices-template": [ [ 0, 0, 0 ], [ 0, 0, 5 ] ] } ], "vertices-templates": [ [ 0, 0, 0 ], [ 0, 0, 5 ] ] }, "CityObjects": { "streetlight-1": { "type": "CityFurniture", "geometry": [ { "type": "GeometryInstance", "template": 0, "transformationMatrix": [ 1, 0, 0, 100, 0, 1, 0, 200, 0, 0, 1, 0, 0, 0, 0, 1 ] } ] } }, "vertices": [] }, "expected_output": { "instantiated_objects": [ { "object_id": "streetlight-1", "template_id": 0, "world_vertices": [ [ 100, 200, 0 ], [ 100, 200, 5 ] ], "status": "SUCCESS" } ], "failed_instantiations": [], "note": "Simplified synthetic app records, not complete official schema files." } }, { "input": { "type": "CityJSON", "version": "2.0", "transform": { "scale": [ 1, 1, 1 ], "translate": [ 0, 0, 0 ] }, "geometry-templates": { "templates": [], "vertices-templates": [] }, "CityObjects": { "tree-1": { "type": "PlantCover", "geometry": [ { "type": "GeometryInstance", "template": 99, "transformationMatrix": [ 1, 0, 0, 50, 0, 1, 0, 50, 0, 0, 1, 0, 0, 0, 0, 1 ] } ] } }, "vertices": [] }, "expected_output": { "instantiated_objects": [], "failed_instantiations": [ { "object_id": "tree-1", "template_id": 99, "reason": "FAILED_MISSING_TEMPLATE" } ], "note": "Simplified synthetic app records, not complete official schema files." } } ] ```

Operates strictly on synthetic or open-source municipal data templates without impacting physical urban infrastructure. Use mock external writes. Require human review before any real deployment.

Rules

Participation guide

Operates strictly on synthetic or open-source municipal data templates without impacting physical urban infrastructure. Use mock external writes and human review.

Delivery guide

How work is evaluated

Evaluation

Successfully extracts and decompresses template vertices from the geometry-templates object. Correctly applies local transformation matrices to template vertices. Identifies and handles missing or invalid template references gracefully. Produces a valid report detailing the world coordinates of instantiated assets.

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

Extract the geometry-templates object and identify reusable vertex arrays from a CityJSON payload. Locate CityObjects referencing templates and extract their local transformation matrices. Apply scaling and translation to project template vertices into world coordinates using the provided transforms. Export explicit geometries and generate a summary report of successfully instantiated objects.

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

Successfully extracts and decompresses template vertices from the geometry-templates object. Correctly applies local transformation matrices to template vertices. Identifies and handles missing or invalid template references gracefully. Produces a valid report detailing the world coordinates of instantiated assets.

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

Command-line tool or simple web interface accepting a CityJSON file and returning instantiated 3D geometries and an instantiation report.

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

Operates strictly on synthetic or open-source municipal data templates without impacting physical urban infrastructure.

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

  • Extract the geometry-templates object and identify reusable vertex arrays from a CityJSON payload.

  • Locate CityObjects referencing templates and extract their local transformation matrices.

  • Apply scaling and translation to project template vertices into world coordinates using the provided transforms.

  • Export explicit geometries and generate a summary report of successfully instantiated objects.

Resources and assets

Reference links and supporting material

Dataset notes

Use open-source CityJSON samples or generate synthetic CityJSON payloads containing geometry-templates and template-referencing CityObjects. 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
  • Extract the geometry-templates object and identify reusable vertex arrays from a CityJSON payload. Locate C...
  • Successfully extracts and decompresses template vertices from the geometry-templates object. Correctly appl...
  • Command-line tool or simple web interface accepting a CityJSON file and returning instantiated 3D geometrie...
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 Geometry Template Instantiator for Urban Assets