/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2025, Open Design Alliance (the "Alliance"). // All rights reserved. // // This software and its documentation and related materials are owned by // the Alliance. The software may only be incorporated into application // programs owned by members of the Alliance, subject to a signed // Membership Agreement and Supplemental Software License Agreement with the // Alliance. The structure and organization of this software are the valuable // trade secrets of the Alliance and its suppliers. The software is also // protected by copyright law and international treaty provisions. Application // programs incorporating this software must include the following statement // with their copyright notices: // // This application incorporates Open Design Alliance software pursuant to a license // agreement with Open Design Alliance. // Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance. // All rights reserved. // // By use of this software, its documentation or related materials, you // acknowledge and accept the above terms. /////////////////////////////////////////////////////////////////////////////// #ifndef _ODSPATIALREFERENCE_ODTAGSTRING_INCLUDED_ #define _ODSPATIALREFERENCE_ODTAGSTRING_INCLUDED_ #include "OdSpatialReference.h" namespace OdSpatialReference { /** \details This enumeration represents the projection parameter type. */ enum ParameterType { /** Not used. */ kPrmCodeNotUsed = 0, /** Longitude of natural origin. */ kPrmCodeCntMer = 1, /** Latitude of 1st standard parallel. */ kPrmCodeNStdPll = 2, /** Latitude of 2nd standard parallel. */ kPrmCodeSStdPll = 3, /** Standard Parallel. */ kPrmCodeStdPll = 4, /** First Point Longitude. */ kPrmCodeGCP1Lng = 5, /** First Point Latitude. */ kPrmCodeGCP1Lat = 6, /** Second Point Longitude. */ kPrmCodeGCP2Lng = 7, /** Second Point Latitude. */ kPrmCodeGCP2Lat = 8, /** Longitude of projection center. */ kPrmCodeGCPLng = 9, /** Latitude of projection center. */ kPrmCodeGCPLat = 10, /** Azimuth of initial line. */ kPrmCodeGcAzm = 11, /** Y Axis Azimuth. */ kPrmCodeYAxisAz = 12, /** Eastern Standard Meridian. */ kPrmCodeEStdMer = 13, /** Northern Parallel. */ kPrmCodeNParall = 14, /** Southern Parallel. */ kPrmCodeSParall = 15, /** First Pole Longitude. */ kPrmCodeP1Lng = 16, /** First Pole Latitude. */ kPrmCodeP1Lat = 17, /** Second Pole Longitude. */ kPrmCodeP2Lng = 18, /** Second Pole Latitude. */ kPrmCodeP2Lat = 19, /** Distance Between Poles. */ kPrmCodeAdP1P2 = 20, /** Distance to First Standard Parallel. */ kPrmCodeAdSp1 = 21, /** Distance to Second Standard Parallel. */ kPrmCodeAdSp2 = 22, /** Complex Series Coefficient AN. */ kPrmCodeCmplxAN = 23, /** Complex Series Coefficient BN. */ kPrmCodeCmplxBN = 24, /** Western End of Longitude Range. */ kPrmCodeWestLL = 25, /** Eastern End of Longitude Range. */ kPrmCodeEastLL = 26, /** UTM Zone Number. */ kPrmCodeUtmZN = 27, /** Hemisphere, North or South. */ kPrmCodeHsNS = 28, /** Average Geoid Height. */ kPrmCodeGHgt = 29, /** Average Elevation. */ kPrmCodeAElev = 30, /** Oblique Pole Longitude. */ kPrmCodePoleLng = 31, /** Oblique Pole Latitude. */ kPrmCodePoleLat = 32, /** Latitude of pseudo standard parallel. */ kPrmCodeOStdPll = 33, /** Latitude of standard parallel. */ kPrmCodeStdCir = 34, /** Affine Transformation A0 Coefficient. */ kPrmCodeAfA0 = 35, /** Affine Transformation B0 Coefficient. */ kPrmCodeAfB0 = 36, /** Affine Transformation A1 Coefficient. */ kPrmCodeAfA1 = 37, /** Affine Transformation A2 Coefficient. */ kPrmCodeAfA2 = 38, /** Affine Transformation B1 Coefficient. */ kPrmCodeAfB1 = 39, /** Affine Transformation B2 Coefficient. */ kPrmCodeAfB2 = 40, /** Normal Parallel. */ kPrmCodeNrmlPll = 41, /** Danish Region. */ kPrmCodeDenRgn = 42, /** Angle from Rectified to Skew Grid. */ kPrmCodeSkwAzm = 43, /** X Coordinate of Scale/Rotate Origin. */ kPrmCodeSclRotOrgX = 44, /** Y Coordinate of Scale/Rotate Origin. */ kPrmCodeSclRotOrgY = 45, /** Cartesian Scale Factor. */ kPrmCodeNrthScl = 46, /** Cartesian Rotation Angle. */ kPrmCodeNrthRot = 47, /** Ellipsoid scaling factor. */ kPrmCodeElpScl = 48, /** False easting. */ kWktCodeFEast = 101, /** False northing. */ kWktCodeFNorth = 102, /** Longitude of false origin. */ kWktCodeOrgLng = 103, /** Latitude of false origin. */ kWktCodeOrgLat = 104, /** Scaling factor for coord differences. */ kWktCodeSclRed = 105, /** X-axis translation. */ kWktCodeDeltaX = 151, /** Y-axis translation. */ kWktCodeDeltaY = 152, /** Z-axis translation. */ kWktCodeDeltaZ = 153, /** X-axis rotation. */ kWktCodeRotatX = 154, /** Y-axis rotation. */ kWktCodeRotatY = 155, /** Z-axis rotation. */ kWktCodeRotatZ = 156, /** Scale difference. */ kWktCodeBwScal = 157 }; namespace Helper { /** \details Converts the unit code enum value to unit code name. \param eUnitCode [in] UnitCode enum value. \param sName [out] Unit code name. \returns Returns eOK if successful, or an appropriate error code if not. */ TD_SPATIALREFERENCE_API OdResult getUnitCodeName(UnitCode eUnitCode, OdString& sName); /** \details Converts the unit code name to unit code enum value. \param sName [in] Unit code name. \param eUnitCode [out] UnitCode enum value. \returns Returns eOK if successful, or an appropriate error code if not. */ TD_SPATIALREFERENCE_API OdResult getUnitCode(const OdString& sName, UnitCode& eUnitCode); /** \details Gets the unit code information: unit type and scale. \param eUnitCode [in] UnitCode enum value. \param eUnitType [out] UnitType enum value. \param dScale [out] Scale. \returns Returns eOK if successful, or an appropriate error code if not. */ TD_SPATIALREFERENCE_API OdResult getUnitCodeInformation(UnitCode eUnitCode, UnitType& eUnitType, double& dScale); /** \details Converts the projection code enum value to projection code name. \param eUnitCode [in] ProjectionCode enum value. \param sName [out] Projection code name. \returns Returns eOK if successful, or an appropriate error code if not. */ TD_SPATIALREFERENCE_API OdResult getProjectionCodeName(ProjectionCode eProjectionCode, OdString& sName); /** \details Converts the projection code name to projection code enum value. \param sName [in] Projection code name. \param eProjectionCode [out] ProjectionCode enum value. \returns Returns eOK if successful, or an appropriate error code if not. */ TD_SPATIALREFERENCE_API OdResult getProjectionCode(const OdString& sName, ProjectionCode& eProjectionCode); /** \details Returns the projection flag for input projection. \param eProjectionCode [in] ProjectionCode enum value. \param uFlags [out] projection flags. \returns Returns eOK if successful, or an appropriate error code if not. */ TD_SPATIALREFERENCE_API OdResult getProjectionFlags(ProjectionCode eProjectionCode, OdUInt32& uFlags); /** \details Determines the coordinate reference system type by input projection code. \param eProjectionCode [in] ProjectionCode enum value. \returns Returns Enum value CoordinateReferenceSystemType. */ TD_SPATIALREFERENCE_API CoordinateReferenceSystemType getCoordinateSystemType(ProjectionCode eProjectionCode); /** \details Gets parameter code of input projection at specified index. \param eProjectionCode [in] ProjectionCode enum value. \param uIndex [in] Index of requested parameter (max projection parameters count is 24). \returns Returns Enum value ParameterType. */ TD_SPATIALREFERENCE_API ParameterType getParameterCode(ProjectionCode eProjectionCode, OdUInt32 uIndex); /** \details Gets description of parameter. \param ePrmCode [in] ParameterType enum value expected. \param uIndex [in] Index of requested parameter (needed for Complex Series Coefficient's). \returns Returns Enum value ParameterType. */ TD_SPATIALREFERENCE_API OdString getParameterDescription(OdUInt32 ePrmCode, OdUInt32 uIndex = 0); } } #endif //_ODSPATIALREFERENCE_ODTAGSTRING_INCLUDED_