Skip to main content
Challenge

Build a CityJSON 2.0 Material and Texture Appearance Auditor

Inspect 3D city models in CityJSON 2.0 format to verify surface material and texture definitions. Flag missing material mapping indices and calculate surface solar reflectance values for urban cooling studies.

EngineeringHosted by Vera
Challenge brief

What you are building

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

Inspect 3D city models in CityJSON 2.0 format to verify surface material and texture definitions. Flag missing material mapping indices and calculate surface solar reflectance values for urban cooling studies.

Urban digital twin specialist

Parse CityJSON 2.0 Appearance objects containing materials and textures.

Verify material mapping arrays across CityObject surface boundaries.

Extract solar reflectance and thermal emissivity values from assigned surface materials.

Generate a diagnostic report flagging untextured surfaces and albedo inconsistencies.

Web 3D surface inspector displaying polygon material shaders and reflectance heatmaps.

Download CityJSON files with appearance definitions from the 3DCityDB sample repository or construct mock CityJSON appearance objects. Starter examples below are synthetic. They are not downloaded records.

CityJSON Implements CityJSON Section 1 & Section 6 Appearance Object specifications for surface textures and materials.

haystack, pydantic, fastapi. Haystack coordinates multi-step data pipelines and property document retrieval across urban material libraries. Hosted general LLM capable of evaluating JSON data structures and physical surface material properties.

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.

Verifies that material indices in boundary surfaces map to declared appearance materials.

Calculates area-weighted mean surface albedo for audited building envelopes.

Flags geometries referencing non-existent material identifiers.

```json [ { "input": { "appearance": { "materials": [ { "name": "CoolRoofMembrane", "diffuseColor": [ 0.9, 0.9, 0.9 ], "solar_reflectance": 0.82 } ] }, "building_surface": { "id": "Roof-A1", "material_index": 0, "area_sqm": 250 } }, "expected_output": { "surface_id": "Roof-A1", "material_name": "CoolRoofMembrane", "solar_reflectance": 0.82, "status": "VALID", "errors": [] } }, { "input": { "appearance": { "materials": [ { "name": "DarkAsphaltShingle", "diffuseColor": [ 0.1, 0.1, 0.1 ], "solar_reflectance": 0.15 } ] }, "building_surface": { "id": "Roof-B2", "material_index": 4, "area_sqm": 120 } }, "expected_output": { "surface_id": "Roof-B2", "material_name": null, "solar_reflectance": null, "status": "INDEX_ERROR", "errors": [ "Material index 4 out of bounds for appearance array of length 1" ] } } ] ```

Performs read-only validation of municipal 3D models without impacting live municipal databases. Use mock external writes. Require human review before any real deployment.

Rules

Participation guide

Performs read-only validation of municipal 3D models without impacting live municipal databases. Use mock external writes and human review.

Delivery guide

How work is evaluated

Evaluation

Verifies that material indices in boundary surfaces map to declared appearance materials. Calculates area-weighted mean surface albedo for audited building envelopes. Flags geometries referencing non-existent material identifiers.

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 2.0 Appearance objects containing materials and textures. Verify material mapping arrays across CityObject surface boundaries. Extract solar reflectance and thermal emissivity values from assigned surface materials. Generate a diagnostic report flagging untextured surfaces and albedo inconsistencies.

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

Verifies that material indices in boundary surfaces map to declared appearance materials. Calculates area-weighted mean surface albedo for audited building envelopes. Flags geometries referencing non-existent material identifiers.

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

Web 3D surface inspector displaying polygon material shaders and reflectance heatmaps.

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

Performs read-only validation of municipal 3D models without impacting live 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 2.0 Appearance objects containing materials and textures.

  • Verify material mapping arrays across CityObject surface boundaries.

  • Extract solar reflectance and thermal emissivity values from assigned surface materials.

  • Generate a diagnostic report flagging untextured surfaces and albedo inconsistencies.

Resources and assets

Reference links and supporting material

Dataset notes

Download CityJSON files with appearance definitions from the 3DCityDB sample repository or construct mock CityJSON appearance objects. Supplied starter examples are synthetic, not source extracts.

Challenge setup

Configuration summary for this challenge.

Challenge input

Input details are not configured.

Haystack

Framework

Evaluated output

No output checks are configured.

Evaluation checks
  • Parse CityJSON 2.0 Appearance objects containing materials and textures. Verify material mapping arrays acr...
  • Verifies that material indices in boundary surfaces map to declared appearance materials. Calculates area-w...
  • Web 3D surface inspector displaying polygon material shaders and reflectance heatmaps.
Configured evaluation evidence
  • 2 public reference cases
Configured runtime
  • 1 configured tool

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
  • Haystack · 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 2.0 Material and Texture Appearance Auditor