Class TLcdASTERIXTrajectory
- All Implemented Interfaces:
ILcdDataObject
,ILcdBounded
,ILcdCurve
,ILcdPointList
,ILcdPointList2
,ILcdPolyline
,ILcdShape
,ILcdTimeBounded
,ILcdCache
,ILcdCloneable
,ILcdFeatured
,Serializable
,Cloneable
TLcdASTERIXTrajectory
models the path of a track (for example an aircraft) flying
from one point to another. The path is discretized, and for every time stamp it contains
the location, heading and additional information of the track.
The number of steps in the discretization can be retrieved using getPointCount()
.
The locations can be retrieved using getPoint(int)
, the headings using getTrackHeading(int)
and the additional information is accessible through the getTrackFeature(int, int)
method.- See Also:
-
Field Summary
Fields inherited from interface com.luciad.shape.ILcdCurve
INTERPOLATION_CIRCLE_BY_3POINTS, INTERPOLATION_CIRCLE_BY_CENTERPOINT, INTERPOLATION_CIRCULARARC_BY_3POINTS, INTERPOLATION_CIRCULARARC_BY_BULGE, INTERPOLATION_CIRCULARARC_BY_CENTERPOINT, INTERPOLATION_ELLIPTICAL, INTERPOLATION_GEODESIC, INTERPOLATION_LINEAR, INTERPOLATION_MIXED, INTERPOLATION_RHUMB
-
Method Summary
Modifier and TypeMethodDescriptionboolean
canSetFeature
(int aIndex) Checks whether the specified feature is editable.void
Clears the cache.clone()
MakesObject.clone()
public.void
computePointSFCT
(double aParam, ILcd3DEditablePoint aPointSFCT) Computes a point of the curve, defined by the given parameter.boolean
contains2D
(double aX, double aY) Checks whether thisILcdShape
contains the given point in the 2D space.boolean
contains2D
(ILcdPoint aPoint) Checks whether thisILcdShape
contains the givenILcdPoint
in the 2D space.boolean
contains3D
(double aX, double aY, double aZ) Checks whether thisILcdShape
contains the given point in the 3D space.boolean
contains3D
(ILcdPoint aPoint) Checks whether thisILcdShape
contains the givenILcdPoint
in the 3D space.long
This method acts as a shortcut method call to retrieve the begin time of the time bounds fromgetTimeBounds()
.Returns theILcdBounds
by which the geometry of thisILcdBounded
object is bounded.getCachedObject
(Object aKey) Looks up and returns the cached Object corresponding to the given key.Returns the type of this data object.Retrieves the end point of the curve.double
Returns the angle of the curve's tangent at the end point, in degrees counterclockwise from the direction at 3 o'clock.long
This method acts as a shortcut method call to retrieve the end time of the time bounds fromgetTimeBounds()
.getFeature
(int aIndex) Returns the featureObject
at the given index.int
Returns the number of features.Returns the focus point of thisILcdShape
.int
getIndexForTimeStamp
(long aTimeStamp) Finds the index that corresponds to the given timestamp.Returns the interpolation method used by this curve.double
getLength2D
(double aParam1, double aParam2) Returns the length between two points of the curve, defined by the given parameters.int
Returns the number of intersections between this curve and a line segment defined by the two specified points.getPoint
(int aIndex) Returns theILcdPoint
at a given index.int
Returns the number ofILcdPoint
objects in the list.void
getPointSFCT
(int aIndex, ILcd3DEditablePoint aPointSFCT) Stores the coordinates of the point ataIndex
in the given point.Retrieves the start point of the curve.double
Returns the angle of the curve's tangent at the start point, in degrees counterclockwise from the direction at 3 o'clock.double
getTangent2D
(double aParam) Returns the angle of the curve's tangent in the point defined by the given parameter, in degrees counterclockwise from the direction at 3 o'clock.long
getTime
(int aIndex) Returns the time corresponding to the pointgetPoint(aIndex)
.Returns theILcdTimeBounds
by which this object is bounded.Returns theTLcdDataType
of the tracks of this trajectory.getTrackFeature
(int aIndex, int aFeatureIndex) Retrieves the track feature indicated by aFeatureIndex at the point indicated by aIndex.int
Returns the number of features a track contains.double
getTrackHeading
(int aIndex) Returns the heading of the track at the given index.getTrackValue
(int aIndex, TLcdDataProperty aProperty) Equivalent togetTrackFeature(int, int)
, but retrieves data objects instead of features.getValue
(TLcdDataProperty aProperty) Returns the value of the given property.Convenience method that returns the value of the property with the given name.double
getX
(int aIndex) Returns the X coordinate of the point ataIndex
.double
getY
(int aIndex) Returns the Y coordinate of the point ataIndex
.double
getZ
(int aIndex) Returns the Z coordinate of the point ataIndex
.boolean
hasValue
(TLcdDataProperty aProperty) Indicates whether this data object has a value for the given property.boolean
Indicates whether this data object has a value for the given property.void
insertIntoCache
(Object aKey, Object aObject) Inserts a cache Object corresponding to the given key Object.removeCachedObject
(Object aKey) Looks up and removes the cached Object corresponding to the given key.void
setFeature
(int aIndex, Object aObject) Sets the featureObject
at the given index.void
setTrackValue
(int aIndex, TLcdDataProperty aProperty, Object aValue) Changes the track value for the given track property at the indicated index.void
setValue
(TLcdDataProperty aProperty, Object aValue) Sets the value of the given property for this data object.void
Convenience method that sets the value of the property with the given name.toString()
-
Method Details
-
getBounds
Description copied from interface:ILcdBounded
Returns theILcdBounds
by which the geometry of thisILcdBounded
object is bounded.If the geometry does not allow retrieving valid bounds (for example a polyline with 0 points) the return value is unspecified. It is highly recommended to return an
undefined
bounds. You can create undefined bounds using the default constructors ofTLcdLonLatBounds
orTLcdXYBounds
.- Specified by:
getBounds
in interfaceILcdBounded
- Returns:
- the
ILcdBounds
by which the geometry of thisILcdBounded
object is bounded.
-
getPointCount
public int getPointCount()Description copied from interface:ILcdPointList
Returns the number ofILcdPoint
objects in the list.- Specified by:
getPointCount
in interfaceILcdPointList
- Returns:
- the number of
ILcdPoint
objects in the list.
-
getPoint
Description copied from interface:ILcdPointList
Returns theILcdPoint
at a given index.- Specified by:
getPoint
in interfaceILcdPointList
- Parameters:
aIndex
- a valid index in the list ofILcdPoint
objects.- Returns:
- the
ILcdPoint
at the given index. - Throws:
IndexOutOfBoundsException
- if the given index is out of bounds.
-
getPointSFCT
Description copied from interface:ILcdPointList
Stores the coordinates of the point ataIndex
in the given point.- Specified by:
getPointSFCT
in interfaceILcdPointList
- Parameters:
aIndex
- the index of the point for which to retrieve the coordinates.aPointSFCT
- the side-effect parameter in which to store the coordinates of the requested point.
-
getX
public double getX(int aIndex) Description copied from interface:ILcdPointList
Returns the X coordinate of the point ataIndex
.- Specified by:
getX
in interfaceILcdPointList
- Parameters:
aIndex
- the index of the point for which to return the X coordinate.- Returns:
- the X coordinate of the point at
aIndex
.
-
getY
public double getY(int aIndex) Description copied from interface:ILcdPointList
Returns the Y coordinate of the point ataIndex
.- Specified by:
getY
in interfaceILcdPointList
- Parameters:
aIndex
- the index of the point for which to return the Y coordinate.- Returns:
- the Y coordinate of the point at
aIndex
.
-
getZ
public double getZ(int aIndex) Description copied from interface:ILcdPointList
Returns the Z coordinate of the point ataIndex
.- Specified by:
getZ
in interfaceILcdPointList
- Parameters:
aIndex
- the index of the point for which to return the Z coordinate.- Returns:
- the Z coordinate of the point at
aIndex
.
-
contains2D
Description copied from interface:ILcdShape
Checks whether thisILcdShape
contains the givenILcdPoint
in the 2D space. Only the first two dimensions of theILcdShape
and theILcdPoint
are considered.- Specified by:
contains2D
in interfaceILcdShape
- Parameters:
aPoint
- theILcdPoint
to test.- Returns:
- the boolean result of the containment test.
- See Also:
-
contains2D
public boolean contains2D(double aX, double aY) Description copied from interface:ILcdShape
Checks whether thisILcdShape
contains the given point in the 2D space. Only the first two dimensions of theILcdShape
are considered.- Specified by:
contains2D
in interfaceILcdShape
- Parameters:
aX
- the x coordinate of the point.aY
- the y coordinate of the point.- Returns:
- the boolean result of the containment test.
-
contains3D
Description copied from interface:ILcdShape
Checks whether thisILcdShape
contains the givenILcdPoint
in the 3D space.- Specified by:
contains3D
in interfaceILcdShape
- Parameters:
aPoint
- theILcdPoint
to test.- Returns:
- the boolean result of the containment test.
- See Also:
-
contains3D
public boolean contains3D(double aX, double aY, double aZ) Description copied from interface:ILcdShape
Checks whether thisILcdShape
contains the given point in the 3D space.- Specified by:
contains3D
in interfaceILcdShape
- Parameters:
aX
- the x coordinate of the point.aY
- the y coordinate of the point.aZ
- the z coordinate of the point.- Returns:
- the boolean result of the containment test.
-
getFocusPoint
Description copied from interface:ILcdShape
Returns the focus point of thisILcdShape
.- Specified by:
getFocusPoint
in interfaceILcdShape
- Returns:
- the focus point of this
ILcdShape
.
-
computePointSFCT
Description copied from interface:ILcdCurve
Computes a point of the curve, defined by the given parameter.- At parameter 0, the point is the same as
ILcdCurve.getStartPoint()
. - At parameter 1, the point is the same as
ILcdCurve.getEndPoint()
.
- Specified by:
computePointSFCT
in interfaceILcdCurve
- Parameters:
aParam
- a value of the closed interval [0,1]aPointSFCT
- the point to store the computed curve point in
- At parameter 0, the point is the same as
-
getEndPoint
Description copied from interface:ILcdCurve
Retrieves the end point of the curve.This is equivalent to
computePointSFCT(1)
.- Specified by:
getEndPoint
in interfaceILcdCurve
- Returns:
- the end point of the curve
-
getEndTangent2D
public double getEndTangent2D()Description copied from interface:ILcdCurve
Returns the angle of the curve's tangent at the end point, in degrees counterclockwise from the direction at 3 o'clock.The tangent orientation is from the end point, away from the curve before it.
This is the same as
getTangent2D(1)
.- Specified by:
getEndTangent2D
in interfaceILcdCurve
- Returns:
- the curve's angle in the end point
-
getInterpolation
Description copied from interface:ILcdCurve
Returns the interpolation method used by this curve.A set of predefined constants are defined in this interface, which are used by the default
ILcdCurve
implementations provided by LuciadLightspeed.Custom implementations can define their own constants, and use them to interpret the interpolation of the curve.
- Specified by:
getInterpolation
in interfaceILcdCurve
- Returns:
- the interpolation method used by this curve.
-
getLength2D
public double getLength2D(double aParam1, double aParam2) Description copied from interface:ILcdCurve
Returns the length between two points of the curve, defined by the given parameters.- When
aParam1 == aParam2
, the length is 0. - When
aParam1 == 0 and aParam2 == 1
, the length is the whole length of the curve. - When
aParam1 > aParam2
, the length is (aParam1 to 1
) + (0 to aParam2
).
- Specified by:
getLength2D
in interfaceILcdCurve
- Parameters:
aParam1
- a value of the closed interval [0,1]aParam2
- a value of the closed interval [0,1]- Returns:
- the length of the curve.
- When
-
getLineSegmentIntersectionCount
Description copied from interface:ILcdCurve
Returns the number of intersections between this curve and a line segment defined by the two specified points.This information can be used to perform containment calculations, if this curve is closed or if this curve is part of a composite closed curve. By determining the number of intersections between this curve and a line segment starting from a given point in a fixed direction, one can determine whether a point is located within the closed curve by using the even-odd rule.
- Specified by:
getLineSegmentIntersectionCount
in interfaceILcdCurve
- Parameters:
aP1
- the first point of the line segmentaP2
- the second point of the line segment- Returns:
- the number of intersections between the curve and the line segment
-
getStartPoint
Description copied from interface:ILcdCurve
Retrieves the start point of the curve.This is equivalent to
computePointSFCT(0)
.- Specified by:
getStartPoint
in interfaceILcdCurve
- Returns:
- the start point of the curve
-
getStartTangent2D
public double getStartTangent2D()Description copied from interface:ILcdCurve
Returns the angle of the curve's tangent at the start point, in degrees counterclockwise from the direction at 3 o'clock.The tangent orientation is from the start point towards the rest of the shape.
This is the same as
getTangent2D(0)
.- Specified by:
getStartTangent2D
in interfaceILcdCurve
- Returns:
- the curve's angle in the start point
-
getTangent2D
public double getTangent2D(double aParam) Description copied from interface:ILcdCurve
Returns the angle of the curve's tangent in the point defined by the given parameter, in degrees counterclockwise from the direction at 3 o'clock.The tangent orientation is from the point at parameter
aParam
towards the rest of the shape.- The tangent at parameter 0 is the same as
ILcdCurve.getStartTangent2D()
. - The tangent at parameter 1 is the same as
ILcdCurve.getEndTangent2D()
.
- Specified by:
getTangent2D
in interfaceILcdCurve
- Parameters:
aParam
- a value of the closed interval [0,1]- Returns:
- the curve's angle in the point defined by the given parameter
- The tangent at parameter 0 is the same as
-
clone
Description copied from interface:ILcdCloneable
Makes
When for example extending fromObject.clone()
public.java.lang.Object
, it can be implemented like this:public Object clone() { try { return super.clone(); } catch ( CloneNotSupportedException e ) { // Cannot happen: extends from Object and implements Cloneable (see also Object.clone) throw new RuntimeException( e ); } }
- Specified by:
clone
in interfaceILcdCloneable
- Overrides:
clone
in classObject
- See Also:
-
getTime
public long getTime(int aIndex) Returns the time corresponding to the pointgetPoint(aIndex)
. It is specified as a value in milliseconds since 1970, similar toDate.getTime()
.- Parameters:
aIndex
- The index of the point for which you want to know the time. This index corresponds to the index ingetPoint(int aIndex)
- Returns:
- The time when the aircraft was at getPoint(aIndex).
-
getIndexForTimeStamp
public int getIndexForTimeStamp(long aTimeStamp) Finds the index that corresponds to the given timestamp. More strictly speaking, it returns the index for which this condition holds:getTime( returned_index )
<= aTimeStamp <getTime( returned_index + 1 )
. Note that if 'returned_index' equalsgetPointCount()
-1 (largest possible index),getTime( returned_index )
== aTimeStamp. If the given time stamp is not in the interval [getBeginTime()
,getEndTime()
], -1 is returned.- Parameters:
aTimeStamp
- The timestamp for which the index is requested.- Returns:
- The index in the trajectory that corresponds with aTimeStamp. -1 is returned when the time stamp could not be located.
- See Also:
-
getTimeBounds
Description copied from interface:ILcdTimeBounded
Returns theILcdTimeBounds
by which this object is bounded.- Specified by:
getTimeBounds
in interfaceILcdTimeBounded
- Returns:
- the
ILcdTimeBounds
by which this object is bounded.
-
getBeginTime
public long getBeginTime()This method acts as a shortcut method call to retrieve the begin time of the time bounds fromgetTimeBounds()
.- Returns:
- the begin time of the trajectory.
- See Also:
-
getEndTime
public long getEndTime()This method acts as a shortcut method call to retrieve the end time of the time bounds fromgetTimeBounds()
.- Returns:
- the end time of the trajectory.
- See Also:
-
getTrackHeading
public double getTrackHeading(int aIndex) Returns the heading of the track at the given index. The heading should be interpreted as a clockwise angle in degrees starting from 12 o'clock. It returnsDouble.NaN
if no heading is available. Note: useDouble.isNaN
to check if a value isDouble.NaN
.- Parameters:
aIndex
- The index to retrieve the heading value for. 0 <= aIndex <= getPointCount().- Returns:
- The heading of the track at the given index.
-
getTrackFeature
Retrieves the track feature indicated by aFeatureIndex at the point indicated by aIndex.- Parameters:
aIndex
- The index for the point for which you want to know the feature value. This index corresponds to the index ingetPoint(int aIndex)
.aFeatureIndex
- Determines what particular feature value you want to retrieve. Must be smaller thangetTrackFeatureCount()
.- Returns:
- The requested feature at the specified point.
-
getTrackValue
Equivalent togetTrackFeature(int, int)
, but retrieves data objects instead of features.- Parameters:
aIndex
- The index for the point for which you want to know the feature value. This index corresponds to the index ingetPoint(int aIndex)
aProperty
- The property of the track of which the value needs to be retrieved. The given property must be declared in the data type of the track, which can be retrieved usinggetTrackDataType()
- Returns:
- The value of the property at the specified point.
- Throws:
IllegalArgumentException
- if the given property was not declared in the data type of the tracks. SeegetTrackDataType()
-
setTrackValue
Changes the track value for the given track property at the indicated index.
Not all properties can be changed. Please refer to the developer's guide to see which properties exactly can be changed.
- Parameters:
aIndex
- The trajectory index where you want the track value to change. Must be between 0 andgetPointCount()
.aProperty
- The track property whose value you want to change. Must not benull
and should be a property defined by the track data type.aValue
- The new value you want the track property to have. Should correspond to the type of the given property.- Throws:
IllegalArgumentException
- if the given property was not declared in the data type of the tracks. SeegetTrackDataType()
- Since:
- 2013.0.14
- See Also:
-
getTrackDataType
Returns theTLcdDataType
of the tracks of this trajectory.- Returns:
- The data type of the track, or null if the data type could not be determined.
-
getTrackFeatureCount
public int getTrackFeatureCount()Returns the number of features a track contains.- Returns:
- The number of features a track contains.
-
getFeatureCount
public int getFeatureCount()Description copied from interface:ILcdFeatured
Returns the number of features.- Specified by:
getFeatureCount
in interfaceILcdFeatured
- Returns:
- the number of features.
-
getFeature
Description copied from interface:ILcdFeatured
Returns the featureObject
at the given index.- Specified by:
getFeature
in interfaceILcdFeatured
- Parameters:
aIndex
- a valid feature index.- Returns:
- the feature
Object
at the given index. - Throws:
IndexOutOfBoundsException
- when an index is chosen greater than the result of getFeatureCount.- See Also:
-
setFeature
Description copied from interface:ILcdFeatured
Sets the featureObject
at the given index.- Specified by:
setFeature
in interfaceILcdFeatured
- Parameters:
aIndex
- a valid feature index.aObject
- the new featureObject
.- Throws:
IllegalArgumentException
- if the feature can't be set.- See Also:
-
canSetFeature
public boolean canSetFeature(int aIndex) Description copied from interface:ILcdFeatured
Checks whether the specified feature is editable.- Specified by:
canSetFeature
in interfaceILcdFeatured
- Parameters:
aIndex
- a valid feature index.- Returns:
- true if the feature can be set, false otherwise.
-
insertIntoCache
Description copied from interface:ILcdCache
Inserts a cache Object corresponding to the given key Object.- Specified by:
insertIntoCache
in interfaceILcdCache
- Parameters:
aKey
- the key Object that will be used to identify the Object. The key must therefore be a unique identifier, typically the caller itself:insertIntoCache(this, ...)
.aObject
- the Object to be cached.
-
getCachedObject
Description copied from interface:ILcdCache
Looks up and returns the cached Object corresponding to the given key.- Specified by:
getCachedObject
in interfaceILcdCache
- Parameters:
aKey
- the key Object that was used for storing the cache Object.- Returns:
- the cached Object, or null if there is no Object corresponding to the given key.
-
removeCachedObject
Description copied from interface:ILcdCache
Looks up and removes the cached Object corresponding to the given key.- Specified by:
removeCachedObject
in interfaceILcdCache
- Parameters:
aKey
- the key Object that was used for storing the cache Object.- Returns:
- the cached Object, or null if there was no Object corresponding to the given key.
-
clearCache
public void clearCache()Description copied from interface:ILcdCache
Clears the cache.- Specified by:
clearCache
in interfaceILcdCache
-
toString
-
getValue
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 anIllegalArgumentException
is thrown.- Specified by:
getValue
in interfaceILcdDataObject
- Parameters:
aProperty
- the property for which the value is to be returned- Returns:
- the value of the given property for this data object
-
getDataType
Description copied from interface:ILcdDataObject
Returns the type of this data object. This can never benull
.- Specified by:
getDataType
in interfaceILcdDataObject
- Returns:
- the type of this data object
-
setValue
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 thedata 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 anIllegalArgumentException
.- Specified by:
setValue
in interfaceILcdDataObject
- Parameters:
aProperty
- the property for which the value is to be setaValue
- the value to set- See Also:
-
getValue
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). SeeILcdDataObject.getValue(TLcdDataProperty)
for more information.- Specified by:
getValue
in interfaceILcdDataObject
- 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
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). SeeILcdDataObject.setValue(TLcdDataProperty, Object)
for more information.- Specified by:
setValue
in interfaceILcdDataObject
- Parameters:
aPropertyName
- the name of the property of which the value is to be setaValue
- the value to set
-
hasValue
Description copied from interface:ILcdDataObject
Indicates whether this data object has a value for the given property.aProperty
is from theright data type
, and this instance has a value for it: returnstrue
aProperty
is from theright data type
, and this instance has no value for it: returnsfalse
aProperty
is not from theright data type
: not allowed, you will get IllegalArgumentExceptionaProperty
isnull
: not allowed, you will get NullPointerException
- Specified by:
hasValue
in interfaceILcdDataObject
- 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
Description copied from interface:ILcdDataObject
Indicates whether this data object has a value for the given property.
SeeILcdDataObject.hasValue(TLcdDataProperty)
for more information.- Specified by:
hasValue
in interfaceILcdDataObject
- 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.
-