SPATREF::COORDREFSYS Class Reference

Coordinate Reference System (CRS). More...

#include <mi32/spatref.h>

List of all members.

Public Types

enum  DISTANCEMETHOD { DISTANCEMETHOD_Projected, DISTANCEMETHOD_Geodesic }
enum  IDNUM {
  IDNUM_Undefined = -1, IDNUM_None = 0, IDNUM_Geographic2D_WGS84_Deg = 3800, IDNUM_Geographic2D_WGS72_Deg = 3802,
  IDNUM_Geographic3D_WGS84_DegM = 4800, IDNUM_Geographic3D_WGS72_DegM = 4802, IDNUM_Geocentric_WGS84 = 7800, IDNUM_Geocentric_ITRF_1988 = 7804,
  IDNUM_Geocentric_ITRF_1989 = 7805, IDNUM_Geocentric_ITRF_1990 = 7806, IDNUM_Geocentric_ITRF_1991 = 7807, IDNUM_Geocentric_ITRF_1992 = 7808,
  IDNUM_Geocentric_ITRF_1993 = 7809, IDNUM_Geocentric_ITRF_1994 = 7810, IDNUM_Geocentric_ITRF_1996 = 7811, IDNUM_Geocentric_ITRF_1997 = 7812,
  IDNUM_Geocentric_ITRF_2000 = 7813, IDNUM_Local2D_XY_m = 9000, IDNUM_Projected_US_NationalAtlas_EqualArea = 10559
}

Public Member Functions

ERRVALUE Assign (const OLDPROJPARM &projparm)
ERRVALUE Assign (const MISTRING &string)
ERRVALUE Assign (const XMLNODE *xmlnode)
ERRVALUE Assign (IDNUM IdNum)
ERRVALUE Assign (const IDENTIFIER &Id)
void Clear ()
ERRVALUE ComputeAngleToNorth (const DPOINT2D &point, double &angle, int angleunitid) const
ERRVALUE ComputeDistance (const DPOINT2D &point1, const DPOINT2D &point2, DISTANCEMETHOD method, double &distance, UOM::IDNUM LengthUnitIdNum=UOM::IDNUM_Length_Meter) const
 COORDREFSYS (const COORDREFSYS &rhs)
 COORDREFSYS ()
int COORDREFSYS::GetLegacyProjParm (OLDPROJPARM &projparm) const
ERRVALUE Create (const MILIST< COORDREFSYS > &CoordRefSysList)
ERRVALUE Create (COORDSYS::IDNUM CoordSysIdNum, const DATUM &Datum, const COORDOPDEF::IDNUM CoordOpDefId)
ERRVALUE Create (COORDSYS::IDNUM CoordSysIdNum, const DATUM &Datum, const COORDOPDEF &CoordOp)
ERRVALUE Create (const COORDSYS &CoordSys, const DATUM &Datum, const COORDOPDEF &CoordOp)
ERRVALUE Create (COORDSYS::IDNUM CoordSysIdNum, const DATUM &Datum)
ERRVALUE Create (const COORDSYS &CoordSys, const DATUM &Datum)
bool FindPredefined ()
const COORDAXISGetAxis (int axisidx) const
const MILIST< COORDREFSYS > & GetComponentList () const
const COORDOPDEFGetCoordOpDef () const
const COORDSYSGetCoordSys () const
const DATUMGetDatum () const
bool GetDatumTransOp (const DATUM &datum, COORDOPDEF &CoordOpDef) const
const COORDOPDEFLISTGetDatumTransOpList () const
int GetDimension () const
void GetDisplay (MISTRING &string, int indent=0, GETDISPLAY flags=GETDISPLAY_None) const
const IDENTIFIERLISTGetIdList () const
IDNUM GetIdNum () const
const MISTRINGGetName () const
ERRVALUE GetString (MISTRING &string) const
const TEXTRESITEMLISTGetValidAreaList () const
XMLNODEGetXML (XMLNODE *parentnode, const char *nodename="CoordRefSys") const
bool HasCoordSysType (COORDSYS::TYPE CoordSysType) const
bool HasDatumType (DATUM::TYPE DatumType) const
bool HasOwnDatumTransOpList () const
bool IniRead (INIHANDLE hdl, const char *group, const char *field)
ERRVALUE IniWrite (INIHANDLE hdl, const char *group, const char *field) const
bool IsCompound () const
bool IsDefined () const
bool IsLocal () const
bool IsProjected () const
COORDREFSYSoperator= (const COORDREFSYS &rhs)
ERRVALUE SetCoordOpDef (const COORDOPDEF &CoordOpDef)
ERRVALUE SetCoordSys (COORDSYS::IDNUM CoordSysIdNum)
ERRVALUE SetCoordSys (const COORDSYS &CoordSys)
ERRVALUE SetDatum (DATUM::IDNUM DatumIdNum)
ERRVALUE SetDatum (const DATUM &Datum)
ERRVALUE SetDatumTransOpList (const COORDOPDEFLIST &DatumTransOpList)
void SetId (const IDENTIFIER &Id)
void SetName (const MISTRING &name)
ERRVALUE Validate (bool FixIfPossible, bool CheckOpCreate)
 ~COORDREFSYS ()


Detailed Description

Coordinate Reference System (CRS).

A CRS consists of a Datum, a Coordinate System (CoordSys) and, if projected, a Coordinate Operation Definition (CoordOpDef).

To setup a CRS, either Assign() or Create() is typically used.

Typically either a Geographic (longitude/latitude) or a Projected (easting/northing) CRS is created as follows:

2D Geographic CRS with axes in degrees using the datum from an existing Projected CRS (ProjCRS):

   COORDREFSYS GeogCRS;
   GeogCRS.Create(COORDSYS::IDNUM_Ellipsoidal2D_Deg,ProjCRS.GetDatum());

2D Projected CRS, easting/northing axes in meters, WGS84 datum, existing projection operation definition (ProjOpDef): (for documentation on defining the projection operation, see COORDOPDEF)

   COORDREFSYS ProjCRS;
   ProjCRS.Create(COORDSYS::IDNUM_Projected2D_EN_m,DATUM::IDNUM_WGS_1984,ProjOpDef);

Definition at line 1949 of file spatref.h.


Member Enumeration Documentation

enum SPATREF::COORDREFSYS::DISTANCEMETHOD

Method for distance computation.

Enumerator:
DISTANCEMETHOD_Projected  Projected distance, requires projected CRS.
DISTANCEMETHOD_Geodesic  Geodesic distance, shortest path over ellipsoid.

Definition at line 1977 of file spatref.h.

enum SPATREF::COORDREFSYS::IDNUM

Coordinate reference system ID numbers.

Note, not all IDs in database are listed.

Enumerator:
IDNUM_Undefined 
IDNUM_None 
IDNUM_Geographic2D_WGS84_Deg  2D Ellipsoidal, WGS84 datum, (longitude, latitude) in degrees
IDNUM_Geographic2D_WGS72_Deg  2D Ellipsoidal, WGS72 datum, (longitude, latitude) in degrees
IDNUM_Geographic3D_WGS84_DegM  3D Ellipsoidal, WGS84 datum, (longitude, latitude, height) in degrees, meters
IDNUM_Geographic3D_WGS72_DegM  3D Ellipsoidal, WGS72 datum, (longitude, latitude, height) in degrees, meters
IDNUM_Geocentric_WGS84  3D Geocentric (earth-centered cartesian), WGS84 datum, (X, Y, Z) in meters
IDNUM_Geocentric_ITRF_1988  3D Geocentric (earth-centered cartesian), ITRF 1988 datum, (X, Y, Z) in meters
IDNUM_Geocentric_ITRF_1989  3D Geocentric (earth-centered cartesian), ITRF 1989 datum, (X, Y, Z) in meters
IDNUM_Geocentric_ITRF_1990  3D Geocentric (earth-centered cartesian), ITRF 1990 datum, (X, Y, Z) in meters
IDNUM_Geocentric_ITRF_1991  3D Geocentric (earth-centered cartesian), ITRF 1991 datum, (X, Y, Z) in meters
IDNUM_Geocentric_ITRF_1992  3D Geocentric (earth-centered cartesian), ITRF 1992 datum, (X, Y, Z) in meters
IDNUM_Geocentric_ITRF_1993  3D Geocentric (earth-centered cartesian), ITRF 1993 datum, (X, Y, Z) in meters
IDNUM_Geocentric_ITRF_1994  3D Geocentric (earth-centered cartesian), ITRF 1994 datum, (X, Y, Z) in meters
IDNUM_Geocentric_ITRF_1996  3D Geocentric (earth-centered cartesian), ITRF 1996 datum, (X, Y, Z) in meters
IDNUM_Geocentric_ITRF_1997  3D Geocentric (earth-centered cartesian), ITRF 1997 datum, (X, Y, Z) in meters
IDNUM_Geocentric_ITRF_2000  3D Geocentric (earth-centered cartesian), ITRF 2000 datum, (X, Y, Z) in meters
IDNUM_Local2D_XY_m  2D Local Cartesian, Engineering datum, (X, Y) in meters
IDNUM_Projected_US_NationalAtlas_EqualArea  US National Atlas Lambert Azimuthal Equal-Area Projection.

Definition at line 1954 of file spatref.h.


Constructor & Destructor Documentation

SPATREF::COORDREFSYS::COORDREFSYS (  ) 

Default constructor.

SPATREF::COORDREFSYS::COORDREFSYS ( const COORDREFSYS rhs  ) 

Copy constructor.

SPATREF::COORDREFSYS::~COORDREFSYS (  ) 

Destructor.


Member Function Documentation

ERRVALUE SPATREF::COORDREFSYS::Assign ( const OLDPROJPARM projparm  ) 

Assign from legacy projection parameter structure.

ERRVALUE SPATREF::COORDREFSYS::Assign ( const MISTRING string  ) 

Assign from MISTRING.

Parameters:
string  String representation previously generated by GetString().

ERRVALUE SPATREF::COORDREFSYS::Assign ( const XMLNODE xmlnode  ) 

Assign from XMLNODE.

Parameters:
xmlnode  XML node, originally obtained from GetXML()

ERRVALUE SPATREF::COORDREFSYS::Assign ( IDNUM  IdNum  ) 

Assign by MicroImages ID number.

ERRVALUE SPATREF::COORDREFSYS::Assign ( const IDENTIFIER Id  ) 

Assign by IDENTIFIER.

The specified id will be used to search the spatial reference database (spatref.xml).

Parameters:
Id  Identifier to lookup

void SPATREF::COORDREFSYS::Clear (  ) 

Clear coordinate reference system, resetting to undefined.

ERRVALUE SPATREF::COORDREFSYS::ComputeAngleToNorth ( const DPOINT2D point,
double &  angle,
int  angleunitid 
) const

Compute angle between projected CRS and true north at specified point.

Parameters:
point  Point to compute at
angle  Angle in specified unit returned
angleunitid  Unit to return angle in (UNIT_PlaneAngle_...)

ERRVALUE SPATREF::COORDREFSYS::ComputeDistance ( const DPOINT2D point1,
const DPOINT2D point2,
DISTANCEMETHOD  method,
double &  distance,
UOM::IDNUM  LengthUnitIdNum = UOM::IDNUM_Length_Meter 
) const

Compute distance between pair of points.

Parameters:
point1  First point
point2  Second point
method  Distance computation method
distance  Distance returned

int SPATREF::COORDREFSYS::COORDREFSYS::GetLegacyProjParm ( OLDPROJPARM projparm  )  const

Get legacy projection parameter structure for CRS.

Returns:
TRUE if successful, FALSE if not, < 0 if error
Parameters:
projparm  Legacy structure returned

ERRVALUE SPATREF::COORDREFSYS::Create ( const MILIST< COORDREFSYS > &  CoordRefSysList  ) 

Create compound coordinate reference system.

Parameters:
CoordRefSysList  List of coordinate reference systems

ERRVALUE SPATREF::COORDREFSYS::Create ( COORDSYS::IDNUM  CoordSysIdNum,
const DATUM Datum,
const COORDOPDEF::IDNUM  CoordOpDefId 
)

Create projected coordinate reference system.

Parameters:
CoordSysIdNum  Coordinate system IDNUM, must be for TYPE_Projected
Datum  Datum
CoordOpDefId  Coordinate operation definition IDNUM

ERRVALUE SPATREF::COORDREFSYS::Create ( COORDSYS::IDNUM  CoordSysIdNum,
const DATUM Datum,
const COORDOPDEF CoordOp 
)

Create projected coordinate reference system.

Parameters:
CoordSysIdNum  Coordinate system IDNUM, must be for TYPE_Projected
Datum  Datum
CoordOp  Coordinate operation definition for projection

ERRVALUE SPATREF::COORDREFSYS::Create ( const COORDSYS CoordSys,
const DATUM Datum,
const COORDOPDEF CoordOp 
)

Create projected coordinate reference system.

Parameters:
CoordSys  Coordinate system, must be TYPE_Projected
Datum  Datum
CoordOp  Coordinate operation definition for projection

ERRVALUE SPATREF::COORDREFSYS::Create ( COORDSYS::IDNUM  CoordSysIdNum,
const DATUM Datum 
)

Create non-projected coordinate reference system.

Parameters:
CoordSysIdNum  Coordinate system IDNUM, must not be for TYPE_Projected
Datum  Datum

ERRVALUE SPATREF::COORDREFSYS::Create ( const COORDSYS CoordSys,
const DATUM Datum 
)

Create non-projected coordinate reference system.

Parameters:
CoordSys  Coordinate system, must not be TYPE_Projected
Datum  Datum

bool SPATREF::COORDREFSYS::FindPredefined (  ) 

Find equivalent definition in predefined list and set this CRS to match if found.

Returns:
true if found (or already uses predefined ID), false if not.

const COORDAXIS& SPATREF::COORDREFSYS::GetAxis ( int  axisidx  )  const

Get coordinate axis using index.

Parameters:
axisidx  0-based position of axis

const MILIST<COORDREFSYS>& SPATREF::COORDREFSYS::GetComponentList (  )  const

Get list of component coordinate reference systems if compound.

Returns empty list if not compound.

const COORDOPDEF& SPATREF::COORDREFSYS::GetCoordOpDef (  )  const

Get coordinate operation definition for projected CRS.

const COORDSYS& SPATREF::COORDREFSYS::GetCoordSys (  )  const

Get coordinate system reference.

const DATUM& SPATREF::COORDREFSYS::GetDatum (  )  const

Get datum reference.

bool SPATREF::COORDREFSYS::GetDatumTransOp ( const DATUM datum,
COORDOPDEF CoordOpDef 
) const

Get COORDOPDEF for datum transformation.

Returns:
true if transformation available, false if not.
Parameters:
datum  Datum to transform to or from
CoordOpDef  Coordinate operation definition returned

const COORDOPDEFLIST& SPATREF::COORDREFSYS::GetDatumTransOpList (  )  const

Get COORDOPDEFLIST for datum transformations.

int SPATREF::COORDREFSYS::GetDimension (  )  const

Get total dimension of CRS.

Returns:
Dimension (usually 2 or 3).

void SPATREF::COORDREFSYS::GetDisplay ( MISTRING string,
int  indent = 0,
GETDISPLAY  flags = GETDISPLAY_None 
) const

Get multiline string suitable for display.

Parameters:
string  String returned, will be initially cleared if indent is 0
indent  Indent level
flags  Flags for extra items to display

const IDENTIFIERLIST& SPATREF::COORDREFSYS::GetIdList (  )  const

Get identifer list.

IDNUM SPATREF::COORDREFSYS::GetIdNum (  )  const

Get MicroImages identification number.

const MISTRING& SPATREF::COORDREFSYS::GetName (  )  const

Get name.

ERRVALUE SPATREF::COORDREFSYS::GetString ( MISTRING string  )  const

Get string representation suitable for serializing and INI file storage.

Parameters:
string  String returned

const TEXTRESITEMLIST& SPATREF::COORDREFSYS::GetValidAreaList (  )  const

Get list of valid area names.

XMLNODE* SPATREF::COORDREFSYS::GetXML ( XMLNODE parentnode,
const char *  nodename = "CoordRefSys" 
) const

Get XMLNODE representation.

Parameters:
nodename  Parent for contain node to be created

bool SPATREF::COORDREFSYS::HasCoordSysType ( COORDSYS::TYPE  CoordSysType  )  const

Determine if has coordinate system of specified type.

bool SPATREF::COORDREFSYS::HasDatumType ( DATUM::TYPE  DatumType  )  const

Determine if has datum of specified type.

bool SPATREF::COORDREFSYS::HasOwnDatumTransOpList (  )  const

Determine if operation has own datum transformation operation list.

Returns:
true if has own list, false if using general list for datum.

bool SPATREF::COORDREFSYS::IniRead ( INIHANDLE  hdl,
const char *  group,
const char *  field 
)

Read definition from INI file.

Returns:
true if valid definition read, false if not.

ERRVALUE SPATREF::COORDREFSYS::IniWrite ( INIHANDLE  hdl,
const char *  group,
const char *  field 
) const

Write definition to INI file.

bool SPATREF::COORDREFSYS::IsCompound (  )  const

Determine if this is a compound coordinate reference system.

bool SPATREF::COORDREFSYS::IsDefined (  )  const

Determine if coordinate reference system is defined.

bool SPATREF::COORDREFSYS::IsLocal (  )  const

Determine if is locally-defined coordinate reference system.

Local coordinate reference systems cannot automatically be converted to non-local.

bool SPATREF::COORDREFSYS::IsProjected (  )  const

Determine if coordinate reference system is 'projected'.

A projected CRS has a defined coordinate operation.

COORDREFSYS& SPATREF::COORDREFSYS::operator= ( const COORDREFSYS rhs  ) 

Assignment.

ERRVALUE SPATREF::COORDREFSYS::SetCoordOpDef ( const COORDOPDEF CoordOpDef  ) 

Set coordinate operation definition.

May only be used on non-compound CRS. If results in change, any CRS identifiers will be cleared.

ERRVALUE SPATREF::COORDREFSYS::SetCoordSys ( COORDSYS::IDNUM  CoordSysIdNum  ) 

Set coordinate system by IDNUM.

May only be used on non-compound CRS. If results in change, any CRS identifiers will be cleared.

ERRVALUE SPATREF::COORDREFSYS::SetCoordSys ( const COORDSYS CoordSys  ) 

Set coordinate system.

May only be used on non-compound CRS. If results in change, any CRS identifiers will be cleared.

ERRVALUE SPATREF::COORDREFSYS::SetDatum ( DATUM::IDNUM  DatumIdNum  ) 

Set datum by IDNUM.

May only be used on non-compound CRS. If results in change, any CRS identifiers will be cleared.

ERRVALUE SPATREF::COORDREFSYS::SetDatum ( const DATUM Datum  ) 

Set datum.

May only be used on non-compound CRS. If results in change, any CRS identifiers will be cleared.

ERRVALUE SPATREF::COORDREFSYS::SetDatumTransOpList ( const COORDOPDEFLIST DatumTransOpList  ) 

Set datum transformation operation definition list.

The datum used by this COORDREFSYS must match the datum used by the source COORDREFSYS for each specified operation or an error will be returned. The target datum is determined by the specified operation. More than one datum transformation operation may be registered with a COORDREFSYS, but only one per target datum.

void SPATREF::COORDREFSYS::SetId ( const IDENTIFIER Id  ) 

Set identifer.

Primarily intended for system use only.

void SPATREF::COORDREFSYS::SetName ( const MISTRING name  ) 

Set name of coordinate reference system.

May only be used on non-predefined CRS.

Parameters:
name  Name to set

ERRVALUE SPATREF::COORDREFSYS::Validate ( bool  FixIfPossible,
bool  CheckOpCreate 
)

Validate coordinate reference system definition.

Parameters:
FixIfPossible  Fix errors if possible
CheckOpCreate  Check coordinate operation creation


The documentation for this class was generated from the following file:
Generated on Thu Apr 26 04:49:26 2007 for TNTsdk by  doxygen 1.5.2