Newbie question on dynamic data in Cesium

I am very new to Cesium and need to answer some questions for my organization.

Background: We currently use the Google Earth plugin to display KML. Primarily we use networklinks to expose our dynamic data via webservices which can have tens of thousands of possible entities. The Google Earth plugin was selected because of its ability to handle the large amounts of entities and various update based on entity type. It is similar to the AGI KMZ for tracking satellites:

I stumbled upon the "Lots of Satellites" demo and have some questions about how to best expose dynamic entities into Cesium. The entities have a position in 3D space, a timestamp, and metadata associated with them.

Since we own the servers that produce our KML it would be easy to write a service that returns CZML or other data formats.

What is the status of CZML "external links"? the last posts in this group seem to end last August 2012. Is this feature implemented yet?

The "Simple CZML Demo" dynamically loads CZML from the server based on button clicks which implies that a CZML could be created via a web service and periodically updated via ajax or some type of client polling. The downside is that all of the data is reloaded, including elements who may not have been updated within the time interval.

Can an element loaded from a CZML file be updated, or elements added and deleted?
The following post!searchin/cesium-dev/czml$20update$20id/cesium-dev/n9yG6KspmVU/o53MooZrL0IJ seems to indicate that it is not yet fully implemented in Cesium.


Hi Marty, I’m sorry none of us ever got back to you on this. Here’s some answers to your questions.

  1. Since you’re generating the data, generating CZML directly would definitely be the preferred way to go for you. Have a look at the czml-writer project, which is an open-source library to make writing czml easy.

  2. External links similar to KML NetworkLink are not officially in the spec yet, but will be sometime in the next couple of months. The end result will have some similarities with KML, but hopefully have additional flexibility and functionality.

  3. CZML has built in streaming support at the spec level, so it’s easily broken down into small packets and streamed to a client over WebSockets, EventSource, or any other preferred method. While this is possible in released versions of Cesium, it’s a little rough around the edges because we don’t have high-level functions for easily connecting to data sources for instance. The Lots of Satellites demo you mention definitely streams data in this fashion.

  4. You add an element simply by sending a packet with the element in it, the add is implicit the first time the element is encountered. You delete an element using the delete back.

I hope that’s enough to get you started. We are also in the process of adding native KML support to Cesium, but ultimately we plan on CZML having many benefits over CZML that will eventually make it an easy choice to use over the existing standards.