

PREV CLASS NEXT CLASS  FRAMES NO FRAMES  
SUMMARY: NESTED  FIELD  CONSTR  METHOD  DETAIL: FIELD  CONSTR  METHOD 
java.lang.Object com.esri.arcgis.geometry.Polygon
public class Polygon
A collection of rings ordered by their containment relationship; optionally has measure, height and ID attributes.
Constructor Summary  

Polygon()
Constructs a Polygon using ArcGIS Engine. 

Polygon(Object obj)
Deprecated. As of ArcGIS 9.2, replaced by normal Java casts. Polygon thePolygon = (Polygon) obj; 
Method Summary  

void 
addGeometries(int count,
IGeometry newGeometries)
Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.addGeometries(com.esri.arcgis.geometry.IGeometryCollection, com.esri.arcgis.geometry.IGeometry[]) . 
void 
addGeometry(IGeometry inGeometry,
Object before,
Object after)
Adds a reference to the input geometry either at the end, or before, or after the specified index. 
void 
addGeometryCollection(IGeometryCollection newGeometries)
Adds references to geometries in the input collection. 
void 
addPoint(IPoint inPoint,
Object before,
Object after)
Adds a vertex to a Path, Ring, Polyline, or Polygon; or adds a reference to the input point to a Multipoint, TriangleFan, or TriangleStrip. 
void 
addPointCollection(IPointCollection newPoints)
Adds copies of points in the input point collection to this Path, Ring, Polyline, or Polygon; or adds references to the points in the collection to this Multipoint, TriangleFan, or TriangleStrip. 
void 
addPoints(int count,
IPoint newPoints)
Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.addPoints(com.esri.arcgis.geometry.IPointCollection4, com.esri.arcgis.geometry.IPoint[]) . 
void 
addSegment(ISegment inSegment,
Object before,
Object after)
Adds a reference to the input segment at the end, or before or after a specified index. 
void 
addSegmentCollection(ISegmentCollection segments)
Adds references to the segments from the specified segment collection. 
void 
addSegments(int count,
ISegment newSegments)
Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.addSegments(com.esri.arcgis.geometry.ISegmentCollection, com.esri.arcgis.geometry.ISegment[]) . 
void 
addWKSPointZs(int count,
_WKSPointZ pointStructures)
Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.addWKSPointZs(com.esri.arcgis.geometry.IPointCollection4, com.esri.arcgis.system._WKSPointZ[]) . 
void 
approximateByBeziers(IPolycurve pInCurve,
Object pMaxDistance,
Object smoothClosedParts)
Constructs a curve which approximates the input curve by a small number of Bezier segments. 
void 
assign(IClone src)
Assigns the properties of src to the receiver. 
IGeometry 
buffer(double distance)
Constructs a polygon that is the locus of points at a distance less than or equal to a specified distance from this geometry. 
void 
calculateNonSimpleMs()
Redefines the nonsimple Ms to be values obtained from interpolation of surrounding defined Ms, or extrapolation of Ms. 
void 
calculateNonSimpleZs()
Calculates the nonsimple Z values by extrapolation/interpolation for polylines and interpolation for polygons. 
void 
checkInvalidate()
Invalidates the spatial index if the geometry has been changed since the index was last constructed. 
void 
clip(IEnvelope clipperEnvelope)
Constructs the intersection of this geometry and the specified envelope. 
void 
clipDense(IEnvelope clipperEnvelope,
double denseDistance)
Constructs the intersection of this geometry and the specified envelope; densifies lines in output contributed by the clipping envelope. 
void 
clipToDomain()
Clips the geometry to the domain of the spatial reference. 
void 
close()
Closes all rings in this polygon. 
IEnumGeometry 
constructBuffers(int numBuffers,
double[] distances)
Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.constructBuffers(com.esri.arcgis.geometry.ITopologicalOperator2, double[]) . 
void 
constructExtended(ICurve fromCurve,
ICurve toCurve,
int extensionFlags,
boolean[] extensionsPerformed)
Constructs an extended version of the 'from' curve that goes to the 'to' curve. 
void 
constructKoch(IPolycurve p,
double r,
int recursionLevel)
Constructs a Koch snowflake fractal using the input polycurve as the generator. 
void 
constructOffset(IPolycurve inCurve,
double offset,
Object offsetHow,
Object bevelRatio)
Constructs a curve being the locus of points offset a given distance from another curve. 
void 
constructUnion(IEnumGeometry geometries)
Defines this geometry to be the union of the inputs. 
boolean 
contains(IGeometry other)
Indicates if this geometry contains the other geometry. 
IGeometry 
convexHull()
Constructs the convex hull of this geometry. 
boolean 
crosses(IGeometry other)
Indicates if the two geometries intersect in a geometry of lesser dimension. 
void 
cut(IPolyline cutter,
IGeometry[] leftGeom,
IGeometry[] rightGeom)
Splits this geometry into a part left of the cutting polyline, and a part right of it. 
IGeometryCollection 
cut2(IPolyline pCutter)
Divides a geometry into multiple parts 
void 
densify(double maxSegmentLength,
double maxDeviation)
Converts this polycurve into a piecewise linear approximation of itself. 
void 
densify3D(double maxSegmentLength,
double maxDeviation)
Converts this Polycurve into a piecewise linear approximation of itself. 
void 
densifyByAngle(double maxSegmentLength,
double maxAngleDeviation)
Converts this polycurve into a piecewise linear approximation of itself. 
void 
deserialize(IXMLSerializeData data)
Deserializes an object from XML. 
IGeometry 
difference(IGeometry other)
Constructs the geometry containing points from this geometry but not the other geometry. 
boolean 
disjoint(IGeometry other)
Indicates if the two geometries share no points in common. 
boolean 
disjoint3D(IGeometry pOther)
Indicates if the two geometries share no points in common. 
void 
dropMs()
Sets all the M values to a nonvalid number (NaN). 
void 
dropPointIDs()
Unsets all PointID values without changing awareness. 
void 
dropZs()
Sets all the Z values to a nonvalid number (NaN). 
boolean 
equals(Object o)
Compare this object with another 
IClone 
esri_clone()
Clones the receiver and assigns the result to *clone. 
boolean 
esri_equals(IGeometry other)
Indicates if the two geometries are of the same type and define the same set of points in the plane. 
void 
extrapolateMs(int extrapolationStyle,
int fromPart,
int fromPoint,
int toPart,
int toPoint)
Extrapolates the Ms at one or both ends of the geometry based on the M interval between the fromIndex and the toIndex. 
IRing 
findExteriorRing(IRing interiorRing)
Returns the exterior ring containing the specified interior ring. 
void 
generalize(double maxAllowableOffset)
Generalizes this polycurve using the DouglasPoiker algorithm. 
void 
generalize3D(double maxAllowableOffset)
Generalizes this polycurve using the DouglasPoiker algorithm. 
void 
geodesicDensify(double maxSegmentLength)
Densifies and reshapes existing segments so that the output segments follow the shortest ground path connecting input vertices. 
void 
geometriesChanged()
Tells this geometry collection that some of its geometries have been altered. 
void 
geoNormalize()
Shifts longitudes, if need be, into a continuous range of 360 degrees. 
void 
geoNormalizeEx(ISpatialReference sR,
double denseDistance)
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. 
double 
getArea()
The area. 
double 
getArea3D()
The 3D surface area. 
IGeometry 
getBoundary()
The boundary of this geometry. 
IPoint 
getCentroid()
The center of gravity (centroid). 
IPoint 
getCentroid3D()
A 3D point whose XY coordinates are set to the center of gravity of the shape’s 2D footprint and Z set to the shape’s ZMax. 
IPoint 
getCentroidEx()
The center of gravity (centroid). 
void 
getClassID(GUID[] pClassID)
getClassID 
static String 
getClsid()
getClsid. 
IGeometryBag 
getConnectedComponentBag()
Creates and returns a geometry bag containing polygons that represent connected components of the original. 
void 
getConnectedComponents(int numComponentsRequested,
IPolygon[] components)
Populates an array with polygons that represent connected components of the original. 
int 
getDimension()
The topological dimension of this geometry. 
Object 
getDistancesAtM(boolean asRatio,
double m)
Returns an array of distances along the polyline at which is located the specified M. 
IEnumCurve 
getEnumCurve()
A new curve enumerator for this segment collection. 
IEnumSegment 
getEnumSegments()
A new enumerator for this segment collection. 
IEnumVertex 
getEnumVertices()
A new enumerator for this point collection. 
IEnvelope 
getEnvelope()
Creates a copy of this geometry's envelope and returns it. 
IGeometryBag 
getExteriorRingBag()
Creates and returns a geometry bag that contains references to all exterior rings. 
int 
getExteriorRingCount()
The number of exterior rings. 
IPoint 
getFromPoint()
The 'from' point of the curve. 
IGeometry 
getGeometry(int index)
A reference to the ith geometry. 
int 
getGeometryCount()
The number of geometries in this collection. 
int 
getGeometryType()
The type of this geometry. 
IEnumSegment 
getIndexedEnumSegments(IGeometry queryGeometry)
A new indexed segment enumerator for this segment collection. 
IEnumVertex 
getIndexedEnumVertices(IGeometry queryGeometry)
An indexed vertex enumerator for this point collection. 
IGeometryBag 
getInteriorRingBag(IRing exteriorRing)
Creates and returns a geometry bag that contains references to all rings that are interior to the specified exterior ring. 
int 
getInteriorRingCount(IRing exteriorRing)
The number of rings interior to the specified exterior ring. 
IPoint 
getLabelPoint()
A point guaranteed to be inside this area. 
IPoint 
getLabelPoint3D()
A point guaranteed to be on this 3D surface area. 
double 
getLength()
The length of the curve. 
double 
getLength3D()
The length of the curve. 
double 
getMMax()
The maximum M value. 
double 
getMMin()
The minimum M value. 
int 
getMMonotonic()
A value indicating whether Ms are monotonic, and if so, whether they are ascending or descending. 
Object 
getMsAtDistance(double distance,
boolean asRatio)
Returns M values at the distance along the geometry. 
IGeometryBag 
getOutermostComponentBag()
Creates and returns a geometry bag containing polygons that represent outermost components of the original and all components within (islands within lakes). 
void 
getOutermostComponents(int numComponentsRequested,
int[] numComponentsReturned,
IPolygon[] components,
boolean[] moreComponentsExist)
Populates an array with polygons that represent outermost components of the original and all components within (islands within lakes). 
IPoint 
getPoint(int i)
A copy of the ith vertex of a Path, Ring, Polyline, or Polygon; or a reference to the ith point of a Multipoint, TriangleFan, or TriangleStrip. 
int 
getPointCount()
The number of points in the collection. 
void 
getPoints(int index,
int count,
IPoint[] points)
Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.getPoints(com.esri.arcgis.geometry.IPointCollection4, int, com.esri.arcgis.geometry.IPoint[][]) . 
IGeometryCollection 
getPointsAtM(double m,
double lateralOffset)
Returns a multipoint geometry corresponding to the locations along the geometry where the specified M occurs. 
ISegment 
getSegment(int i)
A reference to the ith segment. 
int 
getSegmentCount()
The number of segments. 
void 
getSizeMax(_ULARGE_INTEGER[] pcbSize)
getSizeMax 
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. 
void 
getSubcurve3D(double fromDistance,
double toDistance,
boolean bAsRatio,
ICurve3D[] ppOutSubCurve)
Extracts a portion of this curve into a new curve. 
IGeometryCollection 
getSubcurveBetweenMs(double fromM,
double toM)
Returns a polyline geometry corresponding to the subcurve(s) between the fromM and the toM. 
IPoint 
getToPoint()
The 'to' point of the curve. 
double 
getZMax()
The maximum Z value. 
double 
getZMin()
The minimum Z value. 
int 
hashCode()
the hashcode for this object 
void 
hasNonLinearSegments(boolean[] nonLinearSegments)
Indicates if this segment collection contains segments other than lines. 
boolean 
hitTest(IPoint queryPoint,
double searchRadius,
int geometryPart,
IPoint hitPoint,
double[] hitDistance,
int[] hitPartIndex,
int[] hitSegmentIndex,
boolean[] bRightSide)
Locates a part of a geometry closest to a query point. 
void 
insertGeometries(int index,
int count,
IGeometry newGeometries)
Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.insertGeometries(com.esri.arcgis.geometry.IGeometryCollection, int, com.esri.arcgis.geometry.IGeometry[]) . 
void 
insertGeometryCollection(int index,
IGeometryCollection newGeometries)
Inserts at the specified index references to all if the geometries in the input collection. 
void 
insertMAtDistance(double m,
double distance,
boolean asRatio,
boolean createPart,
boolean[] splitHappened,
int[] newPartIndex,
int[] newSegmentIndex)
Sets the M value at the given distance along the geometry; creates a point at that distance if no point exists there. 
void 
insertPointCollection(int index,
IPointCollection newPoints)
Inserts copies of points, from the input point collection, as vertices into this Path, Ring, Polyline, or Polygon; or references to points in the input point collection into this Multipoint, TriangleFan, or TriangleStrip. 
void 
insertPoints(int index,
int count,
IPoint newPoints)
Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.insertPoints(com.esri.arcgis.geometry.IPointCollection4, int, com.esri.arcgis.geometry.IPoint[]) . 
void 
insertSegmentCollection(int index,
ISegmentCollection newSegments)
Inserts references to the segments in the input collectoin. 
void 
insertSegmentCollectionEx(int index,
int start,
int count,
ISegmentCollection newSegments)
Inserts references to some of the segments from the input collection. 
void 
insertSegments(int index,
int count,
ISegment newSegments)
Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.insertSegments(com.esri.arcgis.geometry.ISegmentCollection, int, com.esri.arcgis.geometry.ISegment[]) . 
void 
insertWKSPointZs(int index,
int count,
_WKSPointZ newPoints)
Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.insertWKSPointZs(com.esri.arcgis.geometry.IPointCollection4, int, com.esri.arcgis.system._WKSPointZ[]) . 
void 
interfaceSupportsErrorInfo(GUID riid)
interfaceSupportsErrorInfo 
void 
interpolateFromSurface(IFunctionalSurface interpolationSurface)
Use the specified functional surface to generate Z values for the vertices of this object. 
void 
interpolateMsBetween(int fromPart,
int fromPoint,
int toPart,
int toPoint)
Generates Ms by linear interpolation of segment distances for all vertices in the range [start+1, end1]. 
void 
interpolateZsBetween(int startPart,
int startPoint,
int endPart,
int endPoint)
Generate Z values by linear interpolation for all vertices in the range [start+1, end1]. 
IGeometry 
intersect(IGeometry other,
int resultDimension)
Constructs the geometry that is the settheoretic intersection of the input geometries. 
IGeometry 
intersectMultidimension(IGeometry other)
Constructs the settheoretic intersection of the inputs. 
void 
invalidate()
Invalidate the spatial index. 
boolean 
isAllowIndexing()
Indicates whether to allow a spatial index to be created for this geometry. 
boolean 
isChanged()
Indicates if a geometry has been changed (edited, projected, etc). 
boolean 
isClosed()
Indicates if 'from' and 'to' points (of each part) are identical. 
boolean 
isClosed3D()
Indicates if 'from' and 'to' points (of each part) are identical. 
void 
isDirty()
isDirty 
boolean 
isEmpty()
Indicates whether this geometry contains any points. 
boolean 
isEnvelope()
Returns true if the shape of this polygon is equivalent to the polygon's bounding envelope. 
boolean 
isEqual(IClone other)
Returns TRUE when the receiver and other have the same properties. 
boolean 
isIdentical(IClone other)
Returns TRUE when the receiver and other are the same object. 
boolean 
isKnownSimple()
Indicates whether this geometry is known (or assumed) to be topologically correct. 
boolean 
isMAware()
Indicates whether or not the geometry is aware of and capable of handling Ms. 
boolean 
isMSimple()
Indicates if all the Ms are valid numbers. 
boolean 
isPointIDAware()
Indicates whether or not the geometry is aware of and capable of handling PointIDs. 
boolean 
isPointIDSimple()
Indicates if all PointID values for this geometry are welldefined. 
boolean 
isSimple()
Indicates whether this geometry is known (or assumed) to be topologically correct, after explicitly determining this if the geometry is not already known (or assumed) to be simple. 
boolean 
isSimpleEx(int[] reason)
Determines why a geometry is not simple. 
boolean 
isZAware()
Indicates whether or not the geometry is aware of and capable of handling Zs. 
boolean 
isZSimple()
Indicates if all the Zs are valid numbers. 
boolean 
isZVertical()
Indicates if at least two consecutive vertices of this polyline or polygon have the same x and y values, but distinct z values. 
void 
load(IStream pstm)
load 
void 
move(double dx,
double dy)
Moves dx units horizontally and dy units vertically. 
void 
move3D(double dx,
double dy,
double dz)
Moves the object by dx, dy and dz along the x, y, and z axes respectively. 
void 
moveVector(ILine v)
Moves a direction and distance v. 
void 
moveVector3D(IVector3D v)
Moves the object by an offset defined by a 3D vector. 
void 
multiplyMs(double factor)
Multiplies all the M values by a factor. 
void 
multiplyZs(double factor)
Multiplies all the Z values by a factor. 
void 
offsetMs(double offset)
Offsets all the M values by an offset value. 
void 
offsetZs(double offset)
Offsets all the Z values by an offset value. 
boolean 
overlaps(IGeometry other)
Indicates if the intersection of the two geometries has the same dimension as one of the input geometries. 
void 
project(ISpatialReference newReferenceSystem)
Projects this geometry into a new spatial reference. 
void 
project5(ISpatialReference newSpatialReference,
int projectionHint)
Same as Project, but with additional parameter projectionHint. 
void 
projectEx(ISpatialReference newReferenceSystem,
int direction,
IGeoTransformation geoTransformation,
boolean bAngularDensify,
double maxSegmentLength,
double maxDeviation)
Projects a geometry, optionally applies a GeoTransformation, and optionally densifies the geometry. 
void 
projectEx5(ISpatialReference newReferenceSystem,
int direction,
ITransformation transformation,
boolean bAngularDensify,
double maxSegmentLength,
double maxDeviation,
int projectionHint)
Same as ProjectEx, but with additional parameter projectionHint. 
IGeometry 
projectToPlane(IPoint planarOrigin,
IVector3D planarPositiveX,
IVector3D planarNorm)
Generates a polygon footprint for the object in an arbitrary plane. 
void 
queryCentroid(IPoint center)
Copies the centroid of this area to the specified point. 
void 
queryCentroid3D(IPoint center)
Copies the centroid of this 3D surface area to the specified point. 
void 
queryClipped(IEnvelope clipperEnvelope,
IGeometry clippedGeometry)
Redefines clippedGeometry to be the intersection of this geometry and the clipping envelope. 
void 
queryClippedDense(IEnvelope clipperEnvelope,
double denseDistance,
IGeometry clippedGeometry)
Redefines clippedGeometry to be the intersection of this geometry and the clipping envelope; densifies lines in the output contributed by the clipping envelope. 
void 
queryEnvelope(IEnvelope outEnvelope)
Copies this geometry's envelope properties into the specified envelope. 
void 
queryExteriorRings(IRing exteriorRings)
Populates an array with references to all exterior rings. 
void 
queryExteriorRingsEx(int numExteriorRingsRequested,
IRing[] exteriorRings)
Returns an array of references to exterior rings, up to a maximum of the number requested. 
void 
queryFromPoint(IPoint from)
Copies this curve's 'from' point to the input point. 
void 
queryGeometries(int index,
int count,
IGeometry[] geometries)
Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.queryGeometries(com.esri.arcgis.geometry.IGeometryCollection, int, com.esri.arcgis.geometry.IGeometry[][]) . 
void 
queryInteriorRings(IRing exteriorRing,
IRing interiorRings)
Populates an array with references to rings that are interior to the specified exterior ring. 
void 
queryInteriorRingsEx(IRing exteriorRing,
int numInteriorRingsRequested,
IRing[] interiorRings)
Returns an array of references to rings that are interior to the specified exterior ring, up to a maximum of the number requested. 
void 
queryLabelPoint(IPoint labelPoint)
Copies to the input point a point guaranteed to be inside this area. 
void 
queryLabelPoint3D(IPoint labelPoint)
Copies to the input point a point guaranteed to be on this 3D surface area. 
void 
queryNearestPoint(IPoint p,
int extension,
IPoint nearest)
Copies into 'nearest' a point on this geometry nearest to the input point. 
void 
queryNearestPoint3D(IPoint pInP,
int extension,
IPoint pNearest)
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 
queryPoint(int index,
IPoint point)
Queries for a point in the PointCollection at given index. 
void 
queryPoint3D(int extension,
double distanceAlongCurve,
boolean bAsRatio,
IPoint pOutPoint)
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 
queryPointAndDistance3D(int extension,
IPoint pInPoint,
boolean bAsRatio,
IPoint pOutPoint,
double[] pDistanceAlongCurve,
double[] pDistanceFromCurve)
Finds the point on the curve closest to inPoint, then copies that point to outPoint; optionally calculates related items. 
void 
queryPoints(int index,
int count,
IPoint points)
Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.queryPoints(com.esri.arcgis.geometry.IPointCollection4, int, com.esri.arcgis.geometry.IPoint[][]) . 
void 
querySegments(int index,
int count,
ISegment[] segments)
Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.querySegments(com.esri.arcgis.geometry.ISegmentCollection, int, com.esri.arcgis.geometry.ISegment[][]) . 
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. 
void 
queryWKSEnvelope(_WKSEnvelope[] e)
Defines the specified wksenvelope to be the current extent of this geometry in the xy plane. 
void 
queryWKSPointZs(int index,
int count,
_WKSPointZ[] pointStructures)
Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.queryWKSPointZs(com.esri.arcgis.geometry.IPointCollection4, int, com.esri.arcgis.system._WKSPointZ[][]) . 
void 
readExternal(ObjectInput in)

boolean 
relation(IGeometry other,
String relationDescription)
Indicates if the defined relationship exists. 
void 
removeGeometries(int index,
int count)
Removes references to some geometries from this collection. 
void 
removePoints(int index,
int count)
Removes vertices from a Path, Ring, Polyline, or Polygon, or references to points from a Multipoint, TriangleFan, or TriangleStrip. 
void 
removeSegments(int index,
int count,
boolean closeGap)
Removes references to some segments. 
void 
replacePointCollection(int index,
int goingAway,
IPointCollection newPoints)
Replaces vertices/points within a PointCollection. 
void 
replacePoints(int index,
int comingIn,
int goingAway,
IPoint newPoints)
Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.replacePoints(com.esri.arcgis.geometry.IPointCollection4, int, int, com.esri.arcgis.geometry.IPoint[]) . 
void 
replaceSegmentCollection(int index,
int goingAway,
ISegmentCollection newSegments)
Remove and inserts some segments. 
void 
replaceSegments(int index,
int comingIn,
int goingAway,
ISegment newSegments)
Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.replaceSegments(com.esri.arcgis.geometry.ISegmentCollection, int, int, com.esri.arcgis.geometry.ISegment[]) . 
double 
returnDistance(IGeometry other)
Returns the minimum distance between two geometries. 
double 
returnDistance3D(IGeometry pOther)
Returns the minimal distance between two geometries. 
IPoint 
returnNearestPoint(IPoint p,
int extension)
Creates and returns a point on this geometry nearest to the input point. 
IPoint 
returnNearestPoint3D(IPoint pInP,
int extension)
Creates and returns a point on this geometry nearest to the input point. 
void 
reverseMsOrder()
Reverses the order of the Ms along the geometry. 
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 
rotateVector3D(IVector3D axis,
double rotationAngle)
Rotates the object about axis defined by the specified vector through an angle measured in radians. 
void 
save(IStream pstm,
int fClearDirty)
save 
void 
scale(IPoint origin,
double sx,
double sy)
Scales about the specified origin using seperate horizonal and vertical scales. 
void 
scale3D(IPoint origin,
double sx,
double sy,
double sz)
Scales the object about the specified origin point. 
void 
segmentsChanged()
Informs the segment collection that any cached values that it may be maintaining (envelope, length, etc.) are invalid. 
void 
serialize(IXMLSerializeData data)
Serializes an object to XML. 
void 
setAllowIndexing(boolean allowIndexing)
Indicates whether to allow a spatial index to be created for this geometry. 
void 
setAndInterpolateMsBetween(double fromM,
double toM)
Sets the Ms at the beginning and the end of the geometry and interpolates the M values between these values. 
void 
setChanged(boolean isChanged)
Indicates if a geometry has been changed (edited, projected, etc). 
void 
setCircle(IPoint cp,
double circleRadius)
Defines this path, ring, polyline or polygon to contain a single circular arc segment that is closed. 
void 
setConstantZ(double zLevel)
Sets Z coordinates at all vertices to zLevel. 
void 
setEmpty()
Removes all points from this geometry. 
void 
setFromPoint(IPoint from)
The 'from' point of the curve. 
void 
setGeometries(int count,
IGeometry newGeometries)
Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.setGeometries(com.esri.arcgis.geometry.IGeometryCollection, com.esri.arcgis.geometry.IGeometry[]) . 
void 
setGeometryCollection(IGeometryCollection newParts)
Replaces all geometries in the collection with references to geometries from the input collection. 
void 
setIsKnownSimple(boolean rhs1)
Indicates whether this geometry is known (or assumed) to be topologically correct. 
void 
setMAware(boolean mAware)
Indicates whether or not the geometry is aware of and capable of handling Ms. 
void 
setMsAsDistance(boolean asRatio)
Sets the M values to the cumulative length from the origin of the geometry. 
void 
setNonSimpleZs(double zLevel)
Replaces undefined (nonsimple) Z values with the specified constant value. 
void 
setPointCollection(IPointCollection newPoints)
Replaces all vertices of this Path, Ring, Polyline, or Polygon with copies of the points in the input collection; or all points of this Multipoint, TriangleFan, or TriangleStrip with references to points from the input collection. 
void 
setPointIDAware(boolean idAware)
Indicates whether or not the geometry is aware of and capable of handling PointIDs. 
void 
setPoints(int count,
IPoint newPoints)
Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.setPoints(com.esri.arcgis.geometry.IPointCollection4, com.esri.arcgis.geometry.IPoint[]) . 
void 
setRectangle(IEnvelope inEnvelope)
Defines this path, ring, polyline or polygon to have four line segments in the same positions as the sides of the input envelope. 
void 
setSegmentCollection(ISegmentCollection newSegments)
Replaces all segments with references to segments from the input collection. 
void 
setSegments(int count,
ISegment newSegments)
Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.setSegments(com.esri.arcgis.geometry.ISegmentCollection, com.esri.arcgis.geometry.ISegment[]) . 
void 
setSpatialReferenceByRef(ISpatialReference spatialRef)
The spatial reference associated with this geometry. 
void 
setToPoint(IPoint to)
The 'to' point of the curve. 
void 
setWKSPointZs(int count,
_WKSPointZ pointStructures)
Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.setWKSPointZs(com.esri.arcgis.geometry.IPointCollection4, com.esri.arcgis.system._WKSPointZ[]) . 
void 
setZAware(boolean zAware)
Indicates whether or not the geometry is aware of and capable of handling Zs. 
void 
simplify()
Makes this geometry topologically correct. 
void 
simplifyEx(boolean preserveFromToPoints,
boolean closeRings,
boolean useXORRule)
Same as ITopologicalOperator::Simplify, but with some additional options that affect performance and how the interior is classified. 
void 
simplifyPreserveFromTo()
Simplifies the polygon and maintains the index location of the from/to point of each ring. 
void 
simplifySpaghetti()
Simplifies a polygon but doesn't assume that rings need to be explicitly closed. 
void 
smooth(double maxAllowableOffset)
Converts this curve into a smooth curve containing only Bezier curve segments. 
void 
snap()
Snaps ms to the precision of the spatial reference associated with the geometry. 
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 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. 
IEnumSplitPoint 
splitAtDistances(int distanceCount,
double[] distances,
boolean asRatios,
boolean createParts)
Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.splitAtDistances(com.esri.arcgis.geometry.IPolycurve2, double[], boolean, boolean) . 
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. 
IEnumSplitPoint 
splitAtPoints(IEnumVertex splitPoints,
boolean projectOnto,
boolean createParts,
double cutoffDistance)
Introduces new vertices into this polyline at the locations on it closest to the input points. 
IGeometry 
symmetricDifference(IGeometry other)
Constructs the geometry that contains points from either but not both input geometries. 
boolean 
touches(IGeometry other)
Indicates if the boundaries of the geometries intersect. 
void 
transform(int direction,
ITransformation transformation)
Applies an arbitrary transformation. 
void 
transform3D(int direction,
ITransformation3D transformation)
Applies an arbitrary 3D transformation. 
IGeometry 
union(IGeometry other)
Constructs the geometry that is the settheoretic union of the input geometries. 
void 
updatePoint(int i,
IPoint p)
Changes the ith vertex or point to be a copy of 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. 
void 
weed3D(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. 
boolean 
within(IGeometry other)
Indicates if this geometry is contained (is within) another geometry. 
void 
writeExternal(ObjectOutput out)

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 

public Polygon() throws IOException, UnknownHostException
IOException
 if there are interop problems
UnknownHostException
 if there are interop problemspublic Polygon(Object obj) throws IOException
Polygon thePolygon = (Polygon) obj;
obj
to Polygon
.
obj
 an object returned from ArcGIS Engine or Server
IOException
 if there are interop problemsMethod Detail 

public static String getClsid()
public boolean equals(Object o)
equals
in class Object
public int hashCode()
hashCode
in class Object
public int getPointCount() throws IOException, AutomationException
Returns the number of Points in the PointCollection. The last Point in the PointCollection has an index equal to PointCount  1.
getPointCount
in interface IPointCollection
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IPoint getPoint(int i) throws IOException, AutomationException
getPoint
in interface IPointCollection
i
 The i (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void addPoint(IPoint inPoint, Object before, Object after) throws IOException, AutomationException
Adds a Point to a PointCollection. If before and after are omitted, the Point is added to the end of the PointCollection. Additionally, by specifying either the before or after index, the Point can be added at a specific location in the PointCollection.
addPoint
in interface IPointCollection
inPoint
 A reference to a com.esri.arcgis.geometry.IPoint (in)before
 A Variant (in, optional, pass null if not required)after
 A Variant (in, optional, pass null if not required)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void updatePoint(int i, IPoint p) throws IOException, AutomationException
Updates the ith Point with a copy of the input Point. Update replaces the reference to the indexed point with a reference to the input Point.
For efficiency UpdatePoint does not check if the spatial reference of the input point is equal to the spatial reference of the PointCollection. Please make sure that the spatial reference of the input point is equal to the spatial reference of the PointCollection before you pass the point in.
Note : You can also explicitly check the spatial reference by using IClone::IsEqual
//To check spatial reference efficiently
IPoint pointIn = null;
IPointCollection ptColl = null;
ISpatialReference pSpatialReferenceOfCollection = null;
//The next line will not do anything if the two projections are equal
pointIn.project(pSpatialReferenceOfCollection);
ptColl.updatePoint( 1, pointIn);
updatePoint
in interface IPointCollection
i
 The i (in)p
 A reference to a com.esri.arcgis.geometry.IPoint (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void queryPoints(int index, int count, IPoint points) throws IOException, AutomationException
GeometryEnvironment.queryPoints(com.esri.arcgis.geometry.IPointCollection4, int, com.esri.arcgis.geometry.IPoint[][])
.
Queries a specified number (Count) of Points starting at the given index into an array of Points.
queryPoints
in interface IPointCollection
index
 The index (in)count
 The count (in)points
 A reference to a com.esri.arcgis.geometry.IPoint (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void insertPoints(int index, int count, IPoint newPoints) throws IOException, AutomationException
GeometryEnvironment.insertPoints(com.esri.arcgis.geometry.IPointCollection4, int, com.esri.arcgis.geometry.IPoint[])
.
Inserts a specified number (Count) of Points into the PointCollection at the given index from an array of Points. The first Count points from the array are inserted.
insertPoints
in interface IPointCollection
index
 The index (in)count
 The count (in)newPoints
 A reference to a com.esri.arcgis.geometry.IPoint (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void insertPointCollection(int index, IPointCollection newPoints) throws IOException, AutomationException
Inserts a PointCollection of Points into the PointCollection at the specified index. The resulting PointCollection does not retain information about the distinction between the old and new Point Collections.
insertPointCollection
in interface IPointCollection
index
 The index (in)newPoints
 A reference to a com.esri.arcgis.geometry.IPointCollection (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void addPoints(int count, IPoint newPoints) throws IOException, AutomationException
GeometryEnvironment.addPoints(com.esri.arcgis.geometry.IPointCollection4, com.esri.arcgis.geometry.IPoint[])
.
Adds the first specified number (Count) of Points to the PointCollection from an array of Points (with at least Count points). The Points are all added to the end of the PointCollection in the same sequence as they are ordered in the array.
addPoints
in interface IPointCollection
count
 The count (in)newPoints
 A reference to a com.esri.arcgis.geometry.IPoint (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void addPointCollection(IPointCollection newPoints) throws IOException, AutomationException
Adds a PointCollection of Points to the end of the PointCollection. The resulting PointCollection does not retain the division between the old PointCollection and the additional PointCollection.
addPointCollection
in interface IPointCollection
newPoints
 A reference to a com.esri.arcgis.geometry.IPointCollection (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void setPoints(int count, IPoint newPoints) throws IOException, AutomationException
GeometryEnvironment.setPoints(com.esri.arcgis.geometry.IPointCollection4, com.esri.arcgis.geometry.IPoint[])
.
Sets the contents of the PointCollection equal to the first Count Points from the input array of Points. After SetPoints is called, the PointCollection contains only count Points from the input Point array (regardless of what it may have contained previously).
setPoints
in interface IPointCollection
count
 The count (in)newPoints
 A reference to a com.esri.arcgis.geometry.IPoint (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void setPointCollection(IPointCollection newPoints) throws IOException, AutomationException
Sets the contents of the PointCollection equal to the contents of the input PointCollection. After SetPointCollection is called, the PointCollection contains only the Points from the input PointCollection (regardless of what it may have contained previously).
setPointCollection
in interface IPointCollection
newPoints
 A reference to a com.esri.arcgis.geometry.IPointCollection (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void removePoints(int index, int count) throws IOException, AutomationException
Removes a specified number (Count) of Points from a PointCollection starting at a given index.
removePoints
in interface IPointCollection
index
 The index (in)count
 The count (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IEnumVertex getEnumVertices() throws IOException, AutomationException
Returns an EnumVertex for the vertices in the PointCollection. The EnumVertex allows the Points to be tranversed in a sequential order.
getEnumVertices
in interface IPointCollection
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void replacePoints(int index, int comingIn, int goingAway, IPoint newPoints) throws IOException, AutomationException
GeometryEnvironment.replacePoints(com.esri.arcgis.geometry.IPointCollection4, int, int, com.esri.arcgis.geometry.IPoint[])
.
Removes a specified number (goingAway) of Points from a PointCollection starting at a given index and replaces them (starting at the same index) with a specified number (comingIn) of Points from an array of Points.
If you are using attempting to use this method from a .NET enabled language, such as VB.NET, you may need to use the ReplacePoints method provided by the IGeometryBridge interface exposed on the GeometryEnvironment object.
replacePoints
in interface IPointCollection
index
 The index (in)comingIn
 The comingIn (in)goingAway
 The goingAway (in)newPoints
 A reference to a com.esri.arcgis.geometry.IPoint (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void replacePointCollection(int index, int goingAway, IPointCollection newPoints) throws IOException, AutomationException
Replaces a specified number (goingAway) of Points in the PointCollection begining at a given index with a PointCollection of Points (inserted at the given index).
replacePointCollection
in interface IPointCollection
index
 The index (in)goingAway
 The goingAway (in)newPoints
 A reference to a com.esri.arcgis.geometry.IPointCollection (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void queryPoint(int index, IPoint point) throws IOException, AutomationException
Queries the ith Point from the PointCollection. The first Point in the PointCollection has index 0, and the last Point has index equal to PointCount  1. (Alternatively, the last Point in the PointCollection can be referenced using index 1.).
Note: The output geometry must be cocreated prior to the query. The output geometry is not cocreated 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.
queryPoint
in interface IPointCollection
index
 The index (in)point
 A reference to a com.esri.arcgis.geometry.IPoint (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void addWKSPointZs(int count, _WKSPointZ pointStructures) throws IOException, AutomationException
GeometryEnvironment.addWKSPointZs(com.esri.arcgis.geometry.IPointCollection4, com.esri.arcgis.system._WKSPointZ[])
.
addWKSPointZs
in interface IPointCollection4
count
 The count (in)pointStructures
 A Structure: com.esri.arcgis.system._WKSPointZ (A com.esri.arcgis.system._WKSPointZ COM typedef) (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void setWKSPointZs(int count, _WKSPointZ pointStructures) throws IOException, AutomationException
GeometryEnvironment.setWKSPointZs(com.esri.arcgis.geometry.IPointCollection4, com.esri.arcgis.system._WKSPointZ[])
.
setWKSPointZs
in interface IPointCollection4
count
 The count (in)pointStructures
 A Structure: com.esri.arcgis.system._WKSPointZ (A com.esri.arcgis.system._WKSPointZ COM typedef) (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void queryWKSPointZs(int index, int count, _WKSPointZ[] pointStructures) throws IOException, AutomationException
GeometryEnvironment.queryWKSPointZs(com.esri.arcgis.geometry.IPointCollection4, int, com.esri.arcgis.system._WKSPointZ[][])
.
queryWKSPointZs
in interface IPointCollection4
index
 The index (in)count
 The count (in)pointStructures
 A Structure: com.esri.arcgis.system._WKSPointZ (A com.esri.arcgis.system._WKSPointZ COM typedef) (out: use single element array)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void insertWKSPointZs(int index, int count, _WKSPointZ newPoints) throws IOException, AutomationException
GeometryEnvironment.insertWKSPointZs(com.esri.arcgis.geometry.IPointCollection4, int, com.esri.arcgis.system._WKSPointZ[])
.
insertWKSPointZs
in interface IPointCollection4
index
 The index (in)count
 The count (in)newPoints
 A Structure: com.esri.arcgis.system._WKSPointZ (A com.esri.arcgis.system._WKSPointZ COM typedef) (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IEnumVertex getIndexedEnumVertices(IGeometry queryGeometry) throws IOException, AutomationException
getIndexedEnumVertices
in interface IPointCollection3
queryGeometry
 A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void getPoints(int index, int count, IPoint[] points) throws IOException, AutomationException
GeometryEnvironment.getPoints(com.esri.arcgis.geometry.IPointCollection4, int, com.esri.arcgis.geometry.IPoint[][])
.
getPoints
in interface IPointCollection2
index
 The index (in)count
 The count (in)points
 A reference to a com.esri.arcgis.geometry.IPoint (out: use single element array)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public int getGeometryType() throws IOException, AutomationException
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
getGeometryType
in interface IGeometry
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public int getDimension() throws IOException, AutomationException
Returns the dimension of the geometry object based on the geometry's type.
getDimension
in interface IGeometry
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public ISpatialReference getSpatialReference() throws IOException, AutomationException
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.
getSpatialReference
in interface IGeometry
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void setSpatialReferenceByRef(ISpatialReference spatialRef) throws IOException, AutomationException
setSpatialReferenceByRef
in interface IGeometry
spatialRef
 A reference to a com.esri.arcgis.geometry.ISpatialReference (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean isEmpty() throws IOException, AutomationException
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.
isEmpty
in interface IGeometry
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void setEmpty() throws IOException, AutomationException
SetEmpty returns the Geometry to its original initialization state by releasing all data referenced by the Geometry.
setEmpty
in interface IGeometry
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void queryEnvelope(IEnvelope outEnvelope) throws IOException, AutomationException
Returns the unique Envelope that binds the Geometry object. This is the smallest Envelope that Contains the object.
Note: The output geometry must be cocreated prior to the query. The output geometry is not cocreated 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
in interface IGeometry
outEnvelope
 A reference to a com.esri.arcgis.geometry.IEnvelope (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IEnvelope getEnvelope() throws IOException, AutomationException
Returns the unique Envelope that binds the Geometry object. This is the smallest Envelope that Contains the object.
getEnvelope
in interface IGeometry
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void project(ISpatialReference newReferenceSystem) throws IOException, AutomationException
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 highlevel geometries only. HighLevel geometries are point, multipoint, polyline and polygon. To use this method with lowlevel geometries such as segments (Line, Circular Arc, Elliptic Arc, Bézier Curve), paths or rings, they must be wrapped into highlevel 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.
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.
project
in interface IGeometry
newReferenceSystem
 A reference to a com.esri.arcgis.geometry.ISpatialReference (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void snapToSpatialReference() throws IOException, AutomationException
snapToSpatialReference
in interface IGeometry
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void geoNormalize() throws IOException, AutomationException
geoNormalize
in interface IGeometry
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void geoNormalizeFromLongitude(double longitude) throws IOException, AutomationException
geoNormalizeFromLongitude
in interface IGeometry
longitude
 The longitude (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void projectEx(ISpatialReference newReferenceSystem, int direction, IGeoTransformation geoTransformation, boolean bAngularDensify, double maxSegmentLength, double maxDeviation) throws IOException, AutomationException
By default, ProjectEx will not densify geometries as they are 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. Set the bAngularDensify parameter if you want to densify the geometries while they are projected.
projectEx
in interface IGeometry2
newReferenceSystem
 A reference to a com.esri.arcgis.geometry.ISpatialReference (in)direction
 A com.esri.arcgis.geometry.esriTransformDirection constant (in)geoTransformation
 A reference to a com.esri.arcgis.geometry.IGeoTransformation (in)bAngularDensify
 The bAngularDensify (in)maxSegmentLength
 The maxSegmentLength (in)maxDeviation
 The maxDeviation (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void queryWKSEnvelope(_WKSEnvelope[] e) throws IOException, AutomationException
The QueryWKSEnvelope method returns a WKSEnvelope structure corresponding to the envelope of the geometry. Use that method to quickly get the XMin, XMax, YMin and YMax values.
queryWKSEnvelope
in interface IGeometry3
e
 A Structure: com.esri.arcgis.system._WKSEnvelope (A com.esri.arcgis.system._WKSEnvelope COM typedef) (out: use single element array)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean isChanged() throws IOException, AutomationException
The Changed method returns whether or not the geometry has been modified. If the geometry always stays in memory that method only returns 'false' immediately after its creation. However if the shape came from disk the Changed method will return 'false' until de geometry is modified in memory.
isChanged
in interface IGeometry4
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void setChanged(boolean isChanged) throws IOException, AutomationException
setChanged
in interface IGeometry4
isChanged
 The isChanged (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void project5(ISpatialReference newSpatialReference, int projectionHint) throws IOException, AutomationException
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 projectionHint parameter contains information about whether a geometry will cross the coordinate system horizons. If it doesn't, parts of the code that check this and intersect the geometry with the horizons can be omitted. This can dramatically improve performance. Use ISpatialReference3::ProjectionHint to initialize this parameter.
project5
in interface IGeometry5
newSpatialReference
 A reference to a com.esri.arcgis.geometry.ISpatialReference (in)projectionHint
 The projectionHint (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void projectEx5(ISpatialReference newReferenceSystem, int direction, ITransformation transformation, boolean bAngularDensify, double maxSegmentLength, double maxDeviation, int projectionHint) throws IOException, AutomationException
The projectionHint parameter contains information about whether a geometry will cross the coordinate system horizons. If it doesn't, parts of the code that check this and intersect the geometry with the horizons can be omitted. This can dramatically improve performance. Use ISpatialReference3::ProjectionHint to initialize this parameter.
By default, ProjectEx will not densify geometries as they are 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. Set the bAngularDensify parameter if you want to densify the geometries while they are projected.
projectEx5
in interface IGeometry5
newReferenceSystem
 A reference to a com.esri.arcgis.geometry.ISpatialReference (in)direction
 A com.esri.arcgis.geometry.esriTransformDirection constant (in)transformation
 A reference to a com.esri.arcgis.geometry.ITransformation (in)bAngularDensify
 The bAngularDensify (in)maxSegmentLength
 The maxSegmentLength (in)maxDeviation
 The maxDeviation (in)projectionHint
 The projectionHint (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IPoint getCentroidEx() throws IOException, AutomationException
getCentroidEx
in interface IGeometry5
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public int getSegmentCount() throws IOException, AutomationException
Returns the number of Segments in the Segment Collection. The last Segment in the Segment Collection has an index equal to SegmentCount  1.
getSegmentCount
in interface ISegmentCollection
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public ISegment getSegment(int i) throws IOException, AutomationException
getSegment
in interface ISegmentCollection
i
 The i (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void addSegment(ISegment inSegment, Object before, Object after) throws IOException, AutomationException
Adds a Segment to a Segment Collection. If before and after are omitted, the Segment is added to the end of the Segment Collection. Additionally, by specifying either the before or after index, the Segment can be added at a specific location in the Segment Collection.
addSegment
in interface ISegmentCollection
inSegment
 A reference to a com.esri.arcgis.geometry.ISegment (in)before
 A Variant (in, optional, pass null if not required)after
 A Variant (in, optional, pass null if not required)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void querySegments(int index, int count, ISegment[] segments) throws IOException, AutomationException
GeometryEnvironment.querySegments(com.esri.arcgis.geometry.ISegmentCollection, int, com.esri.arcgis.geometry.ISegment[][])
.
Queries a specified number (Count) of Segments starting at the given index into an array of Segments.
querySegments
in interface ISegmentCollection
index
 The index (in)count
 The count (in)segments
 A reference to a com.esri.arcgis.geometry.ISegment (out: use single element array)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void addSegments(int count, ISegment newSegments) throws IOException, AutomationException
GeometryEnvironment.addSegments(com.esri.arcgis.geometry.ISegmentCollection, com.esri.arcgis.geometry.ISegment[])
.
Adds the first specified number (Count) of Segments to the Segment Collection from an array of Segments (with at least Count segments). The Segments are all added to the end of the Segment Collection in the same sequence as they are ordered in the array.
Note: the array must contains only ISegment pointers, otherwise it night crash the application.
addSegments
in interface ISegmentCollection
count
 The count (in)newSegments
 A reference to a com.esri.arcgis.geometry.ISegment (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void addSegmentCollection(ISegmentCollection segments) throws IOException, AutomationException
Adds a Segment Collection of Segments to the end of the existing Segment Collection. It is assumed that the From Point of the new Segment Collection is the same as the To Point of the existing Segment Collection.
AddSegmentCollection add the other geometry to the last part of the current geometry.
For example, adding a polyline (with one part) to another polyline (with one part)
is adding the second polyline segments into the first part of the other polyline
even if the polylines are disjoint.
addSegmentCollection
in interface ISegmentCollection
segments
 A reference to a com.esri.arcgis.geometry.ISegmentCollection (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void insertSegments(int index, int count, ISegment newSegments) throws IOException, AutomationException
GeometryEnvironment.insertSegments(com.esri.arcgis.geometry.ISegmentCollection, int, com.esri.arcgis.geometry.ISegment[])
.
Inserts a specified number (Count) of Segments into the Segment Collection at the given index from an array of Segments. The first Count segments from the array are inserted.
insertSegments
in interface ISegmentCollection
index
 The index (in)count
 The count (in)newSegments
 A reference to a com.esri.arcgis.geometry.ISegment (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void insertSegmentCollection(int index, ISegmentCollection newSegments) throws IOException, AutomationException
Inserts a Segment Collection of segments into the Segment Collection at the specified index. The resulting Segment Collection does not retain information about the distinction between the old and new Segment Collections.
insertSegmentCollection
in interface ISegmentCollection
index
 The index (in)newSegments
 A reference to a com.esri.arcgis.geometry.ISegmentCollection (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void insertSegmentCollectionEx(int index, int start, int count, ISegmentCollection newSegments) throws IOException, AutomationException
insertSegmentCollectionEx
in interface ISegmentCollection
index
 The index (in)start
 The start (in)count
 The count (in)newSegments
 A reference to a com.esri.arcgis.geometry.ISegmentCollection (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void replaceSegments(int index, int comingIn, int goingAway, ISegment newSegments) throws IOException, AutomationException
GeometryEnvironment.replaceSegments(com.esri.arcgis.geometry.ISegmentCollection, int, int, com.esri.arcgis.geometry.ISegment[])
.
Removes a specified number (goingAway) of Segments from a Segment Collection starting at a given index and replaces them (starting at the same index) with a specified number (comingIn) of Segments from an array of Segments.
ReplaceSegments will return an error ("The index is either too large or too small") if the inputs are inconsistent. For example, specifying index = 4 on a polyline with only 2 segments.
On multipart geometry, segments cannot be replaced on more than one part at the time. For example, an error (("The index is either too large or too small") is returned on a polyline with two parts containing three segments each when specifying index= 2, incoming= 2, removal= 2. The error is returned because the first part doesn't contain enough segments to remove two segments starting at index = 2. This behavior is enforced for performance reasons. Please see the example.
replaceSegments
in interface ISegmentCollection
index
 The index (in)comingIn
 The comingIn (in)goingAway
 The goingAway (in)newSegments
 A reference to a com.esri.arcgis.geometry.ISegment (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void replaceSegmentCollection(int index, int goingAway, ISegmentCollection newSegments) throws IOException, AutomationException
Replaces a specified number (goingAway) of Segments in the Segment Collection begining at a given index with a Segment Collection of Segments (inserted at the given index).
replaceSegmentCollection
in interface ISegmentCollection
index
 The index (in)goingAway
 The goingAway (in)newSegments
 A reference to a com.esri.arcgis.geometry.ISegmentCollection (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void removeSegments(int index, int count, boolean closeGap) throws IOException, AutomationException
Removes a specified number (Count) of Segments from a Segment Collection starting at a given index.
If the removal created a disjoint Path and if closeGap is TRUE, then the remaining segments will
be connected at the midpoint of the gap by modifying the segments adjacent to the gap.This will create a
connected Path.
removeSegments
in interface ISegmentCollection
index
 The index (in)count
 The count (in)closeGap
 The closeGap (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void setCircle(IPoint cp, double circleRadius) throws IOException, AutomationException
Sets a SegmentCollection equal to a single segment CircularArc. The CircularArc is a complete circle centered at the input point with a given input Radius. After SetCircle is called, the SegmentCollection contains only the CiruclarArc (regardless of what it may have contained previously). The To and From Points at located at the top (Pi/2 Radians) of the circle.
setCircle
in interface ISegmentCollection
cp
 A reference to a com.esri.arcgis.geometry.IPoint (in)circleRadius
 The circleRadius (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.IConstructCircularArc.constructCircle(com.esri.arcgis.geometry.IPoint, double, boolean)
,
ISegmentCollection.setCircle(com.esri.arcgis.geometry.IPoint, double)
public void setRectangle(IEnvelope inEnvelope) throws IOException, AutomationException
Sets the contents of the SegmentCollection equal to four Line segments that form the sides of the input Envelope. The Segments begin with the LowerLeft point and proceed clockwise (the first side is the left side). After SetRectangle is called, the SegmentCollection contains only the 4 Line segments (regardless of what it may have contained previously). The spatial reference of the envelope is transferred to the SegmentCollection.
setRectangle
in interface ISegmentCollection
inEnvelope
 A reference to a com.esri.arcgis.geometry.IEnvelope (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void setSegments(int count, ISegment newSegments) throws IOException, AutomationException
GeometryEnvironment.setSegments(com.esri.arcgis.geometry.ISegmentCollection, com.esri.arcgis.geometry.ISegment[])
.
Sets the contents of the Segment Collection equal to the first Count segments from the input array of Segments. After SetSegments is called, the Segment Collection contains only count segments from the input Segment array (regardless of what it may have contained previously).
setSegments
in interface ISegmentCollection
count
 The count (in)newSegments
 A reference to a com.esri.arcgis.geometry.ISegment (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void setSegmentCollection(ISegmentCollection newSegments) throws IOException, AutomationException
Sets the contents of the Segment Collection equal to the contents of the input Segment Collection. After SetSegmentCollection is called, the Segment Collection contains only the segments from the input Segment Collection (regardless of what it may have contained previously).
setSegmentCollection
in interface ISegmentCollection
newSegments
 A reference to a com.esri.arcgis.geometry.ISegmentCollection (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IEnumSegment getEnumSegments() throws IOException, AutomationException
Returns an IEnumSegment enumerator for the current SegmentCollection.
getEnumSegments
in interface ISegmentCollection
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IEnumCurve getEnumCurve() throws IOException, AutomationException
Returns an IEnumCurve enumerator for the current SegmentCollection.
getEnumCurve
in interface ISegmentCollection
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void hasNonLinearSegments(boolean[] nonLinearSegments) throws IOException, AutomationException
Returns TRUE if the Segment Collection contains CircularArcs, BezierCurves, or EllipticArcs. Returns FALSE if all segments are Lines.
hasNonLinearSegments
in interface ISegmentCollection
nonLinearSegments
 The nonLinearSegments (in/out: use single element array)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IEnumSegment getIndexedEnumSegments(IGeometry queryGeometry) throws IOException, AutomationException
getIndexedEnumSegments
in interface ISegmentCollection
queryGeometry
 A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void segmentsChanged() throws IOException, AutomationException
SegmentsChanged forces the SegmentCollection to recalculate any values that it has cached. SegmentsChanged should be used whenever the Segments in the SegmentCollection are modified without using the SegmentCollection methods. As long as the SegmentCollection is only modified using SegmentCollection methods, the cached values are current and consistent.
segmentsChanged
in interface ISegmentCollection
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public int getGeometryCount() throws IOException, AutomationException
Returns the number of Geometries in the GeometryCollection. The last Geometry in the GeometryCollection has an index equal to GeometryCount  1.
getGeometryCount
in interface IGeometryCollection
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IGeometry getGeometry(int index) throws IOException, AutomationException
getGeometry
in interface IGeometryCollection
index
 The index (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void addGeometry(IGeometry inGeometry, Object before, Object after) throws IOException, AutomationException
When applying the AddGeometry method give either the before or after index and not both. Adding a Geometry to the collection as the first one is done by setting the before index as 0.
The spatial reference of the GeometryCollection is transferred (objects projected if necessary) to any objects added to it. However the spatial reference of the added geometry is not transferred to the GeometryCollection. Always make sure to set the spatial reference on the object GeometryCollection prior to add other geometries to it to avoid creating invalid geometry. For example, adding geometry objects to a GeometryBag that doesn't have a welldefined spatial reference will set an undefined spatial reference to all the objects added to the bag. Using this GeometryBag may cause unexpected behavior with the ITopologicalOperator::ConstructUnion method.
addGeometry
in interface IGeometryCollection
inGeometry
 A reference to a com.esri.arcgis.geometry.IGeometry (in)before
 A Variant (in, optional, pass null if not required)after
 A Variant (in, optional, pass null if not required)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void queryGeometries(int index, int count, IGeometry[] geometries) throws IOException, AutomationException
GeometryEnvironment.queryGeometries(com.esri.arcgis.geometry.IGeometryCollection, int, com.esri.arcgis.geometry.IGeometry[][])
.
Note: The GeometryType returned by the QueryGeometries method depends on which object type points the IGeometryCollection pointer.
IGeometryCollection Object GeometryType  Returned Object GeometryType 
Polygon 
Rings 
Polyline 
Paths 
Multipoint 
Points 
Multipatch 
TriangleFans or TriangleStrips or Rings 
TriangleFan 
Points 
TriangleStrip 
Points 
Geometry Bag 
Any type of IGeometry 
queryGeometries
in interface IGeometryCollection
index
 The index (in)count
 The count (in)geometries
 A reference to a com.esri.arcgis.geometry.IGeometry (out: use single element array)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void addGeometries(int count, IGeometry newGeometries) throws IOException, AutomationException
GeometryEnvironment.addGeometries(com.esri.arcgis.geometry.IGeometryCollection, com.esri.arcgis.geometry.IGeometry[])
.
The geometries are added last in the list. Use an array of geometries (IGeometry) and the exact number (count ) of elements in the array. Exceeding the boundary of the array will cause an application error. If you don't want to place the geometries last in the collection then use the InsertGeometries method.
addGeometries
in interface IGeometryCollection
count
 The count (in)newGeometries
 A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void addGeometryCollection(IGeometryCollection newGeometries) throws IOException, AutomationException
Adds references of all of the parts of the input GeometryCollection to the end of the current GeometryCollection.
addGeometryCollection
in interface IGeometryCollection
newGeometries
 A reference to a com.esri.arcgis.geometry.IGeometryCollection (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void insertGeometries(int index, int count, IGeometry newGeometries) throws IOException, AutomationException
GeometryEnvironment.insertGeometries(com.esri.arcgis.geometry.IGeometryCollection, int, com.esri.arcgis.geometry.IGeometry[])
.
The geometries are inserted before the ith (index) element in the list. Use an array of geometries and give the exact number (count ) of elements in the array. A too large value for the count parameter causes exceeding the boundary of the array and will cause an application error. To place the geometries last in the collection then use the addGeometries method.
insertGeometries
in interface IGeometryCollection
index
 The index (in)count
 The count (in)newGeometries
 A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void insertGeometryCollection(int index, IGeometryCollection newGeometries) throws IOException, AutomationException
InsertGeometryCollection merges one GeometryCollection within another at a specified index.
insertGeometryCollection
in interface IGeometryCollection
index
 The index (in)newGeometries
 A reference to a com.esri.arcgis.geometry.IGeometryCollection (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void setGeometries(int count, IGeometry newGeometries) throws IOException, AutomationException
GeometryEnvironment.setGeometries(com.esri.arcgis.geometry.IGeometryCollection, com.esri.arcgis.geometry.IGeometry[])
.
SetGeometries is used to reset the references of the geometries within the GeometryCollection . The result is that all references are changed to point only at the geometries contained within the specified array. Note that the GeometryCount changes accordingly also.
setGeometries
in interface IGeometryCollection
count
 The count (in)newGeometries
 A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void setGeometryCollection(IGeometryCollection newParts) throws IOException, AutomationException
SetGeometryCollection copies the geometry references from one GeometryCollection to another.
VB Example: Set GeometryCollection m_pGeoColl_A as m_pGeoColl_B
m_pGeoColl_A.SetGeometryCollection m_pGeoColl_B
setGeometryCollection
in interface IGeometryCollection
newParts
 A reference to a com.esri.arcgis.geometry.IGeometryCollection (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void removeGeometries(int index, int count) throws IOException, AutomationException
removeGeometries
in interface IGeometryCollection
index
 The index (in)count
 The count (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void geometriesChanged() throws IOException, AutomationException
GeometriesChanged flags that the geometries have been changed. It also marks a top level geometry as being nonsimple. Use it when manipulating the parts of a geometry directly (for example, rotating a ring). The top level geometry won't know that its cached envelope, length, centroid, etc. are invalid until this method is used.
geometriesChanged
in interface IGeometryCollection
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public double getLength() throws IOException, AutomationException
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.
getLength
in interface ICurve
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IPoint getFromPoint() throws IOException, AutomationException
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.
getFromPoint
in interface ICurve
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.IPoint
,
ICurve.queryFromPoint(com.esri.arcgis.geometry.IPoint)
,
ICurve.getFromPoint()
,
ICurve.queryToPoint(com.esri.arcgis.geometry.IPoint)
,
ICurve.getToPoint()
public void setFromPoint(IPoint from) throws IOException, AutomationException
setFromPoint
in interface ICurve
from
 A reference to a com.esri.arcgis.geometry.IPoint (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void queryFromPoint(IPoint from) throws IOException, AutomationException
Used to query the FromPoint of the first Segment of the first part of the curve.
Note: The output geometry must be cocreated prior to the query. The output geometry is not cocreated 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
in interface ICurve
from
 A reference to a com.esri.arcgis.geometry.IPoint (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.IPoint
,
ICurve.queryFromPoint(com.esri.arcgis.geometry.IPoint)
,
ICurve.getFromPoint()
,
ICurve.queryToPoint(com.esri.arcgis.geometry.IPoint)
,
ICurve.getToPoint()
public IPoint getToPoint() throws IOException, AutomationException
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.
getToPoint
in interface ICurve
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.IPoint
,
ICurve.queryFromPoint(com.esri.arcgis.geometry.IPoint)
,
ICurve.getFromPoint()
,
ICurve.queryToPoint(com.esri.arcgis.geometry.IPoint)
,
ICurve.getToPoint()
public void setToPoint(IPoint to) throws IOException, AutomationException
setToPoint
in interface ICurve
to
 A reference to a com.esri.arcgis.geometry.IPoint (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void queryToPoint(IPoint to) throws IOException, AutomationException
Used to query the ToPoint of the first Segment of the first part of the curve.
Note: The output geometry must be cocreated prior to the query. The output geometry is not cocreated 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
in interface ICurve
to
 A reference to a com.esri.arcgis.geometry.IPoint (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.IPoint
,
ICurve.queryFromPoint(com.esri.arcgis.geometry.IPoint)
,
ICurve.getFromPoint()
,
ICurve.queryToPoint(com.esri.arcgis.geometry.IPoint)
,
ICurve.getToPoint()
public void queryPoint(int extension, double distanceAlongCurve, boolean asRatio, IPoint outPoint) throws IOException, AutomationException
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.
Note: The output geometry must be cocreated prior to the query. The output geometry is not cocreated 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.
queryPoint
in interface ICurve
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)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.IPoint
,
esriSegmentExtension
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 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.
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 cocreated prior to the query. The output geometry is not cocreated 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
in interface ICurve
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)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.IPoint
public void queryTangent(int extension, double distanceAlongCurve, boolean asRatio, double length, ILine tangent) throws IOException, AutomationException
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.
queryTangent
in interface ICurve
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)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.ILine
public void queryNormal(int extension, double distanceAlongCurve, boolean asRatio, double length, ILine normal) throws IOException, AutomationException
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.
queryNormal
in interface ICurve
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)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.ILine
public void getSubcurve(double fromDistance, double toDistance, boolean asRatio, ICurve[] outSubcurve) throws IOException, AutomationException
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.
getSubcurve
in interface ICurve
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)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.IRing.getSubcurveEx(double, double, boolean, boolean, boolean)
,
ICurve.getSubcurve(double, double, boolean, com.esri.arcgis.geometry.ICurve[])
public void reverseOrientation() throws IOException, AutomationException
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.
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.
reverseOrientation
in interface ICurve
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean isClosed() throws IOException, AutomationException
A curve is closed if the From and To points of each part of the curve are equal.
IsClosed may still return TRUE if the curve consists of improperly constructed geometries (ex. noncontinuous 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.
isClosed
in interface ICurve
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public 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.
densify
in interface IPolycurve
maxSegmentLength
 The maxSegmentLength (in)maxDeviation
 The maxDeviation (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void generalize(double maxAllowableOffset) throws IOException, AutomationException
Generalizes each part of a Polycurve into a generalized collection of Line segments. Generalize performs a DouglasPoiker 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 nonLinear segments, the Generalized output contains points along all parts of the curve, not necessarily only the vertices.
For polycurve with nonlinear segments, the output curve may contain more vertices than the input curve, but all output segments will be linear.
generalize
in interface IPolycurve
maxAllowableOffset
 The maxAllowableOffset (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void weed(double maxAllowableOffsetFactor) throws IOException, AutomationException
Weed Generalizes each part of a Polycurve into a generalized collection of Line segments. Weed performs a DouglasPoiker 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 nonLinear segments, the Generalized output contains points along all parts of the curve, not necessarily only the vertices.
For polycurve with nonlinear segments, the output curve may contain more vertices than the input curve, but all output segments will be linear.
Weed(X) = Generalize(X * InternalTolerance)
weed
in interface IPolycurve
maxAllowableOffsetFactor
 The maxAllowableOffsetFactor (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public 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 DouglasPoiker 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.
smooth
in interface IPolycurve
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)
public 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).
splitAtPoint
in interface IPolycurve
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.public 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.
splitAtDistance
in interface IPolycurve
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.public IEnumSplitPoint splitAtPoints(IEnumVertex splitPoints, boolean projectOnto, boolean createParts, double cutoffDistance) throws IOException, AutomationException
The SplitAtPoints method allows splitting a polycurve (polygon or polyline) in sections using a set of points.
Parameters description:
splitPoints: Input IEnumVertex object. It represents the points to be used to split the polycurve.
projectOnto: The 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. If false, the polycurve is split and modified to pass trough the point.
createParts: The createParts 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.
cutoffDistance: Input Double that represents the distance from the curve from where points are not considered anymore has being valid split points.
Note: The IEnumSplitPoint contains the input points.
splitAtPoints
in interface IPolycurve2
splitPoints
 A reference to a com.esri.arcgis.geometry.IEnumVertex (in)projectOnto
 The projectOnto (in)createParts
 The createParts (in)cutoffDistance
 The cutoffDistance (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IEnumSplitPoint splitAtDistances(int distanceCount, double[] distances, boolean asRatios, boolean createParts) throws IOException, AutomationException
GeometryEnvironment.splitAtDistances(com.esri.arcgis.geometry.IPolycurve2, double[], boolean, boolean)
.
splitAtDistances
in interface IPolycurve2
distanceCount
 The distanceCount (in)distances
 The distances (in)asRatios
 The asRatios (in)createParts
 The createParts (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void densifyByAngle(double maxSegmentLength, double maxAngleDeviation) throws IOException, AutomationException
Converts a 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 located on the original curve. All of the segments in the final polyline will be Lines. The maxDeviation is an angle in radians.
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::AngularAutoDensifyTolerance is used. The default value is Pi / 18.0. That value can be explicitly set via IGeometryEnvironment::AngularAutoDensifyTolerance.
In order to avoid the creation of too many segments, the geometry system uses a maxDeviation = 2*XYresolution * 100 (or 2/XYUnits * 100) as the default value if maxSegmentLength is 0 and the maxDeviation is 0.
The maximum number of segments that can be produced is 2000, an external user cannot modify that value.
NOTE: The default values given in this topic are subject to change without notice. If you have specific values that you want to be maintained, we recommend using the methods on IGeometryEnvironment to set them explicitly.
The start and end points are always honored and remain the same as for the original feature.
densifyByAngle
in interface IPolycurve2
maxSegmentLength
 The maxSegmentLength (in)maxAngleDeviation
 The maxAngleDeviation (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void geodesicDensify(double maxSegmentLength) throws IOException, AutomationException
The GeodesicDensify method modifies a polyline or polygon by inserting vertices. The original geometry is interpreted as a sequential collection of "stops" on the Earth's surface. The inserted vertices define the shape of the shortest ground path connecting those stops. The geometry must be associated with a geographic coordinate system.
The maxSegmentLength parameter is in the units (usually meters) of the semimajor axis of the coordinate system's ellipsoid. The minimum allowable value for this parameter is 1/10,000 of the length of the semimajor axis. This minimum value will be used for densification if the input value of maxSegmentLength is less than that.
The image below shows the results of applying the GeodesicDensify method to a polyline representing a flight path with stops in Honolulu and Los Angeles. The original polyline is modified by adding additional segments that identify the shortest ground distance between these locations.
geodesicDensify
in interface IPolycurve4
maxSegmentLength
 The maxSegmentLength (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public double getArea() throws IOException, AutomationException
Returns the area enclosed between the Exterior Rings and the Interior Rings of the 2 (or 2.5) Dimensional geometry. Interior Rings return a negative Area.
getArea
in interface IArea
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IPoint getCentroid() throws IOException, AutomationException
Returns the Centroid of the 2 (or 2.5) Dimensional figure. The Centroid is the center of the weighted area.
The Centroid does not always occur inside the Area of the geometry. The Centroid is not the same as the center of the geometry or the Envelope binding the geometry (but it may be if and only if that is also the center of the weighted area).
getCentroid
in interface IArea
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.IArea.queryCentroid(com.esri.arcgis.geometry.IPoint)
,
IArea.getCentroid()
,
IArea.queryLabelPoint(com.esri.arcgis.geometry.IPoint)
,
IArea.getLabelPoint()
public IPoint getLabelPoint() throws IOException, AutomationException
Returns the Label Point of the object. The Label Point is the point at which the label is located. The Label Point is always located within the Area of the object.
getLabelPoint
in interface IArea
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.IArea.queryCentroid(com.esri.arcgis.geometry.IPoint)
,
IArea.getCentroid()
,
IArea.queryLabelPoint(com.esri.arcgis.geometry.IPoint)
,
IArea.getLabelPoint()
public void queryCentroid(IPoint center) throws IOException, AutomationException
Queries the Centroid of the 2 (or 2.5) Dimensional figure. The Centroid is the center of the weighted area. You must instantiate the Point before calling QueryCentroid. For example,
Dim pPoint as IPoint
Set pPoint = New Point
The Centroid does not always occur inside the Area of the geometry. The Centroid is not the same as the center of the geometry or the Envelope binding the geometry (but it may be if and only if that is also the center of the weighted area).
Note: The output geometry must be cocreated prior to the query. The output geometry is not cocreated 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.
queryCentroid
in interface IArea
center
 A reference to a com.esri.arcgis.geometry.IPoint (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.IArea.queryCentroid(com.esri.arcgis.geometry.IPoint)
,
IArea.getCentroid()
,
IArea.queryLabelPoint(com.esri.arcgis.geometry.IPoint)
,
IArea.getLabelPoint()
public void queryLabelPoint(IPoint labelPoint) throws IOException, AutomationException
Queries the Label Point of the object. The Label Point is the point at which the label is located. The Label Point is always located within the Area of the object. You must instantiate the point before calling QueryLabelPoint. For example,
Dim pPoint as IPoint
Set pPoint = New Point
Note: The output geometry must be cocreated prior to the query. The output geometry is not cocreated 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.
queryLabelPoint
in interface IArea
labelPoint
 A reference to a com.esri.arcgis.geometry.IPoint (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.IArea.queryCentroid(com.esri.arcgis.geometry.IPoint)
,
IArea.getCentroid()
,
IArea.queryLabelPoint(com.esri.arcgis.geometry.IPoint)
,
IArea.getLabelPoint()
public double getArea3D() throws IOException, AutomationException
If Patches comprising a MultiPatch geometry have improperly ordered vertices such that positive faces are not pointing outwards, a negative 3D surface area will be returned. To ensure proper orientation, add vertices in a clockwise manner relative to an observer situated outside of the MultiPatch geometry.
getArea3D
in interface IArea3D
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IPoint getCentroid3D() throws IOException, AutomationException
getCentroid3D
in interface IArea3D
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IPoint getLabelPoint3D() throws IOException, AutomationException
getLabelPoint3D
in interface IArea3D
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void queryCentroid3D(IPoint center) throws IOException, AutomationException
queryCentroid3D
in interface IArea3D
center
 A reference to a com.esri.arcgis.geometry.IPoint (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void queryLabelPoint3D(IPoint labelPoint) throws IOException, AutomationException
queryLabelPoint3D
in interface IArea3D
labelPoint
 A reference to a com.esri.arcgis.geometry.IPoint (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IRing findExteriorRing(IRing interiorRing) throws IOException, AutomationException
Returns the Exterior Ring to which the input Interior Ring belongs. Every interior ring belongs to one and only one exterior ring.
findExteriorRing
in interface IPolygon
interiorRing
 A reference to a com.esri.arcgis.geometry.IRing (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public int getExteriorRingCount() throws IOException, AutomationException
Returns the number of Exterior Rings that are part of the polygon. Exterior Rings have a clockwise orientation.
getExteriorRingCount
in interface IPolygon
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void queryExteriorRings(IRing exteriorRings) throws IOException, AutomationException
Returns an array of IRings containing all of the Exterior Rings in the Polygon. Whenever possible, IPolygon2::QueryExteriorRingsEx should be used instead to ensure proper functionality and better control of the returned array.
Note : That method only accepts an array of type IRing for exteriorRings. Using an array of IRing2 won't work.
queryExteriorRings
in interface IPolygon
exteriorRings
 A reference to a com.esri.arcgis.geometry.IRing (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public int getInteriorRingCount(IRing exteriorRing) throws IOException, AutomationException
getInteriorRingCount
in interface IPolygon
exteriorRing
 A reference to a com.esri.arcgis.geometry.IRing (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void queryInteriorRings(IRing exteriorRing, IRing interiorRings) throws IOException, AutomationException
Returns an array of IRings containing all Interior Rings belonging to a specified input Exterior Ring. Whenever possible, IPolygon2::QueryInteriorRingsEx should be used to ensure proper functionality and better control of the returned array.
Note : That method only accepts an array of type IRing for interiorRings. Using an array of IRing2 won't work.
queryInteriorRings
in interface IPolygon
exteriorRing
 A reference to a com.esri.arcgis.geometry.IRing (in)interiorRings
 A reference to a com.esri.arcgis.geometry.IRing (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void close() throws IOException, AutomationException
Closes all Rings in the Polygon by adding a Segment between the To Point and From Point of each Ring if those points are not already identical. This may result in a nonsimple Polygon with Rings crossing each other. Also, this only closes the last segment and does not fix improperly constructed Rings.
close
in interface IPolygon
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void simplifyPreserveFromTo() throws IOException, AutomationException
SimplifyPreserveFromTo simplifies the polygon in the same manner as the ITopologicalOperator method Simplify, but once simplification is complete, SimplifyPreserveFromTo reorients each ring such that the original From/To points of each preexisting ring are in the simplified result. Newly created rings are not reoriented.
simplifyPreserveFromTo
in interface IPolygon
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void queryExteriorRingsEx(int numExteriorRingsRequested, IRing[] exteriorRings) throws IOException, AutomationException
Returns an array of IRings containing up to numExteriorRingsRequested of the Exterior Rings in the Polygon.
Note : That method only accepts an array of type IRing for exteriorRings. Using an array of IRing2 won't work.
queryExteriorRingsEx
in interface IPolygon2
numExteriorRingsRequested
 The numExteriorRingsRequested (in)exteriorRings
 A reference to a com.esri.arcgis.geometry.IRing (out: use single element array)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void queryInteriorRingsEx(IRing exteriorRing, int numInteriorRingsRequested, IRing[] interiorRings) throws IOException, AutomationException
Returns an array of IRings containing up to numInteriorRingsRequested Interior Rings belonging to a specified input Exterior Ring.
Note : That method only accepts an array of type IRing for interiorRings. Using an array of IRing2 won't work.
queryInteriorRingsEx
in interface IPolygon2
exteriorRing
 A reference to a com.esri.arcgis.geometry.IRing (in)numInteriorRingsRequested
 The numInteriorRingsRequested (in)interiorRings
 A reference to a com.esri.arcgis.geometry.IRing (out: use single element array)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void getConnectedComponents(int numComponentsRequested, IPolygon[] components) throws IOException, AutomationException
The method returns an error in the following cases:
1. Number of components requested is smaller than 0
2. Number of components requested larger than the number of exterior rings
3. If the array is not dimensionned
4. If the polygon is not simple
getConnectedComponents
in interface IPolygon2
numComponentsRequested
 The numComponentsRequested (in)components
 A reference to a com.esri.arcgis.geometry.IPolygon (out: use single element array)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void getOutermostComponents(int numComponentsRequested, int[] numComponentsReturned, IPolygon[] components, boolean[] moreComponentsExist) throws IOException, AutomationException
The method returns an error in the following cases:
1. Number of components requested is smaller than 0
2. If the array is not dimensionned
3. If the polygon is not simple
getOutermostComponents
in interface IPolygon2
numComponentsRequested
 The numComponentsRequested (in)numComponentsReturned
 The numComponentsReturned (out: use single element array)components
 A reference to a com.esri.arcgis.geometry.IPolygon (out: use single element array)moreComponentsExist
 The moreComponentsExist (out: use single element array)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void simplifySpaghetti() throws IOException, AutomationException
simplifySpaghetti
in interface IPolygon3
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void simplifyEx(boolean preserveFromToPoints, boolean closeRings, boolean useXORRule) throws IOException, AutomationException
Parameters:
preserveFromToPoints: Boolean value that determines if the from/to points of a ring in the polygon need to remain located at ring indexes 0 and PointCount1 af the completion of the operation. Specify 'false' to improve performance of this operation.
closeRings : Boolean value that determines if the rings of the polygon must be closed prior to reconstruct the topology of the polygon. Specify false if you know that rings are closed or you are passing in spaghetti input that should not be checked for closure.
useXORRule: Boolean value that determines how the 'inside' of the polygon is determined. Specify true to use an evenodd counting rule: a point is inside the polygon if a horizontal line through that has encountered an odd number of boundaries to the left (overlapping boundaries count 1 for each overlap). Use this when the input consists of welldefined rings that need to be oriented correctly, have overlaps removed, etc. Specify false to use the default behavior, which iterates over a two step process: dangle removal, then "peeling off" of the largest unambiguous rings. This approach can remove more segments than the XORtrue approach, but is probably more appropriate for spaghetti input where segment overlaps should not be considered significant.
Here is an example of the different between XOR=TRUE vs. XOR= FALSE:
simplifyEx
in interface IPolygon4
preserveFromToPoints
 The preserveFromToPoints (in)closeRings
 The closeRings (in)useXORRule
 The useXORRule (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IGeometryBag getExteriorRingBag() throws IOException, AutomationException
getExteriorRingBag
in interface IPolygon4
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IGeometryBag getInteriorRingBag(IRing exteriorRing) throws IOException, AutomationException
getInteriorRingBag
in interface IPolygon4
exteriorRing
 A reference to a com.esri.arcgis.geometry.IRing (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IGeometryBag getConnectedComponentBag() throws IOException, AutomationException
getConnectedComponentBag
in interface IPolygon4
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IGeometryBag getOutermostComponentBag() throws IOException, AutomationException
getOutermostComponentBag
in interface IPolygon4
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean isEnvelope() throws IOException, AutomationException
isEnvelope
in interface IPolygon5
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean isMAware() throws IOException, AutomationException
Returns or sets the M Awareness state of the geometry object. If MAware is TRUE, then the object will recognize that it has M attributes and perform operations on them as necessary. If MAware is FALSE, the object will ignore Ms while performing operations.
isMAware
in interface IMAware
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void setMAware(boolean mAware) throws IOException, AutomationException
setMAware
in interface IMAware
mAware
 The mAware (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean isMSimple() throws IOException, AutomationException
MSimple is TRUE if none of the M values held by the geometry object are NaN. If any of the Ms within the object are NaN, MSimple is FALSE.
isMSimple
in interface IMAware
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void dropMs() throws IOException, AutomationException
Resets all of the current M values held by the geometry object back to NaN. MAware does not change.
dropMs
in interface IMAware
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public double getMMin() throws IOException, AutomationException
Returns the minimum M attribute contained within the MAware object collection.
getMMin
in interface IMCollection
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public double getMMax() throws IOException, AutomationException
Returns the maximum M attribute contained within the MAware object collection.
getMMax
in interface IMCollection
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void multiplyMs(double factor) throws IOException, AutomationException
The MultiplyMs method will update all the measure attributes for a PolyLine, and should only be used if every measure has been set (i.e. there are no NaNs). Check the IMAware::MSimple property or use the IMSegmentation methods to fill in any missing measure values. MultiplyMs is analogous to scaling spatial coordinates.
multiplyMs
in interface IMCollection
factor
 The factor (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void offsetMs(double offset) throws IOException, AutomationException
The OffsetMs method will update all the measure attributes for a PolyLine, and should only be used if every measure has been set (i.e. there are no NaNs). Check the IMAware::MSimple property or use the IMSegmentation methods to fill in any missing measure values. OffsetMs is analgous to moving spatial coordinates.
offsetMs
in interface IMCollection
offset
 The offset (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public int getMMonotonic() throws IOException, AutomationException
Returns an esriMMonotonicEnum indicating whether or not the Ms are monotonic as well as whether they are ascending or descending. The Ms are esriMAscending if the Ms are ordered such that M1 < M2 < M3 < . . . < Mn. The Ms are esriMDescending if the Ms are ordered such that M1 > M2 > M3 > . . . > Mn.
getMMonotonic
in interface IMSegmentation
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public Object getMsAtDistance(double distance, boolean asRatio) throws IOException, AutomationException
getMsAtDistance
in interface IMSegmentation
distance
 The distance (in)asRatio
 The asRatio (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void insertMAtDistance(double m, double distance, boolean asRatio, boolean createPart, boolean[] splitHappened, int[] newPartIndex, int[] newSegmentIndex) throws IOException, AutomationException
insertMAtDistance
in interface IMSegmentation
m
 The m (in)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.public Object getDistancesAtM(boolean asRatio, double m) throws IOException, AutomationException
getDistancesAtM
in interface IMSegmentation
asRatio
 The asRatio (in)m
 The m (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void reverseMsOrder() throws IOException, AutomationException
Note that the m values are simply reversed. Any length:measure ratios that were present before ReverseMsOrder is called are not preserved.
reverseMsOrder
in interface IMSegmentation
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void interpolateMsBetween(int fromPart, int fromPoint, int toPart, int toPoint) throws IOException, AutomationException
interpolateMsBetween
in interface IMSegmentation
fromPart
 The fromPart (in)fromPoint
 The fromPoint (in)toPart
 The toPart (in)toPoint
 The toPoint (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void setAndInterpolateMsBetween(double fromM, double toM) throws IOException, AutomationException
setAndInterpolateMsBetween
in interface IMSegmentation
fromM
 The fromM (in)toM
 The toM (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void setMsAsDistance(boolean asRatio) throws IOException, AutomationException
setMsAsDistance
in interface IMSegmentation
asRatio
 The asRatio (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.IMSegmentation2.setMsAsDistance2(com.esri.arcgis.geometry.IPoint, double, double, boolean)
public void extrapolateMs(int extrapolationStyle, int fromPart, int fromPoint, int toPart, int toPoint) throws IOException, AutomationException
extrapolateMs
in interface IMSegmentation
extrapolationStyle
 A com.esri.arcgis.geometry.esriExtrapolationEnum constant (in)fromPart
 The fromPart (in)fromPoint
 The fromPoint (in)toPart
 The toPart (in)toPoint
 The toPoint (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void calculateNonSimpleMs() throws IOException, AutomationException
calculateNonSimpleMs
in interface IMSegmentation
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IGeometryCollection getPointsAtM(double m, double lateralOffset) throws IOException, AutomationException
getPointsAtM
in interface IMSegmentation
m
 The m (in)lateralOffset
 The lateralOffset (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IGeometryCollection getSubcurveBetweenMs(double fromM, double toM) throws IOException, AutomationException
getSubcurveBetweenMs
in interface IMSegmentation
fromM
 The fromM (in)toM
 The toM (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.IMSegmentation2.getSubcurveBetweenMsEx(double, double, int[], int[])
public boolean isZAware() throws IOException, AutomationException
Returns or sets the Z Awareness state of the geometry object. If ZAware is TRUE, then the object will recognize that it has Z attributes and perform operations on them as necessary. If ZAware is FALSE, the object will ignore Zs while performing operations. ZAware should only be set to TRUE when all of the Zs are not NaN.
Use ZAware = True when you want geometries to retain Z values during geometry operations.
isZAware
in interface IZAware
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void setZAware(boolean zAware) throws IOException, AutomationException
setZAware
in interface IZAware
zAware
 The zAware (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean isZSimple() throws IOException, AutomationException
ZSimple is TRUE if none of the Z values held by the geometry object are NaN. If any of the Zs within the object are NaN, ZSimple is FALSE.
isZSimple
in interface IZAware
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void dropZs() throws IOException, AutomationException
Resets all of the current Z values held by the geometry object back to NaN. ZAware does not change.
dropZs
in interface IZAware
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public double getZMin() throws IOException, AutomationException
Returns the minimum Z attribute contained within the ZAware object collection.
getZMin
in interface IZCollection
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public double getZMax() throws IOException, AutomationException
Returns the maximum Z attribute contained within the ZAware object collection.
getZMax
in interface IZCollection
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void multiplyZs(double factor) throws IOException, AutomationException
Multiplies all Zs within the ZAware collection by a given input factor. This is analgous to scaling spatial coordinates.
multiplyZs
in interface IZCollection
factor
 The factor (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void offsetZs(double offset) throws IOException, AutomationException
Offsets all Zs within the ZAware collection by a given input factor. This is analgous to moving spatial coordinates.
offsetZs
in interface IZCollection
offset
 The offset (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean isZVertical() throws IOException, AutomationException
Returns TRUE when at least two consecutive vertices have the same X and Y coordinates, but different Z attributes. Returns FALSE if all consecutive vertices have different X and Y coordinates, or if they have the same Z attribute.
isZVertical
in interface IZ
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void interpolateFromSurface(IFunctionalSurface interpolationSurface) throws IOException, AutomationException
Sets Z attributes for all Points on the interfaced Geometry within the Domain of the FunctionalSurface equal to the Z value on the FunctionalSurface at each (X, Y) Point.
interpolateFromSurface
in interface IZ
interpolationSurface
 A reference to a com.esri.arcgis.geometry.IFunctionalSurface (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void interpolateZsBetween(int startPart, int startPoint, int endPart, int endPoint) throws IOException, AutomationException
Sets the Z attributes from the vertices between the StartPoint of the startPart and the EndPoint of the endPart. The values of the StartPoint and EndPoint remain unchanged, but all vertices inbetween are assigned Z values proportional to the distance along the curve between the StartPoint and EndPoint and the difference between the Z values of the StartPoint and EndPoint.
interpolateZsBetween
in interface IZ
startPart
 The startPart (in)startPoint
 The startPoint (in)endPart
 The endPart (in)endPoint
 The endPoint (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void calculateNonSimpleZs() throws IOException, AutomationException
Calculates Z attribute values for each nonsimple (NaN) Z value from existing simple (nonNaN) Z attributes on the interfaced Geometry.
calculateNonSimpleZs
in interface IZ
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void setConstantZ(double zLevel) throws IOException, AutomationException
Sets all Z attributes in the object equal to the constant input Z value.
setConstantZ
in interface IZ
zLevel
 The zLevel (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void setNonSimpleZs(double zLevel) throws IOException, AutomationException
setNonSimpleZs
in interface IZ2
zLevel
 The zLevel (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean isPointIDAware() throws IOException, AutomationException
Returns or sets the PointID Awareness state of the geometry object. If PointIDAware is TRUE, then the object will recognize that it has PointID attributes and perform operations on them as necessary. If PointIDAware is FALSE, the object will ignore PointIDs while performing operations.
isPointIDAware
in interface IPointIDAware
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void setPointIDAware(boolean idAware) throws IOException, AutomationException
setPointIDAware
in interface IPointIDAware
idAware
 The idAware (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean isPointIDSimple() throws IOException, AutomationException
PointIDSimple is TRUE when all of the PointIDs are well defined (not equal to 0). If any PointIDs equal 0, PointIDSimple is FALSE.
isPointIDSimple
in interface IPointIDAware
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void dropPointIDs() throws IOException, AutomationException
Resets all PointID values to there initial value of 0. PointIDAware does not change.
dropPointIDs
in interface IPointIDAware
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void checkInvalidate() throws IOException, AutomationException
checkInvalidate
in interface ISpatialIndex2
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void setAllowIndexing(boolean allowIndexing) throws IOException, AutomationException
The SpatialIndex if enabled is used by the IRelationalOperator's methods.
setAllowIndexing
in interface ISpatialIndex
allowIndexing
 The allowIndexing (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean isAllowIndexing() throws IOException, AutomationException
isAllowIndexing
in interface ISpatialIndex
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void invalidate() throws IOException, AutomationException
invalidate
in interface ISpatialIndex
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean esri_equals(IGeometry other) throws IOException, AutomationException
esri_equals
in interface IRelationalOperator
other
 A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean touches(IGeometry other) throws IOException, AutomationException
Two geometries are said to touch when the intersection of the geometries is nonempty, but the intersection of their interiors is empty. Touches is a Clementini operator. For example, a point touches a polyline only if the point is coincident with one of the polyline end points.
Touches examples. Only "true" relationships are showed in this picture.
Only geometries that support the IRelationalOperator interface can be used as input geometries.
Touch does not apply for point/point comparison.
If either one of the two geometries is empty, the geometries are not touched.
touches
in interface IRelationalOperator
other
 A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean contains(IGeometry other) throws IOException, AutomationException
The base geometry contains the comparison geometry (other) if the comparison geometry is a subset of the base geometry and the intersection of their interiors is not empty. Therefore a polygon does not contain any part of its 1D boundary. Contains is the opposite operator of Within.
Only geometries that support the IRelationalOperator interface can be used as input geometries.
If geometry1 Contains geometry2, then geometry2 is Within geometry1.
An empty geometry does not contain another geometry. On the other hand, an empty geometry is contained in another geometry, unless the other geometry is empty.
Contains examples. Only "true" relationships are showed in this picture.
contains
in interface IRelationalOperator
other
 A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean within(IGeometry other) throws IOException, AutomationException
The base geometry is within the comparison geometry if the base geometry is the intersection of the geometries and the intersection of their interiors is not empty. Within is a Clementini operator. Within is the opposite operator of contains.
Only geometries that support the IRelationalOperator interface can be used as input geometries.
If geometry1 is Within geometry2, then geometry2 Contains geometry1.
An empty geometry is within another geometry, unless the other geometry is empty.
Within examples. Only "true" relationships are showed in this picture.
within
in interface IRelationalOperator
other
 A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean disjoint(IGeometry other) throws IOException, AutomationException
Two geometries are disjoint if their intersection is empty. Two geometries intersect if disjoint is "false". Disjoint is a Clementini operator.
Only geometries that support the IRelationalOperator interface can be used as input geometries.
Two geometries are disjoint if either one is empty.
Disjoint example. Only "true" relationships are showed in this picture.
disjoint
in interface IRelationalOperator
other
 A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean crosses(IGeometry other) throws IOException, AutomationException
Two polylines cross if they share only points in common, at least one of which is not an endpoint. A polyline and an polygon cross if they share a polyline in common on the interior of the polygon which is not equivalent to the entire polyline. Cross is a Clementini operator.
Only geometries that support the IRelationalOperator interface can be used as input geometries.
Cross only applies to polyline/polyline, polyline/polygon, or polygon/polyline relations.
If either one of the geometries is empty, the geometries do not cross.
Crosses examples. Only "true" relationships are showed in this picture.
crosses
in interface IRelationalOperator
other
 A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean overlaps(IGeometry other) throws IOException, AutomationException
Two geometries overlap if the region of their intersection is of the same dimension as the geometries involved and is not equivalent to either of the geometries. Overlaps is a Clementini operator.
Only geometries that support the IRelationalOperator interface can be used as input geometries.
Overlaps only applies to polyline/polyline, polygon/polygon and multipoint/multipoint relations.
Two geometries do not overlap if either one is empty.
Overlaps examples. Only "true" relationships are showed in this picture.
overlaps
in interface IRelationalOperator
other
 A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean relation(IGeometry other, String relationDescription) throws IOException, AutomationException
Relation allows a general relation defined using the Shape Comparison Language to be determined between two input geometries. The Shape Comparison Language is based on the CalculusBased Method (CBM), as described and defined by Clementini and Felice, but has some extensions specific to working with vertexbased geometries and is fully described in the Technical Documents section of the ArcObjects Developer Help. Please refer to the Shape Comparison Language documentation for proper syntax and available functionality.
Note that at the current release, Relation only operates with straight lines.
Here is a VBA example of using the "RELATE" function to detect overlapping polylines. It assumes two polyline features are selected. G1 and G2 are placeholders for, in this example, the VBA variables r1 and r2.
Option Explicit
Public Sub overlapstest()
Dim ef As IEnumFeature
Dim d As IMxDocument
Set d = ThisDocument
Set ef = d.FocusMap.FeatureSelection
Dim r1 As IRelationalOperator, r2 As IRelationalOperator
Set r1 = ef.Next.Shape
Set r2 = ef.Next.Shape
Debug.Print "relation:", r1.Relation(r2, "RELATE(G1, G2, ""1********"")")
End Sub
relation
in interface IRelationalOperator
other
 A reference to a com.esri.arcgis.geometry.IGeometry (in)relationDescription
 The relationDescription (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void queryNearestPoint(IPoint p, int extension, IPoint nearest) throws IOException, AutomationException
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.
queryNearestPoint
in interface IProximityOperator
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)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.esriSegmentExtension
,
IProximityOperator.returnNearestPoint(com.esri.arcgis.geometry.IPoint, int)
public IPoint returnNearestPoint(IPoint p, int extension) throws IOException, AutomationException
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.
returnNearestPoint
in interface IProximityOperator
p
 A reference to a com.esri.arcgis.geometry.IPoint (in)extension
 A com.esri.arcgis.geometry.esriSegmentExtension constant (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.esriSegmentExtension
,
IProximityOperator.queryNearestPoint(com.esri.arcgis.geometry.IPoint, int, com.esri.arcgis.geometry.IPoint)
public double returnDistance(IGeometry other) throws IOException, AutomationException
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.
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.
returnDistance
in interface IProximityOperator
other
 A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean isSimple() throws IOException, AutomationException
Returns TRUE if the geometry is topologically Simple (refer to the discussion for the Simplify method). If the geometry is not Simple, it may be necessary to call Simplify to enforce topological consistency. Editing a geometry can change the IsSimple state of the geometry.
ITopologicalOperator methods must be applied on highlevel geometries only. HighLevel geometries are point, multipoint, polyline and polygon. To use this method with lowlevel geometries such as segments (Line, Circular Arc, Elliptic Arc, Bézier Curve), paths or rings, they must be wrapped into highlevel geometries types.
The xy cluster tolerance value of the geometry's associated spatial reference is used by this method. If the goal of this method is to determine if a geometry can be persisted in an sde (or other integerbased) layer without alteration, you may wish to use the minimum xy cluster tolerance value (ISpatialReferenceTolerance::SetMinimumXYTolerance) before applying this method (don't forget to set it back).
This method does not support GeometryBags.
isSimple
in interface ITopologicalOperator
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean isKnownSimple() throws IOException, AutomationException
Returns TRUE when the geometry is aware that it is Simple. IsKnownSimple may return FALSE even if the geometry is simple as long as the geometry is not aware of its IsSimple state. Calling either IsSimple or Simplify makes the IsSimple state known to the geometry. Topologically altering the geometry makes the IsKnownSimple state FALSE until the IsSimple state is again checked.
Here is the status of the IsKnownSimple flag in some common situations:
IsKnownSimple = 'False'
 A nonempty newly created geometry. For example, creating a polygon using IPointCollection sets the flag IsKnownSimple = 'false' on that geometry.
 Geometry after projection (IGeometry::Project )
 Geometry after generalization (IPolycurve::Generalize ) or smoothing(IPolycurve::Smooth )
 …
IsKnownSimple = 'True'
 A geometry coming directly from a feature class
 An empty geometry
 Output geometry of any method on ITopologicalOperator
 …
This method does not support GeometryBags.
isKnownSimple
in interface ITopologicalOperator
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void simplify() throws IOException, AutomationException
Simplify permanently alters the input geometry, making its definition "topologically legal" with respect to its geometry type:
The XY tolerance property of the geometry's associated spatial reference is used during the simplify operation for polylines and polygons.
This method first looks at the ITopologicalOperator::IsKnownSimple flag before starting processing. If the flag is 'true' then operation is interrupted and the geometry is considered simple. If the flag is 'false' then the geometry consistency is checked and the geometry is updated as needed.
ITopologicalOperator methods must be applied on highlevel geometries only. HighLevel geometries are point, multipoint, polyline and polygon. To use this method with lowlevel geometries such as segments (Line, Circular Arc, Elliptic Arc, Bézier Curve), paths or rings, they must be wrapped into highlevel geometries types.
simplify
in interface ITopologicalOperator
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IGeometry buffer(double distance) throws IOException, AutomationException
The buffer distance is in the same units as the source shape that is being buffered.
A negative distance can be specified to produce a buffer inside the original polygon. This cannot be used with polyline. ITopologicalOperator methods must be applied on toplevel geometries only. TopLevel geometries are point, multipoint, polyline and polygon. To use this method with segments (Line, Circular Arc, Elliptic Arc, Bézier Curve), paths or rings, they must be wrapped with a toplevel type.
buffer
in interface ITopologicalOperator
distance
 The distance (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IGeometry convexHull() throws IOException, AutomationException
The ConvexHull of a geometry is the minimal bounding polygon such that all outer angles are convex. The ConvexHull of a point is the point itself.
ITopologicalOperator methods must be applied on highlevel geometries only. HighLevel geometries are point, multipoint, polyline and polygon. To use this method with lowlevel geometries such as segments (Line, Circular Arc, Elliptic Arc, Bézier Curve), paths or rings, they must be wrapped into highlevel geometries types.
This method does not support GeometryBags.
ConvexHull method does not deal with Z attribute now.
convexHull
in interface ITopologicalOperator
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IGeometry intersect(IGeometry other, int resultDimension) throws IOException, AutomationException
The Intersection of two Geometries of the same Dimension is a Geometry containing only the regions of overlap between the original geometries.
Intersection is basically an AND between input geometries.
ITopologicalOperator methods must be applied on highlevel geometries only. HighLevel geometries are point, multipoint, polyline and polygon. To use this method with lowlevel geometries such as segments (Line, Circular Arc, Elliptic Arc, Bézier Curve), paths or rings, they must be wrapped into highlevel geometries types.
This method does not support GeometryBags.
Since ArcGIS 9.2, Intersect has a larger cost  it takes longer to run the method. Therefore, it is a better approach to test if the two geometries are disjoint before calling Intersect.
intersect
in interface ITopologicalOperator
other
 A reference to a com.esri.arcgis.geometry.IGeometry (in)resultDimension
 A com.esri.arcgis.geometry.esriGeometryDimension constant (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.IConstructMultipoint.constructIntersectionEx(com.esri.arcgis.geometry.ISegment, int, com.esri.arcgis.geometry.ISegment, int, double[], double[], int[])
,
IConstructMultipoint.constructIntersection(com.esri.arcgis.geometry.ISegment, int, com.esri.arcgis.geometry.ISegment, int, Object[], Object[], Object[])
,
ITopologicalOperator.intersect(com.esri.arcgis.geometry.IGeometry, int)
public IGeometry union(IGeometry other) throws IOException, AutomationException
The Union of two Geometries of the same Dimension is a single Geometry corresponding to the combination of both Geometries such that anything within either of the original geometries is also part of the unioned geometry, but anything common to both geometries only exists once in the unioned geometry.
The Union is basically an OR between the input geometries.
ITopologicalOperator methods must be applied on highlevel geometries only. HighLevel geometries are point, multipoint, polyline and polygon. To use this method with lowlevel geometries such as segments (Line, Circular Arc, Elliptic Arc, Bézier Curve), paths or rings, they must be wrapped into highlevel geometries types.
This method does not support GeometryBags.
union
in interface ITopologicalOperator
other
 A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void constructUnion(IEnumGeometry geometries) throws IOException, AutomationException
ConstructUnion simultaneously Unions an Enumeration of geometries of the same Dimension into a single geometry. ConstructUnion is more efficient for unioning a large collection of geometries simultaneously rather than cycling through each geometry individually.
ITopologicalOperator methods must be applied on highlevel geometries only. HighLevel geometries are point, multipoint, polyline and polygon. To use this method with lowlevel geometries such as segments (Line, Circular Arc, Elliptic Arc, Bézier Curve), paths or rings, they must be wrapped into highlevel geometries types.
This method does not support GeometryBags.
Temproray files might be created. If environment variable "ARCTMPDIR" exists, then the files are written to the path, otherwise written to current directory or system temp directory.
constructUnion
in interface ITopologicalOperator
geometries
 A reference to a com.esri.arcgis.geometry.IEnumGeometry (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IGeometry difference(IGeometry other) throws IOException, AutomationException
Difference create a Geometry that is composed only of the region unique to the base geometry but not part of the input geometry.
ITopologicalOperator methods must be applied on highlevel geometries only. HighLevel geometries are point, multipoint, polyline and polygon. To use this method with lowlevel geometries such as segments (Line, Circular Arc, Elliptic Arc, Bézier Curve), paths or rings, they must be wrapped into highlevel geometries types.
This method does not support GeometryBags.
difference
in interface ITopologicalOperator
other
 A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IGeometry symmetricDifference(IGeometry other) throws IOException, AutomationException
The SymmetricDifference between two Geometries of the same Dimension is the Union of those Geometries minus the Intersection of those Geometries. Thus, the SymmetricDifference is composed only of regions unique to only one of the geometries.
This method does not support GeometryBags.
SymmetricDifference is basically an XOR between the input geometries.
SymmetricDifference of G1 and G2 can also be described as the Union(Difference(G1, G2), Difference(G2, G1)).
ITopologicalOperator methods must be applied on highlevel geometries only. HighLevel geometries are point, multipoint, polyline and polygon. To use this method with lowlevel geometries such as segments (Line, Circular Arc, Elliptic Arc, Bézier Curve), paths or rings, they must be wrapped into highlevel geometries types.
This method does not support GeometryBags.
symmetricDifference
in interface ITopologicalOperator
other
 A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void clip(IEnvelope clipperEnvelope) throws IOException, AutomationException
The Clip method clips the geometry of the feature that is receiving the method call. The Clip method does not return an envelope. The geometry that is clipped will depend on what is Contained by the input clipperEnvelope.
Use QueryClipped or QueryClippedDense methods to send the results to a different polygon.
ITopologicalOperator methods must be applied on highlevel geometries only. HighLevel geometries are point, multipoint, polyline and polygon. To use this method with lowlevel geometries such as segments (Line, Circular Arc, Elliptic Arc, Bézier Curve), paths or rings, they must be wrapped into highlevel geometries types.
clip
in interface ITopologicalOperator
clipperEnvelope
 A reference to a com.esri.arcgis.geometry.IEnvelope (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void queryClipped(IEnvelope clipperEnvelope, IGeometry clippedGeometry) throws IOException, AutomationException
QueryClipped returns the portion of the input Geometry that is Contained by the input Envelope. The returned geometry is the same type as the original geometry.
ITopologicalOperator methods must be applied on highlevel geometries only. HighLevel geometries are point, multipoint, polyline and polygon. To use this method with lowlevel geometries such as segments (Line, Circular Arc, Elliptic Arc, Bézier Curve), paths or rings, they must be wrapped into highlevel geometries types.
The other geometry must be an highlevel geometry. HighLevel geometries are point, multipoint, polyline and polygon. To use it with lowlevel geometries such as segments (Line, Circular Arc, Elliptic Arc, Bézier Curve), path or ring they must be wrapped into highlevel geometries type. The output geometry must be cocreated prior to the query. The output geometry is not cocreated 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.
This method does not support GeometryBags.
queryClipped
in interface ITopologicalOperator
clipperEnvelope
 A reference to a com.esri.arcgis.geometry.IEnvelope (in)clippedGeometry
 A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void queryClippedDense(IEnvelope clipperEnvelope, double denseDistance, IGeometry clippedGeometry) throws IOException, AutomationException
ITopologicalOperator methods must be applied on highlevel geometries only. HighLevel geometries are point, multipoint, polyline and polygon. To use this method with lowlevel geometries such as segments (Line, Circular Arc, Elliptic Arc, Bézier Curve), paths or rings, they must be wrapped into highlevel geometries types.
The other geometry must be an highlevel geometry. HighLevel geometries are point, multipoint, polyline and polygon. To use it with lowlevel geometries such as segments (Line, Circular Arc, Elliptic Arc, Bézier Curve), path or ring they must be wrapped into highlevel geometries type. The output geometry must be cocreated prior to the query. The output geometry is not cocreated 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.
This method does not support GeometryBags.
queryClippedDense
in interface ITopologicalOperator
clipperEnvelope
 A reference to a com.esri.arcgis.geometry.IEnvelope (in)denseDistance
 The denseDistance (in)clippedGeometry
 A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void cut(IPolyline cutter, IGeometry[] leftGeom, IGeometry[] rightGeom) throws IOException, AutomationException
When using a multipart polyline to cut a single ring of a polyline, the orientation of the polyline paths is important. The cut piece of the ring must be on the same side of each cutting path as defined by the orientation of each path.
ITopologicalOperator methods must be applied on highlevel geometries only. HighLevel geometries are point, multipoint, polyline and polygon. To use this method with lowlevel geometries such as segments (Line, Circular Arc, Elliptic Arc, Bézier Curve), paths or rings, they must be wrapped into highlevel geometries types.
This method does not support GeometryBags.
cut
in interface ITopologicalOperator
cutter
 A reference to a com.esri.arcgis.geometry.IPolyline (in)leftGeom
 A reference to a com.esri.arcgis.geometry.IGeometry (out: use single element array)rightGeom
 A reference to a com.esri.arcgis.geometry.IGeometry (out: use single element array)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IGeometry getBoundary() throws IOException, AutomationException
The Boundary of a Geometry is the part one the exterior of the Geometry. The Boundary is one Dimension lower than the Dimension of the original Geometry. The Boundary of a Polygon are the Polylines that form the Rings of the Polygon. The Boundary of a Polyline is a Multipoint corresponding to the endpoints of each Path in the Polyline. The Boundary of a Multipoint is an empty set.
ITopologicalOperator methods must be applied on highlevel geometries only. HighLevel geometries are point, multipoint, polyline and polygon. To use this method with lowlevel geometries such as segments (Line, Circular Arc, Elliptic Arc, Bézier Curve), paths or rings, they must be wrapped into highlevel geometries types.
This method does not support GeometryBags.
getBoundary
in interface ITopologicalOperator
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void clipDense(IEnvelope clipperEnvelope, double denseDistance) throws IOException, AutomationException
ITopologicalOperator methods must be applied on highlevel geometries only. HighLevel geometries are point, multipoint, polyline and polygon. To use this method with lowlevel geometries such as segments (Line, Circular Arc, Elliptic Arc, Bézier Curve), paths or rings, they must be wrapped into highlevel geometries types.
This method does not support GeometryBags.
clipDense
in interface ITopologicalOperator
clipperEnvelope
 A reference to a com.esri.arcgis.geometry.IEnvelope (in)denseDistance
 The denseDistance (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IEnumGeometry constructBuffers(int numBuffers, double[] distances) throws IOException, AutomationException
GeometryEnvironment.constructBuffers(com.esri.arcgis.geometry.ITopologicalOperator2, double[])
.
use the generic version of this method accesible through the GeometryEnvironment singleton object via the IGeometryBridge interface.
This method is only implemented for polygons and polylines.
constructBuffers
in interface ITopologicalOperator2
numBuffers
 The numBuffers (in)distances
 The distances (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void clipToDomain() throws IOException, AutomationException
clipToDomain
in interface ITopologicalOperator2
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void setIsKnownSimple(boolean rhs1) throws IOException, AutomationException
setIsKnownSimple
in interface ITopologicalOperator2
rhs1
 The rhs1 (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IGeometry intersectMultidimension(IGeometry other) throws IOException, AutomationException
This method only works with the following combination of geometries: Polygon with Polyline (and vice versa), Polyline with Multipoint (and vice versa), Polygon with Multipoint (and vice versa).
When using this method to intersect a Polygon with a Polyline (or vice versa) the geometry returned will be a GeometryBag.
When using this method to intersect a Multipoint with a Polygon (or vice versa) or Multipoint with a Polyline (or vice versa) the geometry returned will be a Multipoint.
If the desired combination of geometries is not available on this function, use Intersect on ITopologicalOperator.
intersectMultidimension
in interface ITopologicalOperator2
other
 A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean isSimpleEx(int[] reason) throws IOException, AutomationException
isSimpleEx
in interface ITopologicalOperator3
reason
 A com.esri.arcgis.geometry.esriNonSimpleReasonEnum constant (out: use single element array)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void geoNormalizeEx(ISpatialReference sR, double denseDistance) throws IOException, AutomationException
geoNormalizeEx
in interface ITopologicalOperator3
sR
 A reference to a com.esri.arcgis.geometry.ISpatialReference (in)denseDistance
 The denseDistance (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IGeometryCollection cut2(IPolyline pCutter) throws IOException, AutomationException
This method provides a more robust alternative to ITopologicalOperator::Cut. It does not classify the cut polygon pieces as left or right of the cutting polyline.
cut2
in interface ITopologicalOperator4
pCutter
 A reference to a com.esri.arcgis.geometry.IPolyline (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean hitTest(IPoint queryPoint, double searchRadius, int geometryPart, IPoint hitPoint, double[] hitDistance, int[] hitPartIndex, int[] hitSegmentIndex, boolean[] bRightSide) throws IOException, AutomationException
The segment index returned has different meanings depending on the esriGeometryHitPartType used (Please see the example for more details).
EsriGeometryPartVertex: returns a vertex index
EsriGeometryPartBoundary, esriGeometryPartMidpoint and esriGeometryPartEndpoint: return a segment index
EsriGeometryPartCentroid: Always returns 0 for the part index and the segment index.
brightside: Indicates if the input point is on the right side of the input geometry
Note: The distance units use in this method are the units of the input geometry. No conversion is performed. esriGeometryHitPartType parameter cannot be a combination of several esriGeometryHitPartTypes.
hitTest
in interface IHitTest
queryPoint
 A reference to a com.esri.arcgis.geometry.IPoint (in)searchRadius
 The searchRadius (in)geometryPart
 A com.esri.arcgis.geometry.esriGeometryHitPartType constant (in)hitPoint
 A reference to a com.esri.arcgis.geometry.IPoint (in)hitDistance
 The hitDistance (in/out: use single element array)hitPartIndex
 The hitPartIndex (in/out: use single element array)hitSegmentIndex
 The hitSegmentIndex (in/out: use single element array)bRightSide
 The bRightSide (in/out: use single element array)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void constructOffset(IPolycurve inCurve, double offset, Object offsetHow, Object bevelRatio) throws IOException, AutomationException
ConstructOffset constructs the offset of the given input Polycurve. If the offset parameter is positive, the constructed offset will be on the right side of the curve (left side offsets are constructed with negative offset parameters). Tracing the curve from it's first vertex to the last will give you a direction along the curve. It is to the right and left respective of this direction that the positive and negative parameters will dictate where the offset is constructed. In these terms it is simple to infer where the offset of even horizontal polycurves will be constructed. The offsetHow parameter determines how outer corners between segments are handled. Rounded offset rounds the corner between extended offsets. Bevelled offset squares off the corner after a given ratio distance. Mitered offset attempts to allow extended offsets to naturally intersect, but if that intersection occurs too far from the corner, the corner is eventually bevelled off at a fixed distance.
This results produced by this method are sensitive to large offset distances, particularly when the offset distance is larger than the length of the segments in the reference geometry. The remove self intersecting arcs feature is particularly problematic when extremely large offsets are involved.
The sides of the curve are determined from the order of the vertices of the curve. Tracing the curve from the first vertex to the last will give you a direction along the curve it is to the right and left of this direction that the positive and negative parameters will dictate where the offset is constructed. In these terms it is simple to infer where the offset will be constructed.
One alternative is to use buffer to generate the offsets.
constructOffset
in interface IConstructCurve
inCurve
 A reference to a com.esri.arcgis.geometry.IPolycurve (in)offset
 The offset (in)offsetHow
 A Variant (in, optional, pass null if not required)bevelRatio
 A Variant (in, optional, pass null if not required)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void constructKoch(IPolycurve p, double r, int recursionLevel) throws IOException, AutomationException
ConstructKoch creates a Koch fractal from the given input curve. It treats all segments as linear segments (ie. All CircularArcs, BezierCurves, and EllipticArc as treated like lines between the From and To Points.).
constructKoch
in interface IConstructCurve
p
 A reference to a com.esri.arcgis.geometry.IPolycurve (in)r
 The r (in)recursionLevel
 The recursionLevel (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void constructExtended(ICurve fromCurve, ICurve toCurve, int extensionFlags, boolean[] extensionsPerformed) throws IOException, AutomationException
This method will return an empty geometry if you attempt to create a polygon from two linear
geometries as input. This is not a way to create a polygon from two polylines.
If the input curve is a polygon the result will be a copy of the polygon.
The flags are bitwise combined esriCurveExtension values.
constructExtended
in interface IConstructCurve
fromCurve
 A reference to a com.esri.arcgis.geometry.ICurve (in)toCurve
 A reference to a com.esri.arcgis.geometry.ICurve (in)extensionFlags
 The extensionFlags (in)extensionsPerformed
 The extensionsPerformed (in/out: use single element array)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void approximateByBeziers(IPolycurve pInCurve, Object pMaxDistance, Object smoothClosedParts) throws IOException, AutomationException
ApproximateByBeziers constructs a curve consisting Bezier segments that being the approximation of input polycurve inCurve. The maxDistance parameter defines the maximum distance between the vertices of the input curve to the generated curve. If maxDistance is zero then for each segment of inCurve there is one Bezier segment created for this geometry. The parameter smoothClosedParts defines whether or not the last segment of the input polyline curve which is closed should be smoothed with the first segment of the curve. The smoothClosedParts parameter is only used if both this geometry and inCurve are polylines. If this geometry or inCurve is a polygon then smoothClosedParts is overwritten and set to true.
The resulting geometry is a polygon or polyline depending on the type of "this geometry" rather than the type of inCurve. If "this geometry" is a polygon and inCurve is a polyline with any open path, an error is returned (result is an empty polygon).
approximateByBeziers
in interface IConstructCurve2
pInCurve
 A reference to a com.esri.arcgis.geometry.IPolycurve (in)pMaxDistance
 A Variant (in, optional, pass null if not required)smoothClosedParts
 A Variant (in, optional, pass null if not required)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void interfaceSupportsErrorInfo(GUID riid) throws IOException, AutomationException
Indicates whether the interface supports IErrorInfo.
interfaceSupportsErrorInfo
in interface ISupportErrorInfo
riid
 A Structure: com.esri.arcgis.support.ms.stdole.GUID (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void getClassID(GUID[] pClassID) throws IOException, AutomationException
IPersist is a Microsoft interface. Please refer to MSDN for information about this interface.
getClassID
in interface IPersist
pClassID
 A Structure: com.esri.arcgis.support.ms.stdole.GUID (out: use single element array)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void isDirty() throws IOException, AutomationException
IPersistStream is a Microsoft interface. Please refer to MSDN for information about this interface.
isDirty
in interface IPersistStream
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void load(IStream pstm) throws IOException, AutomationException
IPersistStream is a Microsoft interface. Please refer to MSDN for information about this interface.
load
in interface IPersistStream
pstm
 A reference to a com.esri.arcgis.system.IStream (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void save(IStream pstm, int fClearDirty) throws IOException, AutomationException
IPersistStream is a Microsoft interface. Please refer to MSDN for information about this interface.
save
in interface IPersistStream
pstm
 A reference to a com.esri.arcgis.system.IStream (in)fClearDirty
 The fClearDirty (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void getSizeMax(_ULARGE_INTEGER[] pcbSize) throws IOException, AutomationException
IPersistStream is a Microsoft interface. Please refer to MSDN for information about this interface.
getSizeMax
in interface IPersistStream
pcbSize
 A Structure: com.esri.arcgis.system._ULARGE_INTEGER (out: use single element array)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IClone esri_clone() throws IOException, AutomationException
esri_clone
in interface IClone
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void assign(IClone src) throws IOException, AutomationException
assign
in interface IClone
src
 A reference to a com.esri.arcgis.system.IClone (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean isEqual(IClone other) throws IOException, AutomationException
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.
isEqual
in interface IClone
other
 A reference to a com.esri.arcgis.system.IClone (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean isIdentical(IClone other) throws IOException, AutomationException
IsIdentical returns true if the receiver and the source reference the same object.
isIdentical
in interface IClone
other
 A reference to a com.esri.arcgis.system.IClone (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void move(double dx, double dy) throws IOException, AutomationException
Moves the Geometry dX units along the XAxis and dY units along the YAxis. Only changes the position of the Geometry without altering any of the other characteristics. Move is a spatial offset.
move
in interface ITransform2D
dx
 The dx (in)dy
 The dy (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void moveVector(ILine v) throws IOException, AutomationException
Moves the Geometry dX units along the XAxis and dY units along the YAxis, 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.
moveVector
in interface ITransform2D
v
 A reference to a com.esri.arcgis.geometry.ILine (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void scale(IPoint origin, double sx, double sy) throws IOException, AutomationException
Stretches the Geometry a factor of sX along the XAxis and a factor of sY along the YAxis (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.
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
in interface ITransform2D
origin
 A reference to a com.esri.arcgis.geometry.IPoint (in)sx
 The sx (in)sy
 The sy (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void rotate(IPoint origin, double rotationAngle) throws IOException, AutomationException
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.
An Envelope cannot be Rotated.
rotate
in interface ITransform2D
origin
 A reference to a com.esri.arcgis.geometry.IPoint (in)rotationAngle
 The rotationAngle (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void transform(int direction, ITransformation transformation) throws IOException, AutomationException
transform
in interface ITransform2D
direction
 A com.esri.arcgis.geometry.esriTransformDirection constant (in)transformation
 A reference to a com.esri.arcgis.geometry.ITransformation (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void move3D(double dx, double dy, double dz) throws IOException, AutomationException
move3D
in interface ITransform3D
dx
 The dx (in)dy
 The dy (in)dz
 The dz (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void moveVector3D(IVector3D v) throws IOException, AutomationException
moveVector3D
in interface ITransform3D
v
 A reference to a com.esri.arcgis.geometry.IVector3D (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void scale3D(IPoint origin, double sx, double sy, double sz) throws IOException, AutomationException
scale3D
in interface ITransform3D
origin
 A reference to a com.esri.arcgis.geometry.IPoint (in)sx
 The sx (in)sy
 The sy (in)sz
 The sz (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void rotateVector3D(IVector3D axis, double rotationAngle) throws IOException, AutomationException
The angle of rotation must be in radians. To convert to radians from decimal degrees, multiply by PI/180.
rotateVector3D
in interface ITransform3D
axis
 A reference to a com.esri.arcgis.geometry.IVector3D (in)rotationAngle
 The rotationAngle (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void transform3D(int direction, ITransformation3D transformation) throws IOException, AutomationException
transform3D
in interface ITransform3D
direction
 A com.esri.arcgis.geometry.esriTransformDirection constant (in)transformation
 A reference to a com.esri.arcgis.geometry.ITransformation3D (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IGeometry projectToPlane(IPoint planarOrigin, IVector3D planarPositiveX, IVector3D planarNorm) throws IOException, AutomationException
projectToPlane
in interface ITransform3D
planarOrigin
 A reference to a com.esri.arcgis.geometry.IPoint (in)planarPositiveX
 A reference to a com.esri.arcgis.geometry.IVector3D (in)planarNorm
 A reference to a com.esri.arcgis.geometry.IVector3D (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void serialize(IXMLSerializeData data) throws IOException, AutomationException
serialize
in interface IXMLSerialize
data
 A reference to a com.esri.arcgis.system.IXMLSerializeData (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void deserialize(IXMLSerializeData data) throws IOException, AutomationException
deserialize
in interface IXMLSerialize
data
 A reference to a com.esri.arcgis.system.IXMLSerializeData (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void snap() throws IOException, AutomationException
snap
in interface IMSnap
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void densify3D(double maxSegmentLength, double maxDeviation) throws IOException, AutomationException
Converts Polycurve into a Polycurve composed of Line segments with 3D 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 3D Lines.
densify3D
in interface IPolycurve3D
maxSegmentLength
 The maxSegmentLength (in)maxDeviation
 The maxDeviation (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void generalize3D(double maxAllowableOffset) throws IOException, AutomationException
Generalizes each part of a Polycurve into a generalized collection of Line segments. Generalize3D performs a DouglasPoiker Generalization algorithm, extended to operate in 3D space, with a specified maximum offset tolerance, given in 3D, as input. For Line segments, the Generalized output is a subset of the original input vertices. For nonLinear segments, the Generalized output contains points along all parts of the curve, not necessarily only the vertices.
generalize3D
in interface IPolycurve3D
maxAllowableOffset
 The maxAllowableOffset (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void weed3D(double maxAllowableOffsetFactor) throws IOException, AutomationException
Weed generalizes each part of a Polycurve into a generalized collection of z aware Line segments. Weed performs a DouglasPoiker Generalization algorithm, extended to operate in 3D space, 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 nonLinear segments, the Generalized output contains points along all parts of the curve, not necessarily only the vertices.
weed3D
in interface IPolycurve3D
maxAllowableOffsetFactor
 The maxAllowableOffsetFactor (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public double getLength3D() throws IOException, AutomationException
Returns the 3D 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.
getLength3D
in interface ICurve3D
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void queryPoint3D(int extension, double distanceAlongCurve, boolean bAsRatio, IPoint pOutPoint) throws IOException, AutomationException
Returns the Point at a given 3D 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 3D length of the curve.
queryPoint3D
in interface ICurve3D
extension
 A com.esri.arcgis.geometry.esriSegmentExtension constant (in)distanceAlongCurve
 The distanceAlongCurve (in)bAsRatio
 The bAsRatio (in)pOutPoint
 A reference to a com.esri.arcgis.geometry.IPoint (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void getSubcurve3D(double fromDistance, double toDistance, boolean bAsRatio, ICurve3D[] ppOutSubCurve) throws IOException, AutomationException
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.
getSubcurve3D
in interface ICurve3D
fromDistance
 The fromDistance (in)toDistance
 The toDistance (in)bAsRatio
 The bAsRatio (in)ppOutSubCurve
 A reference to a com.esri.arcgis.geometry.ICurve3D (out: use single element array)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void queryPointAndDistance3D(int extension, IPoint pInPoint, boolean bAsRatio, IPoint pOutPoint, double[] pDistanceAlongCurve, double[] pDistanceFromCurve) throws IOException, AutomationException
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. The operation is performed in 3D space.
queryPointAndDistance3D
in interface ICurve3D
extension
 A com.esri.arcgis.geometry.esriSegmentExtension constant (in)pInPoint
 A reference to a com.esri.arcgis.geometry.IPoint (in)bAsRatio
 The bAsRatio (in)pOutPoint
 A reference to a com.esri.arcgis.geometry.IPoint (in)pDistanceAlongCurve
 The pDistanceAlongCurve (in/out: use single element array)pDistanceFromCurve
 The pDistanceFromCurve (in/out: use single element array)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean isClosed3D() throws IOException, AutomationException
isClosed3D
in interface ICurve3D
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void queryNearestPoint3D(IPoint pInP, int extension, IPoint pNearest) throws IOException, AutomationException
Queries the nearest point on a z aware geometry to the input point in 3D space. Depending on the method of segment extension, the nearest point can also be found on an extension of the geometry.
If the geometry is an Envelope and the input point is located within the bounds of the Envelope, QueryNearestPoint3D will return a point on the exterior of the Envelope nearest the input point.
queryNearestPoint3D
in interface IProximityOperator3D
pInP
 A reference to a com.esri.arcgis.geometry.IPoint (in)extension
 A com.esri.arcgis.geometry.esriSegmentExtension constant (in)pNearest
 A reference to a com.esri.arcgis.geometry.IPoint (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public IPoint returnNearestPoint3D(IPoint pInP, int extension) throws IOException, AutomationException
Finds and returns the nearest point, in 3D space, on a z aware 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.
If the geometry is an Envelope and the input point is located within the bounds of the Envelope, QueryNearestPoint3D will return a point on the exterior of the Envelope nearest the input point.
returnNearestPoint3D
in interface IProximityOperator3D
pInP
 A reference to a com.esri.arcgis.geometry.IPoint (in)extension
 A com.esri.arcgis.geometry.esriSegmentExtension constant (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public double returnDistance3D(IGeometry pOther) throws IOException, AutomationException
Returns the minimum distance between two z aware geometries in 3D space. If the geometries intersect, the minimum distance is 0. Only returns the distance, and not the nearest points.
returnDistance3D
in interface IProximityOperator3D
pOther
 A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public boolean disjoint3D(IGeometry pOther) throws IOException, AutomationException
Determines whether two z aware geometries intersect in 3D space. Two geometries are disjoint if their intersection is empty. Two geometries intersect if disjoint is FALSE.
disjoint3D
in interface IRelationalOperator3D
pOther
 A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.public void writeExternal(ObjectOutput out) throws IOException
writeExternal
in interface Externalizable
IOException
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
readExternal
in interface Externalizable
IOException
ClassNotFoundException


PREV CLASS NEXT CLASS  FRAMES NO FRAMES  
SUMMARY: NESTED  FIELD  CONSTR  METHOD  DETAIL: FIELD  CONSTR  METHOD 