Introduction to SDD

for programmers who need to implement real-time data streams

The big picture

Engineers working in the field of Intelligent Transportation Systems (ITS) have embarked upon massive data-gathering projects, from installing thousands of traffic sensors in urban freeways, to giving buses and fleet vehicles the ability to transmit their location at all times. This kind of data is characterized by the following attributes: The UW ITS Research Group is meeting the challenge of building applications for these systems. Several years of experience with building applications that receive and process real-time data have resulted in a free, open source software library that standardizes the way data streams are distributed. This library is called SDD, for the Self-Describing Data protocol that dictates the format of the data stream.

Is SDD right for me?

If your organization gathers real-time data, making it available as a Self-Describing Data stream offers you the following benefits:
  1. Sharing the data with others. No matter what your data is, the standard SDD receiver program can be used on another computer to connect to your data stream and monitor it in real time. You do not need to distribute any customized client programs or data dictionaries.
  2. Data fusion. You may have several different sources of data that need to be combined into a single stream. Each data source can provide its own SDD stream, and an SDD "operator" program can combine the multiple streams into a single high-level product. To give a concrete example, traffic management centers install systems that use loop signatures, lasers, video image processing, and vehicle probes, all with the final intent of estimating travel times. SDD allows each of these systems to provide ever-changing data to a central program that produces a single travel-time data stream, hiding the details of the divergent systems that fed into it.
  3. Standardized applications. Encapsulated within each SDD stream is the Schema, a description of the related tables of data that the stream contains. If two different systems can provide an SDD stream with the same Schema, then an application that makes use of one stream can also be used with the other. For instance, an SDD stream for Seattle transit vehicle locations exists, and an application was developed whose input was the vehicle location stream, and whose output was a different stream of vehicle arrival predictions. If another city were to provide a similar vehicle location stream, the prediction application would work there too.

What's in the SDD software library?

The SDD software distribution provides a java class library which programmers can use to tap into existing SDD streams (using the SddReceiver class), or create new SDD streams (with the SddTransmitter class). Creating a new SDD stream is a more difficult task because it requires some level of integration with the existing system that is producing the real-time data. Either of the two following strategies can be used to accomplish this: More detailed information on accomplishing these tasks is available in the SDD Software Manual. If you're ready to get started, you can download SDD now. For more background information and reading, consult the ITS Backbone project pages.


ITS UW Home