SPATREF::COORDREFSYS Class Reference

Coordinate Reference System (CRS). More...

#include <mi32/spatref.h>

List of all members.

Public Types

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, IDNUM_SphericalWebMercator = 12685
}
enum  MEASUREMETHOD { MEASUREMETHOD_Projected, MEASUREMETHOD_Geodesic, MEASUREMETHOD_Automatic }

Public Member Functions

 COORDREFSYS (const COORDREFSYS &rhs)
 COORDREFSYS ()
 ~COORDREFSYS ()
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, double &distance, MEASUREMETHOD method=MEASUREMETHOD_Automatic, UOM::IDNUM LengthUnitIdNum=UOM::IDNUM_Length_Meter) const
ERRVALUE ComputeLength (const POLYLINE &polyline, double &length, MEASUREMETHOD method=MEASUREMETHOD_Automatic, UOM::IDNUM LengthUnitIdNum=UOM::IDNUM_Length_Meter) 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
int GetLegacyProjParm (OLDPROJPARM &projparm) 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)

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);

Member Enumeration Documentation

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.

IDNUM_SphericalWebMercator 

2D Projected Mercator using Spherical datum for web

Method for measurement computation.

Enumerator:
MEASUREMETHOD_Projected 

Projected distance, requires projected CRS.

MEASUREMETHOD_Geodesic 

Geodesic distance, shortest path over ellipsoid.

MEASUREMETHOD_Automatic 

Automatically choose Projected or Geodesic based on CRS type.


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,
double &  distance,
MEASUREMETHOD  method = MEASUREMETHOD_Automatic,
UOM::IDNUM  LengthUnitIdNum = UOM::IDNUM_Length_Meter 
) const

Compute distance between pair of points.

Parameters:
point1 First point
point2 Second point
distance Distance returned
method Measurement method
ERRVALUE SPATREF::COORDREFSYS::ComputeLength ( const POLYLINE polyline,
double &  length,
MEASUREMETHOD  method = MEASUREMETHOD_Automatic,
UOM::IDNUM  LengthUnitIdNum = UOM::IDNUM_Length_Meter 
) const

Compute length of polyline.

Parameters:
polyline Polyline
length Length returned
method Measurement method
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.

int SPATREF::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
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 Sun Oct 7 21:40:28 2012 for TNTsdk 2012 by  doxygen 1.6.1