Many applications that deal with geospatial data need to be able to perform various geometric calculations on the data. A few examples of such calculations are area computation for surfaces, containment and intersection tests, and distance calculations. LuciadLightspeed offers support for this kind of operations in the packages geodesy and geometry. Most of this functionality is specific for the coordinate system or in which the operations are performed. This article covers ellipsoidal, spherical, and Cartesian calculations, and concludes with a discussion of ILcdSegmentScanner.

Ellipsoidal calculations

The interface ILcdEllipsoid defines several geometric calculations that you can perform on the surface of an ellipsoid (see Geodesy). You can perform various additional calculations using TLcdEllipsoidUtil. The methods of TLcdEllipsoidUtil all accept an ILcdEllipsoid as one of their parameters.

TLcdEllipsoidUtil supports the following operations:

  • Closest point determination

  • Containment tests for line segments

  • Intersection tests for line segments

  • Conformal latitude computation

  • Buffer contour construction

Refer to the API reference for more information on TLcdEllipsoidUtil and its methods.

Spherical calculations

The class TLcdSphereUtil provides various spherical trigonometry operations. Whereas TLcdEllipsoidUtil works on an ellipsoid and returns results measured in meters, TLcdSphereUtil works entirely in geodetic coordinates and returns results measured in arc degrees. Several of TLcdSphereUtil methods correspond to those found in ILcdEllipsoid. Using a spherical instead of an ellipsoidal calculation produces an approximate result, but may be desirable for performance reasons.

TLcdSphereUtil supports the following operations:

  • Various containment and intersection tests

  • Distance, area, and orientation calculations

  • Closest point determination

  • Conversion between Cartesian and geodetic coordinates

Refer to the API reference for more information on TLcdSphereUtil and its methods.

Cartesian calculations

For operations in Cartesian space, LuciadLightspeed provides the class TLcdCartesian. Its functionality is, to a large extent, equivalent to TLcdSphereUtil, although obviously the inputs and outputs of TLcdCartesian's methods are expressed in Cartesian coordinates rather than geodetic coordinates. Also note that while the majority of methods operate in 2D space (XY coordinates), some operations are also implemented in 3D (XYZ coordinates). Refer to the API reference for an overview of the specific methods and their usage.

Sampling line segments

The interface ILcdSegmentScanner allows you to compute sample points along a line segment. The sample points are at a regular interval. Sampling of line segments is used to extract the underlying terrain heights for every sample point, for example. See Retrieving height data for 2D points.

With the sample data, you can then construct a profile view of the terrain covered by the line segment, for example.

LuciadLightspeed provides three implementations of ILcdSegmentScanner:

The main method of ILcdSegmentScanner is scanSegment(), which takes the following arguments:

  • a distance delta that indicates the desired spacing of the generated points

  • the start and end point of the line segment from which to generate the points

  • an ILcdOnPointFunction to be invoked for every generated point

All implementations of ILcdSegmentScanner compute points along the input line segment, and pass each of them in turn to the supplied ILcdOnPointFunction. Refer to the API reference for further details.