I am trying to plot a large number of entities (50k to 100k or more) and am interested what the best approach is with the latest Cesium?
Should I be using EntityCollection/CustomDataSource or a billboardCollection + a labelCollection
I am trying to plot a large number of entities (50k to 100k or more) and am interested what the best approach is with the latest Cesium?
Should I be using EntityCollection/CustomDataSource or a billboardCollection + a labelCollection
I don’t have hard numbers on benchmarks for these two collections. I think both should benefit from the same batching/optimizations. Cesium generally has been moving more towards 3D Tiles for high volumes of data. The idea there being to produce hierarchical levels of detail, so even if you have a 100 million buildings/models/entities, you won’t render all that detail when it’s too far to see anyway, but as you zoom in it’ll load more.
What kind of data are you representing?
Most of the time its location data of buildings based on a database search.
So usually its a symbol representing the building + a label with a CustomDataSource
Yeah I think this would definitely benefit from 3D Tiling. You can read a bit about 3D Tiles for buildings here:
https://cesium.com/3d-tiling-pipeline/3d-buildings/
This would involve authoring your data as CityGML or 3d models, and then uploading it to cesium.com/ion to tile it. This is how this New York demo works for example:
https://cesiumjs.org/Cesium/Build/Apps/Sandcastle/?src=3D%20Tiles%20Feature%20Picking.html&label=All
Well, I really don't need anything 3d here as we are showing known symbols representing each building type..
So i really just need the billboards and labels.
I think in any case you’ll want to do some sort of tiling. Cesium’s support for large amounts of 3D data is currently a lot better than its 2D support, since other map libraries handle 2D quite well.
Have you tried putting the 100k entities/billboards in Cesium yet? It might work well with clustering:
https://cesiumjs.org/Cesium/Build/Apps/Sandcastle/?src=Clustering.html
You can also enable the frames per second counter to see how well it’s performing by doing:
viewer.scene.debugShowFramesPerSecond = true;
``
I’d be curious to know if it works or what performance you’re seeing.
Thanks. I'll give clustering a try.
Quick questions on 3d tiles:
1. Can you dynamically update 3d tiles. Say I was showing airplane locations and wanted to quickly update billboards representing each one. Does 3d tiles have a way to do this or is it more about static data sets?
2. Do 3d tiles have something like billboard images where I can just put a flat image and have it always face the camera?