Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CityJSON implementation of CityGML v3.0 -- How did the process go?

Hugo Ledoux
March 26, 2024

CityJSON implementation of CityGML v3.0 -- How did the process go?

Invited presentation at the OGC 128th Member Meeting in Delft, the Netherlands.

It was in the CityGML SWG session

Hugo Ledoux

March 26, 2024


  1. CityJSON implementation of CityGML v3.0 How did the process go?

    OGC 128th Member Meeting Delft, the Netherlands 2024-03-26 Hugo Ledoux TUDelft Balázs Dukai 3DGI.nl #purpleisthenewblack
  2. 2 Data model XML/GML encoding 4 encodings 3D City DB

    cjdb v1.0 2019 (CityGML v2.0) v2.0 2023 (CityGML v3.0)
  3. CityGML-XML files are very complex 3 • deeply nested, and

    often large (3GB+) • many “points of entry” • many di ff ways to do one thing ➡ few software packages correctly read/write CityGML-XML ➡ no parsers in JavaScript ➡ I personally get 😩 each time I get a new GML file
  4. CityJSON v2.0 implements most of CityGML data model 5 •

    all core modules of CityGML data model v3.0 are mapped 💪 • Subset of CityGML core (~97% of features) • Modules not supported is on purpose (to keep it simple)
  5. #1 No automatic conversion tools were used 8 Manually write

    JSON Schemas + specs Read the specs Manually write JSON data files Test file with Python, C++, Rust, Java, etc. And only fi nally
  6. #2 The UML is… complex (to say the least) 9

    - Many abstract classes - Concepts not implemented are hindering the reading (Spaces)
  7. #3 Use of “external formats” has dire consequences on software

    10 • External references to specific objects in a BIM file ➡ IfcOpenShell • “Point clouds can either be included in a CityGML dataset or just reference an external file of some common types such as LAS or LAZ.” ➡ LAZ reader • For TINs, you can store only points/lines ➡Constrained Delaunay triangulation library to reconstruct the TIN
  8. #4 Compliance to CityGML? No test suite, difficult to prove

    11 “CityJSON v2.0 partially implements the CityGML data model v3.0 and includes a JSON-specific extension mechanism (akin to CityGML ADEs).”
  9. #4 Compliance to CityGML? No test suite, difficult to prove

    13 CityJSON has no UML model per se, it is technically the same as the one of CityGML… All abstract classes are ignored.
  10. #5 ADEs are very much linked to XML 14 JSON

    Schemas have no namespace. Do users want to have UML packages? And then what?
  11. Our recommendations for the future (also for other encodings) 17

    1. Make one usable profile of CityGML that supports most important parts (similar to Simple Features) and a subset of GML. Give it a name! 2. Better rules for compliance: now the burden is on the encoding to prove that it’s compliant and it’s not really clear what the rules are. 3. Write parsers for the different encodings (in Python, JS, C++) so that others can just reuse/copy. Maybe an API to manipulate the data? 4. “Eat your own dog food”