|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.esri.arcgis.geometry.Line
public class Line
A 2D straight line between a pair of 2D endpoints; can optionally have height, measure and ID attributes at each endpoint.
Constructor Summary | |
---|---|
Line()
Constructs a Line using ArcGIS Engine. |
|
Line(Object obj)
Deprecated. As of ArcGIS 9.2, replaced by normal Java casts. Line theLine = (Line) obj; |
Method Summary | |
---|---|
void |
assign(IClone src)
Assigns the properties of src to the receiver. |
void |
constructAngleBisector(IPoint from,
IPoint through,
IPoint to,
double length,
boolean useAcuteAngle)
Constructs a line segment being the bisector through the angle defined by the three input points. |
void |
constructExtended(ILine inLine,
int extendHow)
Extends a line segment until one or both of its endpoints reaches the boundary of the domain of the line's associated spatial reference. |
void |
densify(int cInSlots,
double maxDeviation,
int[] pcOutSegments,
ILine[] segments)
Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.densify(com.esri.arcgis.geometry.ISegment, double, int[], com.esri.arcgis.geometry.ILine[][]) . |
boolean |
equals(Object o)
Compare this object with another |
IClone |
esri_clone()
Clones the receiver and assigns the result to *clone. |
void |
geographicShift(double splitLongitude)
Shift longitudes to the right of splitLongitude. |
void |
geoNormalize()
Shifts longitudes, if need be, into a continuous range of 360 degrees. |
void |
geoNormalizeFromLongitude(double longitude)
Normalizes longitudes into a continuous range containing the longitude. |
double |
getAngle()
The angle between this line and the positive x-axis. |
static String |
getClsid()
getClsid. |
int |
getDimension()
The topological dimension of this geometry. |
IEnvelope |
getEnvelope()
Creates a copy of this geometry's envelope and returns it. |
IPoint |
getFromPoint()
The 'from' point of the curve. |
int |
getGeometryType()
The type of this geometry. |
void |
getIDs(int[] fromID,
int[] toID)
Get the IDs on the segment's endpoints. |
double |
getLength()
The length of the curve. |
double |
getLength3D()
The length of the curve. |
void |
getMs(double[] fromM,
double[] toM)
Get the Ms on the segment's endpoints. |
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. |
IPoint |
getToPoint()
The 'to' point of the curve. |
void |
getZs(double[] fromZ,
double[] toZ)
Get the Zs on the segment's endpoints. |
int |
hashCode()
the hashcode for this object |
void |
interfaceSupportsErrorInfo(GUID riid)
interfaceSupportsErrorInfo |
boolean |
isClosed()
Indicates if 'from' and 'to' points (of each part) are identical. |
boolean |
isClosed3D()
Indicates if 'from' and 'to' points (of each part) are identical. |
boolean |
isEmpty()
Indicates whether this geometry contains any points. |
boolean |
isEqual(IClone other)
Indicates if the receiver and other have the same properties. |
boolean |
isIdentical(IClone other)
Indicates if the receiver and other are the same object. |
void |
move(double dx,
double dy)
Moves dx units horizontally and dy units vertically. |
void |
moveVector(ILine v)
Moves a direction and distance v. |
void |
project(ISpatialReference newReferenceSystem)
Projects this geometry into a new spatial reference. |
void |
putCoords(IPoint from,
IPoint to)
Sets this line's endpoints to be 'from' and 'to'. |
void |
putCoordsEx(IPoint from,
IPoint to)
Sets this segment's endpoints to 'from' and 'to'. |
void |
putWKSCoords(_WKSPoint from,
_WKSPoint to)
From and To become the new endpoints of this line. |
void |
queryCoords(IPoint from,
IPoint to)
Copies the endpoints of this line to 'from' and 'to'. |
void |
queryCurvature(double distanceAlongCurve,
boolean asRatio,
double[] curvature,
ILine unitVector)
Finds curvature and unit vector starting at point on segment and directed to embedded circle center. |
void |
queryEnvelope(IEnvelope outEnvelope)
Copies this geometry's envelope properties into the specified envelope. |
void |
queryFromPoint(IPoint from)
Copies this curve's 'from' point to the input point. |
void |
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 |
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 |
queryPointsAndDistances(int extension,
double searchRadius,
IPoint inPoint,
boolean asRatio,
double[] distanceFromCurve,
IEnumPointAndDistance[] pointsAndDistances)
Given an input point, calculates the minimum distance to the geometry and provides an enumerator over all closest points on the geometry, along with additional information. |
void |
queryTangent(int extension,
double distanceAlongCurve,
boolean asRatio,
double length,
ILine tangent)
Constructs a line tangent to a curve from a point at a specified distance along the curve. |
void |
queryToPoint(IPoint to)
Copies the curve's 'to' point into the input point. |
void |
queryWKSCoords(_WKSPoint[] from,
_WKSPoint[] to)
Returns the (x,y) coordinates of this line's endpoints. |
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. |
int |
returnTurnDirection(ISegment otherSegment)
Finds turn direction between two connected segments. |
void |
reverseOrientation()
Reverses the parameterization of the curve ('from' point becomes 'to' point, first segment becomes last segment, etc). |
void |
rotate(IPoint origin,
double rotationAngle)
Rotates about the specified origin point. |
void |
scale(IPoint origin,
double sx,
double sy)
Scales about the specified origin using seperate horizonal and vertical scales. |
void |
setEmpty()
Removes all points from this geometry. |
void |
setFromPoint(IPoint from)
The 'from' point of the curve. |
void |
setIDs(int fromID,
int toID)
Set the IDs on the segment's endpoints. |
void |
setMs(double fromM,
double toM)
Set the Ms on the segment's endpoints. |
void |
setSpatialReferenceByRef(ISpatialReference spatialRef)
The spatial reference associated with this geometry. |
void |
setToPoint(IPoint to)
The 'to' point of the curve. |
void |
setZs(double fromZ,
double toZ)
Set the Zs on the segment's endpoints. |
void |
snapToSpatialReference()
Moves points of this geometry so that they can be represented in the precision of the geometry's associated spatial reference system. |
void |
splitAtDistance(double distances,
boolean asRatio,
ISegment[] fromSegment,
ISegment[] toSegment)
Split segment at specified distance. |
void |
splitDivideLength(double offset,
double length,
boolean asRatio,
int[] numSplitSegments,
ISegment splitSegments)
Deprecated. This method uses C style arrays which are not supported in the ArcGIS API for Java. It is replaced by GeometryEnvironment.splitDivideLength(com.esri.arcgis.geometry.ISegment, double, double, boolean, int[], com.esri.arcgis.geometry.ISegment[][]) . |
void |
transform(int direction,
ITransformation transformation)
Applies an arbitrary transformation. |
Methods inherited from class java.lang.Object |
---|
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface com.esri.arcgis.interop.RemoteObjRef |
---|
getJintegraDispatch, release |
Constructor Detail |
---|
public Line() throws IOException, UnknownHostException
IOException
- if there are interop problems
UnknownHostException
- if there are interop problemspublic Line(Object obj) throws IOException
Line theLine = (Line) obj;
obj
to Line
.
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 void putCoords(IPoint from, IPoint to) throws IOException, AutomationException
The PutCoords method sets the From Point and To Point for a line object. If the From Point and To Point are identical, it creates a zero Length line with the same start and endpoint.
putCoords
in interface ILine
from
- A reference to a com.esri.arcgis.geometry.IPoint (in)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 queryCoords(IPoint from, IPoint to) throws IOException, AutomationException
Queries the From and To Points of the Line. These are the only parameters necessary to create a well-defined line.
queryCoords
in interface ILine
from
- A reference to a com.esri.arcgis.geometry.IPoint (in)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 double getAngle() throws IOException, AutomationException
The following Visual Basic example gets the angle of a line and converts it to degrees :
dAngleDegree = (180 * pLine.Angle) / Pi
Where Pi = 4 * Atn(1)
getAngle
in interface ILine
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 co-created prior to the query. The output geometry is not co-created by the method; it is populated. This can be used in performance critical situations. For example, creating the geometry only once outside a loop and use the query method could improve performance.
queryFromPoint
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 co-created prior to the query. The output geometry is not co-created by the method; it is populated. This can be used in performance critical situations. For example, creating the geometry only once outside a loop and use the query method could improve performance.
queryToPoint
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 co-created prior to the query. The output geometry is not co-created by the method; it is populated. This can be used in performance critical situations. For example, creating the geometry only once outside a loop and use the query method could improve performance.
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 co-created prior to the query. The output geometry is not co-created by the method; it is populated. This can be used in performance critical situations. For example, creating the geometry only once outside a loop and use the query method could improve performance.
queryPointAndDistance
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. non-continuous paths). IsClosed only checks the location of the From and To points of each part, it does not check the internal parts for topological consistency.
isClosed
in interface ICurve
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 co-created prior to the query. The output geometry is not co-created by the method; it is populated. This can be used in performance critical situations. For example, creating the geometry only once outside a loop and use the query method could improve performance.
queryEnvelope
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 high-level geometries only. High-Level geometries are point, multipoint, polyline and polygon. To use this method with low-level geometries such as segments (Line, Circular Arc, Elliptic Arc, Bézier Curve), paths or rings, they must be wrapped into high-level geometry types.
If a geometry is projected to a projected coordinate system that can't represent the geographic area where the geometry is located (or if trying to move an xy coordinate from outside the projected coordinate system back into geographic), the geometry will be set to empty.
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 putWKSCoords(_WKSPoint from, _WKSPoint to) throws IOException, AutomationException
The from and to parameters are WKSPoint structures instead of Point objects. If you are not interested in using or preserving vertex attributes then PutWKSCoords and QueryWKSCoords can be a quicker way to modify and obtain the xy coordinates defining the line.
putWKSCoords
in interface ILine2
from
- A Structure: com.esri.arcgis.system._WKSPoint (A com.esri.arcgis.system._WKSPoint COM typedef) (in)to
- A Structure: com.esri.arcgis.system._WKSPoint (A com.esri.arcgis.system._WKSPoint COM typedef) (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public void queryWKSCoords(_WKSPoint[] from, _WKSPoint[] to) throws IOException, AutomationException
The from and to parameters are WKSPoint structures instead of Point objects. If you are not interested in using or preserving vertex attributes then PutWKSCoords and QueryWKSCoords can be a quicker way to modify and obtain the xy coordinates defining the line.
queryWKSCoords
in interface ILine2
from
- A Structure: com.esri.arcgis.system._WKSPoint (A com.esri.arcgis.system._WKSPoint COM typedef) (out: use single element array)to
- A Structure: com.esri.arcgis.system._WKSPoint (A com.esri.arcgis.system._WKSPoint COM typedef) (out: use single element array)
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 X-Axis and dY units along the Y-Axis. Only changes the position of the Geometry without altering any of the other characteristics. Move is a spatial offset.
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 X-Axis and dY units along the Y-Axis, where dX and dY are calculated from the input vector Line. Only the Length and Angle of the vector affect the transformation. The location of the vector does not change the transformation. Only changes the position of the Geometry without altering any of the other characteristics. Move is a spatial offset.
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 X-Axis and a factor of sY along the Y-Axis (where sX is the ratio of Old Width to New Width, and sY is the ratio of Old Height to New Height). The Origin point is the reference Point from which the transformation is performed (Regardless of the location of the Origin point, the Geometry resulting from the transformation is the same, except for a positional offset). The Origin is the only point in the transformation guaranted to remain in the same location after the transformation is complete.
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 putCoordsEx(IPoint from, IPoint to) throws IOException, AutomationException
PutCoordsEx allows both the fromPoint and the toPoint to be set simultaneously.
A Conformal Transformation based on the original points and the new points
is applied to the curve.
putCoordsEx
in interface ICurve2
from
- A reference to a com.esri.arcgis.geometry.IPoint (in)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 queryPointsAndDistances(int extension, double searchRadius, IPoint inPoint, boolean asRatio, double[] distanceFromCurve, IEnumPointAndDistance[] pointsAndDistances) throws IOException, AutomationException
This method is similar to QueryPointsAndDistance; but it handles the case where the location of the minimum distance is not unique (See picture below). QueryPointAndDistance returns only the first location, this method returns all locations of minimum distance.
AsRatio is an input parameter that only affects the DistanceAlongCurvereturned as part of the output IEnumPointAndDistance enumerator.
distanceFromCurve is an output parameter that represents the minimum distance between the curve and the input point.
IEnumPointAndDistance is an enumerator (it inherits from IEnumVertex) over all nearest points on the curve
queryPointsAndDistances
in interface ICurve3
extension
- A com.esri.arcgis.geometry.esriSegmentExtension constant (in)searchRadius
- The searchRadius (in)inPoint
- A reference to a com.esri.arcgis.geometry.IPoint (in)asRatio
- The asRatio (in)distanceFromCurve
- The distanceFromCurve (in/out: use single element array)pointsAndDistances
- A reference to a com.esri.arcgis.geometry.IEnumPointAndDistance (out: use single element array)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public void queryCurvature(double distanceAlongCurve, boolean asRatio, double[] curvature, ILine unitVector) throws IOException, AutomationException
Returns the curvature at a specified distance along the segment. The distance can be given explicitly or as a ratio of the entire length of the segment. The curvature is returned as a Line representing a directional unit vector (in the direction going from the From Point to the To Point) and a double representing the magnitude of the vector of curvature.
The unit vector returned by QueryCurvature points toward the center of the circle that has the same first and second derivative at the queried point with a curvature value equal to 1 / Radius of that circle.
queryCurvature
in interface ISegment
distanceAlongCurve
- The distanceAlongCurve (in)asRatio
- The asRatio (in)curvature
- The curvature (out: use single element array)unitVector
- A reference to a com.esri.arcgis.geometry.ILine (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public int returnTurnDirection(ISegment otherSegment) throws IOException, AutomationException
Returns the Turn Direction of the Segment immediately following the current Segment. The two segments must be connected between the To Point of the first segment and the From Point of the second segment. ReturnTurnDirection returns a long corresponding to an esriTurnDirectionEnum or a combination of esriNoTurn or esriUTurn and esriRightTurn or esriLeftTurn. If the two segments are tangential at the point of connection and not completely colinear, then a combination of esriTurnDirectionEnums are returned.
ReturnTurnDirection is only available for Lines and CircularArcs, not BezierCurves or EllipticArcs.
returnTurnDirection
in interface ISegment
otherSegment
- 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 splitAtDistance(double distances, boolean asRatio, ISegment[] fromSegment, ISegment[] toSegment) throws IOException, AutomationException
Splits the input Segment at the given distance and returns the Segment between the original From Point and the split point as well as the Segment between the split point and the original To Point. The split distance may be specified as a ratio of the total distance if AsRatio = TRUE, otherwise the distance is in the same units as the Length of the Segment.
splitAtDistance
in interface ISegment
distances
- The distances (in)asRatio
- The asRatio (in)fromSegment
- A reference to a com.esri.arcgis.geometry.ISegment (out: use single element array)toSegment
- A reference to a com.esri.arcgis.geometry.ISegment (out: use single element array)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public void splitDivideLength(double offset, double length, boolean asRatio, int[] numSplitSegments, ISegment splitSegments) throws IOException, AutomationException
GeometryEnvironment.splitDivideLength(com.esri.arcgis.geometry.ISegment, double, double, boolean, int[], com.esri.arcgis.geometry.ISegment[][])
.
Outputs an array of Segments of a desired input length starting at an offset distance along the curve and continuing until the end of the Segment is reached. The offset and length may be specified as a ratio of the total length of the Segment. SplitDivideLength outputs an array of Segments and the number of Segments in that array. All of the output Segments in the array have the desired input length with the exception of the final Segment which has a length less than or equal to the input length (the remainder of the Segment).
splitDivideLength
in interface ISegment
offset
- The offset (in)length
- The length (in)asRatio
- The asRatio (in)numSplitSegments
- The numSplitSegments (in)splitSegments
- A reference to a com.esri.arcgis.geometry.ISegment (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public void densify(int cInSlots, double maxDeviation, int[] pcOutSegments, ILine[] segments) throws IOException, AutomationException
GeometryEnvironment.densify(com.esri.arcgis.geometry.ISegment, double, int[], com.esri.arcgis.geometry.ILine[][])
.
Densifying individual segments can be accomplished in client code by add the segment to a temporary polyline, then densifying the polyline using one of the methods on IPolycurve. Alternatively, the IGeometryBridge interface on the GeometryEnvironment object can be used.
densify
in interface ISegment
cInSlots
- The cInSlots (in)maxDeviation
- The maxDeviation (in)pcOutSegments
- The pcOutSegments (out: use single element array)segments
- A reference to a com.esri.arcgis.geometry.ILine (out: use single element array)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public void geographicShift(double splitLongitude) throws IOException, AutomationException
geographicShift
in interface ISegment
splitLongitude
- The splitLongitude (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public void constructAngleBisector(IPoint from, IPoint through, IPoint to, double length, boolean useAcuteAngle) throws IOException, AutomationException
Constructs a Line segment of given input Length which bisects the Angle formed by the right side of the three input points. The From Point of the new Line is the Through input point. If the right side angle is smaller, the constructed Line will always bisect this angle, regardless of the value of bUseSmallerAngle. However, if the right side angle is larger, and bUseSmallerAngle is TRUE, then the constructed line will bisect the smaller angle (left side) instead of the right side reflex angle.
constructAngleBisector
in interface IConstructLine
from
- A reference to a com.esri.arcgis.geometry.IPoint (in)through
- A reference to a com.esri.arcgis.geometry.IPoint (in)to
- A reference to a com.esri.arcgis.geometry.IPoint (in)length
- The length (in)useAcuteAngle
- The useAcuteAngle (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public void constructExtended(ILine inLine, int extendHow) throws IOException, AutomationException
Extends a line to the maximum extent of the Spatial Reference given a desired extension method.
To extend a Line to another Curve, wrap the Line in a Polyline and use IConstructCurve::ConstructExtended.
constructExtended
in interface IConstructLine
inLine
- A reference to a com.esri.arcgis.geometry.ILine (in)extendHow
- A com.esri.arcgis.geometry.esriSegmentExtension constant (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 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 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 getMs(double[] fromM, double[] toM) throws IOException, AutomationException
Returns the M attributes held by the From and To point of the segment.
getMs
in interface ISegmentM
fromM
- The fromM (out: use single element array)toM
- The toM (out: use single element array)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public void setMs(double fromM, double toM) throws IOException, AutomationException
Sets the M attributes for the From and To points of the segment. These attributes can be set regardless of the attribute awareness of the segment.
setMs
in interface ISegmentM
fromM
- The fromM (in)toM
- The toM (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public void getZs(double[] fromZ, double[] toZ) throws IOException, AutomationException
Returns the Z attributes held by the From and To point of the segment.
getZs
in interface ISegmentZ
fromZ
- The fromZ (out: use single element array)toZ
- The toZ (out: use single element array)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public void setZs(double fromZ, double toZ) throws IOException, AutomationException
Sets the Z attributes for the From and To points of the segment. These attributes can be set regardless of the attribute awareness of the segment.
setZs
in interface ISegmentZ
fromZ
- The fromZ (in)toZ
- The toZ (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public void getIDs(int[] fromID, int[] toID) throws IOException, AutomationException
Returns the PointID attributes held by the From and To point of the segment.
getIDs
in interface ISegmentID
fromID
- The fromID (out: use single element array)toID
- The toID (out: use single element array)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public void setIDs(int fromID, int toID) throws IOException, AutomationException
Sets the PointID attributes for the From and To points of the segment. These attributes can be set regardless of the attribute awareness of the segment.
setIDs
in interface ISegmentID
fromID
- The fromID (in)toID
- The toID (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.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |