Class TLcdASDITrack

All Implemented Interfaces:
ILcdDataObject, ILcdBounded, ILcdBounds, ILcdPoint, ILcdPointList, ILcdPolypoint, ILcdShape, ILcd2DEditablePoint, ILcd2DEditableShape, ILcd3DEditablePoint, ILcd3DEditableShape, ILcdCloneable, ILcdFeatured, Serializable, Cloneable

public class TLcdASDITrack extends TLcdLonLatHeightPoint implements ILcdFeatured, ILcdDataObject
Time-dependent view on a TLcdASDITrajectory. It represents the location and features of the TLcdASDITrajectory at a given index.

A TLcdASDITrajectory represents the whole path of an aircraft, including a location and additional information (=features) for every timestamp. This TLcdASDITrack object however represents an aircraft at a certain time/position. It is implemented as a TLcdASDITrajectory at a given index. All data made available by a TLcdASDITrack is in fact extracted from the TLcdASDITrajectory on which the TLcdASDITrack is based.

The trajectory can be retrieved using getTrajectory(). The index can be retrieved by using getTrajectoryPointIndex(), or it can be changed using setTrajectoryPointIndex(int).

To update the state of a TLcdASDITrack, one should either:

  • Use updateForIndex(int) to update the state of this track to a given index. Note that the method TLcdASDITrajectory.getIndexForTimeStamp(long) can be used to retrieve the index for a given time value.
  • Or manually update the trajectory index by following these steps:
    1. Update the point index, using setTrajectoryPointIndex(int).
    2. Update the location of the track, for example by doing
       if ( isActive() ) {
         move3D( getTrajectory().getPoint( getTrajectoryPointIndex() ) );
       }
      Note that this piece of code updates the location of the track to the location that corresponds to the trajectory index. A more advanced update of the location would for example be to interpolate the track location between the current and the next point.

The message properties of a track (either TZ or TO) can be accessed through the ILcdDataObject interface. The data type of a track will be either TLcdASDITrackTODataTypes.TrackTOType or TLcdASDITrackTZDataTypes.TrackTZType. The values of the properties can be retrieved using the ILcdDataObject.getValue(com.luciad.datamodel.TLcdDataProperty) method.

The message properties of a track can also be accessed through the ILcdFeatured interface. This is added for backwards compatibility, though it recommended to use the new ILcdDataObject instead. An overview of all available TZ features can be found in ILcdASDITrackTZFeatures and of all available TO features in ILcdASDITrackTOFeatures.

Models with TLcdASDITrack objects have model descriptors that are TLcdASDITrackModelDescriptor. They describe the features (available through the ILcdFeatured interface) of the TLcdASDITrack objects.

See Also:
  • Constructor Details

    • TLcdASDITrack

      public TLcdASDITrack(TLcdASDITrajectory aTrajectory)
      Constructs a new TLcdASDITrack that has a reference to a TLcdASDITrajectory. It will be inactive after creation ((isActive() returns false).
      Parameters:
      aTrajectory - The TLcdASDITrajectory on which this TLcdASDITrack is based. This should not be null.
  • Method Details

    • getTrajectoryPointIndex

      public int getTrajectoryPointIndex()
      Returns the index for which this track represents the trajectory.
      Returns:
      the index for which this track represents the trajectory.
    • setTrajectoryPointIndex

      public void setTrajectoryPointIndex(int aPointIndex)

      Sets the index for which this track represents the trajectory. The features of this track will represent new values according to the set index.

      Note that the method TLcdASDITrajectory.getIndexForTimeStamp(long) can be used to retrieve the index for a given time value.

      Parameters:
      aPointIndex - The index that corresponds to the point in the trajectory which this track should represent, 0 <= aPointIndex < getTrajectory().getPointCount(). Set this to -1 to mark the track as inactive.
    • updateForIndex

      public void updateForIndex(int aPointIndex)
      Updates the state of this track so that it reflects the state of the trajectory at the given aPointIndex.

      It updates the features similarly to setTrajectoryPointIndex(int), but it also updates the location of this track, according to the given point index.

      Note that the method TLcdASDITrajectory.getIndexForTimeStamp(long) can be used to retrieve the index for a given time value.

      Parameters:
      aPointIndex - The index that corresponds to the point in the trajectory which this track should represent, 0 <= aPointIndex < getTrajectory().getPointCount(). Set this to -1 to mark the track as inactive.
    • getFeatureCount

      public int getFeatureCount()

      Returns the number of track features from the associated trajectory. So it is equivalent to getTrajectory().getTrackFeatureCount().

      See TLcdASDITrajectory.getTrackFeatureCount() for a more detailed description.

      Specified by:
      getFeatureCount in interface ILcdFeatured
      Returns:
      the number of track features from the associated trajectory.
    • getFeature

      public Object getFeature(int aFeatureIndex) throws IndexOutOfBoundsException

      Returns the value of the track feature at index aFeatureIndex for the current trajectory point. So it is equivalent to getTrajectory().getTrackFeature( getTrajectoryPointIndex(), aFeatureIndex ).

      See TLcdASDITrajectory.getTrackFeature(int aIndex, int aFeatureIndex) for a more detailed description.

      Specified by:
      getFeature in interface ILcdFeatured
      Parameters:
      aFeatureIndex - The index of the feature, must be smaller than getFeatureCount().
      Returns:
      The value of the track feature at index aFeatureIndex from the current trajectory point.
      Throws:
      IndexOutOfBoundsException - when an index is chosen greater than the result of getFeatureCount.
      See Also:
    • canSetFeature

      public boolean canSetFeature(int aFeatureIndex)

      Checks whether the track feature with index aFeatureIndex of the current trajectory point is editable.

      See getFeatureCount() and getFeature(int aFeatureIndex) for more information on track features.

      None of the track features are editable, so always returns false.

      Specified by:
      canSetFeature in interface ILcdFeatured
      Parameters:
      aFeatureIndex - a valid feature index, must be smaller than getFeatureCount().
      Returns:
      whether the specified feature is editable, always returns false.
    • setFeature

      public void setFeature(int aFeatureIndex, Object aObject) throws IllegalArgumentException
      Sets the value of the track feature with index aFeatureIndex for the current trajectory point.

      See getFeatureCount() and getFeature(int aFeatureIndex) for more information on track features.

      None of the track features are editable, so calling this method always results in throwing an IllegalArgumentException.

      Specified by:
      setFeature in interface ILcdFeatured
      Parameters:
      aFeatureIndex - a valid feature index, must be smaller than getFeatureCount().
      aObject - the new value of the feature.
      Throws:
      IllegalArgumentException - if the feature can't be set.
      See Also:
    • getTrajectory

      public TLcdASDITrajectory getTrajectory()
      Every TLcdASDITrack has a reference to exactly one TLcdASDITrajectory.
      Returns:
      The TLcdASDITrajectory that is referenced by this TLcdASDITrack.
    • isActive

      public boolean isActive()
      Returns whether or not this track is still active. A track is considered active if its timestamp lies within the TLcdASDITrajectory.getBeginTime and TLcdASDITrajectory.getEndTime, this is, it represents the trajectory at a certain valid point. The data of an inactive track should not be used or interpreted in any way.
      Returns:
      true if this track represents the trajectory at a certain valid point, false if not.
    • clone

      public Object clone()
      Creates and returns a copy of this object.
      Specified by:
      clone in interface ILcdCloneable
      Overrides:
      clone in class ALcdShape
      Returns:
      a copy of this object.
      See Also:
    • getDataType

      public TLcdDataType getDataType()
      Description copied from interface: ILcdDataObject
      Returns the type of this data object. This can never be null.
      Specified by:
      getDataType in interface ILcdDataObject
      Returns:
      the type of this data object
    • getValue

      public Object getValue(TLcdDataProperty aProperty)
      Description copied from interface: ILcdDataObject

      Returns the value of the given property.

      If the property is a collection, the returned value will never be null. If the property has not been set, an empty collection of the appropriate type will be returned (Set, List or Map).

      The property must not be null, and must be declared in the data object's type or in one of its super types. Otherwise an IllegalArgumentException is thrown.

      Specified by:
      getValue in interface ILcdDataObject
      Parameters:
      aProperty - the property for which the value is to be returned
      Returns:
      the value of the given property for this data object
    • setValue

      public void setValue(TLcdDataProperty aProperty, Object aValue)
      Description copied from interface: ILcdDataObject

      Sets the value of the given property for this data object. The implementation is allowed to throw an exception if the given value can't be set.

      The given property must be declared in the data object's type or in one of its super types. In other words, getDataType().getProperties().contains( aProperty ) should always be true. Otherwise, the implementation should throw an IllegalArgumentException.

      Specified by:
      setValue in interface ILcdDataObject
      Parameters:
      aProperty - the property for which the value is to be set
      aValue - the value to set
      See Also:
    • getValue

      public Object getValue(String aPropertyName)
      Description copied from interface: ILcdDataObject

      Convenience method that returns the value of the property with the given name.

      If more than one property exists with the given name, the most specific property should be used (this is the property defined by the most specialized type in this object's data type hierarchy).

      See ILcdDataObject.getValue(TLcdDataProperty) for more information.

      Specified by:
      getValue in interface ILcdDataObject
      Parameters:
      aPropertyName - the name of the property of which the value is to be returned
      Returns:
      the value of the property with the given name
      See Also:
    • setValue

      public void setValue(String aPropertyName, Object aValue)
      Description copied from interface: ILcdDataObject

      Convenience method that sets the value of the property with the given name.

      If more than one property exists with the given name, the most specific property should be used (this is the property defined by the most specialized type in this object's data type hierarchy).

      See ILcdDataObject.setValue(TLcdDataProperty, Object) for more information.

      Specified by:
      setValue in interface ILcdDataObject
      Parameters:
      aPropertyName - the name of the property of which the value is to be set
      aValue - the value to set
    • hasValue

      public boolean hasValue(TLcdDataProperty aProperty)
      Description copied from interface: ILcdDataObject
      Indicates whether this data object has a value for the given property.

      • aProperty is from the right data type, and this instance has a value for it: returns true
      • aProperty is from the right data type, and this instance has no value for it: returns false
      • aProperty is not from the right data type: not allowed, you will get IllegalArgumentException
      • aProperty is null: not allowed, you will get NullPointerException

      A multivalued property is considered to have a value if it has at least one value.

      Specified by:
      hasValue in interface ILcdDataObject
      Parameters:
      aProperty - the property for which to return whether a value is present or not.
      Returns:
      true if this data object has a value for the given property, false otherwise.
    • hasValue

      public boolean hasValue(String aPropertyName)
      Description copied from interface: ILcdDataObject
      Indicates whether this data object has a value for the given property.
      See ILcdDataObject.hasValue(TLcdDataProperty) for more information.
      Specified by:
      hasValue in interface ILcdDataObject
      Parameters:
      aPropertyName - the name of the property for which to return whether a value is present or not.
      Returns:
      true if this data object has a value for the property with the given name, false otherwise.
    • equals

      public boolean equals(Object aObject)
      Returns whether the specified object is equal to this one. The implementation is the same as would be returned by the default method Object.equals() : x.equals(y) returns true if and only if x and y refer to the same object.
      Specified by:
      equals in interface ILcdPoint
      Overrides:
      equals in class TLcdLonLatHeightPoint
      Parameters:
      aObject - the object to compare to.
      Returns:
      true if the specified object is equal to this one, false otherwise.
    • hashCode

      public int hashCode()
      Returns a hash code value for the object. The returned hash code is the same as would be returned by the default method Object.hashCode() .
      Overrides:
      hashCode in class ALcdPoint
      Returns:
      the hash code value for the object.