com.esri.arcgis.geometry
Interface IConstructGeodetic

All Superinterfaces:
Serializable
All Known Implementing Classes:
Polyline

public interface IConstructGeodetic
extends Serializable

Provides access to members that construct various kinds of geodetic curves.

Description

IConstructGeodetic is designed to create geodetic curves. A geodetic curve is a 1-dimensional curve defined on the surface of a spheroid (ellipsoid). Four types of geodetic curves are supported for polylines; one type is supported for circles and ellipses. A geodesic curve defines the shortest distance between two points. A loxodrome is a line of equal azimuth (from a pole). The Mercator projection shows loxodromes as straight lines. A great elliptic curve is defined by the intersection of a plane that contains the center of the spheroid and the spheroid surface and passes through two points. A normal section can be thought of as a simplified geodesic. It is defined by the intersection of a plane that passes through two points on the surface of the spheroid and is perpendicular to the surface ('normal') at the first point.

You construct a geodetic polyline or polygon (generically referred to as a polycurve) by first creating it, then invoking a construction method on it. A spatial reference (projected or geographic) must either already be associated with the polycurve, or be specified as part of the construction. A spatial reference can be obtained from one of the input point parameters of the construction method. If one is present, it will be assigned to the polycurve, and replace any existing spatial reference. If no input point has a spatial reference, then the existing spatial reference of the polycurve is used. If it doesn’t have one, then the construction cannot be applied and the method returns an error. If the polycurve being constructed is associated with a projected coordinate system, it will be constructed in the associated geographic coordinate system (GCS), then projected into the projected system. For the line constructors, vertex attributes are preserved on input vertices. For the circle and ellipse constructors, the input center point can have a z value, which will be assigned to all vertices on the boundary of the figure.

The ConstructGeodesicCircle and ConstructGeodesicEllipse methods support geodesics only. The ConstructGeodeticLineFromPoints and ConstructGeodeticLineFromDistance methods support all geodetic line types but are not supported for polygons. The line types are:


enum esriGeodeticType

{

  esriGeodeticTypeGeodesic       = 0,

  esriGeodeticTypeLoxodrome      = 1,

  esriGeodeticTypeGreatElliptic  = 2,

  esriGeodeticTypeNormalSection  = 3

};

All methods accept a parameter which describes the linear units of input lengths and distances or output lengths. If the unit parameter is not specified, meters are assumed. Angular parameters are specified in the angular units of the GCS associated with the polycurve being constructed. Typically these will be degrees, but a GCS that uses a different angular unit is possible. You also can specify how the polycurve should be densified when it is constructed.


enum esriCurveDensifyMethod

{

  [

    helpstring("Densify parameter is curve length increment. Output line segments will be 

    no longer than this. This method cannot be used when constructing geodesic circles or 

    ellipses.")

  ]

  esriCurveDensifyByLength,



  [

    helpstring("Densify parameter is angle increment. Line segments will become shorter as 

    the curvature increases. For geodesic ellipses, the angle is with respect to the reference circle.")

  ]

  esriCurveDensifyByAngle,



  [

    helpstring("Densify parameter is deviation from true curve. Line segments of varying length 

    will be generated. The curve parameter specifies the maximum allowable distance between 

    a line segment and the portion of the curve that it is approximating.")

  ]

  esriCurveDensifyByDeviation

};

The recommended method is esriCurvedensifyByDeviation because it lets you control the absolute ground error of the densified approximation in the most direct way. It will also generate the fewest number of dense vertices subject to that constraint. The esriCurveDensifyByLength option cannot currently be used with the circle and ellipse constructors.

Remarks

Geodetic curves that cross the antemeridian will be 'unwrapped' to one or the other side of the GCS coordinate system. That is, the longitude sequence ((-178,-179), (179,178)) will change to either ((-178,-179), (-180,-181)) or ((181,180), (179,178)). Geodetic circles and ellipses that cover one or both of the poles will have pole connector sequences added to them so that they form correct polygons when their latitude-longitude coordinates are displayed in a pseudo-plate carree projection.

Product Availability

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


Method Summary
 void constructGeodesicCircle(IPoint centerPoint, ILinearUnit linearUnit, double radius, int densifyMethod, double densifyParameter)
          constructs a geodesic circle centered on the specified point.
 void constructGeodesicEllipse(IPoint centerPoint, ILinearUnit linearUnit, double semiMajorAxisLength, double semiMinorAxisLength, double semiMajorAxisAzimuth, int densifyMethod, double densifyParameter)
          constructs a geodesic ellipse with origin at the specified point and semi major axis oriented according to the specified azimuth.
 void constructGeodeticLineFromDistance(int geodeticLineType, IPoint fromPoint, ILinearUnit linearUnit, double length, double azimuth, int densifyMethod, double densifyParameter)
          constructs a geodetic line with the specified length and azimuth.
 void constructGeodeticLineFromPoints(int geodeticLineType, IPoint fromPoint, IPoint toPoint, ILinearUnit linearUnit, int densifyMethod, double densifyParameter)
          Constructs a geodetic line connecting the specified points.
 

Method Detail

constructGeodeticLineFromPoints

void constructGeodeticLineFromPoints(int geodeticLineType,
                                     IPoint fromPoint,
                                     IPoint toPoint,
                                     ILinearUnit linearUnit,
                                     int densifyMethod,
                                     double densifyParameter)
                                     throws IOException,
                                            AutomationException
Constructs a geodetic line connecting the specified points. The 'by length' and 'by deviation' densification options are supported.

Description

Constructs a geodetic line connecting the specified points. The esriCurveDensifyByLength and esriCurveDensifyByDeviation densification methods can be specified. If the from point has a spatial reference (PCS or GCS) associated with it, then that spatial reference will be assigned to the polycurve being constructed. Otherwise, if the polycurve already has a spatial reference, that one will be used. See the above section on common behavior for additional information on this method. This method is not implemented for polygons (E_NOTIMPL is returned).

Remarks

Length of output line will always be less than one hemisphere.

Product Availability

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

Parameters:
geodeticLineType - A com.esri.arcgis.geometry.esriGeodeticType constant (in)
fromPoint - A reference to a com.esri.arcgis.geometry.IPoint (in)
toPoint - A reference to a com.esri.arcgis.geometry.IPoint (in)
linearUnit - A reference to a com.esri.arcgis.geometry.ILinearUnit (in)
densifyMethod - A com.esri.arcgis.geometry.esriCurveDensifyMethod constant (in)
densifyParameter - The densifyParameter (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

constructGeodeticLineFromDistance

void constructGeodeticLineFromDistance(int geodeticLineType,
                                       IPoint fromPoint,
                                       ILinearUnit linearUnit,
                                       double length,
                                       double azimuth,
                                       int densifyMethod,
                                       double densifyParameter)
                                       throws IOException,
                                              AutomationException
constructs a geodetic line with the specified length and azimuth. The 'by length' and 'by deviation' densification options are supported.

Description

Constructs a geodetic line with the specified length and azimuth (clockwise angle from north). The esriCurveDensifyByLength and esriCurveDensifyByDeviation densification methods can be specified. Output length is always less than one hemisphere. See the above section on common behavior for additional information on this method. This method is not implemented for polygons (E_NOTIMPL is returned).

Remarks

Length of output line will always be less than one hemisphere.

Product Availability

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

Parameters:
geodeticLineType - A com.esri.arcgis.geometry.esriGeodeticType constant (in)
fromPoint - A reference to a com.esri.arcgis.geometry.IPoint (in)
linearUnit - A reference to a com.esri.arcgis.geometry.ILinearUnit (in)
length - The length (in)
azimuth - The azimuth (in)
densifyMethod - A com.esri.arcgis.geometry.esriCurveDensifyMethod constant (in)
densifyParameter - The densifyParameter (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

constructGeodesicCircle

void constructGeodesicCircle(IPoint centerPoint,
                             ILinearUnit linearUnit,
                             double radius,
                             int densifyMethod,
                             double densifyParameter)
                             throws IOException,
                                    AutomationException
constructs a geodesic circle centered on the specified point. All densification options are supported (length, angle, deviation).

Description

Constructs a geodesic circle centered on the specified point. The esriCurveDensifyByAngle and esriCurveDensifyByDeviation densification methods are supported. If this method is applied to a polygon, the output polygon will have one or two parts, depending on the size of the ellipse. If the ellipse covers both poles and covers a hemisphere, the ellipse perimeter becomes the inner ring (the hole) and the horizon rectangle for the GCS becomes the outer ring.

Product Availability

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

Parameters:
centerPoint - A reference to a com.esri.arcgis.geometry.IPoint (in)
linearUnit - A reference to a com.esri.arcgis.geometry.ILinearUnit (in)
radius - The radius (in)
densifyMethod - A com.esri.arcgis.geometry.esriCurveDensifyMethod constant (in)
densifyParameter - The densifyParameter (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

constructGeodesicEllipse

void constructGeodesicEllipse(IPoint centerPoint,
                              ILinearUnit linearUnit,
                              double semiMajorAxisLength,
                              double semiMinorAxisLength,
                              double semiMajorAxisAzimuth,
                              int densifyMethod,
                              double densifyParameter)
                              throws IOException,
                                     AutomationException
constructs a geodesic ellipse with origin at the specified point and semi major axis oriented according to the specified azimuth. The 'by angle' and 'by deviation' densification options are supported.

Description

Constructs a geodesic ellipse centered on the specified point. The esriCurveDensifyByAngle and esriCurveDensifyByDeviation densification methods are supported. If this method is applied to a polygon, the output polygon will have one or two parts, depending on the size of the ellipse. If the ellipse covers both poles and covers a hemisphere, the ellipse perimeter becomes the inner ring (the hole) and the horizon rectangle for the GCS becomes the outer ring.

Product Availability

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

Parameters:
centerPoint - A reference to a com.esri.arcgis.geometry.IPoint (in)
linearUnit - A reference to a com.esri.arcgis.geometry.ILinearUnit (in)
semiMajorAxisLength - The semiMajorAxisLength (in)
semiMinorAxisLength - The semiMinorAxisLength (in)
semiMajorAxisAzimuth - The semiMajorAxisAzimuth (in)
densifyMethod - A com.esri.arcgis.geometry.esriCurveDensifyMethod constant (in)
densifyParameter - The densifyParameter (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.