TINMAN 3D / REALTIME TERRAIN
Software Development Kit - User Manual

class CoordinateSystem in Tinman.Terrain.Georef

Describes a coordinate system for georeferencing.

sealed class CoordinateSystem extends GeoObject

Remarks

A geographic coordinate system (IsGeographic is true) has the following X and Y axes:

A projected coordinate system (IsProjection is true) has the following X and Y axes: The standard Z axis for a coordinate system is (Vertical is null): Vertical coordinate systems (Vertical is not null) have a different Z axis, usually gravity-related height or depth.

Configuration

Config

The configurator object for this type.

public static property Config { get }
type IConfigurator<CoordinateSystem>
value [not-null] The configurator object.

ConfigFlags

The configuration type for CoordinateSystemFlags values.

public static readonly field ConfigFlags
type IConfigurator<CoordinateSystemFlags>

ToConfig

Returns the configuration value that describes this object.

public override method ToConfig ()
type ConfigValue
returns [not-null] The configuration value.
overrides GeoObject.ToConfig

Remarks:

All configurable objects need to implement this interface. For simple types, it is preferable to delegate to ToValue.

The returned value may be of type Invalid, which means that this object in its current state cannot be described with the configuration API.

Before returning the resulting configuration value, Cache must be called on it, passing this IConfigurable object as parameter.

Serialization

SerialId

Serialization information about this type.

public static readonly field SerialId
type ISerialTypeInfo

Public / Constants

Local

Non-specified local coordinate system sing metric units.

public static readonly field Local
type CoordinateSystem

PopularMercator

WGS 84 / Pseudo-Mercator

public static readonly field PopularMercator
type CoordinateSystem

Remarks:

This coordinate system is used by popular web mapping applications.

WGS84

World Geodetic System 1984

public static readonly field WGS84
type CoordinateSystem

Public / Attributes

FaceBounds

Returns the map bounds of Face for this datum coordinate system.

public property FaceBounds { get }
type Box2D
value The map bounds.

Flags

The coordinate system flags.

public property Flags { get }
type CoordinateSystemFlags
value The flags.

Geographic

The geodetic datum this coordinate system is based upon.

public property Geographic { get }
type GeodeticDatum
value The geodetic datum or null.

GeographicUnit

The unit of measure used for geographic coordinates.

public property GeographicUnit { get }
type UnitOfMeasure
value The unit of measure or null if Geographic is null.

HorizontalUnit

Returns the horizontal unit of measure.

public property HorizontalUnit { get }
type UnitOfMeasure
value [not-null] The horizontal unit of measure.

Remarks:

Depending on the coordinate system type, the horizontal unit of measure is either the local unit, projected unit or the unit of the ellipsoid of the geodetic datum.

IsGeographic

Is this a geographic coordinate system?

public property IsGeographic { get }
type bool
value true if this coordinate system is geographic, false if not.

Remarks:

Geographic coordinate system use geographic coordinates (latitude, longitude), which are specified in angular units. A coordinate system can either be geographic, projected or local.

IsLocal

Is this a local coordinate system?

public property IsLocal { get }
type bool
value true if this coordinate system is local, false if not.

Remarks:

Local coordinate systems use custom map coordinates, which are specified in length units. A coordinate system can either be geographic, projected or local.

IsProjection

Is this a projected coordinate system?

public property IsProjection { get }
type bool
value true if this coordinate system is projected, false if not.

Remarks:

Projected coordinate systems use map coordinates (easting, northing), which are specified in length units. A coordinate system can either be geographic, projected or local.

IsVertical

Does this coordinate system include vertical coordinates that are different than ellipsoid height?

public property IsVertical { get }
type bool
value true if this coordinate system is non-ellipsoidal vertical, false if not.

LocalUnit

The unit of measure used for local coordinates.

public property LocalUnit { get }
type UnitOfMeasure
value The unit or measure or null if IsLocal is false.

Name

The human-readable name of this object.

public property Name { get }
type string
value [not-empty] The object name.
inherited GeoObject.Name

Projection

The map projection that translates between geographic coordinates (latitude, longitude) and map coordinates (easting, northing).

public property Projection { get }
type ICoordinateOperation
value The coordinate operation or null.

ProjectionUnit

The unit of measure used for projected coordinates.

public property ProjectionUnit { get }
type UnitOfMeasure
value The unit of measure or null if Projection is null.

SerialType

Returns the serial type of this object.

public property SerialType { get }
type ISerialTypeInfo
value [not-null] The serial type.
inherited SerializableBase.SerialType

SerialVersion

Returns the serial data version.

public virtual property SerialVersion { get }
type int32
value [>=1] The serial data version tag.
inherited SerializableBase.SerialVersion

Remarks:

An ISerializable implementation is required to support all versions up to the one returned by SerialVersion.

See also:

ISerializable.Serialize
ISerializable.Deserialize

Type

The type of this geo object.

public property Type { get }
type GeoObjectType
value The geo object type.
inherited GeoObject.Type

Vertical

The vertical datum this coordinate system is based upon.

public property Vertical { get }
type VerticalDatum
value The vertical datum or null if ellipsoid height is used.

VerticalUnit

The unit of measure used for vertical coordinates.

public property VerticalUnit { get }
type UnitOfMeasure
value [not-null] The unit of measure of vertical coordinates.

Public / Constructors

CoordinateSystem

Creates a new instance of CoordinateSystem.

public constructor CoordinateSystem (GeodeticDatum geographic, ICoordinateOperation projection = null, VerticalDatum vertical = null, UnitOfMeasure geographicUnit = null, UnitOfMeasure projectionUnit = null, UnitOfMeasure verticalUnit = null, UnitOfMeasure localUnit = null, CoordinateSystemFlags flags = CoordinateSystemFlags.None, string name = null)
params geographic The geodetic datum.
  projection The map projection that translates between geographic coordinates (latitude, longitude) and map coordinates (easting, northing) or null if the coordinate system does not define a projection. Defaults to null.
  vertical The vertical datum or null if the coordinate system uses ellipsoid height. Defaults to null.
  geographicUnit The unit of geographic coordinates. If null, Degree will be used. Defaults to null.
  projectionUnit The unit of map coordinates. If null, Metre will be used. Defaults to null.
  verticalUnit The unit of vertical coordinates. If null, Metre will be used. Defaults to null.
  localUnit The unit of local coordinates. If null, Metre will be used. Defaults to null.
  flags The coordinate system flags. Defaults to None.
  name Human-readable name of the coordinate system. If empty or null, UserDefined will be used instead. Defaults to null.

FromWkt

Creates a new instance of CoordinateSystem based on the given OpenGIS WKT description.

public static method FromWkt (string wkt, IGeoRegistry registry = null, ICoordinateOperation coordinateOperation = null)
type CoordinateSystemWkt
params wkt [not-null] The OpenGIS WKT description.
  registry The GeoRegistry to use for looking up well-known entities. If a well-known entity has been found in the registry, it is used instead of the entity that is described in the WKT source. If null, lookup will be disabled and only the WKT entity descriptions will be used. Defaults to null.
  coordinateOperation The coordinate operation to use instead of the [PROJECTION] clause in wkt. Defaults to null.
returns [not-null] The coordinate system description.

Remarks:

The given string must match the following Grammar:

wkt    := value ;

obj    := id !> open values close ;
!value := obj | str | num ;
values := value (',' value)* ;

!id    := letter (letter | digit)* ;
num    := '-'? digit+ ('.' digit+)? ;

!close := '\]' | ')' ;
digit  := '0'..'9' ;
letter := 'a'..'z' | 'A'..'Z' | '_' ;
!open  := '\[' | '(' ;
str    := '"' ]"[* '"' ;

Public / Methods

CreateCoordinateTransform

Creates a ICoordinateTransform for this projected coordinate system.

public method CreateCoordinateTransform ()
type ICoordinateTransform
returns [not-null] The coordinate transform. If this coordinate system is not projected, the returned transform will map latitude to northing and longitude to easting (identity transform).

Deserialize

Initializes the state of this object from the given data stream.

public override method Deserialize (int32 serialVersion, ISerializer data)
type ISerializable
params serialVersion [>=1] The serial data version.
  data [not-null] The serial data stream.
returns [not-null] The deserialized object. This will typically be this, but in some circumstances, another instance may be returned (e.g. singletons).
overrides GeoObject.Deserialize

Remarks:

The Deserialize method will be called immediately after the object has been instantiated via its default constructor.

The provided serialVersion number is guaranteed to be equal to or less than the SerialVersion returned by this object (i.e. ISerializable object must provide backwards compatibility).

See also:

ISerializable.Serialize
ISerializable.SerialVersion

Equals

Compares this object with the given one.

[Pure]
public override method Equals (IGeoObject other)
type bool
params other The object to compare to.
returns true if this object is equal to other, false if not.
overrides GeoObject.Equals

Compares this object with the given one.

[Pure]
public override sealed method Equals (object other)
type bool
params other The object to compare to.
returns true if this object is equal to other, false if not.
inherited GeoObject.Equals

GetHashCode

[Pure]
public override sealed method GetHashCode ()
type int32
inherited GeoObject.GetHashCode

Serialize

Serializes the current state of this object to the given data stream.

public override method Serialize (ISerializer data)
params data [not-null] The serial data stream.
overrides GeoObject.Serialize

See also:

ISerializable.Deserialize
ISerializable.SerialVersion

ToCubemapFace

Creates a cubemap face geographic coordinate system based on this coordinate system.

public method ToCubemapFace (CubemapFace face)
type CoordinateSystem
params face The cubemap face.
returns [not-null] The resulting coordinate system.

Remarks:

First, the projection is removed (if present). Then, a cubemap face projection (see Face) is constructed based on the ellipsoid.

ToGeographic

Returns the plain geographic coordinate system by removing the projection.

public method ToGeographic ()
type CoordinateSystem
returns [not-null] The resulting coordinate system.

ToString

[Pure]
public override sealed method ToString ()
type string
inherited GeoObject.ToString

ToVertical

Updates the vertical components of this coordinate system.

public method ToVertical (UnitOfMeasure unit = null, VerticalDatum datum = null)
type CoordinateSystem
params unit The vertical unit. If null, Metre will be used. Defaults to null.
  datum The vertical datum (see Vertical). Defaults to null.
returns [not-null] The resulting coordinate system.