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.
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.
Participation guide
Operates strictly on synthetic or open-source municipal data templates without impacting physical urban infrastructure. Use mock external writes and human review.
How work is evaluated
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.
Runnable source, pinned dependencies, setup commands, working interface, example outputs, recorded demo, tests, and action logs.
Challenge datasets
Public datasets, plus the private datasets you have access to.
How submissions are scored
These dimensions define what the evaluator checks and which criteria separate a passable run from a strong one.
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.
Missing or incorrect.
Partly complete, with documented gaps.
Complete, with reproducible evidence.
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.
Missing or incorrect.
Partly complete, with documented gaps.
Complete, with reproducible evidence.
Review interface
Command-line tool or simple web interface accepting a CityJSON file and returning instantiated 3D geometries and an instantiation report.
Missing or incorrect.
Partly complete, with documented gaps.
Complete, with reproducible evidence.
Safe execution
Operates strictly on synthetic or open-source municipal data templates without impacting physical urban infrastructure.
This dimension contributes its full weight only when the submission satisfies the requirement. Partial credit is not awarded.
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.
Reference links and supporting material
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.
- 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...
- 2 public reference cases
- 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
- Pydantic AI · Optional
- 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.