I would love to be able to style a 3D tile set based on an external dataset, rather than just the attributes baked into the tileset.
Thanks for the suggestion @Jorri! Do you have any particular types of datasets in mind what an example use case might look like?
Thanks for the response, Luke. It would be any GIS application, really.
For example, right now we’re able to visualise the year of construction of buildings in our building tileset but only because it’s baked in as an attribute along with building ID’s.
But we can’t just make a new tileset for each dataset we want to visualise, and 3D city maps are promising tools for many usecases, and they’re usually quite dynamic. So if we could style the tilesets based on an external dataset, like a WFS or perhaps a database, the 3D map could reflect the latest calculations as soon as they’re available.
One example is a 3D map that visualises the energy transition, and we want to visualise for each building the heating requirements, cooling requirements, best alternative for natural gas heating, insulation levels, and other attributes that are the result of a complex analysis that’s developing week by week.
If you implement a draping option, that would go a long way to serve these usecases already, but it’s not as elegant a solution as styling.
(please not I’m not a programmer so I have only a rough understanding of the technology, and I’m happy to be corrected if I misrepresent anything)
Something like this certainly is possible, without creating a new tileset for each data source. But it would mean that the “mapping” or “connection” between the loaded data and the styling data would have to be done by the application. A first idea of a very basic approach would be to assign an ID to each building, and look up the required styling information. This would mean that obtaining the actual values that are used for the styling cannot be done by the Cesium3DTileStyle
itself. But there could be one Cesium3DTileStyle
instance for each data source. That could be roughly like the style that is used as an example in the documentation, where the “conditions” would then be something like
["$(ElementId} === 1234", "color(" + fetchDataFor(1234) + ")"]
(This is just brainstorming. I don’t know how feasible this would be for, say, hundreds or thousands of different IDs. But it might be worth a try…)
Thank you so much Marco, I’ll take a look at this with our expert!
perhaps another hacky option could be to generate tileset from WFS/WMS that would be used to style the data like in: 3D Tiles Photogrammetry Classification Sandcaslte
Support globe sphere