If a surface does not have semantics, there is null in the semantics.values array instead of its index. The current specs suggests that for more complex geometries (Solid, CompositeSolid), one should fill the shell-array with null for each surface, even the whole shell does not have semantics. Although, the example is a bit ambiguous, because the comment says a different thing than the example.
I do remember: it was not that easy to implement this, and then to support CityJSON people would have had to code this. Having 2 trees having the same "shape" is way easier (at the cost of more storage, this is true).
If a surface does not have semantics, there is
null
in thesemantics.values
array instead of its index. The current specs suggests that for more complex geometries (Solid, CompositeSolid), one should fill the shell-array withnull
for each surface, even the whole shell does not have semantics. Although, the example is a bit ambiguous, because the comment says a different thing than the example.https://github.com/cityjson/specs/blob/fcd13ba921f81b666fab4960903f2f72758a75cf/specs/specs.bs#L979-L981
Previously, it was possible to declare the whole shell-array as
null
, if none of the surfaces has semantics. However, this was changed in https://github.com/cityjson/specs/commit/4f0a09b52d4025cc193e73c3dbc364103f277473?diff=unified#diff-279e2f6f8646211b27f70036bad53a9944da6634b50f77f18d5e05711f313154L919 The related explanation was removed much earlier, https://github.com/cityjson/specs/commit/a14406f88f3d7d13a0133c2b95cf92d2feafee51#diff-279e2f6f8646211b27f70036bad53a9944da6634b50f77f18d5e05711f313154L843-L848But I couldn't find an explanation for these changes. Do you remember them @hugoledoux ?