CoordinateOperationMethod

Description

[ShutdownSurvive]
abstract class Tinman.Terrain.Georef.CoordinateOperationMethod

Derived from

GeoObject abstract

Abstract base class for coordinate operation methods.

This class also provided various default implementations for well-known transformations.

Public / Constants

Albers


public static readonly attribute Albers → (CoordinateOperationMethod)

Albers (conic, equal-area)

These parameters are defined for this transform:

The following coordinate operation methods are mapped to this transform factory:

  • EPSG-9822: Albers Equal Area

  • GeoTIFF-11: CT_AlbersEqualArea

  • OpenGIS WKT1: Albers_Conic_Equal_Area

  • PROJ: +proj=aea

Cassini


public static readonly attribute Cassini → (CoordinateOperationMethod)

Cassini-Soldner (cylindrical)

These parameters are defined for this transform:

The following coordinate operation methods are mapped to this transform factory:

  • EPSG-9806: Cassini-Soldner

  • GeoTIFF-18: CT_CassiniSoldner

  • OpenGIS WKT1: Cassini_Soldner

  • PROJ: +proj=cass

Equirectangular


public static readonly attribute Equirectangular → (CoordinateOperationMethod)

Equidistant (cylindrical)

These parameters are defined for this transform:

The following coordinate operation methods are mapped to this transform factory:

  • EPSG-1028: Equidistant Cylindrical

  • GeoTIFF-17: CT_Equirectangular

  • OpenGIS WKT1: Equirectangular

  • PROJ: +proj=eqc

When CoordinateOperationParameter.Latitude is set for this method, the value is applied to CoordinateOperationParameter.Parallel1 instead.

Face


public static readonly attribute Face → (CoordinateOperationMethod)

Maps geographic coordinates (latitude, longitude) onto a cubemap face.

The mapping from geographic coordinates and cubemap face coordinates is established by the Cubemap class (see Cubemap.GeographicToCube2 and Cubemap.CubeToFace2). Map coordinates (easting, northing) are mapped to cubemap face coordinates as follows:

a = r * pi / 4
map(-a, -a) => face(0, 0);
map( a, -a) => face(n, 0);
map(-a,  a) => face(0, n);
map( a,  a) => face(n, n);

where n is the maximum cubemap coordinate and r is the radius of the reference sphere (will be Ellipsoid.RadiusOfAuthalicSphere for ellipsoids).

These parameters are defined for this transform:

The latitude and longitude parameters are only used to choose the cubemap face. It is recommended to obtain their values by using LatLon.ForCubemapFace.

Lambert​Azimuthal


public static readonly attribute LambertAzimuthal → (CoordinateOperationMethod)

Lambert (azimuthal, equal-area)

These parameters are defined for this transform:

The following coordinate operation methods are mapped to this transform factory:

  • EPSG-9820: Lambert Azimuthal Equal Area

  • GeoTIFF-10: CT_LambertAzimEqualArea

  • OpenGIS WKT1: Lambert_Azimuthal_Equal_Area

  • PROJ: +proj=laea

Lambert​Conic


public static readonly attribute LambertConic → (CoordinateOperationMethod)

Lambert (conic, conformal)

These parameters are defined for this transform:

For the 1SP variant:

For the 2SP variant:

The following coordinate operation methods are mapped to this transform factory:

  • PROJ: +proj=lcc

For the 1SP variant:

  • EPSG-9801: Lambert Conic Conformal (1SP).

  • GeoTIFF-9: CT_LambertConfConic_Helmert

  • OpenGIS WKT1: Lambert_Conformal_Conic_1SP

For the 2SP variant:

  • EPSG-9802: Lambert Conic Conformal (2SP)

  • GeoTIFF-8: CT_LambertConfConic_2SP

  • OpenGIS WKT1: Lambert_Conformal_Conic_2SP

Lambert​Cylindrical


public static readonly attribute LambertCylindrical → (CoordinateOperationMethod)

Lambert (cylindrical, equal-area)

These parameters are defined for this transform:

The following coordinate operation methods are mapped to this transform factory:

  • EPSG-9835: Lambert Cylindrical Equal Area

  • GeoTIFF-28: CT_CylindricalEqualArea

  • OpenGIS WKT1: Cylindrical_Equal_Area

  • PROJ: +proj=cea

When CoordinateOperationParameter.Latitude is set for this method, the value is applied to CoordinateOperationParameter.Parallel1 instead.

Mercator


public static readonly attribute Mercator → (CoordinateOperationMethod)

Mercator (cylindrical, conformal)

These parameters are defined for this transform:

For the A variant:

For the B variant:

The following coordinate operation methods are mapped to this transform factory:

  • GeoTIFF-7: CT_Mercator

  • PROJ: +proj=merc

For the A variant:

  • EPSG-9804: Mercator (variant A)

  • OpenGIS WKT1: Mercator_1SP

For the B variant:

  • EPSG-9805: Mercator (variant B)

  • OpenGIS WKT1: Mercator_2SP

Oblique​Mercator​A


public static readonly attribute ObliqueMercatorA → (CoordinateOperationMethod)

Oblique Mercator (cylindrical, conformal)

These parameters are defined for this transform:

The following coordinate operation methods are mapped to this transform factory:

  • EPSG-9812: Hotine Oblique Mercator (variant A)

  • GeoTIFF-3: CT_ObliqueMercator

  • OpenGIS WKT1: Hotine_Oblique_Mercator

  • PROJ: +proj=omerc

Oblique​Mercator​B


public static readonly attribute ObliqueMercatorB → (CoordinateOperationMethod)

Oblique Mercator (cylindrical, conformal)

These parameters are defined for this transform:

The following coordinate operation methods are mapped to this transform factory:

  • EPSG-9815: Hotine Oblique Mercator (variant B)

  • GeoTIFF-9815: CT_HotineObliqueMercatorAzimuthCenter

  • OpenGIS WKT1: Hotine_Oblique_Mercator_Azimuth_Center

  • PROJ: +proj=omerc

Oblique​Stereographic


public static readonly attribute ObliqueStereographic → (CoordinateOperationMethod)

Oblique Stereographic (azimuthal, conformal)

These parameters are defined for this transform:

The following coordinate operation methods are mapped to this transform factory:

  • EPSG-9809: Oblique Stereographic

  • GeoTIFF-14: CT_Stereographic

  • GeoTIFF-16: CT_ObliqueStereographic

  • OpenGIS WKT1: Stereographic

  • OpenGIS WKT1: Oblique_Stereographic

  • PROJ: +proj=sterea

Polar​Stereographic


public static readonly attribute PolarStereographic → (CoordinateOperationMethod)

Polar Stereographic (azimuthal, conformal)

These parameters are defined for this transform:

For the variant A:

The following coordinate operation methods are mapped to this transform factory:

  • GeoTIFF-15: CT_PolarStereographic

  • OpenGIS WKT1: Polar_Stereographic

  • PROJ: +proj=stere

For the variant A:

  • EPSG-9810: Polar Stereographic (variant A)

For the variant B:

  • EPSG-9829: Polar Stereographic (variant B)

Popular​Mercator


public static readonly attribute PopularMercator → (CoordinateOperationMethod)

Popular Visualisation Pseudo Mercator

These parameters are defined for this transform:

The following coordinate operation methods are mapped to this transform factory:

  • EPSG-1024: Popular Visualisation Pseudo Mercator

  • OpenGIS WKT1: Mercator_Auxiliary_Sphere

Sinusoidal


public static readonly attribute Sinusoidal → (CoordinateOperationMethod)

Sinusoidal (pseudo-cylindrical, equal-area)

These parameters are defined for this transform:

The following coordinate operation methods are mapped to this transform factory:

  • GeoTIFF-24: CT_Sinusoidal

  • OpenGIS WKT1: Sinusoidal

  • PROJ: +proj=sinu

Toast


public static readonly attribute Toast → (CoordinateOperationMethod)

TOAST (Tessellated Octahedral Adaptive Subdivision Transform)
https://docs.worldwidetelescope.org/data-guide/1/spherical-projections/toast-projection

The following figure illustrates the mapping that is established by this coordinate operation:

(A)-----(B)-----(C)
 |      /|\      |       |   X  |   Y  |  LAT | LON-1 | LON-2 |
 |     / | \     |    ---+------+------+------+-------+-------+
 |    /  |  \    |     A | -90° |  90° | 90°S |   -   |   -   |
 |  (D)  |  (E)  |     B |   0° |  90° |  0°  |  90°E |  90°W |
 |  /    |    \  |     C |  90° |  90° | 90°S |   -   |   -   |
 | /     |     \ |     D | -45° |  45° |  0°  | 135°E |  45°W |
 |/      |      \|     E |  45° |  45° |  0°  |  45°E | 135°W |
(F)-----(G)-----(H)    F | -90° |   0° |  0°  | 180°  |   0°  |
 |\      |      /|     G |   0° |   0° | 90°N |   -   |   -   |
 | \     |     / |     H |  90° |   0° |  0°  |   0°  | 180°  |
 |  \    |    /  |     I | -45° | -45° |  0°  | 135°W |  45°E |
 |  (I)  |  (J)  |     J |  45° | -45° |  0°  |  45°W | 135°E |
 |    \  |  /    |     K | -90° | -90° | 90°S |   -   |   -   |
 |     \ | /     |     L |   0° | -90° |  0°  |  90°W |  90°E |
 |      \|/      |     M |  90° | -90° | 90°S |  45°W | 135°E |
(K)-----(L)-----(M)

X: Easting, Y: Northing, LAT := Latitude
LON-1: Longitude (inside), LON-2: Longitude (outside)

These parameters are defined for this transform:

The sign of the CoordinateOperationParameter.Scale parameters chooses between the inside and outside projections:

The floor of the absolute value of the CoordinateOperationParameter.Scale parameter chooses the projection variant:

  • 0 : linear interpolation, according to the figure above.

  • 1 : spherical interpolation using the base octahedron.

  • n : spherical interpolation using the (n-1)-th octahedron subdivision.

Commonly used subdivision levels are 0 (e.g. Hallo Northern SKY planetarium program) and 6 (e.g. WorldWide Telescope). The maximum value for n is 8; larger values will be clamped.

Transverse​Mercator


public static readonly attribute TransverseMercator → (CoordinateOperationMethod)

Transverse Mercator (cylindrical, conformal)

These parameters are defined for this transform:

The following coordinate operation methods are mapped to this transform factory:

  • EPSG-9807: Transverse Mercator

  • GeoTIFF-1: CT_TransverseMercator

  • OpenGIS WKT1: Transverse_Mercator

  • PROJ: +proj=tmerc

Transverse​Mercator​South


public static readonly attribute TransverseMercatorSouth → (CoordinateOperationMethod)

Transverse Mercator South Oriented (cylindrical, conformal)

These parameters are defined for this transform:

The following coordinate operation methods are mapped to this transform factory:

  • EPSG-9808: Transverse Mercator (South Oriented)

  • GeoTIFF-27: CT_TransvMercator_SouthOriented

  • OpenGIS WKT1: Transverse_Mercator_South_Orientated

Public / Constructors

Topocentric


public method Topocentric → (3)

datum in : GeodeticDatum

[not-null]
The geodetic datum to use.

center in : LatLon

Geographic coordinates of the map origin. The longitude angle is interpreted absolute, i.e. it is not relative to the prime meridian of datum in.

unit opt : UnitOfMeasure = null

Unit of projected coordinates. If null, UnitOfMeasure.Metre will be used.

returns → CoordinateSystem

The projected coordinate system.

Creates a coordinate system which uses this coordinate operation method and is centered at the given coordinates.

The following coordinate operation parameters are initialized by this method:

The final values for easting and northing will be chosen so that center in is mapped to Vec2D.Zero.

GeorefException

If the geo-reference parameters are incomplete or invalid.

Public / Methods

Create​Coordinate​Transform


public abstract method CreateCoordinateTransform → (2)

ellipsoid in : Ellipsoid

[not-null]
The ellipsoid specification.

parameters in : ICoordinateOperationParameters

[not-null]
The parameter values.

returns → ICoordinateTransform

The created ICoordinateTransform object.

Creates a new instance of ICoordinateTransform, using the given parameters.

GeorefException

If parameters in are incomplete.

Default​Parameters


[EmptyBody]
public virtual method DefaultParameters → (1)

parameters in : CoordinateOperation

[not-null]
The parameters to update.

Sets default parameter values for undefined parameters.

Fixed​Parameter


[EmptyBody]
public virtual method FixedParameter → (1)

parameter in : CoordinateOperationParameter

The parameter.

returns → CoordinateOperationParameter

The fixed parameter, which may be equal to parameter in.

Tries to substitute the given parameter in with the correct one, if it is ignored by this coordinate operation method.

This method is used to fix incorrect coordinate operation specifications:

  1. Specification of ignored CoordinateOperationParameter.Latitude when the method expects CoordinateOperationParameter.Parallel1.

Ignored​Parameter


[EmptyBody]
public virtual method IgnoredParameter → (1)

parameter in : CoordinateOperationParameter

The parameter to check.

returns → bool

true if parameter in is ignored,
false if parameter in is not ignored.

Checks if the given parameter in is ignored by this coordinate operation method.

Although values may be specified for ignored parameters, they will not influence the behaviour of the coordinate operation method.

Validate​Parameters


public method ValidateParameters → (1)

parameters in : ICoordinateOperationParameters

[not-null]
The parameters to validate.

returns → CoordinateOperationParameter [ ]

The missing parameters or null if all required parameters are present.

Validates the given parameters for this coordinate operation method.

Protected / Constructors

Coordinate​Operation​Method

2 overloads


protected constructor CoordinateOperationMethod1 → (1)

serialType in : ISerialTypeInfo

[not-null]
The serial type ID.

Creates a new instance of CoordinateOperationMethod.


protected constructor CoordinateOperationMethod2 → (2)

serialType in : ISerialTypeInfo

[not-null]
The serial type ID.

name in : string

Human-readable name of the geo object. If empty or null, GeoObject.UserDefined will be used instead.

Creates a new instance of CoordinateOperationMethod.

Protected / Methods

Do​Deserialize


[EmptyBody]
protected virtual method DoDeserialize → (2)

serialVersion in : int32

The serial version.

data in : ISerializer

The serializer.

Performs custom deserialization.

IOException

If an I/O error has occurred.

Do​Validate​Parameters


[EmptyBody]
protected virtual method DoValidateParameters → (2)

parameters in : ICoordinateOperationParameters

The parameters to check.

missing in : ICollector<CoordinateOperationParameter>

Output for missing parameters.

Validates the given parameters for this coordinate operation method.

Map​To​Origin


protected virtual method MapToOrigin → (1)

map in : Vec2D

The map coordinates, as returned by ICoordinateTransform.GeographicToMap.

returns → Vec2D

The coordinate operation parameter values to use:
Vec2D.X : CoordinateOperationParameter.Easting
Vec2D.Y : CoordinateOperationParameter.Northing

Computes coordinate operation parameter values that will move the given map in coordinates to the coordinate system origin.

Configuration

Config


public static attribute Config → (get)

value : IConfigurator<CoordinateOperationMethod>

[not-null]
The configurator object.

The configurator object for this type.