The first line of a CityJSONSeq stream: the document's metadata, an empty
CityObjects map and an empty vertices array.
This is what carries transform -- the scale/translate that maps a
feature's quantised integer vertices back to world coordinates -- plus
version, metadata, and, when the file has them, geometry-templates
and extensions. Pure computation over an already-parsed header: it issues
no reads and can be called any number of times.
The header's own appearance table IS emitted here. It used to be dropped,
on the since disproved grounds that the reference did not emit it either
and that each feature carried the slice of the palette it used; in
geom_temp the header and per-feature palettes are in fact disjoint, and
the header's geometry templates index the header palette specifically.
Dropping it left those template mappings dangling -- upstream finding #31.
The first line of a CityJSONSeq stream: the document's metadata, an empty
CityObjectsmap and an emptyverticesarray.This is what carries
transform-- thescale/translatethat maps a feature's quantised integer vertices back to world coordinates -- plusversion,metadata, and, when the file has them,geometry-templatesandextensions. Pure computation over an already-parsed header: it issues no reads and can be called any number of times.The header's own
appearancetable IS emitted here. It used to be dropped, on the since disproved grounds that the reference did not emit it either and that each feature carried the slice of the palette it used; ingeom_tempthe header and per-feature palettes are in fact disjoint, and the header's geometry templates index the header palette specifically. Dropping it left those template mappings dangling -- upstream finding #31.