Structure of ASTERIX data
ASTERIX data contains a wide range of ATM Surveillance data types. The data types are grouped into data categories. Data of category 1 for instance contains 'Monoradar Data Target Reports' data. ASTERIX data is organized around these categories. Figure 1, “ASTERIX data structure” shows the ASTERIX data structure.
As shown, data is organized in data blocks. A data block contains data for one category. Different data blocks contain data for the same or different categories.
A data block contains a number of data records for the category. The content of a data record is described in a User Application Profile (UAP). A UAP describes a group of data that belongs together and that has the same timestamp. Each category has a number of UAPs of which only one applies to a specific data record. The types of data modeled by the UAP that are supported by the ASTERIX decoders are explained in Concepts modeled by ASTERIX data. Most categories have only one UAP. Category 244 for instance has one UAP that describes track data.
In ASTERIX the smallest unit of information for a category is described in a data item. A data item can for instance describe the location of a track, in Cartesian coordinates. A UAP is defined by an ordered list of data items. A data record for a category can contain information for all or part of the data items. Different UAPs of the same category can contain the same data items.
In ASTERIX a simple value is described in a data field. A data field can for instance describe the x-coordinate of a location, in Cartesian coordinates. A data item is defined by one or more data fields, possibly repeated a number of times.
Data items can also be nested, so contain other data items.
Concepts modeled by ASTERIX data
ASTERIX data contains a wide range of ATM Surveillance data types. The most important concepts are discussed in this section. They correspond to the types of data that are currently decoded by the LuciadLightspeed ASTERIX decoders.
Track
Conceptually a track is a point, meaning a location, together with a timestamp and a heading, meaning a direction. A track is used to represent the position and heading of an aircraft at a certain point in time, for example. On a map, a track is typically represented as an icon with an indication of the heading, a rotated icon for example, a label containing identification, such as a callsign, and possibly other indications, for example, history or speed.
Figure 2, “Map showing a track layer” shows a map with several tracks at a certain point in time. On the map tracks are represented by black squares. The directions of the tracks are indicated by the yellow lines. It represents the situation in the air at a particular point in time.
Trajectory
Conceptually a trajectory is a sequence of tracks. It is ordered in ascending order of the tracks' timestamps. A trajectory is used to represent an aircraft’s path to fly from point A to point B, for example. In that case, all tracks in the trajectory represent a position of the same aircraft, and the sequence of tracks is ordered in ascending time.
A non-empty trajectory has a begin time and an end time. The begin time is the timestamp of its first track; the end time is the timestamp of its last track.
On a map, a trajectory is typically represented as a polyline.
Figure 3, “Map showing a trajectory and track layer” shows a map with a layer of trajectories (white polylines) and a layer of tracks on top.
Plots
Conceptually a plot is a point, meaning a location, together with a timestamp. A plot is used to represent the position of an aircraft at a certain point in time. The difference between plots and tracks is that plots are not linked to each other through trajectories. Plots are not ordered, and there is no relation between them in the data. Visually, plots can still represent the path of an aircraft over time. To indicate that a plot is different from tracks, a plot is typically represented as an icon.
Figure 4, “Map showing a few plots as red circles.” shows a map with a layer of plots (red circles).
Weather Pictures
Conceptually a weather picture is a set of shapes, together with a time range. An ASTERIX weather picture is used to represent precipitation zones during a certain period of time. A precipitation zone is a set of shapes representing the geographic location of the zone. The zone also specifies the intensity level of the precipitation.
Figure 5, “Map showing a weather picture.” shows a weather picture with line shapes on a map.
ASTERIX category 8 also allows weather pictures without time information.
Radar Service Messages
Conceptually a radar service message is a message signaling status information of the radar station to the user systems. A service message contains a set of properties, together with a time stamp. As no spatial information is available, service messages cannot be displayed on a map.
LuciadLightspeed classes
This section describes the LuciadLightspeed classes used to model ASTERIX data, and their relationship with standard LuciadLightspeed
classes and interfaces.
The relationship between ASTERIX categories and UAPs and LuciadLightspeed classes is discussed in LuciadLightspeed classes for ASTERIX category and UAP.
All ASTERIX classes are part of the package com.luciad.format.asterix
.
TLcdASTERIXTrajectory
A TLcdASTERIXTrajectory
models a trajectory: it models a sequence of tracks, in ascending order of time.
For memory efficiency reasons the class TLcdASTERIXTrajectory has no methods to construct or retrieve individual track objects.
All trajectory and individual track information can be retrieved through the following interfaces and methods implemented
by
the class TLcdASTERIXTrajectory
:
-
The class
TLcdASTERIXTrajectory
implementscom.luciad.shape.ILcdPointList
, where the individual points are defined by the positions of the tracks. Points and corresponding tracks are ordered in ascending order of time. -
The class
TLcdASTERIXTrajectory
implements theILcdDataObject
unified domain model interface. The properties of a trajectory can be retrieved using this interface. All trajectories have at least one property: their unique id. This id links all the tracks of the trajectory.Depending on the UAP of the data, some trajectories may have more properties. The ASTERIX data decoding guide describes which properties are available.
-
The methods
getBeginTime
andgetEndTime
can be used to retrieve the valid time interval of the trajectory. -
The absolute time associated with a particular track can be retrieved by using the
getTime( int aTrackIndex )
method. The argumenttrackIndex
is the index of the track in the trajectory seen as an ILcdPointList. If the time for a particular track is not known -1 is returned. -
The direction of a track can be retrieved by the
getTrackHeading( int aTrackIndex )
method. If no direction is availableDouble.NaN
is returned. -
All ASTERIX data related to the trajectory is available through the properties of the tracks. They can be retrieved using the
getTrackValue( int aTrackIndex, TLcdDataProperty aProperty )
. The argumentaProperty
is the property of which the value should be retrieved. The exact mapping of the ASTERIX data fields to properties is discussed in the ASTERIX data decoding guide. -
The method
getIndexForTimeStamp( long aTimeStamp )
can be used to get the index of the track in the trajectory that corresponds best to the given timestamp. When the timestamp could not be located -1 is returned.
TLcdASTERIXTrack
A TLcdASTERIXTrack
models a track by representing a TLcdASTERIXTrajectory
at a specific point index.
All track and associated trajectory information can be retrieved through these interfaces and methods, implemented by the
class TLcdASTERIXTrack
:
-
The class
TLcdASTERIXTrack
extends the classTLcdLonLatHeightPoint
. The point defines the position of the track. -
The class
TLcdASTERIXTrack
implements theILcdDataObject
unified domain model interface. The properties of a track can be retrieved using this interface. The mapping of ASTERIX data fields to data object properties is discussed in the ASTERIX data decoding guide.Some of the properties of a track can be changed. You can change the properties by calling the
setValue
method of the track. The track properties that can be changed are the properties that have a corresponding property on its trajectory, as described in TLcdASTERIXTrajectory. -
The direction of the track can be retrieved by the
getOrientation()
method. It corresponds toTLcdASTERIXTrajectory.getTrackHeading
. -
The trajectory associated with the
TLcdASTERIXTrack
can be retrieved by calling thegetTrajectory
method on theTLcdASTERIXTrack
. -
The method
isActive()
allows to check if a track is active. A track is active if its timestamp lies within theTLcdASTERIXTrajectory.getBeginTime
andTLcdASTERIXTrajectory.getEndTime
. -
The
setTrajectoryPointIndex(aTrajectoryPointIndex )
sets the index for which this track represents the trajectory. The properties of the track always correspond to this index. Specify an index -1 to mark a track as inactive. Note that the methodTLcdASTERIXTrajectory.getIndexForTimeStamp(long aTimeStamp)
can be used to retrieve the index for a given time value. -
Use the
void updateForIndex( int aTrajectoryPointIndex )
method to update the state of the track so that it reflects the state of the trajectory at the given index. It is similar to thevoid setTrajectoryPointIndex( int aTrajectoryPointIndex )
method except that it also changes the location of the track.
TLcdASTERIXPlot
A TLcdASTERIXPlot
models a plot at a specific location for a specific time instance.
All plot information can be retrieved through the following interfaces and methods implemented by the class TLcdASTERIXPlot
:
-
The class
TLcdASTERIXPlot
extends the classTLcdLonLatHeightPoint
. The point defines the position of the track. -
The class
TLcdASTERIXPlot
implements theILcdDataObject
unified domain model interface. You can retrieve the properties of a plot using this interface. The mapping of ASTERIX data fields to data object properties is discussed in the ASTERIX data decoding guide. -
The direction of the plot can be retrieved with the
getOrientation()
method. -
The class
TLcdASTERIXPlot
implements theILcdTimeBounded
interface. This interface can be used to query the timestamp of the plot detection by a radar.
TLcdASTERIXWeatherPicture
A TLcdASTERIXWeatherPicture
models a weather picture. A TLcdASTERIXWeatherPicture
contains precipitation zones.
All weather picture information can be retrieved through the following interfaces and methods implemented by the class TLcdASTERIXWeatherPicture
:
-
The class
TLcdASTERIXWeatherPicture
implements theILcdDataObject
unified domain model interface. You can retrieve the properties of a picture using this interface. The mapping of ASTERIX data fields to data object properties is discussed in the ASTERIX data decoding guide. -
The class
TLcdASTERIXWeatherPicture
implements theILcdTimeBounded
interface. This interface can be used to query the time range of the weather picture. If the data does not contain time information for the picture, the time range is undefined. -
The class
TLcdASTERIXWeatherPicture
implements theILcdShapeList
interface. This interface can be used to retrieve the precipitation zones associated with this picture asILcdShape
instances. -
The number of precipitation zones can be retrieved through the method
getPrecipitationZonesCount()
. -
You can retrieve a particular precipitation zone through the method
getPrecipitationZone(int aIndex)
. There is no specific ordering.
TLcdASTERIXPrecipitationZone
A TLcdASTERIXPrecipitationZone
models a set of geometries with the same precipitation intensity.
You can retrieve all weather picture information through the following interfaces and methods, implemented by the class TLcdASTERIXPrecipitationZone
:
-
The class
TLcdASTERIXPrecipitationZone
implements theILcdDataObject
unified domain model interface. You can retrieve the properties of a picture using this interface. The mapping of ASTERIX data fields to data object properties is discussed in the ASTERIX data decoding guide. -
The class
TLcdASTERIXPrecipitationZone
implements theILcdShapeList
interface. This interface can be used to retrieve the shapes representing the zone. -
The intensity level of the precipitation zone can be retrieved through the method
getIntensity()
.
Radar Service Message
You can retrieve all radar service message information through these interfaces and methods:
-
The radar service message class implements the
ILcdDataObject
unified domain model interface. You can retrieve the properties of a message using this interface. The mapping of ASTERIX data fields to data object properties is discussed in the ASTERIX data decoding guide. -
The radar service message class implements the
ILcdTimeBounded
interface. This interface can be used to query the timestamp of the message.
LuciadLightspeed classes for ASTERIX category and UAP
ASTERIX categories are modeled by the abstract class ALcdASTERIXCategory
, all associated UAPs by the abstract class ALcdASTERIXUserApplicationProfile
. Supported categories have a counterpart class that is an extension of ALcdASTERIXCategory
. Their UAPs extend from ALcdASTERIXUserApplicationProfile
.
The class ALcdASTERIXCategory
makes following methods available for all categories:
-
The
getCategoryNumber()
allows to retrieve the number of the category. -
The
getUAPCount
andgetUAP(int aIndex)
are general methods to retrieve the UAPs associated with a category. Sub classes may offer more specific methods.
Make sure to use the equals
method for comparing ALcdASTERIXCategory
objects and ALcdASTERIXUserApplicationProfile
objects.
Each supported category is represented by a class named TLcdASTERIXCategoryN
where N is the category number. These category classes offer a number of extra methods and constants on top of the ALcdASTERIXCategory
:
-
All category classes have clear methods to retrieve the associated UAPs. If only one UAP is associated the method
getUAP()
is available. If more then one UAP is associated a dedicated method is available for each UAP type.Currently, the only category class that uses specific UAPs is Category 1. To retrieve the UAPs for this category, use either the
getTrackUAP()
or thegetPlotUAP()
methods to get the track or the plot UAP respectively. -
For each category and UAP, the ASTERIX data is described by the data items in the UAP. Data items are mapped to properties of domain objects in LuciadLightspeed . This is described in detail in the ASTERIX data decoding guide. Since categories can have many data items, and data items can have a complex structure, many data item properties and sub-properties are needed to represent all data items of a category. To facilitate working with these properties, all categories define constants for the display names of all data item properties and sub-properties. You can derive the property names from these display names by using the
TLcdASTERIXDataTypes.retrievePropertyNameForConstant(String)
method. The ASTERIX data decoding guide explains the naming convention and usage for these constants.