com.esri.arcgis.geometry
Class BezierCurve

java.lang.Object
  extended by com.esri.arcgis.geometry.BezierCurve
All Implemented Interfaces:
IBezierCurve, IBezierCurve2, IBezierCurve3, IBezierCurveGEN, IConstructBezierCurve, ICurve, ICurve2, ICurve3, IGeometry, IProximityOperator, ISegment, ISegmentID, ISegmentM, ISegmentZ, ITransform2D, com.esri.arcgis.interop.RemoteObjRef, IClone, ISupportErrorInfo, Serializable

public class BezierCurve
extends Object
implements com.esri.arcgis.interop.RemoteObjRef, IBezierCurveGEN, IBezierCurve, IBezierCurve2, IBezierCurve3, IGeometry, ITransform2D, ICurve, ICurve2, ICurve3, ISegment, IConstructBezierCurve, IProximityOperator, ISupportErrorInfo, IClone, ISegmentM, ISegmentZ, ISegmentID

A cubic Bezier curve defined between two points; optionally has measure, height and ID attributes at each endpoint.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

See Also:
Serialized Form

Constructor Summary
BezierCurve()
          Constructs a BezierCurve using ArcGIS Engine.
BezierCurve(Object obj)
          Deprecated. As of ArcGIS 9.2, replaced by normal Java casts.
BezierCurve theBezierCurve = (BezierCurve) obj;
 
Method Summary
 void assign(IClone src)
          Assigns the properties of src to the receiver.
 void constructTangentsAtEndpoints(ILine pTangentAtFrom, ILine pTangentAtTo)
          Constructs a Bezier curve from tangents at both endpoints.
 void densify(int cInSlots, double maxDeviation, int[] pcOutSegments, ILine[] segments)
          Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.densify(com.esri.arcgis.geometry.ISegment, double, int[], com.esri.arcgis.geometry.ILine[][]).
 boolean equals(Object o)
          Compare this object with another
 IClone esri_clone()
          Clones the receiver and assigns the result to *clone.
 void geographicShift(double splitLongitude)
          Shift longitudes to the right of splitLongitude.
 void geoNormalize()
          Shifts longitudes, if need be, into a continuous range of 360 degrees.
 void geoNormalizeFromLongitude(double longitude)
          Normalizes longitudes into a continuous range containing the longitude.
static String getClsid()
          getClsid.
 int getDegree()
          The degree of the Bezier curve.
 int getDimension()
          The topological dimension of this geometry.
 IEnvelope getEnvelope()
          Creates a copy of this geometry's envelope and returns it.
 IPoint getFromPoint()
          The 'from' point of the curve.
 int getGeometryType()
          The type of this geometry.
 void getIDs(int[] fromID, int[] toID)
          Get the IDs on the segment's endpoints.
 double getLength()
          The length of the curve.
 void getMs(double[] fromM, double[] toM)
          Get the Ms on the segment's endpoints.
 double getParameter(double distanceAlongCurve, boolean asRatio)
          The parametric distance along the bezier.
 ISpatialReference getSpatialReference()
          The spatial reference associated with this geometry.
 void getSubcurve(double fromDistance, double toDistance, boolean asRatio, ICurve[] outSubcurve)
          Extracts a portion of this curve into a new curve.
 IPoint getToPoint()
          The 'to' point of the curve.
 void getZs(double[] fromZ, double[] toZ)
          Get the Zs on the segment's endpoints.
 int hashCode()
          the hashcode for this object
 void interfaceSupportsErrorInfo(GUID riid)
          interfaceSupportsErrorInfo
 boolean isClosed()
          Indicates if 'from' and 'to' points (of each part) are identical.
 boolean isEmpty()
          Indicates whether this geometry contains any points.
 boolean isEqual(IClone other)
          Indicates if the receiver and other have the same properties.
 boolean isIdentical(IClone other)
          Indicates if the receiver and other are the same object.
 boolean isLine()
          Indicates if the curve degenerated to a line.
 void move(double dx, double dy)
          Moves dx units horizontally and dy units vertically.
 void moveVector(ILine v)
          Moves a direction and distance v.
 void project(ISpatialReference newReferenceSystem)
          Projects this geometry into a new spatial reference.
 void putCoord(int index, IPoint controlPoint)
          Sets the specified (0 <= index < 4) control point of this Bezier curve.
 void putCoords(int numPoints, IPoint controlPoints)
          Sets this Bezier curve's control points from an array of between 1 to 4 input points.
 void putCoords(IPoint[] controlPoints)
          Sets this Bezier curve's control points from an array of between 1 to 4 input points.
 void putCoordsEx(IPoint from, IPoint to)
          Sets this segment's endpoints to 'from' and 'to'.
 void queryChordLengthTangentAtFrom(IPoint tangent, boolean[] setByUser)
          Returns tangent vector at 'from' point, based on chord length parametrization; and whether it has been set by user or by smoothing process.
 void queryChordLengthTangentAtTo(IPoint tangent, boolean[] setByUser)
          Returns tangent vector at 'to' point, based on chord length parametrization; and whether it has been set by user or by smoothing process.
 void queryCoord(int index, IPoint controlPoint)
          Copies the specified control point of this Bezier curve into the input point.
 void queryCoords(IPoint controlPoints)
          Copies this Bezier curve's control points into the array of 4 existing points.
 void queryCoords(IPoint[] controlPoints)
          Sets the existing elements of an existing safe array to be equal to the four control points of this bezier curve.
 void queryCurvature(double distanceAlongCurve, boolean asRatio, double[] curvature, ILine unitVector)
          Finds curvature and unit vector starting at point on segment and directed to embedded circle center.
 void queryEnvelope(IEnvelope outEnvelope)
          Copies this geometry's envelope properties into the specified envelope.
 void queryFromPoint(IPoint from)
          Copies this curve's 'from' point to the input point.
 void queryInflectionPoint(IPoint inflectionPoint)
          Finds inflection point; sets it empty if none exists.
 void queryNearestPoint(IPoint p, int extension, IPoint nearest)
          Copies into 'nearest' a point on this geometry nearest to the input point.
 void queryNormal(int extension, double distanceAlongCurve, boolean asRatio, double length, ILine normal)
          Constructs a line normal to a curve from a point at a specified distance along the curve.
 void queryPoint(int extension, double distanceAlongCurve, boolean asRatio, IPoint outPoint)
          Copies to outPoint the properties of a point on the curve at a specified distance from the beginning of the curve.
 void queryPointAndDistance(int extension, IPoint inPoint, boolean asRatio, IPoint outPoint, double[] distanceAlongCurve, double[] distanceFromCurve, boolean[] bRightSide)
          Finds the point on the curve closest to inPoint, then copies that point to outPoint; optionally calculates related items.
 void queryPointsAndDistances(int extension, double searchRadius, IPoint inPoint, boolean asRatio, double[] distanceFromCurve, IEnumPointAndDistance[] pointsAndDistances)
          Given an input point, calculates the minimum distance to the geometry and provides an enumerator over all closest points on the geometry, along with additional information.
 void queryTangent(int extension, double distanceAlongCurve, boolean asRatio, double length, ILine tangent)
          Constructs a line tangent to a curve from a point at a specified distance along the curve.
 void queryToPoint(IPoint to)
          Copies the curve's 'to' point into the input point.
 double returnDistance(IGeometry other)
          Returns the minimum distance between two geometries.
 IPoint returnNearestPoint(IPoint p, int extension)
          Creates and returns a point on this geometry nearest to the input point.
 int returnTurnDirection(ISegment otherSegment)
          Finds turn direction between two connected segments.
 void reverseOrientation()
          Reverses the parameterization of the curve ('from' point becomes 'to' point, first segment becomes last segment, etc).
 void rotate(IPoint origin, double rotationAngle)
          Rotates about the specified origin point.
 void scale(IPoint origin, double sx, double sy)
          Scales about the specified origin using seperate horizonal and vertical scales.
 void setChordLengthTangentAtFrom(IPoint tangent, boolean setByUser)
          Establishes tangent vector at 'from' point, based on chord length parametrization; and sets flag whether it has been set by user or by smoothing process.
 void setChordLengthTangentAtTo(IPoint tangent, boolean setByUser)
          Establishes tangent vector at 'to' point, based on chord length parametrization; and sets flag whether it has been set by user or by smoothing process.
 void setEmpty()
          Removes all points from this geometry.
 void setFromPoint(IPoint from)
          The 'from' point of the curve.
 void setIDs(int fromID, int toID)
          Set the IDs on the segment's endpoints.
 void setMs(double fromM, double toM)
          Set the Ms on the segment's endpoints.
 void setSpatialReferenceByRef(ISpatialReference spatialRef)
          The spatial reference associated with this geometry.
 void setToPoint(IPoint to)
          The 'to' point of the curve.
 void setZs(double fromZ, double toZ)
          Set the Zs on the segment's endpoints.
 void snapToSpatialReference()
          Moves points of this geometry so that they can be represented in the precision of the geometry's associated spatial reference system.
 void splitAtDistance(double distances, boolean asRatio, ISegment[] fromSegment, ISegment[] toSegment)
          Split segment at specified distance.
 void splitDivideLength(double offset, double length, boolean asRatio, int[] numSplitSegments, ISegment splitSegments)
          Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.splitDivideLength(com.esri.arcgis.geometry.ISegment, double, double, boolean, int[], com.esri.arcgis.geometry.ISegment[][]).
 void transform(int direction, ITransformation transformation)
          Applies an arbitrary transformation.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.esri.arcgis.interop.RemoteObjRef
getJintegraDispatch, release
 

Constructor Detail

BezierCurve

public BezierCurve()
            throws IOException,
                   UnknownHostException
Constructs a BezierCurve using ArcGIS Engine.

Throws:
IOException - if there are interop problems
UnknownHostException - if there are interop problems

BezierCurve

public BezierCurve(Object obj)
            throws IOException
Deprecated. As of ArcGIS 9.2, replaced by normal Java casts.
BezierCurve theBezierCurve = (BezierCurve) obj;

Construct a BezierCurve using a reference to such an object returned from ArcGIS Engine or Server. This is semantically equivalent to casting obj to BezierCurve.

Parameters:
obj - an object returned from ArcGIS Engine or Server
Throws:
IOException - if there are interop problems
Method Detail

getClsid

public static String getClsid()
getClsid.


equals

public boolean equals(Object o)
Compare this object with another

Overrides:
equals in class Object

hashCode

public int hashCode()
the hashcode for this object

Overrides:
hashCode in class Object

queryCoords

public void queryCoords(IPoint[] controlPoints)
                 throws IOException,
                        AutomationException
Sets the existing elements of an existing safe array to be equal to the four control points of this bezier curve.

Product Availability

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

Specified by:
queryCoords in interface IBezierCurveGEN
Parameters:
controlPoints - A reference to a com.esri.arcgis.geometry.IPoint array (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

putCoords

public void putCoords(IPoint[] controlPoints)
               throws IOException,
                      AutomationException
Sets this Bezier curve's control points from an array of between 1 to 4 input points.

Description

Defines the control points of the bezier curve using an array of four Points. If the array is defined as an array from 0 to 3, then the index of each point corresponds to the control point they represent.

Remarks

Use PutCoord to set a single control point.

BezierCurve PutCoords Example

Product Availability

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

Specified by:
putCoords in interface IBezierCurveGEN
Parameters:
controlPoints - A reference to a com.esri.arcgis.geometry.IPoint array (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

queryCoord

public void queryCoord(int index,
                       IPoint controlPoint)
                throws IOException,
                       AutomationException
Copies the specified control point of this Bezier curve into the input point.

Product Availability

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

Specified by:
queryCoord in interface IBezierCurve
Specified by:
queryCoord in interface IBezierCurveGEN
Parameters:
index - The index (in)
controlPoint - 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.

putCoord

public void putCoord(int index,
                     IPoint controlPoint)
              throws IOException,
                     AutomationException
Sets the specified (0 <= index < 4) control point of this Bezier curve.

Product Availability

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

Specified by:
putCoord in interface IBezierCurve
Specified by:
putCoord in interface IBezierCurveGEN
Parameters:
index - The index (in)
controlPoint - 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.
See Also:
IPoint

getDegree

public int getDegree()
              throws IOException,
                     AutomationException
The degree of the Bezier curve. For third degree Beziers, this is always 3.

Product Availability

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

Specified by:
getDegree in interface IBezierCurve
Specified by:
getDegree in interface IBezierCurveGEN
Returns:
The degree
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

queryChordLengthTangentAtFrom

public void queryChordLengthTangentAtFrom(IPoint tangent,
                                          boolean[] setByUser)
                                   throws IOException,
                                          AutomationException
Returns tangent vector at 'from' point, based on chord length parametrization; and whether it has been set by user or by smoothing process.

Product Availability

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

Specified by:
queryChordLengthTangentAtFrom in interface IBezierCurve
Specified by:
queryChordLengthTangentAtFrom in interface IBezierCurveGEN
Parameters:
tangent - A reference to a com.esri.arcgis.geometry.IPoint (in)
setByUser - The setByUser (in/out: use single element array)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

queryChordLengthTangentAtTo

public void queryChordLengthTangentAtTo(IPoint tangent,
                                        boolean[] setByUser)
                                 throws IOException,
                                        AutomationException
Returns tangent vector at 'to' point, based on chord length parametrization; and whether it has been set by user or by smoothing process.

Product Availability

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

Specified by:
queryChordLengthTangentAtTo in interface IBezierCurve
Specified by:
queryChordLengthTangentAtTo in interface IBezierCurveGEN
Parameters:
tangent - A reference to a com.esri.arcgis.geometry.IPoint (in)
setByUser - The setByUser (in/out: use single element array)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setChordLengthTangentAtFrom

public void setChordLengthTangentAtFrom(IPoint tangent,
                                        boolean setByUser)
                                 throws IOException,
                                        AutomationException
Establishes tangent vector at 'from' point, based on chord length parametrization; and sets flag whether it has been set by user or by smoothing process.

Product Availability

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

Specified by:
setChordLengthTangentAtFrom in interface IBezierCurve
Specified by:
setChordLengthTangentAtFrom in interface IBezierCurveGEN
Parameters:
tangent - A reference to a com.esri.arcgis.geometry.IPoint (in)
setByUser - The setByUser (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setChordLengthTangentAtTo

public void setChordLengthTangentAtTo(IPoint tangent,
                                      boolean setByUser)
                               throws IOException,
                                      AutomationException
Establishes tangent vector at 'to' point, based on chord length parametrization; and sets flag whether it has been set by user or by smoothing process.

Product Availability

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

Specified by:
setChordLengthTangentAtTo in interface IBezierCurve
Specified by:
setChordLengthTangentAtTo in interface IBezierCurveGEN
Parameters:
tangent - A reference to a com.esri.arcgis.geometry.IPoint (in)
setByUser - The setByUser (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

queryInflectionPoint

public void queryInflectionPoint(IPoint inflectionPoint)
                          throws IOException,
                                 AutomationException
Finds inflection point; sets it empty if none exists.

Product Availability

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

Specified by:
queryInflectionPoint in interface IBezierCurve
Specified by:
queryInflectionPoint in interface IBezierCurveGEN
Parameters:
inflectionPoint - 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.

queryCoords

public void queryCoords(IPoint controlPoints)
                 throws IOException,
                        AutomationException
Copies this Bezier curve's control points into the array of 4 existing points.

Description

QueryCoords returns all four of the BezierCurve control points into an array of 4 Points.

Remarks

Use QueryCoord to get a specific control point.

BezierCurve QueryCoords Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
queryCoords in interface IBezierCurve
Parameters:
controlPoints - 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.

putCoords

public void putCoords(int numPoints,
                      IPoint controlPoints)
               throws IOException,
                      AutomationException
Sets this Bezier curve's control points from an array of between 1 to 4 input points.

Description

It is recommended that the IBezierCurveGEN::PutCoords OLE Automation compliant version of this method be used instead of this version.

Remarks

Use PutCoord to set a single control point.

BezierCurve PutCoords Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
putCoords in interface IBezierCurve
Parameters:
numPoints - The numPoints (in)
controlPoints - 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.

getLength

public double getLength()
                 throws IOException,
                        AutomationException
The length of the curve.

Description

Returns the length of the entire curve. The length of the curve is the sum of the lengths along each parameterized Segment between vertices along the curve.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
getLength in interface ICurve
Returns:
The length
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getFromPoint

public IPoint getFromPoint()
                    throws IOException,
                           AutomationException
The 'from' point of the curve.

Description

Returns or Sets the FromPoint of the first segment of the first part of the curve. While the curve may be composed of many parts and segments each with their own FromPoint, each curve only has a single From Point.

Remarks

FromPoint Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
getFromPoint in interface ICurve
Returns:
A reference to a com.esri.arcgis.geometry.IPoint
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
IPoint, ICurve.queryFromPoint(com.esri.arcgis.geometry.IPoint), ICurve.getFromPoint(), ICurve.queryToPoint(com.esri.arcgis.geometry.IPoint), ICurve.getToPoint()

setFromPoint

public void setFromPoint(IPoint from)
                  throws IOException,
                         AutomationException
The 'from' point of the curve.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
setFromPoint in interface ICurve
Parameters:
from - 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.

queryFromPoint

public void queryFromPoint(IPoint from)
                    throws IOException,
                           AutomationException
Copies this curve's 'from' point to the input point.

Description

Used to query the FromPoint of the first Segment of the first part of the curve.

Remarks

Note: The output geometry must be co-created prior to the query. The output geometry is not co-created by the method; it is populated. This can be used in performance critical situations. For example, creating the geometry only once outside a loop and use the query method could improve performance.

QueryFromPoint Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
queryFromPoint in interface ICurve
Parameters:
from - 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.
See Also:
IPoint, ICurve.queryFromPoint(com.esri.arcgis.geometry.IPoint), ICurve.getFromPoint(), ICurve.queryToPoint(com.esri.arcgis.geometry.IPoint), ICurve.getToPoint()

getToPoint

public IPoint getToPoint()
                  throws IOException,
                         AutomationException
The 'to' point of the curve.

Description

Returns or Sets the ToPoint of the first Segment of the first part of the curve. While the curve may be composed of many parts and segments each with their own ToPoint, each curve only has a single To Point.

Remarks

ToPoint Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
getToPoint in interface ICurve
Returns:
A reference to a com.esri.arcgis.geometry.IPoint
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
IPoint, ICurve.queryFromPoint(com.esri.arcgis.geometry.IPoint), ICurve.getFromPoint(), ICurve.queryToPoint(com.esri.arcgis.geometry.IPoint), ICurve.getToPoint()

setToPoint

public void setToPoint(IPoint to)
                throws IOException,
                       AutomationException
The 'to' point of the curve.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
setToPoint in interface ICurve
Parameters:
to - 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.

queryToPoint

public void queryToPoint(IPoint to)
                  throws IOException,
                         AutomationException
Copies the curve's 'to' point into the input point.

Description

Used to query the ToPoint of the first Segment of the first part of the curve.

Remarks

Note: The output geometry must be co-created prior to the query. The output geometry is not co-created by the method; it is populated. This can be used in performance critical situations. For example, creating the geometry only once outside a loop and use the query method could improve performance.

QueryToPoint Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
queryToPoint in interface ICurve
Parameters:
to - 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.
See Also:
IPoint, ICurve.queryFromPoint(com.esri.arcgis.geometry.IPoint), ICurve.getFromPoint(), ICurve.queryToPoint(com.esri.arcgis.geometry.IPoint), ICurve.getToPoint()

queryPoint

public void queryPoint(int extension,
                       double distanceAlongCurve,
                       boolean asRatio,
                       IPoint outPoint)
                throws IOException,
                       AutomationException
Copies to outPoint the properties of a point on the curve at a specified distance from the beginning of the curve.

Description

Returns the Point at a given distance along the curve or extended curve. If the distance is less than the length of the curve, then the returned point is the point at that distance along the curve. If the distance is less than zero, or greater than the length of the curve, then the returned point is on the curve specified by the extension method. The distance may be specified as a fixed unit of measure or a ratio of the length of the curve.

Remarks

Note: The output geometry must be co-created prior to the query. The output geometry is not co-created by the method; it is populated. This can be used in performance critical situations. For example, creating the geometry only once outside a loop and use the query method could improve performance.

ICurve QueryPoint Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
queryPoint in interface ICurve
Parameters:
extension - A com.esri.arcgis.geometry.esriSegmentExtension constant (in)
distanceAlongCurve - The distanceAlongCurve (in)
asRatio - The asRatio (in)
outPoint - 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.
See Also:
IPoint, esriSegmentExtension

queryPointAndDistance

public void queryPointAndDistance(int extension,
                                  IPoint inPoint,
                                  boolean asRatio,
                                  IPoint outPoint,
                                  double[] distanceAlongCurve,
                                  double[] distanceFromCurve,
                                  boolean[] bRightSide)
                           throws IOException,
                                  AutomationException
Finds the point on the curve closest to inPoint, then copies that point to outPoint; optionally calculates related items.

Description

Finds the Point on the specified extended curve nearest to the input point and the distance between those points. Also returns information about the side of the curve the input point is on as well as the distance along the curve that the nearest point occurs.

Remarks

AsRatio is an input parameter that only affects the DistanceAlongCurve

distanceFromCurve is an output parameter that represents the minimum distance between the curve and the input point.

DistanceAlongCurve is an output parameter that represents the distance between the Frompoint of the input curve and the returned point on the curve.

bRightSide is an output parameter that tells if the output point is on the right side of the curve. The direction of the curve determines the right and left sides.

Note: The output geometry must be co-created prior to the query. The output geometry is not co-created by the method; it is populated. This can be used in performance critical situations. For example, creating the geometry only once outside a loop and use the query method could improve performance.

QueryPointAndDistance Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
queryPointAndDistance in interface ICurve
Parameters:
extension - A com.esri.arcgis.geometry.esriSegmentExtension constant (in)
inPoint - A reference to a com.esri.arcgis.geometry.IPoint (in)
asRatio - The asRatio (in)
outPoint - A reference to a com.esri.arcgis.geometry.IPoint (in)
distanceAlongCurve - The distanceAlongCurve (in/out: use single element array)
distanceFromCurve - The distanceFromCurve (in/out: use single element array)
bRightSide - The bRightSide (in/out: use single element array)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
IPoint

queryTangent

public void queryTangent(int extension,
                         double distanceAlongCurve,
                         boolean asRatio,
                         double length,
                         ILine tangent)
                  throws IOException,
                         AutomationException
Constructs a line tangent to a curve from a point at a specified distance along the curve.

Description

Given a distance along the curve specified either as a ratio of the length or as a specific fixed distance, QueryTangent returns the Line tangent to the Point. The length and method of tangential extension of the tangent line are given by the user. The method of tangential extension determines the direction of the tangent line as though it were being extended at a From point or a To point.

Remarks

QueryTangent Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
queryTangent in interface ICurve
Parameters:
extension - A com.esri.arcgis.geometry.esriSegmentExtension constant (in)
distanceAlongCurve - The distanceAlongCurve (in)
asRatio - The asRatio (in)
length - The length (in)
tangent - A reference to a com.esri.arcgis.geometry.ILine (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
ILine

queryNormal

public void queryNormal(int extension,
                        double distanceAlongCurve,
                        boolean asRatio,
                        double length,
                        ILine normal)
                 throws IOException,
                        AutomationException
Constructs a line normal to a curve from a point at a specified distance along the curve.

Description

Given a distance along the curve specified either as a ratio of the Length or as a specific fixed distance, QueryNormal returns the Line normal to the Point. The length and method of tangential extension of the normal line are given by the user. The method of tangential extension determines the direction of the normal line as though it were being extended at a From point or a To point.

Remarks

QueryNormal Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
queryNormal in interface ICurve
Parameters:
extension - A com.esri.arcgis.geometry.esriSegmentExtension constant (in)
distanceAlongCurve - The distanceAlongCurve (in)
asRatio - The asRatio (in)
length - The length (in)
normal - A reference to a com.esri.arcgis.geometry.ILine (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
ILine

getSubcurve

public void getSubcurve(double fromDistance,
                        double toDistance,
                        boolean asRatio,
                        ICurve[] outSubcurve)
                 throws IOException,
                        AutomationException
Extracts a portion of this curve into a new curve.

Description

Gets the subcurve between the specified points along the original curve and creates a new curve. The elements in the new subcurve are the same type and have the same properties as the elements of the original curve. Which means if:

Input Geometry Output Geometry
Polygon Polyline
Polyline Polyline
Ring Path
Path Path
Segment Segment

If the input geometry is a polygon, you may want to use IRing::GetSubCurveEx which has more capabilities.

Remarks

Subcurve Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
getSubcurve in interface ICurve
Parameters:
fromDistance - The fromDistance (in)
toDistance - The toDistance (in)
asRatio - The asRatio (in)
outSubcurve - A reference to a com.esri.arcgis.geometry.ICurve (out: use single element array)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
IRing.getSubcurveEx(double, double, boolean, boolean, boolean), ICurve.getSubcurve(double, double, boolean, com.esri.arcgis.geometry.ICurve[])

reverseOrientation

public void reverseOrientation()
                        throws IOException,
                               AutomationException
Reverses the parameterization of the curve ('from' point becomes 'to' point, first segment becomes last segment, etc).

Description

ReverseOrientation changes the direction of the curve without changing the spatial position of the curve. The From Point and To Point of each Segment in each part of the curve are interchanged.

Remarks

The ReverseOrientation method works the same way as the Arcedit FLIP command. It reverses the order of the vertices in the Curve.

Caution should be taken in using ReverseOrientation on Polygons. Since ReverseOrientation changes the direction of each Ring within the Polygon, all Exterior Rings become Interior Rings and vice versa.

Reverse Orientation Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
reverseOrientation in interface ICurve
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isClosed

public boolean isClosed()
                 throws IOException,
                        AutomationException
Indicates if 'from' and 'to' points (of each part) are identical.

Description

A curve is closed if the From and To points of each part of the curve are equal.

Remarks

IsClosed may still return TRUE if the curve consists of improperly constructed geometries (ex. non-continuous paths). IsClosed only checks the location of the From and To points of each part, it does not check the internal parts for topological consistency.

ICurve IsClosed Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
isClosed in interface ICurve
Returns:
The isClosed
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getGeometryType

public int getGeometryType()
                    throws IOException,
                           AutomationException
The type of this geometry.

Remarks

esriGeometryNull          = 0
esriGeometryPoint = 1
esriGeometryMultipoint = 2
esriGeometryPolyline = 3
esriGeometryPolygon = 4
esriGeometryEnvelope = 5
esriGeometryPath = 6
esriGeometryAny = 7
esriGeometryMultiPatch = 9
esriGeometryRing = 11
esriGeometryLine = 13
esriGeometryCircularArc = 14
esriGeometryBezier3Curve = 15
esriGeometryEllipticArc = 16
esriGeometryBag = 17
esriGeometryTriangleStrip = 18
esriGeometryTriangleFan = 19
esriGeometryRay = 20
esriGeometrySphere = 21
Geometry Type Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
getGeometryType in interface IGeometry
Returns:
A com.esri.arcgis.geometry.esriGeometryType constant
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getDimension

public int getDimension()
                 throws IOException,
                        AutomationException
The topological dimension of this geometry.

Description

Returns the dimension of the geometry object based on the geometry's type.

Remarks


Note: At 9.0, Multipatches are now considered as two dimensional geometry. esriGeometry3Dimension will be used for an upcoming new geometry type.
Supported esriGeometryDimensions:

-1 esriGeometryNoDimension
1 esriGeometry0Dimension
2 esriGeometry1Dimension
4 esriGeometry2Dimension
5 esriGeometry25Dimension
6 esriGeometry3Dimension

Dimension Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
getDimension in interface IGeometry
Returns:
A com.esri.arcgis.geometry.esriGeometryDimension constant
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getSpatialReference

public ISpatialReference getSpatialReference()
                                      throws IOException,
                                             AutomationException
The spatial reference associated with this geometry.

Description

Returns and sets the Spatial Reference in which the geometry exists. If the spatial reference has not been set the property will return an empty ISpatialReference instance.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
getSpatialReference in interface IGeometry
Returns:
A reference to a com.esri.arcgis.geometry.ISpatialReference
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setSpatialReferenceByRef

public void setSpatialReferenceByRef(ISpatialReference spatialRef)
                              throws IOException,
                                     AutomationException
The spatial reference associated with this geometry.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
setSpatialReferenceByRef in interface IGeometry
Parameters:
spatialRef - A reference to a com.esri.arcgis.geometry.ISpatialReference (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isEmpty

public boolean isEmpty()
                throws IOException,
                       AutomationException
Indicates whether this geometry contains any points.

Description

IsEmpty returns TRUE when the Geometry object does not contain geometric information beyond its original initialization state. An object may be returned to its original initialization (IsEmpty = TRUE) state using SetEmpty.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
isEmpty in interface IGeometry
Returns:
The isEmpty
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setEmpty

public void setEmpty()
              throws IOException,
                     AutomationException
Removes all points from this geometry.

Description

SetEmpty returns the Geometry to its original initialization state by releasing all data referenced by the Geometry.

Remarks


Use the SetEmpty method to clear geometries and release memory. For example, a polygon with 100 rings will have an internal array of 100 pointers to ring objects. That array will go away and Release will be called on each ring. If that polygon had the only reference on those rings, then they'll go away, which releases all their segments, which may also then go away.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
setEmpty in interface IGeometry
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

queryEnvelope

public void queryEnvelope(IEnvelope outEnvelope)
                   throws IOException,
                          AutomationException
Copies this geometry's envelope properties into the specified envelope.

Description

Returns the unique Envelope that binds the Geometry object. This is the smallest Envelope that Contains the object.

Remarks

Note: The output geometry must be co-created prior to the query. The output geometry is not co-created by the method; it is populated. This can be used in performance critical situations. For example, creating the geometry only once outside a loop and use the query method could improve performance.

QueryEnvelope Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
queryEnvelope in interface IGeometry
Parameters:
outEnvelope - A reference to a com.esri.arcgis.geometry.IEnvelope (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getEnvelope

public IEnvelope getEnvelope()
                      throws IOException,
                             AutomationException
Creates a copy of this geometry's envelope and returns it.

Description

Returns the unique Envelope that binds the Geometry object. This is the smallest Envelope that Contains the object.

Remarks

Envelope Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
getEnvelope in interface IGeometry
Returns:
A reference to a com.esri.arcgis.geometry.IEnvelope
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

project

public void project(ISpatialReference newReferenceSystem)
             throws IOException,
                    AutomationException
Projects this geometry into a new spatial reference.

Description

To Project, the geometry needs to have a Spatial Reference set, and not have an UnknownCoordinateSystem. The new spatial reference system passed to the method defines the output coordinate system. If either spatial reference is Unknown, the coordinates are not changed. The Z and measure values are not changed by the Project method.

A geometry is not densified before it is projected. This can lead to the output geometries not reflecting the 'true' shape in the new coordinate system. A straight line in one coordinate system is not necessarily a straight line in a different coordinate system. Use IGeometry2::ProjectEx if you want to densify the geometries while they are projected.

The Project method must be applied on high-level geometries only. High-Level geometries are point, multipoint, polyline and polygon. To use this method with low-level geometries such as segments (Line, Circular Arc, Elliptic Arc, Bézier Curve), paths or rings, they must be wrapped into high-level geometry types.

If a geometry is projected to a projected coordinate system that can't represent the geographic area where the geometry is located (or if trying to move an xy coordinate from outside the projected coordinate system back into geographic), the geometry will be set to empty.

Remarks

Note: This method can only be called upon the top level geometries (Points, Multipoints, Polylines and Polygons). If the from/to spatial references have different geographic coordinate systems, the Project method looks for a GeoTransformationsOperationSet. If the set of Geotransformations is present in memory, Project will use it to perform a geographic/datum Transformation. To use a specific geotransformation, use the IGeometry2::ProjectEx method.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
project in interface IGeometry
Parameters:
newReferenceSystem - A reference to a com.esri.arcgis.geometry.ISpatialReference (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

snapToSpatialReference

public void snapToSpatialReference()
                            throws IOException,
                                   AutomationException
Moves points of this geometry so that they can be represented in the precision of the geometry's associated spatial reference system.

Remarks

SnapToSpatialReference rounds all coordinates to the resolution defined by the geometry's spatial reference system. This has a similar effect on the geometry as storing the geometry in a Geodatabase.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
snapToSpatialReference in interface IGeometry
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

geoNormalize

public void geoNormalize()
                  throws IOException,
                         AutomationException
Shifts longitudes, if need be, into a continuous range of 360 degrees.

Remarks

GeoNormalize acts on geometries whose geographic system coordinates are below -180 degrees longitude or over +180 degrees longitude or on geometries that span the +-180 degrees longitude.
This method requires the geometry to have a valid spatial reference (geographic or projected coordinate system).
This method is used internally as part of the projection process for polygons and polylines. It is typically not used by itself.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
geoNormalize in interface IGeometry
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

geoNormalizeFromLongitude

public void geoNormalizeFromLongitude(double longitude)
                               throws IOException,
                                      AutomationException
Normalizes longitudes into a continuous range containing the longitude. This method is obsolete.

Remarks

This method is obsolete. Use IGeometry::GeoNormalize instead.
This method requires the geometry to have a valid spatial reference (geographic or projected coordinate system).

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
geoNormalizeFromLongitude in interface IGeometry
Parameters:
longitude - The longitude (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isLine

public boolean isLine()
               throws IOException,
                      AutomationException
Indicates if the curve degenerated to a line.

Product Availability

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

Specified by:
isLine in interface IBezierCurve2
Returns:
The isLine
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getParameter

public double getParameter(double distanceAlongCurve,
                           boolean asRatio)
                    throws IOException,
                           AutomationException
The parametric distance along the bezier.

Product Availability

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

Specified by:
getParameter in interface IBezierCurve3
Parameters:
distanceAlongCurve - The distanceAlongCurve (in)
asRatio - The asRatio (in)
Returns:
The u
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

move

public void move(double dx,
                 double dy)
          throws IOException,
                 AutomationException
Moves dx units horizontally and dy units vertically.

Description

Moves the Geometry dX units along the X-Axis and dY units along the Y-Axis. Only changes the position of the Geometry without altering any of the other characteristics. Move is a spatial offset.

Remarks

Transform2D Move Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
move in interface ITransform2D
Parameters:
dx - The dx (in)
dy - The dy (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

moveVector

public void moveVector(ILine v)
                throws IOException,
                       AutomationException
Moves a direction and distance v. v can be in a different spatial reference than the geometry being moved.

Description

Moves the Geometry dX units along the X-Axis and dY units along the Y-Axis, where dX and dY are calculated from the input vector Line. Only the Length and Angle of the vector affect the transformation. The location of the vector does not change the transformation. Only changes the position of the Geometry without altering any of the other characteristics. Move is a spatial offset.

Remarks

Transform2D MoveVector Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
moveVector in interface ITransform2D
Parameters:
v - A reference to a com.esri.arcgis.geometry.ILine (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

scale

public void scale(IPoint origin,
                  double sx,
                  double sy)
           throws IOException,
                  AutomationException
Scales about the specified origin using seperate horizonal and vertical scales. The origin point can be in a different spatial reference than the geometry being scaled.

Description

Stretches the Geometry a factor of sX along the X-Axis and a factor of sY along the Y-Axis (where sX is the ratio of Old Width to New Width, and sY is the ratio of Old Height to New Height). The Origin point is the reference Point from which the transformation is performed (Regardless of the location of the Origin point, the Geometry resulting from the transformation is the same, except for a positional offset). The Origin is the only point in the transformation guaranted to remain in the same location after the transformation is complete.

Remarks

Note: Caution must be taken when scaling a CircularArc or a geometry containing CircularArc segments. Unless Abs(ScaleX) = Abs(ScaleY), the resulting CircularArcs will not retain the characteristics of the original geometry (since they remain CircularArcs).

Scale Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
scale in interface ITransform2D
Parameters:
origin - A reference to a com.esri.arcgis.geometry.IPoint (in)
sx - The sx (in)
sy - The sy (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

rotate

public void rotate(IPoint origin,
                   double rotationAngle)
            throws IOException,
                   AutomationException
Rotates about the specified origin point. The angle is in radians. The origin can be in a different spatial reference than the geometry being rotated.

Description

Rotate performs an angular transform (rotation) on the Geometry. The Origin is the only point in the transformation guaranteed to remain in the same location after the transformation is performed. Regardless of the Origin, the transformed Geometry is the same, except for a positional offset. The RotationAngle is measured in radians.

Remarks

An Envelope cannot be Rotated.

Transform2D Rotate Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
rotate in interface ITransform2D
Parameters:
origin - A reference to a com.esri.arcgis.geometry.IPoint (in)
rotationAngle - The rotationAngle (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

transform

public void transform(int direction,
                      ITransformation transformation)
               throws IOException,
                      AutomationException
Applies an arbitrary transformation. In particular, the transformation parameter can be either an affine transformation or a geographic transformation (datum shift).

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
transform in interface ITransform2D
Parameters:
direction - A com.esri.arcgis.geometry.esriTransformDirection constant (in)
transformation - A reference to a com.esri.arcgis.geometry.ITransformation (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

putCoordsEx

public void putCoordsEx(IPoint from,
                        IPoint to)
                 throws IOException,
                        AutomationException
Sets this segment's endpoints to 'from' and 'to'.

Description

PutCoordsEx allows both the fromPoint and the toPoint to be set simultaneously.
A Conformal Transformation based on the original points and the new points
is applied to the curve.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
putCoordsEx in interface ICurve2
Parameters:
from - A reference to a com.esri.arcgis.geometry.IPoint (in)
to - 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.

queryPointsAndDistances

public void queryPointsAndDistances(int extension,
                                    double searchRadius,
                                    IPoint inPoint,
                                    boolean asRatio,
                                    double[] distanceFromCurve,
                                    IEnumPointAndDistance[] pointsAndDistances)
                             throws IOException,
                                    AutomationException
Given an input point, calculates the minimum distance to the geometry and provides an enumerator over all closest points on the geometry, along with additional information.

Description

This method is similar to QueryPointsAndDistance; but it handles the case where the location of the minimum distance is not unique (See picture below). QueryPointAndDistance returns only the first location, this method returns all locations of minimum distance.

Remarks

AsRatio is an input parameter that only affects the DistanceAlongCurvereturned as part of the output IEnumPointAndDistance enumerator.

distanceFromCurve is an output parameter that represents the minimum distance between the curve and the input point.

IEnumPointAndDistance is an enumerator (it inherits from IEnumVertex) over all nearest points on the curve

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
queryPointsAndDistances in interface ICurve3
Parameters:
extension - A com.esri.arcgis.geometry.esriSegmentExtension constant (in)
searchRadius - The searchRadius (in)
inPoint - A reference to a com.esri.arcgis.geometry.IPoint (in)
asRatio - The asRatio (in)
distanceFromCurve - The distanceFromCurve (in/out: use single element array)
pointsAndDistances - A reference to a com.esri.arcgis.geometry.IEnumPointAndDistance (out: use single element array)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

queryCurvature

public void queryCurvature(double distanceAlongCurve,
                           boolean asRatio,
                           double[] curvature,
                           ILine unitVector)
                    throws IOException,
                           AutomationException
Finds curvature and unit vector starting at point on segment and directed to embedded circle center.

Description

Returns the curvature at a specified distance along the segment. The distance can be given explicitly or as a ratio of the entire length of the segment. The curvature is returned as a Line representing a directional unit vector (in the direction going from the From Point to the To Point) and a double representing the magnitude of the vector of curvature.

Remarks

The unit vector returned by QueryCurvature points toward the center of the circle that has the same first and second derivative at the queried point with a curvature value equal to 1 / Radius of that circle.

QueryCurvature Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
queryCurvature in interface ISegment
Parameters:
distanceAlongCurve - The distanceAlongCurve (in)
asRatio - The asRatio (in)
curvature - The curvature (out: use single element array)
unitVector - A reference to a com.esri.arcgis.geometry.ILine (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

returnTurnDirection

public int returnTurnDirection(ISegment otherSegment)
                        throws IOException,
                               AutomationException
Finds turn direction between two connected segments.

Description

Returns the Turn Direction of the Segment immediately following the current Segment. The two segments must be connected between the To Point of the first segment and the From Point of the second segment. ReturnTurnDirection returns a long corresponding to an esriTurnDirectionEnum or a combination of esriNoTurn or esriUTurn and esriRightTurn or esriLeftTurn. If the two segments are tangential at the point of connection and not completely colinear, then a combination of esriTurnDirectionEnums are returned.

Remarks

ReturnTurnDirection is only available for Lines and CircularArcs, not BezierCurves or EllipticArcs.

ReturnTurnDirection Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
returnTurnDirection in interface ISegment
Parameters:
otherSegment - A reference to a com.esri.arcgis.geometry.ISegment (in)
Returns:
The turnDirection
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

splitAtDistance

public void splitAtDistance(double distances,
                            boolean asRatio,
                            ISegment[] fromSegment,
                            ISegment[] toSegment)
                     throws IOException,
                            AutomationException
Split segment at specified distance.

Description

Splits the input Segment at the given distance and returns the Segment between the original From Point and the split point as well as the Segment between the split point and the original To Point. The split distance may be specified as a ratio of the total distance if AsRatio = TRUE, otherwise the distance is in the same units as the Length of the Segment.

Remarks

SplitAtDistance Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
splitAtDistance in interface ISegment
Parameters:
distances - The distances (in)
asRatio - The asRatio (in)
fromSegment - A reference to a com.esri.arcgis.geometry.ISegment (out: use single element array)
toSegment - A reference to a com.esri.arcgis.geometry.ISegment (out: use single element array)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

splitDivideLength

public void splitDivideLength(double offset,
                              double length,
                              boolean asRatio,
                              int[] numSplitSegments,
                              ISegment splitSegments)
                       throws IOException,
                              AutomationException
Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.splitDivideLength(com.esri.arcgis.geometry.ISegment, double, double, boolean, int[], com.esri.arcgis.geometry.ISegment[][]).

Divide segment into smaller segments of the specified length.

Description

Outputs an array of Segments of a desired input length starting at an offset distance along the curve and continuing until the end of the Segment is reached. The offset and length may be specified as a ratio of the total length of the Segment. SplitDivideLength outputs an array of Segments and the number of Segments in that array. All of the output Segments in the array have the desired input length with the exception of the final Segment which has a length less than or equal to the input length (the remainder of the Segment).

Remarks

SplitDivideLength Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
splitDivideLength in interface ISegment
Parameters:
offset - The offset (in)
length - The length (in)
asRatio - The asRatio (in)
numSplitSegments - The numSplitSegments (in)
splitSegments - A reference to a com.esri.arcgis.geometry.ISegment (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

densify

public void densify(int cInSlots,
                    double maxDeviation,
                    int[] pcOutSegments,
                    ILine[] segments)
             throws IOException,
                    AutomationException
Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.densify(com.esri.arcgis.geometry.ISegment, double, int[], com.esri.arcgis.geometry.ILine[][]).

Densify segment into the specified number of smaller segments. This method is intended for internal use only.

Remarks

Densifying individual segments can be accomplished in client code by add the segment to a temporary polyline, then densifying the polyline using one of the methods on IPolycurve. Alternatively, the IGeometryBridge interface on the GeometryEnvironment object can be used.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
densify in interface ISegment
Parameters:
cInSlots - The cInSlots (in)
maxDeviation - The maxDeviation (in)
pcOutSegments - The pcOutSegments (out: use single element array)
segments - A reference to a com.esri.arcgis.geometry.ILine (out: use single element array)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

geographicShift

public void geographicShift(double splitLongitude)
                     throws IOException,
                            AutomationException
Shift longitudes to the right of splitLongitude. This method is obsolete.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
geographicShift in interface ISegment
Parameters:
splitLongitude - The splitLongitude (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

constructTangentsAtEndpoints

public void constructTangentsAtEndpoints(ILine pTangentAtFrom,
                                         ILine pTangentAtTo)
                                  throws IOException,
                                         AutomationException
Constructs a Bezier curve from tangents at both endpoints.

Description

Constructs a BezierCurve from the ChordLength Tangents are both ends of the BezierCurve. ChordLength Tangents are an alternative method of defining a BezierCurve without using Control Points. While the internal Control Points lie on the same line as the ChordLength Tangents, they are not the same thing.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
constructTangentsAtEndpoints in interface IConstructBezierCurve
Parameters:
pTangentAtFrom - A reference to a com.esri.arcgis.geometry.ILine (in)
pTangentAtTo - A reference to a com.esri.arcgis.geometry.ILine (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

queryNearestPoint

public void queryNearestPoint(IPoint p,
                              int extension,
                              IPoint nearest)
                       throws IOException,
                              AutomationException
Copies into 'nearest' a point on this geometry nearest to the input point.

Description

Queries the nearest point on a geometry to the input point. Depending on the method of segment extension, the nearest point can also be found on an extension of the geometry.

Remarks

QueryNearestPoint Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
queryNearestPoint in interface IProximityOperator
Parameters:
p - A reference to a com.esri.arcgis.geometry.IPoint (in)
extension - A com.esri.arcgis.geometry.esriSegmentExtension constant (in)
nearest - 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.
See Also:
esriSegmentExtension, IProximityOperator.returnNearestPoint(com.esri.arcgis.geometry.IPoint, int)

returnNearestPoint

public IPoint returnNearestPoint(IPoint p,
                                 int extension)
                          throws IOException,
                                 AutomationException
Creates and returns a point on this geometry nearest to the input point.

Description

Finds and returns the nearest point on a geometry to the input point. Depending on the method of segment extension, the nearest point can also be found on an extension of the geometry.

Remarks

ReturnNearestPoint Example

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
returnNearestPoint in interface IProximityOperator
Parameters:
p - A reference to a com.esri.arcgis.geometry.IPoint (in)
extension - A com.esri.arcgis.geometry.esriSegmentExtension constant (in)
Returns:
A reference to a com.esri.arcgis.geometry.IPoint
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
esriSegmentExtension, IProximityOperator.queryNearestPoint(com.esri.arcgis.geometry.IPoint, int, com.esri.arcgis.geometry.IPoint)

returnDistance

public double returnDistance(IGeometry other)
                      throws IOException,
                             AutomationException
Returns the minimum distance between two geometries.

Description

Returns the minimum distance between two geometries. If the geometries intersect, the minimum distance is 0. Only returns the distance, and not the nearest points.

Remarks

ReturnDistance Example

The geometry combinations which can be used with ReturnDistance are:

Point: Point, MultiPoint, Envelope, Polyline, Polygon, Line, CircularArc, EllipticArc, BezierCurve.
Multipoint: Point, MultiPoint, Envelope, Polyline, Polygon.
Envelope: Point, MultiPoint, Envelope, Line, CircularArc, EllipticArc, BezierCurve, PolyLine, Polygon.
PolyLine: Point, Multipoint, Envelope, PolyLine, Polygon.
Polygon: Point, Multipoint, Envelope, PolyLine, Polygon.
Line: Point, Envelope, Line, CircularArc, EllipticArc, BezierCurve.
CircularArc: Point, Envelope, Line, CircularArc, EllipticArc (not implemented yet), BezierCurve.
EllipticArc: Point, Envelope, Line, CircularArc (not implemented yet), EllipticArc (not implemented yet), BezierCurve (not implemented yet).
BezierCurve: Point, Envelope, Line, CircularArc, EllipticArc (not implemented yet), BezierCurve.

Note: To get the distance between a segment (Line, CircularArc, EllipticArc, BezierCurve) and a MultiPoint, PolyLine or Polygon, add that segment to a PolyLine.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
returnDistance in interface IProximityOperator
Parameters:
other - A reference to a com.esri.arcgis.geometry.IGeometry (in)
Returns:
The distance
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

interfaceSupportsErrorInfo

public void interfaceSupportsErrorInfo(GUID riid)
                                throws IOException,
                                       AutomationException
interfaceSupportsErrorInfo

Description

Indicates whether the interface supports IErrorInfo.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
interfaceSupportsErrorInfo in interface ISupportErrorInfo
Parameters:
riid - A Structure: com.esri.arcgis.support.ms.stdole.GUID (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

esri_clone

public IClone esri_clone()
                  throws IOException,
                         AutomationException
Clones the receiver and assigns the result to *clone.

Product Availability

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

Specified by:
esri_clone in interface IClone
Returns:
A reference to a com.esri.arcgis.system.IClone
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

assign

public void assign(IClone src)
            throws IOException,
                   AutomationException
Assigns the properties of src to the receiver.

Description

Use Assign method to assign the properties of source object to receiver object. Both objects need to have the same CLSIDs. Both source and receiver objects need to be instantiated.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
assign in interface IClone
Parameters:
src - A reference to a com.esri.arcgis.system.IClone (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isEqual

public boolean isEqual(IClone other)
                throws IOException,
                       AutomationException
Indicates if the receiver and other have the same properties.

Description

IsEqual returns True if the receiver and the source have the same properties. Note, this does not imply that the receiver and the source reference the same object.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
isEqual in interface IClone
Parameters:
other - A reference to a com.esri.arcgis.system.IClone (in)
Returns:
The equal
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isIdentical

public boolean isIdentical(IClone other)
                    throws IOException,
                           AutomationException
Indicates if the receiver and other are the same object.

Description

IsIdentical returns true if the receiver and the source reference the same object.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
isIdentical in interface IClone
Parameters:
other - A reference to a com.esri.arcgis.system.IClone (in)
Returns:
The identical
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getMs

public void getMs(double[] fromM,
                  double[] toM)
           throws IOException,
                  AutomationException
Get the Ms on the segment's endpoints.

Description

Returns the M attributes held by the From and To point of the segment.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
getMs in interface ISegmentM
Parameters:
fromM - The fromM (out: use single element array)
toM - The toM (out: use single element array)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setMs

public void setMs(double fromM,
                  double toM)
           throws IOException,
                  AutomationException
Set the Ms on the segment's endpoints.

Description

Sets the M attributes for the From and To points of the segment. These attributes can be set regardless of the attribute awareness of the segment.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
setMs in interface ISegmentM
Parameters:
fromM - The fromM (in)
toM - The toM (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getZs

public void getZs(double[] fromZ,
                  double[] toZ)
           throws IOException,
                  AutomationException
Get the Zs on the segment's endpoints.

Description

Returns the Z attributes held by the From and To point of the segment.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
getZs in interface ISegmentZ
Parameters:
fromZ - The fromZ (out: use single element array)
toZ - The toZ (out: use single element array)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setZs

public void setZs(double fromZ,
                  double toZ)
           throws IOException,
                  AutomationException
Set the Zs on the segment's endpoints.

Description

Sets the Z attributes for the From and To points of the segment. These attributes can be set regardless of the attribute awareness of the segment.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
setZs in interface ISegmentZ
Parameters:
fromZ - The fromZ (in)
toZ - The toZ (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getIDs

public void getIDs(int[] fromID,
                   int[] toID)
            throws IOException,
                   AutomationException
Get the IDs on the segment's endpoints.

Description

Returns the PointID attributes held by the From and To point of the segment.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
getIDs in interface ISegmentID
Parameters:
fromID - The fromID (out: use single element array)
toID - The toID (out: use single element array)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setIDs

public void setIDs(int fromID,
                   int toID)
            throws IOException,
                   AutomationException
Set the IDs on the segment's endpoints.

Description

Sets the PointID attributes for the From and To points of the segment. These attributes can be set regardless of the attribute awareness of the segment.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Specified by:
setIDs in interface ISegmentID
Parameters:
fromID - The fromID (in)
toID - The toID (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.