Package com.luciad.format.s57
Class TLcdS57Line
- All Implemented Interfaces:
ILcdDataObject
,ILcdS57FeatureObject
,ILcdS57Object
,ILcdBounded
,ILcdCurve
,ILcdPointList
,ILcdPointList2
,ILcdPolyline
,ILcdPolypoint
,ILcdShape
,ILcd2DEditablePointList
,ILcd2DEditablePolyline
,ILcd2DEditablePolypoint
,ILcd2DEditableShape
,ILcdCache
,ILcdCloneable
,ILcdFeatured
,ILcdInvalidateable
,Serializable
,Cloneable
public class TLcdS57Line
extends TLcdXYPolyline
implements ILcdS57Object, ILcdDataObject, ILcdFeatured, ILcdInvalidateable, Serializable
Represents a Line feature in the S-57 domain model.
- See Also:
-
Field Summary
Fields inherited from class com.luciad.shape.shape2D.ALcd2DEditablePolypoint
fBounds, fFocusPoint
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
Fields inherited from interface com.luciad.format.s57.ILcdS57FeatureObject
AREA, LINE, NONE, POINT
-
Constructor Summary
ConstructorDescriptionTLcdS57Line
(TLcdS57FeatureObject aFeatureObject, TLcdS57Edge[] aEdges, int[] aEdgeOrientations, int[] aEdgeUsages, int[] aEdgeMasks) Creates a new S-57 Line feature with the specified properties.TLcdS57Line
(ILcd2DEditablePointList aPointList) Deprecated.This constructor should no longer be used. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
Computes the bounds of the polypoint.boolean
canSetFeature
(int aIndex) Checks whether the specified feature is editable.void
Clears the cache.clone()
Creates and returns a copy of this object.boolean
contains2D
(double aX, double aY) Checks if the point(aX,aY)
lies on one of the line segments of theTLcdXYPolyline
.boolean
Returns whether the given object has the same class, the same focus point, and the same coordinates.Returns the type of this data object.getEdge
(int aIndex) Returns the edge that is part of this line, at the given index.int
Returns the number of edges this line consists of.int
getEdgeMask
(int aIndex) Returns the mask of the edge that is part of this line, at the given index.int
getEdgeOrientation
(int aIndex) Returns the orientation of the edge that is part of this line, at the given index.int
getEdgeUsage
(int aIndex) Returns the usage of the edge that is part of this line, at the given index.getFeature
(int aIndex) Returns the featureObject
at the given index.int
Returns the number of features.int
getGroup()
Returns the group to which the S-57 object belongs, this can be 1 (= skin of the earth) or 2 (= all other objects).Gets the identifier of this shape.float
Returns the maximum depth of this line and of containing and intersecting DEPARE and DRGARE objects (only applicable for OBSTRN, UWTROC, and WRECK lines).float
Returns the minimum depth of this line and of adjacent DEPARE and DRGARE objects (only applicable for DEPARE and DEPCNT lines).float
Returns the minimum depth of this line and of containing and intersecting DEPARE and DRGARE objects (only applicable for OBSTRN, UWTROC, and WRECK lines).getRelationship
(int aIndex) Returns the relationship at indexaIndex
.int
Returns the number of relationships in which this S-57 object is involved.int
getShape()
Gets the type of the shape:POINT
,LINE
,AREA
orNONE
.getValue
(TLcdDataProperty aProperty) Returns the value of the given property.Convenience method that returns the value of the property with the given name.int
hashCode()
The hash code of this shape is the hash code of its class, in order to be consistent with theALcdShape.equals(Object)
method.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
Invalidates all cached values of this object.void
setFeature
(int aIndex, Object aFeature) Sets the featureObject
at the given index.void
setGroup
(int aGroup) void
setIdentifier
(ILcdS57Identifier aIdentifier) void
setMaximumDepth
(float aMaximumDepth) Sets the maximum depth of this line and of containing and intersecting DEPARE and DRGARE objects (only applicable for OBSTRN, UWTROC, and WRECK lines).void
setMinimumAdjacentDepth
(float aMinimumAdjacentDepth) Sets the minimum depth of this line and of adjacent DEPARE and DRGARE objects (only applicable for DEPARE and DEPCNT lines).void
setMinimumDepth
(float aMinimumDepth) Sets the minimum depth of this line and of containing and intersecting DEPARE and DRGARE objects (only applicable for OBSTRN, UWTROC, and WRECK lines).void
setRelationships
(ILcdS57Relationship[] aRelationships) 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()
Methods inherited from class com.luciad.shape.shape2D.TLcdXYPolyline
computePointSFCT, getEndPoint, getEndTangent2D, getInterpolation, getLength2D, getLineSegmentIntersectionCount, getStartPoint, getStartTangent2D, getTangent2D
Methods inherited from class com.luciad.shape.shape2D.TLcdXYPolypoint
calculateFocusPoint
Methods inherited from class com.luciad.shape.shape2D.ALcd2DEditablePolypoint
get2DEditablePointList, getBounds, getCachedObject, getFocusPoint, getPoint, getPointCount, getPointSFCT, getX, getY, getZ, insert2DPoint, insertIntoCache, invalidateBounds, move2D, move2DPoint, removeCachedObject, removePointAt, set2DEditablePointList, setFocusPoint, translate2D, translate2DPoint
Methods inherited from class com.luciad.shape.shape2D.ALcd2DEditableShape
contains3D, move2D
Methods inherited from class com.luciad.shape.ALcdShape
contains2D, contains3D, fromDomainObject
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface com.luciad.shape.shape2D.ILcd2DEditablePointList
append2DPoint, insert2DPoint, move2DPoint, removePointAt, translate2D, translate2DPoint
Methods inherited from interface com.luciad.shape.shape2D.ILcd2DEditableShape
move2D, move2D, translate2D
Methods inherited from interface com.luciad.shape.ILcdBounded
getBounds
Methods inherited from interface com.luciad.util.ILcdCache
getCachedObject, insertIntoCache, removeCachedObject
Methods inherited from interface com.luciad.shape.ILcdPointList
getPoint, getPointCount, getPointSFCT, getX, getY, getZ
Methods inherited from interface com.luciad.shape.ILcdShape
contains2D, contains3D, contains3D, getFocusPoint
-
Constructor Details
-
TLcdS57Line
Deprecated.This constructor should no longer be used. Use the constructor with edges instead.Creates a new S-57 Line feature with the specified geometry.- Parameters:
aPointList
- the geometry defining the geographical extent for this Line feature.
-
TLcdS57Line
public TLcdS57Line(TLcdS57FeatureObject aFeatureObject, TLcdS57Edge[] aEdges, int[] aEdgeOrientations, int[] aEdgeUsages, int[] aEdgeMasks) Creates a new S-57 Line feature with the specified properties.- Parameters:
aFeatureObject
- the S-57 feature object describing the object class and attributes of this Line feature.aEdges
- the edges defining the geographical extent of this Line feature.aEdgeOrientations
- array containing for each edge the orientation in which it should be traversed. SeegetEdgeOrientation(int)
for more information on allowable values.aEdgeUsages
- array containing for each edge the usage of the edge. SeegetEdgeUsage(int)
for more information on allowable values.aEdgeMasks
- array containing for each edge the mask of the edge. SeegetEdgeMask(int)
for more information on allowable values.
-
-
Method Details
-
getEdgeCount
public int getEdgeCount()Returns the number of edges this line consists of.- Returns:
- the number of edges this line consists of.
-
getEdge
Returns the edge that is part of this line, at the given index.- Parameters:
aIndex
- the edge that is part of this line, at the given index.- Returns:
- the edge that is part of this line, at the given index.
-
getEdgeOrientation
public int getEdgeOrientation(int aIndex) Returns the orientation of the edge that is part of this line, at the given index. The orientation indicates in which direction the edge should be traversed to iterate over all points of this line in forward direction. One ofTLcdS57Constants.ORIENTATION_FORWARD
orTLcdS57Constants.ORIENTATION_REVERSE
.- Parameters:
aIndex
- the orientation of the edge that is part of this line, at the given index.- Returns:
- the orientation of the edge at the given index.
-
getEdgeUsage
public int getEdgeUsage(int aIndex) Returns the usage of the edge that is part of this line, at the given index. The usage indicates whether the edge is part of the outer or inner boundary of an area. One ofTLcdS57Constants.USAGE_EXTERIOR
,TLcdS57Constants.USAGE_INTERIOR
orTLcdS57Constants.USAGE_EXTERIOR_TRUNCATED
.- Parameters:
aIndex
- the usage of the edge that is part of this line, at the given index.- Returns:
- the usage of the edge at the given index.
-
getEdgeMask
public int getEdgeMask(int aIndex) Returns the mask of the edge that is part of this line, at the given index. The mask indicates whether the edge should be rendered or not. In some cases, e.g. for areas which are truncated by cell borders, the edges on the cell border should not be rendered. One ofTLcdS57Constants.MASK_MASK
,TLcdS57Constants.MASK_SHOW
orTLcdS57Constants.MASK_NOT_APPLICABLE
.- Parameters:
aIndex
- the mask of the edge that is part of this line, at the given index.- Returns:
- the mask of the edge at the given index.
-
setMinimumAdjacentDepth
public void setMinimumAdjacentDepth(float aMinimumAdjacentDepth) Sets the minimum depth of this line and of adjacent DEPARE and DRGARE objects (only applicable for DEPARE and DEPCNT lines). The depths are retrieved from the VALSOU and DRVAL1 attributes, if specified. The minimum value can be used as the safety depth value (e.g. in the S-52 DEPCNT procedure). TheminimumAdjacentDepth
property is part of the set of preprocessor variables.- Parameters:
aMinimumAdjacentDepth
- the minimum depth of this line and of adjacent DEPARE and DRGARE objects.- See Also:
-
getMinimumAdjacentDepth
public float getMinimumAdjacentDepth()Returns the minimum depth of this line and of adjacent DEPARE and DRGARE objects (only applicable for DEPARE and DEPCNT lines). The depths are retrieved from the VALSOU and DRVAL1 attributes, if specified. The minimum value can be used as the safety depth value (e.g. in the S-52 DEPCNT procedure). TheminimumAdjacentDepth
property is part of the set of preprocessor variables.- Returns:
- the minimum depth of this line and of adjacent DEPARE and DRGARE objects.
- See Also:
-
setMinimumDepth
public void setMinimumDepth(float aMinimumDepth) Sets the minimum depth of this line and of containing and intersecting DEPARE and DRGARE objects (only applicable for OBSTRN, UWTROC, and WRECK lines). The depths are retrieved from the DRVAL1 and DRVAL2 attributes, if specified. The minimum value can be used as a default depth value (e.g. in the S-52 DEPVAL procedure). TheminimumDepth
property is part of the set of preprocessor variables.- Parameters:
aMinimumDepth
- the minimum depth of this line and of containing and intersecting DEPARE and DRGARE objects- See Also:
-
getMinimumDepth
public float getMinimumDepth()Returns the minimum depth of this line and of containing and intersecting DEPARE and DRGARE objects (only applicable for OBSTRN, UWTROC, and WRECK lines). The depths are retrieved from the DRVAL1 and DRVAL2 attributes, if specified. The minimum value can be used as a default depth value (e.g. in the S-52 DEPVAL procedure). TheminimumDepth
property is part of the set of preprocessor variables.- Returns:
- the minimum depth of this line and of containing and intersecting DEPARE and DRGARE objects.
- See Also:
-
setMaximumDepth
public void setMaximumDepth(float aMaximumDepth) Sets the maximum depth of this line and of containing and intersecting DEPARE and DRGARE objects (only applicable for OBSTRN, UWTROC, and WRECK lines). The depths are retrieved from the DRVAL1 and DRVAL2 attributes, if specified. The maximum value can be used to determine whether the object is an isolated danger (e.g. in the S-52 UDWHAZ procedure). ThemaximumDepth
property is part of the set of preprocessor variables.- Parameters:
aMaximumDepth
- the maximum depth of this line and of containing and intersecting DEPARE and DRGARE objects.- See Also:
-
getMaximumDepth
public float getMaximumDepth()Returns the maximum depth of this line and of containing and intersecting DEPARE and DRGARE objects (only applicable for OBSTRN, UWTROC, and WRECK lines). The depths are retrieved from the DRVAL1 and DRVAL2 attributes, if specified. The maximum value can be used to determine whether the object is an isolated danger (e.g. in the S-52 UDWHAZ procedure). ThemaximumDepth
property is part of the set of preprocessor variables.- Returns:
- the maximum depth of this line and of containing and intersecting DEPARE and DRGARE objects.
- See Also:
-
invalidateObject
public void invalidateObject()Description copied from interface:ILcdInvalidateable
Invalidates all cached values of this object. Call this method whenever one or more of this object's compositing values has been changed, to notify this object it needs to recompute its cached values.- Specified by:
invalidateObject
in interfaceILcdInvalidateable
- Overrides:
invalidateObject
in classALcd2DEditablePolypoint
-
clearCache
public void clearCache()Description copied from interface:ILcdCache
Clears the cache.- Specified by:
clearCache
in interfaceILcdCache
- Overrides:
clearCache
in classALcd2DEditablePolypoint
-
calculateBounds
protected void calculateBounds()Description copied from class:ALcd2DEditablePolypoint
Computes the bounds of the polypoint. The resulting bounds are stored infBounds
.- Overrides:
calculateBounds
in classTLcdXYPolypoint
-
contains2D
public boolean contains2D(double aX, double aY) Checks if the point(aX,aY)
lies on one of the line segments of theTLcdXYPolyline
.- Specified by:
contains2D
in interfaceILcdShape
- Overrides:
contains2D
in classTLcdXYPolyline
- Parameters:
aX
- the x coordinate of the point.aY
- the y coordinate of the point.- Returns:
- the boolean result of the containment test.
-
setIdentifier
-
setGroup
public void setGroup(int aGroup) -
setRelationships
-
getIdentifier
Description copied from interface:ILcdS57FeatureObject
Gets the identifier of this shape.- Specified by:
getIdentifier
in interfaceILcdS57FeatureObject
-
getGroup
public int getGroup()Description copied from interface:ILcdS57FeatureObject
Returns the group to which the S-57 object belongs, this can be 1 (= skin of the earth) or 2 (= all other objects).- Specified by:
getGroup
in interfaceILcdS57FeatureObject
- Returns:
- the group to which the S-57 object belongs
-
getShape
public int getShape()Description copied from interface:ILcdS57FeatureObject
Gets the type of the shape:POINT
,LINE
,AREA
orNONE
.- Specified by:
getShape
in interfaceILcdS57FeatureObject
-
getRelationshipCount
public int getRelationshipCount()Description copied from interface:ILcdS57FeatureObject
Returns the number of relationships in which this S-57 object is involved.- Specified by:
getRelationshipCount
in interfaceILcdS57FeatureObject
- Returns:
- the number of relationships in which this S-57 object is involved.
-
getRelationship
Description copied from interface:ILcdS57FeatureObject
Returns the relationship at indexaIndex
.- Specified by:
getRelationship
in interfaceILcdS57FeatureObject
- Parameters:
aIndex
- index of the relationship to return- Returns:
- the relationship at the specified position.
-
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
-
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
-
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
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:
-
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.
-
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.
-
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:
-
getFeatureCount
public int getFeatureCount()Description copied from interface:ILcdFeatured
Returns the number of features.- Specified by:
getFeatureCount
in interfaceILcdFeatured
- Returns:
- the number of features.
-
setFeature
Description copied from interface:ILcdFeatured
Sets the featureObject
at the given index.- Specified by:
setFeature
in interfaceILcdFeatured
- Parameters:
aIndex
- a valid feature index.aFeature
- the new featureObject
.- Throws:
IllegalArgumentException
- if the feature can't be set.- See Also:
-
equals
Description copied from class:ALcd2DEditablePolypoint
Returns whether the given object has the same class, the same focus point, and the same coordinates.- Overrides:
equals
in classALcd2DEditablePolypoint
-
hashCode
public int hashCode()Description copied from class:ALcdShape
The hash code of this shape is the hash code of its class, in order to be consistent with theALcdShape.equals(Object)
method. Extensions should refine this implementation, based on their properties.- Overrides:
hashCode
in classALcd2DEditablePolypoint
-
toString
- Overrides:
toString
in classALcd2DEditablePolypoint
-
clone
Description copied from class:TLcdXYPolyline
Creates and returns a copy of this object. The contained editable points list is cloned. If cloning is not possible, a warning is sent to the log and a shallow copy is returned. The cache, the bounds and the focus point are not copied or cloned at all, but recalculated when needed.- Specified by:
clone
in interfaceILcdCloneable
- Overrides:
clone
in classTLcdXYPolyline
- See Also:
-