First, I just wanted to throw out some performance observations and get a sanity check. I’m loading anywhere from 2,000-10,000 satellites by dragging and dropping 25MB CZML files into the Viewer widget. I’m finding that I can load 3 days @ 2 minute time steps for roughly 4000 satellites before the display updates too infrequently to be useful. Each satellite consists of a linked billboard and a label. If I add ellipsoid bubbles around each satellite, I can only show roughly 1000 satellites. If I take the scenario down to 1 day @ 2 minute time steps, I’ve found I can load 10,000. These scenarios all seem to equate to roughly 12 files (thus 12 CzmlDataSources get created). Is this in line with what you guys would expect, performance-wise, for a load like that? I can’t imagine my customer wanting to see all of this data at once, but I am interested in loading it all in but not showing it, so I just want to make sure I’m doing things as efficiently as possible.
I’ve now moved to a server-sent event stream, and according to the CZML Structure Wiki:
To faciliate high-performance streaming, CZML may also be streamed using modern browsers’ server-sent events(
EventSource
) API. When using this API, each CZML packet is streamed to the client as a separate event
How many CzmlDataSources should I create for these individual satellite packets that are coming in? I’ve tried using a CzmlDataSource for each packet (satellite), but that’s bogged down the display too quickly. I’ve tried using a single CzmlDataSource for all incoming packets (via the process method), but I can’t find any mechanism in the API to notify the visualization that new data has been processed, so the satellites never appear in the scene. I thought the DataSourceDisplay._onDataSourceChanged method might do this, but it looks like that’s only for changes to the time varying property.
Thanks,
Eric