|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface IPolycurve
Provides access to members that define operations common to polylines and the boundaries of polygons.
A polycurve is a collection of many curves that form a single curve. A polycurve can be composed of single segments, connected paths, closed rings, or a combination of various curve types. The paths and segments within a polycurve do not need to be connected to each other. A polycurve may also contain a single segment or path.
IPolycurve
,
IPoint
,
ICurve
,
IPolygon
,
IGeometry
,
IPolycurve2
,
IPolyline
Method Summary | |
---|---|
void |
densify(double maxSegmentLength,
double maxDeviation)
Converts this polycurve into a piecewise linear approximation of itself. |
void |
generalize(double maxAllowableOffset)
Generalizes this polycurve using the Douglas-Poiker algorithm. |
void |
smooth(double maxAllowableOffset)
Converts this curve into a smooth curve containing only Bezier curve segments. |
void |
splitAtDistance(double distance,
boolean asRatio,
boolean createPart,
boolean[] splitHappened,
int[] newPartIndex,
int[] newSegmentIndex)
Introduces a new vertex into this polyline at a specified distance from the beginning of the polyline. |
void |
splitAtPoint(IPoint splitPoint,
boolean projectOnto,
boolean createPart,
boolean[] splitHappened,
int[] newPartIndex,
int[] newSegmentIndex)
Introduces a new vertex into this polyline at the location on it closest to the input point. |
void |
weed(double maxAllowableOffsetFactor)
Generalizes using a small tolerance based upon either the system units of the geometry's spatial reference, or the geometry's bounding box. |
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 |
---|
void densify(double maxSegmentLength, double maxDeviation) throws IOException, AutomationException
Converts Polycurve into a Polycurve composed of Line segments with length maxSegmentLength (or less) that are within maxDeviation of the original polycurve. If maxDeviation = 0, maxDeviation is ignored and Line segments with length maxSegmentLength are constructed with vertices laying on the original curve. All of the segments in the final polyline will be Lines.
If the maxSegmentLength is negative IGeometryEnvironment::AutoDensifyTolerance is used. IGeometryEnvironment::AutoDensifyTolerance default value is 0. This value can be explicitly set via IGeometryEnvironment::AutoDensifyTolerance.
If the maxDeviation is negative IGeometryEnvironment::DeviationAutoDensifyTolerance is used. The default value is 2*XYResolution * 100 (2/XYUnits * 100). This value can be explicitly set via IGeometryEnvironment::DeviationAutoDensifyTolerance.
In order to avoid the creation of too many segments, the geometry system uses a maxdeviation = 2*xyResolution * 100 as default value if maxSegmentLength is 0 and the maxDeviation is 0.
If the maxDeviation is positive but smaller than 2*XYResolution of the spatial reference then the maxDeviation used is 2*XYResolution * 100
NOTE: The default values given in this topic are subject to change without notice. If specific values want to be maintained we recommend using the methods on IGeometryEnvironment to set those explicitly.
The start and end points are always honored and remain the same as for the original feature.
maxSegmentLength
- The maxSegmentLength (in)maxDeviation
- The maxDeviation (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void generalize(double maxAllowableOffset) throws IOException, AutomationException
Generalizes each part of a Polycurve 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.
For polycurve with non-linear segments, the output curve may contain more vertices than the input curve, but all output segments will be linear.
maxAllowableOffset
- The maxAllowableOffset (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void weed(double maxAllowableOffsetFactor) throws IOException, AutomationException
Weed Generalizes each part of a Polycurve into a generalized collection of Line segments. Weed performs a Douglas-Poiker Generalization algorithm with a specified multiple of the internal 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.
For polycurve with non-linear segments, the output curve may contain more vertices than the input curve, but all output segments will be linear.
Weed(X) = Generalize(X * InternalTolerance)
maxAllowableOffsetFactor
- The maxAllowableOffsetFactor (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void smooth(double maxAllowableOffset) throws IOException, AutomationException
Converts the Polycurve into a Polycurve containing only BezierCurve segments. If the maxAllowableOffset parameter is zero, each segment of the input Polycurve becomes a separate Bezier curve. If maxAllowableOffset if greater than zero, the polycurve is generalized first by the Douglas-Poiker method using the maxAllowableOffset value. Bezier curves are then created for each of the remaining segments. The created BezierCurve polycurve is an approximation of the original polycurve. At each vertex, the adjoining BezierCurves have complementary tangents which creates a continuous (smooth) transition between segments.
As an alternative, compare IConstructCurve2::ApproximateByBeziers.
maxAllowableOffset
- The maxAllowableOffset (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.IPath.smooth(double)
,
IPath.smoothLocal(int)
,
IBezierCurve
,
IPolycurve.smooth(double)
void splitAtPoint(IPoint splitPoint, boolean projectOnto, boolean createPart, boolean[] splitHappened, int[] newPartIndex, int[] newSegmentIndex) throws IOException, AutomationException
Adds a new vertex along the curve as the specified input point, or the projection onto the curve of the specified input point.
projectOnto is an input parameter that determines if the output point will be located on the polycurve. If projectOnto is true and the input point is not already on the polycurve then the point is projected on the curve.
createPart is an input parameter that determines if parts (paths) have to be created. createPart must be FALSE for polygons. For polylines, if createPart is TRUE, the part on which the new split point falls is split into two parts with the newly added vertex serving as the end of the first part and the beginning of the second.
SplitHappened is an output parameter that tells if the polycurve has been split or not.
newPartIndex is an output parameter that tells on which part (ring or path) the point has been introduced.
newSegmentIndex is an output parameter that tells what is the index of the new created segment. That index is zero based and part relative (start at 0 for each part).
splitPoint
- A reference to a com.esri.arcgis.geometry.IPoint (in)projectOnto
- The projectOnto (in)createPart
- The createPart (in)splitHappened
- The splitHappened (out: use single element array)newPartIndex
- The newPartIndex (out: use single element array)newSegmentIndex
- The newSegmentIndex (out: use single element array)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void splitAtDistance(double distance, boolean asRatio, boolean createPart, boolean[] splitHappened, int[] newPartIndex, int[] newSegmentIndex) throws IOException, AutomationException
Adds a new vertex point to the curve at a specified distance from the From point of the curve. For a split to happen, the split distance must be between the From and To points of the polycurve.
CreatePart must be FALSE for polygons. For polylines, if CreatePart is TRUE, the part on which the new split point falls is split into two parts with the newly added vertex serving as the end of the first part and the beginning of the second.
distance
- The distance (in)asRatio
- The asRatio (in)createPart
- The createPart (in)splitHappened
- The splitHappened (out: use single element array)newPartIndex
- The newPartIndex (out: use single element array)newSegmentIndex
- The newSegmentIndex (out: use single element array)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |