com.esri.arcgis.geometry
Interface IPath

All Superinterfaces:
ICurve, IGeometry, Serializable
All Known Subinterfaces:
IRing, IRing2
All Known Implementing Classes:
Path, Ring

public interface IPath
extends ICurve, Serializable

Provides access to members that identify a path and define its behavior.

Description

A Path is a connected, continuous sequence of Segments. Except for the first and last Segments in the Path, each segment shares its FromPoint with the ToPoint of the previous Segment, and shares its ToPoint with the FromPoint of the following Segment.

Remarks

The Segments composing the Path do not need to be homogenous in type. A Ring is a Path that starts and ends on the same point and defines an area. Paths are the part types in Polylines.

Valid Paths

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

See Also:
IPoint, ICurve, IConstructPath, IGeometry, IRing, IPath

Method Summary
 void generalize(double maxAllowableOffset)
          Generalizes this path using the Douglas-Poiker algorithm.
 void queryChordLengthTangents(int pointIndex, IPoint prevTangent, boolean[] prevSetByUser, IPoint nextTangent, boolean[] nextSetByUser)
          Returns tangent vectors (relative to corresponding endpoint) at both sides of a Bezier end point; and whether they have been set by user or by smoothing process.
 void setChordLengthTangents(int pointIndex, IPoint prevTangent, IPoint nextTangent)
          Sets tangent vectors (relative to corresponding endpoint) at both sides of a Bezier end point; if either is Nothing, they will be set by smoothing process.
 void smooth(double maxAllowableOffset)
          Converts this path into a smooth approximation of itself that contains only Bezier curve segments.
 void smoothLocal(int vertexIndex)
          Replaces up to four segments (two on each of the specified vertex index) with bezier curves.
 
Methods inherited from interface com.esri.arcgis.geometry.ICurve
getFromPoint, getLength, getSubcurve, getToPoint, isClosed, queryFromPoint, queryNormal, queryPoint, queryPointAndDistance, queryTangent, queryToPoint, reverseOrientation, setFromPoint, setToPoint
 
Methods inherited from interface com.esri.arcgis.geometry.IGeometry
geoNormalize, geoNormalizeFromLongitude, getDimension, getEnvelope, getGeometryType, getSpatialReference, isEmpty, project, queryEnvelope, setEmpty, setSpatialReferenceByRef, snapToSpatialReference
 

Method Detail

generalize

void generalize(double maxAllowableOffset)
                throws IOException,
                       AutomationException
Generalizes this path using the Douglas-Poiker algorithm.

Description

Generalizes the Path into a generalized collection of Line segments. Generalize performs a Douglas-Poiker Generalization algorithm with a specified maximum offset tolerance given as input. For Line segments, the Generalized output is a subset of the original input vertices. For non-Linear segments, the Generalized output contains points along all parts of the curve, not necessarily only the vertices.

Remarks

For a path with non-linear segments, the output curve may contain more vertices than the input curve, but all output segments will be linear.

IPath Generalize Example

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Parameters:
maxAllowableOffset - The maxAllowableOffset (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

smooth

void smooth(double maxAllowableOffset)
            throws IOException,
                   AutomationException
Converts this path into a smooth approximation of itself that contains only Bezier curve segments.

Description

Converts the Path into a Path containing only BezierCurve segments. The created BezierCurve path is a Generalization of the original path that has a maximum deviation of maxDeviation from the original path. If maxDeviation = 0, all of the original vertices are maintained. At each vertex, the adjoining BezierCurves have complementary tangents which creates a continuous (smooth) transition between segments.

Remarks

IPath Smooth Example

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Parameters:
maxAllowableOffset - The maxAllowableOffset (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
IPath.smooth(double), IPath.smoothLocal(int), IBezierCurve, IPolycurve.smooth(double)

smoothLocal

void smoothLocal(int vertexIndex)
                 throws IOException,
                        AutomationException
Replaces up to four segments (two on each of the specified vertex index) with bezier curves.

Description

Converts segments containing the indexed vertex into BezierCurves and performs a smoothing operation only at the two segments on either side of the input vertex. The created BezierCurves have complementary tangents at the indexed vertex.

Remarks

IPath SmoothLocal Example

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Parameters:
vertexIndex - The vertexIndex (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
IPath.smooth(double), IPath.smoothLocal(int), IBezierCurve, IPolycurve.smooth(double)

queryChordLengthTangents

void queryChordLengthTangents(int pointIndex,
                              IPoint prevTangent,
                              boolean[] prevSetByUser,
                              IPoint nextTangent,
                              boolean[] nextSetByUser)
                              throws IOException,
                                     AutomationException
Returns tangent vectors (relative to corresponding endpoint) at both sides of a Bezier end point; and whether they have been set by user or by smoothing process.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Parameters:
pointIndex - The pointIndex (in)
prevTangent - A reference to a com.esri.arcgis.geometry.IPoint (in)
prevSetByUser - The prevSetByUser (in/out: use single element array)
nextTangent - A reference to a com.esri.arcgis.geometry.IPoint (in)
nextSetByUser - The nextSetByUser (in/out: use single element array)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setChordLengthTangents

void setChordLengthTangents(int pointIndex,
                            IPoint prevTangent,
                            IPoint nextTangent)
                            throws IOException,
                                   AutomationException
Sets tangent vectors (relative to corresponding endpoint) at both sides of a Bezier end point; if either is Nothing, they will be set by smoothing process.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Parameters:
pointIndex - The pointIndex (in)
prevTangent - A reference to a com.esri.arcgis.geometry.IPoint (in)
nextTangent - A reference to a com.esri.arcgis.geometry.IPoint (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.