GDAL
Public Member Functions | Static Public Member Functions | List of all members
OGRSpatialReference Class Reference

This class represents an OpenGIS Spatial Reference System, and contains methods for converting between this object organization and well known text (WKT) format. More...

#include <ogr_spatialref.h>

Public Member Functions

 OGRSpatialReference (const OGRSpatialReference &)
 Simple copy constructor. More...
 
 OGRSpatialReference (const char *=nullptr)
 Constructor. More...
 
virtual ~OGRSpatialReference ()
 OGRSpatialReference destructor. More...
 
OGRSpatialReferenceoperator= (const OGRSpatialReference &)
 Assignment operator. More...
 
int Reference ()
 Increments the reference count by one. More...
 
int Dereference ()
 Decrements the reference count by one. More...
 
int GetReferenceCount () const
 Fetch current reference count. More...
 
void Release ()
 Decrements the reference count by one, and destroy if zero. More...
 
OGRSpatialReferenceClone () const
 Make a duplicate of this OGRSpatialReference. More...
 
OGRSpatialReferenceCloneGeogCS () const
 Make a duplicate of the GEOGCS node of this OGRSpatialReference object. More...
 
void dumpReadable ()
 Dump pretty wkt to stdout, mostly for debugging.
 
OGRErr exportToWkt (char **) const
 Convert this SRS into WKT format. More...
 
OGRErr exportToPrettyWkt (char **, int=FALSE) const
 Convert this SRS into a nicely formatted WKT string for display to a person. More...
 
OGRErr exportToProj4 (char **) const
 Export coordinate system in PROJ.4 format. More...
 
OGRErr exportToPCI (char **, char **, double **) const
 Export coordinate system in PCI projection definition. More...
 
OGRErr exportToUSGS (long *, long *, double **, long *) const
 Export coordinate system in USGS GCTP projection definition. More...
 
OGRErr exportToXML (char **, const char *=nullptr) const
 Export coordinate system in XML format. More...
 
OGRErr exportToPanorama (long *, long *, long *, long *, double *) const
 Export coordinate system in "Panorama" GIS projection definition. More...
 
OGRErr exportToERM (char *pszProj, char *pszDatum, char *pszUnits)
 Convert coordinate system to ERMapper format. More...
 
OGRErr exportToMICoordSys (char **) const
 Export coordinate system in Mapinfo style CoordSys format. More...
 
OGRErr importFromWkt (char **)
 Import from WKT string. More...
 
OGRErr importFromWkt (const char **)
 Import from WKT string. More...
 
OGRErr importFromWkt (const char *)
 Import from WKT string. More...
 
OGRErr importFromProj4 (const char *)
 Import PROJ.4 coordinate string. More...
 
OGRErr importFromEPSG (int)
 Initialize SRS based on EPSG GCS or PCS code. More...
 
OGRErr importFromEPSGA (int)
 Initialize SRS based on EPSG GCS or PCS code. More...
 
OGRErr importFromESRI (char **)
 Import coordinate system from ESRI .prj format(s). More...
 
OGRErr importFromPCI (const char *, const char *=nullptr, double *=nullptr)
 Import coordinate system from PCI projection definition. More...
 
OGRErr importFromUSGS (long iProjSys, long iZone, double *padfPrjParams, long iDatum, int nUSGSAngleFormat=USGS_ANGLE_PACKEDDMS)
 Import coordinate system from USGS projection definition. More...
 
OGRErr importFromPanorama (long, long, long, double *)
 Import coordinate system from "Panorama" GIS projection definition. More...
 
OGRErr importFromOzi (const char *const *papszLines)
 Import coordinate system from OziExplorer projection definition. More...
 
OGRErr importFromWMSAUTO (const char *pszAutoDef)
 Initialize from WMSAUTO string. More...
 
OGRErr importFromXML (const char *)
 Import coordinate system from XML format (GML only currently). More...
 
OGRErr importFromDict (const char *pszDict, const char *pszCode)
 Read SRS from WKT dictionary. More...
 
OGRErr importFromURN (const char *)
 Initialize from OGC URN. More...
 
OGRErr importFromCRSURL (const char *)
 Initialize from OGC URL. More...
 
OGRErr importFromERM (const char *pszProj, const char *pszDatum, const char *pszUnits)
 Create OGR WKT from ERMapper projection definitions. More...
 
OGRErr importFromUrl (const char *)
 Set spatial reference from a URL. More...
 
OGRErr importFromMICoordSys (const char *)
 Import Mapinfo style CoordSys definition. More...
 
OGRErr morphToESRI ()
 Convert in place to ESRI WKT format. More...
 
OGRErr morphFromESRI ()
 Convert in place from ESRI WKT format. More...
 
OGRSpatialReferenceconvertToOtherProjection (const char *pszTargetProjection, const char *const *papszOptions=nullptr) const
 Convert to another equivalent projection. More...
 
OGRErr Validate () const
 Validate SRS tokens. More...
 
OGRErr StripCTParms (OGR_SRSNode *=nullptr)
 Strip OGC CT Parameters. More...
 
OGRErr StripVertical ()
 Convert a compound cs into a horizontal CS. More...
 
OGRErr FixupOrdering ()
 Correct parameter ordering to match CT Specification. More...
 
OGRErr Fixup ()
 Fixup as needed. More...
 
int EPSGTreatsAsLatLong () const
 This method returns TRUE if EPSG feels this geographic coordinate system should be treated as having lat/long coordinate ordering. More...
 
int EPSGTreatsAsNorthingEasting () const
 This method returns TRUE if EPSG feels this projected coordinate system should be treated as having northing/easting coordinate ordering. More...
 
const char * GetAxis (const char *pszTargetKey, int iAxis, OGRAxisOrientation *peOrientation) const
 Fetch the orientation of one axis. More...
 
OGRErr SetAxes (const char *pszTargetKey, const char *pszXAxisName, OGRAxisOrientation eXAxisOrientation, const char *pszYAxisName, OGRAxisOrientation eYAxisOrientation)
 Set the axes for a coordinate system. More...
 
OGR_SRSNodeGetRoot ()
 Return root node.
 
const OGR_SRSNodeGetRoot () const
 Return root node.
 
void SetRoot (OGR_SRSNode *)
 Set the root SRS node. More...
 
OGR_SRSNodeGetAttrNode (const char *)
 Find named node in tree. More...
 
const OGR_SRSNodeGetAttrNode (const char *) const
 Find named node in tree. More...
 
const char * GetAttrValue (const char *, int=0) const
 Fetch indicated attribute of named node. More...
 
OGRErr SetNode (const char *, const char *)
 Set attribute value in spatial reference. More...
 
OGRErr SetNode (const char *, double)
 Set attribute value in spatial reference. More...
 
OGRErr SetLinearUnitsAndUpdateParameters (const char *pszName, double dfInMeters)
 Set the linear units for the projection. More...
 
OGRErr SetLinearUnits (const char *pszName, double dfInMeters)
 Set the linear units for the projection. More...
 
OGRErr SetTargetLinearUnits (const char *pszTargetKey, const char *pszName, double dfInMeters)
 Set the linear units for the projection. More...
 
double GetLinearUnits (char **) const CPL_WARN_DEPRECATED("Use GetLinearUnits( const char**) instead")
 Fetch linear projection units. More...
 
double GetLinearUnits (const char **=nullptr) const
 Fetch linear projection units. More...
 
double GetTargetLinearUnits (const char *pszTargetKey, char **ppszRetName) const CPL_WARN_DEPRECATED("Use GetTargetLinearUnits( const char*
 Fetch linear units for target. More...
 
double const char **double GetTargetLinearUnits (const char *pszTargetKey, const char **ppszRetName=nullptr) const
 Fetch linear units for target. More...
 
OGRErr SetAngularUnits (const char *pszName, double dfInRadians)
 Set the angular units for the geographic coordinate system. More...
 
double GetAngularUnits (char **) const CPL_WARN_DEPRECATED("Use GetAngularUnits( const char**) instead")
 Fetch angular geographic coordinate system units. More...
 
double GetAngularUnits (const char **=nullptr) const
 Fetch angular geographic coordinate system units. More...
 
double GetPrimeMeridian (char **) const CPL_WARN_DEPRECATED("Use GetPrimeMeridian( const char**) instead")
 Fetch prime meridian info. More...
 
double GetPrimeMeridian (const char **=nullptr) const
 Fetch prime meridian info. More...
 
int IsGeographic () const
 Check if geographic coordinate system. More...
 
int IsProjected () const
 Check if projected coordinate system. More...
 
int IsGeocentric () const
 Check if geocentric coordinate system. More...
 
int IsLocal () const
 Check if local coordinate system. More...
 
int IsVertical () const
 Check if vertical coordinate system. More...
 
int IsCompound () const
 Check if coordinate system is compound. More...
 
int IsSameGeogCS (const OGRSpatialReference *) const
 Do the GeogCS'es match? More...
 
int IsSameGeogCS (const OGRSpatialReference *, const char *const *papszOptions) const
 Do the GeogCS'es match? More...
 
int IsSameVertCS (const OGRSpatialReference *) const
 Do the VertCS'es match? More...
 
int IsSame (const OGRSpatialReference *) const
 Do these two spatial references describe the same system ? More...
 
int IsSame (const OGRSpatialReference *, const char *const *papszOptions) const
 Do these two spatial references describe the same system ? More...
 
void Clear ()
 Wipe current definition. More...
 
OGRErr SetLocalCS (const char *)
 Set the user visible LOCAL_CS name. More...
 
OGRErr SetProjCS (const char *)
 Set the user visible PROJCS name. More...
 
OGRErr SetProjection (const char *)
 Set a projection name. More...
 
OGRErr SetGeocCS (const char *pszGeocName)
 Set the user visible GEOCCS name. More...
 
OGRErr SetGeogCS (const char *pszGeogName, const char *pszDatumName, const char *pszEllipsoidName, double dfSemiMajor, double dfInvFlattening, const char *pszPMName=nullptr, double dfPMOffset=0.0, const char *pszUnits=nullptr, double dfConvertToRadians=0.0)
 Set geographic coordinate system. More...
 
OGRErr SetWellKnownGeogCS (const char *)
 Set a GeogCS based on well known name. More...
 
OGRErr CopyGeogCSFrom (const OGRSpatialReference *poSrcSRS)
 Copy GEOGCS from another OGRSpatialReference. More...
 
OGRErr SetVertCS (const char *pszVertCSName, const char *pszVertDatumName, int nVertDatumClass=2005)
 Set the user visible VERT_CS name. More...
 
OGRErr SetCompoundCS (const char *pszName, const OGRSpatialReference *poHorizSRS, const OGRSpatialReference *poVertSRS)
 Setup a compound coordinate system. More...
 
OGRErr SetFromUserInput (const char *)
 Set spatial reference from various text formats. More...
 
OGRErr SetTOWGS84 (double, double, double, double=0.0, double=0.0, double=0.0, double=0.0)
 Set the Bursa-Wolf conversion to WGS84. More...
 
OGRErr GetTOWGS84 (double *padfCoef, int nCoeff=7) const
 Fetch TOWGS84 parameters, if available. More...
 
double GetSemiMajor (OGRErr *=nullptr) const
 Get spheroid semi major axis. More...
 
double GetSemiMinor (OGRErr *=nullptr) const
 Get spheroid semi minor axis. More...
 
double GetInvFlattening (OGRErr *=nullptr) const
 Get spheroid inverse flattening. More...
 
double GetEccentricity () const
 Get spheroid eccentricity. More...
 
double GetSquaredEccentricity () const
 Get spheroid squared eccentricity. More...
 
OGRErr SetAuthority (const char *pszTargetKey, const char *pszAuthority, int nCode)
 Set the authority for a node. More...
 
OGRErr AutoIdentifyEPSG ()
 Set EPSG authority info if possible. More...
 
OGRSpatialReferenceHFindMatches (char **papszOptions, int *pnEntries, int **ppanMatchConfidence) const
 Try to identify a match between the passed SRS and a related SRS in a catalog (currently EPSG only) More...
 
int GetEPSGGeogCS () const
 Try to establish what the EPSG code for this coordinate systems GEOGCS might be. More...
 
const char * GetAuthorityCode (const char *pszTargetKey) const
 Get the authority code for a node. More...
 
const char * GetAuthorityName (const char *pszTargetKey) const
 Get the authority name for a node. More...
 
const char * GetExtension (const char *pszTargetKey, const char *pszName, const char *pszDefault=nullptr) const
 Fetch extension value. More...
 
OGRErr SetExtension (const char *pszTargetKey, const char *pszName, const char *pszValue)
 Set extension value. More...
 
int FindProjParm (const char *pszParameter, const OGR_SRSNode *poPROJCS=nullptr) const
 Return the child index of the named projection parameter on its parent PROJCS node. More...
 
OGRErr SetProjParm (const char *, double)
 Set a projection parameter value. More...
 
double GetProjParm (const char *, double=0.0, OGRErr *=nullptr) const
 Fetch a projection parameter value. More...
 
OGRErr SetNormProjParm (const char *, double)
 Set a projection parameter with a normalized value. More...
 
double GetNormProjParm (const char *, double=0.0, OGRErr *=nullptr) const
 Fetch a normalized projection parameter value. More...
 
OGRErr SetACEA (double dfStdP1, double dfStdP2, double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)
 Albers Conic Equal Area.
 
OGRErr SetAE (double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)
 Azimuthal Equidistant.
 
OGRErr SetBonne (double dfStdP1, double dfCentralMeridian, double dfFalseEasting, double dfFalseNorthing)
 Bonne.
 
OGRErr SetCEA (double dfStdP1, double dfCentralMeridian, double dfFalseEasting, double dfFalseNorthing)
 Cylindrical Equal Area.
 
OGRErr SetCS (double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)
 Cassini-Soldner.
 
OGRErr SetEC (double dfStdP1, double dfStdP2, double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)
 Equidistant Conic.
 
OGRErr SetEckert (int nVariation, double dfCentralMeridian, double dfFalseEasting, double dfFalseNorthing)
 Eckert I.
 
OGRErr SetEckertIV (double dfCentralMeridian, double dfFalseEasting, double dfFalseNorthing)
 Eckert IV.
 
OGRErr SetEckertVI (double dfCentralMeridian, double dfFalseEasting, double dfFalseNorthing)
 Eckert VI.
 
OGRErr SetEquirectangular (double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)
 Equirectangular.
 
OGRErr SetEquirectangular2 (double dfCenterLat, double dfCenterLong, double dfPseudoStdParallel1, double dfFalseEasting, double dfFalseNorthing)
 Equirectangular generalized form :
 
OGRErr SetGEOS (double dfCentralMeridian, double dfSatelliteHeight, double dfFalseEasting, double dfFalseNorthing)
 Geostationary Satellite.
 
OGRErr SetGH (double dfCentralMeridian, double dfFalseEasting, double dfFalseNorthing)
 Goode Homolosine.
 
OGRErr SetIGH ()
 Interrupted Goode Homolosine.
 
OGRErr SetGS (double dfCentralMeridian, double dfFalseEasting, double dfFalseNorthing)
 Gall Stereograpic.
 
OGRErr SetGaussSchreiberTMercator (double dfCenterLat, double dfCenterLong, double dfScale, double dfFalseEasting, double dfFalseNorthing)
 Gauss Schreiber Transverse Mercator.
 
OGRErr SetGnomonic (double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)
 Gnomonic.
 
OGRErr SetHOM (double dfCenterLat, double dfCenterLong, double dfAzimuth, double dfRectToSkew, double dfScale, double dfFalseEasting, double dfFalseNorthing)
 Hotine Oblique Mercator. More...
 
OGRErr SetHOM2PNO (double dfCenterLat, double dfLat1, double dfLong1, double dfLat2, double dfLong2, double dfScale, double dfFalseEasting, double dfFalseNorthing)
 Hotine Oblique Mercator 2 points. More...
 
OGRErr SetHOMAC (double dfCenterLat, double dfCenterLong, double dfAzimuth, double dfRectToSkew, double dfScale, double dfFalseEasting, double dfFalseNorthing)
 Hotine Oblique Mercator Azimuth Center / Variant B. More...
 
OGRErr SetIWMPolyconic (double dfLat1, double dfLat2, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)
 International Map of the World Polyconic.
 
OGRErr SetKrovak (double dfCenterLat, double dfCenterLong, double dfAzimuth, double dfPseudoStdParallelLat, double dfScale, double dfFalseEasting, double dfFalseNorthing)
 Krovak Oblique Conic Conformal. More...
 
OGRErr SetLAEA (double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)
 Lambert Azimuthal Equal-Area.
 
OGRErr SetLCC (double dfStdP1, double dfStdP2, double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)
 Lambert Conformal Conic.
 
OGRErr SetLCC1SP (double dfCenterLat, double dfCenterLong, double dfScale, double dfFalseEasting, double dfFalseNorthing)
 Lambert Conformal Conic 1SP.
 
OGRErr SetLCCB (double dfStdP1, double dfStdP2, double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)
 Lambert Conformal Conic (Belgium)
 
OGRErr SetMC (double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)
 Miller Cylindrical.
 
OGRErr SetMercator (double dfCenterLat, double dfCenterLong, double dfScale, double dfFalseEasting, double dfFalseNorthing)
 Mercator 1SP.
 
OGRErr SetMercator2SP (double dfStdP1, double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)
 Mercator 2SP.
 
OGRErr SetMollweide (double dfCentralMeridian, double dfFalseEasting, double dfFalseNorthing)
 Mollweide.
 
OGRErr SetNZMG (double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)
 New Zealand Map Grid.
 
OGRErr SetOS (double dfOriginLat, double dfCMeridian, double dfScale, double dfFalseEasting, double dfFalseNorthing)
 Oblique Stereographic.
 
OGRErr SetOrthographic (double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)
 Orthographic.
 
OGRErr SetPolyconic (double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)
 Polyconic.
 
OGRErr SetPS (double dfCenterLat, double dfCenterLong, double dfScale, double dfFalseEasting, double dfFalseNorthing)
 Polar Stereographic.
 
OGRErr SetRobinson (double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)
 Robinson.
 
OGRErr SetSinusoidal (double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)
 Sinusoidal.
 
OGRErr SetStereographic (double dfCenterLat, double dfCenterLong, double dfScale, double dfFalseEasting, double dfFalseNorthing)
 Stereographic.
 
OGRErr SetSOC (double dfLatitudeOfOrigin, double dfCentralMeridian, double dfFalseEasting, double dfFalseNorthing)
 Swiss Oblique Cylindrical.
 
OGRErr SetTM (double dfCenterLat, double dfCenterLong, double dfScale, double dfFalseEasting, double dfFalseNorthing)
 Transverse Mercator.
 
OGRErr SetTMVariant (const char *pszVariantName, double dfCenterLat, double dfCenterLong, double dfScale, double dfFalseEasting, double dfFalseNorthing)
 Transverse Mercator variants. More...
 
OGRErr SetTMG (double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)
 Tunesia Mining Grid.
 
OGRErr SetTMSO (double dfCenterLat, double dfCenterLong, double dfScale, double dfFalseEasting, double dfFalseNorthing)
 Transverse Mercator (South Oriented)
 
OGRErr SetTPED (double dfLat1, double dfLong1, double dfLat2, double dfLong2, double dfFalseEasting, double dfFalseNorthing)
 Two Point Equidistant.
 
OGRErr SetVDG (double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)
 VanDerGrinten.
 
OGRErr SetUTM (int nZone, int bNorth=TRUE)
 Universal Transverse Mercator. More...
 
int GetUTMZone (int *pbNorth=nullptr) const
 Get utm zone information. More...
 
OGRErr SetWagner (int nVariation, double dfCenterLat, double dfFalseEasting, double dfFalseNorthing)
 Wagner I – VII.
 
OGRErr SetQSC (double dfCenterLat, double dfCenterLong)
 Quadrilateralized Spherical Cube.
 
OGRErr SetSCH (double dfPegLat, double dfPegLong, double dfPegHeading, double dfPegHgt)
 Spherical, Cross-track, Height.
 
OGRErr SetStatePlane (int nZone, int bNAD83=TRUE, const char *pszOverrideUnitName=nullptr, double dfOverrideUnit=0.0)
 State Plane. More...
 
OGRErr ImportFromESRIStatePlaneWKT (int nCode, const char *pszDatumName, const char *pszUnitsName, int nPCSCode, const char *pszCSName=nullptr)
 ImportFromESRIStatePlaneWKT.
 
OGRErr ImportFromESRIWisconsinWKT (const char *pszPrjName, double dfCentralMeridian, double dfLatOfOrigin, const char *pszUnitsName, const char *pszCSName=nullptr)
 ImportFromESRIWisconsinWKT.
 

Static Public Member Functions

static void DestroySpatialReference (OGRSpatialReference *poSRS)
 OGRSpatialReference destructor. More...
 
static int IsAngularParameter (const char *)
 Is the passed projection parameter an angular one? More...
 
static int IsLongitudeParameter (const char *)
 Is the passed projection parameter an angular longitude (relative to a prime meridian)? More...
 
static int IsLinearParameter (const char *)
 Is the passed projection parameter an linear one measured in meters or some similar linear measure. More...
 
static OGRSpatialReferenceGetWGS84SRS ()
 Returns an instance of a SRS object with WGS84 WKT. More...
 
static OGRSpatialReferenceH ToHandle (OGRSpatialReference *poSRS)
 Convert a OGRSpatialReference* to a OGRSpatialReferenceH. More...
 
static OGRSpatialReferenceFromHandle (OGRSpatialReferenceH hSRS)
 Convert a OGRSpatialReferenceH to a OGRSpatialReference*. More...
 

Detailed Description

This class represents an OpenGIS Spatial Reference System, and contains methods for converting between this object organization and well known text (WKT) format.

This object is reference counted as one instance of the object is normally shared between many OGRGeometry objects.

Normally application code can fetch needed parameter values for this SRS using GetAttrValue(), but in special cases the underlying parse tree (or OGR_SRSNode objects) can be accessed more directly.

See the tutorial for more information on how to use this class.

Consult also the OGC WKT Coordinate System Issues page for implementation details of WKT in OGR.

Constructor & Destructor Documentation

◆ OGRSpatialReference() [1/2]

OGRSpatialReference::OGRSpatialReference ( const OGRSpatialReference oOther)

Simple copy constructor.

See also Clone().

Parameters
oOtherother spatial reference

◆ OGRSpatialReference() [2/2]

OGRSpatialReference::OGRSpatialReference ( const char *  pszWKT = nullptr)
explicit

Constructor.

This constructor takes an optional string argument which if passed should be a WKT representation of an SRS. Passing this is equivalent to not passing it, and then calling importFromWkt() with the WKT string.

Note that newly created objects are given a reference count of one.

The C function OSRNewSpatialReference() does the same thing as this constructor.

Parameters
pszWKTwell known text definition to which the object should be initialized, or NULL (the default).

◆ ~OGRSpatialReference()

OGRSpatialReference::~OGRSpatialReference ( )
virtual

OGRSpatialReference destructor.

The C function OSRDestroySpatialReference() does the same thing as this method. Preferred C++ method : OGRSpatialReference::DestroySpatialReference()

Deprecated:

Member Function Documentation

◆ AutoIdentifyEPSG()

OGRErr OGRSpatialReference::AutoIdentifyEPSG ( )

Set EPSG authority info if possible.

This method inspects a WKT definition, and adds EPSG authority nodes where an aspect of the coordinate system can be easily and safely corresponded with an EPSG identifier. In practice, this method will evolve over time. In theory it can add authority nodes for any object (i.e. spheroid, datum, GEOGCS, units, and PROJCS) that could have an authority node. Mostly this is useful to inserting appropriate PROJCS codes for common formulations (like UTM n WGS84).

If it success the OGRSpatialReference is updated in place, and the method return OGRERR_NONE. If the method fails to identify the general coordinate system OGRERR_UNSUPPORTED_SRS is returned but no error message is posted via CPLError().

This method is the same as the C function OSRAutoIdentifyEPSG().

Since GDAL 2.3, the FindMatches() method can also be used for improved matching by researching the EPSG catalog.

Returns
OGRERR_NONE or OGRERR_UNSUPPORTED_SRS.

◆ Clear()

void OGRSpatialReference::Clear ( )

Wipe current definition.

Returns OGRSpatialReference to a state with no definition, as it exists when first created. It does not affect reference counts.

◆ Clone()

OGRSpatialReference * OGRSpatialReference::Clone ( ) const

Make a duplicate of this OGRSpatialReference.

This method is the same as the C function OSRClone().

Returns
a new SRS, which becomes the responsibility of the caller.

◆ CloneGeogCS()

OGRSpatialReference * OGRSpatialReference::CloneGeogCS ( ) const

Make a duplicate of the GEOGCS node of this OGRSpatialReference object.

Returns
a new SRS, which becomes the responsibility of the caller.

◆ convertToOtherProjection()

OGRSpatialReference * OGRSpatialReference::convertToOtherProjection ( const char *  pszTargetProjection,
const char *const *  papszOptions = nullptr 
) const

Convert to another equivalent projection.

Currently implemented:

  • SRS_PT_MERCATOR_1SP to SRS_PT_MERCATOR_2SP
  • SRS_PT_MERCATOR_2SP to SRS_PT_MERCATOR_1SP
  • SRS_PT_LAMBERT_CONFORMAL_CONIC_1SP to SRS_PT_LAMBERT_CONFORMAL_CONIC_2SP
  • SRS_PT_LAMBERT_CONFORMAL_CONIC_2SP to SRS_PT_LAMBERT_CONFORMAL_CONIC_1SP
Parameters
pszTargetProjectiontarget projection.
papszOptionslists of options. None supported currently.
Returns
a new SRS, or NULL in case of error.
Since
GDAL 2.3

◆ CopyGeogCSFrom()

OGRErr OGRSpatialReference::CopyGeogCSFrom ( const OGRSpatialReference poSrcSRS)

Copy GEOGCS from another OGRSpatialReference.

The GEOGCS information is copied into this OGRSpatialReference from another. If this object has a PROJCS root already, the GEOGCS is installed within it, otherwise it is installed as the root.

Parameters
poSrcSRSthe spatial reference to copy the GEOGCS information from.
Returns
OGRERR_NONE on success or an error code.

◆ Dereference()

int OGRSpatialReference::Dereference ( )

Decrements the reference count by one.

The method does the same thing as the C function OSRDereference().

Returns
the updated reference count.

◆ DestroySpatialReference()

void OGRSpatialReference::DestroySpatialReference ( OGRSpatialReference poSRS)
static

OGRSpatialReference destructor.

This static method will destroy a OGRSpatialReference. It is equivalent to calling delete on the object, but it ensures that the deallocation is properly executed within the OGR libraries heap on platforms where this can matter (win32).

This function is the same as OSRDestroySpatialReference()

Parameters
poSRSthe object to delete
Since
GDAL 1.7.0

◆ EPSGTreatsAsLatLong()

int OGRSpatialReference::EPSGTreatsAsLatLong ( ) const

This method returns TRUE if EPSG feels this geographic coordinate system should be treated as having lat/long coordinate ordering.

Currently this returns TRUE for all geographic coordinate systems with an EPSG code set, and AXIS values set defining it as lat, long. Note that coordinate systems with an EPSG code and no axis settings will be assumed to not be lat/long.

FALSE will be returned for all coordinate systems that are not geographic, or that do not have an EPSG code set.

This method is the same as the C function OSREPSGTreatsAsLatLong().

Returns
TRUE or FALSE.

◆ EPSGTreatsAsNorthingEasting()

int OGRSpatialReference::EPSGTreatsAsNorthingEasting ( ) const

This method returns TRUE if EPSG feels this projected coordinate system should be treated as having northing/easting coordinate ordering.

Currently this returns TRUE for all projected coordinate systems with an EPSG code set, and AXIS values set defining it as northing, easting.

FALSE will be returned for all coordinate systems that are not projected, or that do not have an EPSG code set.

This method is the same as the C function EPSGTreatsAsNorthingEasting().

Returns
TRUE or FALSE.
Since
OGR 1.10.0

◆ exportToERM()

OGRErr OGRSpatialReference::exportToERM ( char *  pszProj,
char *  pszDatum,
char *  pszUnits 
)

Convert coordinate system to ERMapper format.

Parameters
pszProj32 character buffer to receive projection name.
pszDatum32 character buffer to receive datum name.
pszUnits32 character buffer to receive units name.
Returns
OGRERR_NONE on success, OGRERR_SRS_UNSUPPORTED if not translation is found, or OGRERR_FAILURE on other failures.

◆ exportToMICoordSys()

OGRErr OGRSpatialReference::exportToMICoordSys ( char **  ppszResult) const

Export coordinate system in Mapinfo style CoordSys format.

Note that the returned WKT string should be freed with CPLFree() when no longer needed. It is the responsibility of the caller.

This method is the same as the C function OSRExportToMICoordSys().

Parameters
ppszResultpointer to which dynamically allocated Mapinfo CoordSys definition will be assigned.
Returns
OGRERR_NONE on success, OGRERR_FAILURE on failure, OGRERR_UNSUPPORTED_OPERATION if MITAB library was not linked in.

◆ exportToPanorama()

OGRErr OGRSpatialReference::exportToPanorama ( long *  piProjSys,
long *  piDatum,
long *  piEllips,
long *  piZone,
double *  padfPrjParams 
) const

Export coordinate system in "Panorama" GIS projection definition.

This method is the equivalent of the C function OSRExportToPanorama().

Parameters
piProjSysPointer to variable, where the projection system code will be returned.
piDatumPointer to variable, where the coordinate system code will be returned.
piEllipsPointer to variable, where the spheroid code will be returned.
piZonePointer to variable, where the zone for UTM projection system will be returned.
padfPrjParamsan existing 7 double buffer into which the projection parameters will be placed. See importFromPanorama() for the list of parameters.
Returns
OGRERR_NONE on success or an error code on failure.

◆ exportToPCI()

OGRErr OGRSpatialReference::exportToPCI ( char **  ppszProj,
char **  ppszUnits,
double **  ppadfPrjParams 
) const

Export coordinate system in PCI projection definition.

Converts the loaded coordinate reference system into PCI projection definition to the extent possible. The strings returned in ppszProj, ppszUnits and ppadfPrjParams array should be deallocated by the caller with CPLFree() when no longer needed.

LOCAL_CS coordinate systems are not translatable. An empty string will be returned along with OGRERR_NONE.

This method is the equivalent of the C function OSRExportToPCI().

Parameters
ppszProjpointer to which dynamically allocated PCI projection definition will be assigned.
ppszUnitspointer to which dynamically allocated units definition will be assigned.
ppadfPrjParamspointer to which dynamically allocated array of 17 projection parameters will be assigned. See importFromPCI() for the list of parameters.
Returns
OGRERR_NONE on success or an error code on failure.

◆ exportToPrettyWkt()

OGRErr OGRSpatialReference::exportToPrettyWkt ( char **  ppszResult,
int  bSimplify = FALSE 
) const

Convert this SRS into a nicely formatted WKT string for display to a person.

Consult also the OGC WKT Coordinate System Issues page for implementation details of WKT in OGR.

Note that the returned WKT string should be freed with CPLFree() when no longer needed. It is the responsibility of the caller.

This method is the same as the C function OSRExportToPrettyWkt().

Parameters
ppszResultthe resulting string is returned in this pointer.
bSimplifyTRUE if the AXIS, AUTHORITY and EXTENSION nodes should be stripped off.
Returns
currently OGRERR_NONE is always returned, but the future it is possible error conditions will develop.

◆ exportToProj4()

OGRErr OGRSpatialReference::exportToProj4 ( char **  ppszProj4) const

Export coordinate system in PROJ.4 format.

Converts the loaded coordinate reference system into PROJ.4 format to the extent possible. The string returned in ppszProj4 should be deallocated by the caller with CPLFree() when no longer needed.

LOCAL_CS coordinate systems are not translatable. An empty string will be returned along with OGRERR_NONE.

Special processing for Transverse Mercator with GDAL >= 1.10 and PROJ >= 4.8 : If the OSR_USE_ETMERC configuration option is set to YES, the PROJ.4 definition built from the SRS will use the 'etmerc' projection method, rather than the default 'tmerc'. This will give better accuracy (at the expense of computational speed) when reprojection occurs near the edges of the validity area for the projection. Starting with GDAL >= 2.2, setting OSR_USE_ETMERC to NO will expand to the 'tmerc' projection method (useful with PROJ >= 4.9.3, where utm uses etmerc)

This method is the equivalent of the C function OSRExportToProj4().

Parameters
ppszProj4pointer to which dynamically allocated PROJ.4 definition will be assigned.
Returns
OGRERR_NONE on success or an error code on failure.

◆ exportToUSGS()

OGRErr OGRSpatialReference::exportToUSGS ( long *  piProjSys,
long *  piZone,
double **  ppadfPrjParams,
long *  piDatum 
) const

Export coordinate system in USGS GCTP projection definition.

This method is the equivalent of the C function OSRExportToUSGS().

Parameters
piProjSysPointer to variable, where the projection system code will be returned.
piZonePointer to variable, where the zone for UTM and State Plane projection systems will be returned.
ppadfPrjParamsPointer to which dynamically allocated array of 15 projection parameters will be assigned. See importFromUSGS() for the list of parameters. Caller responsible to free this array.
piDatumPointer to variable, where the datum code will be returned.
Returns
OGRERR_NONE on success or an error code on failure.

◆ exportToWkt()

OGRErr OGRSpatialReference::exportToWkt ( char **  ppszResult) const

Convert this SRS into WKT format.

Consult also the OGC WKT Coordinate System Issues page for implementation details of WKT in OGR.

Note that the returned WKT string should be freed with CPLFree() when no longer needed. It is the responsibility of the caller.

This method is the same as the C function OSRExportToWkt().

Parameters
ppszResultthe resulting string is returned in this pointer.
Returns
currently OGRERR_NONE is always returned, but the future it is possible error conditions will develop.

◆ exportToXML()

OGRErr OGRSpatialReference::exportToXML ( char **  ppszRawXML,
const char *  pszDialect = nullptr 
) const

Export coordinate system in XML format.

Converts the loaded coordinate reference system into XML format to the extent possible. The string returned in ppszRawXML should be deallocated by the caller with CPLFree() when no longer needed.

LOCAL_CS coordinate systems are not translatable. An empty string will be returned along with OGRERR_NONE.

This method is the equivalent of the C function OSRExportToXML().

Parameters
ppszRawXMLpointer to which dynamically allocated XML definition will be assigned.
pszDialectcurrently ignored. The dialect used is GML based.
Returns
OGRERR_NONE on success or an error code on failure.

◆ FindMatches()

OGRSpatialReferenceH * OGRSpatialReference::FindMatches ( char **  papszOptions,
int *  pnEntries,
int **  ppanMatchConfidence 
) const

Try to identify a match between the passed SRS and a related SRS in a catalog (currently EPSG only)

Matching may be partial, or may fail. Returned entries will be sorted by decreasing match confidence (first entry has the highest match confidence).

The exact way matching is done may change in future versions.

The current algorithm is:

  • try first AutoIdentifyEPSG(). If it succeeds, return the corresponding SRS
  • otherwise iterate over all SRS from the EPSG catalog (as found in GDAL pcs.csv and gcs.csv files+esri_extra.wkt), and find those that match the input SRS using the IsSame() function (ignoring TOWGS84 clauses)
  • if there is a single match using IsSame() or one of the matches has the same SRS name, return it with 100% confidence
  • if a SRS has the same SRS name, but does not pass the IsSame() criteria, return it with 50% confidence.
  • otherwise return all candidate SRS that pass the IsSame() criteria with a 90% confidence.

A pre-built SRS cache in ~/.gdal/X.Y/srs_cache will be used if existing, otherwise it will be built at the first run of this function.

This method is the same as OSRFindMatches().

Parameters
papszOptionsNULL terminated list of options or NULL
pnEntriesOutput parameter. Number of values in the returned array.
ppanMatchConfidenceOutput parameter (or NULL). *ppanMatchConfidence will be allocated to an array of *pnEntries whose values between 0 and 100 indicate the confidence in the match. 100 is the highest confidence level. The array must be freed with CPLFree().
Returns
an array of SRS that match the passed SRS, or NULL. Must be freed with OSRFreeSRSArray()
Since
GDAL 2.3

◆ FindProjParm()

int OGRSpatialReference::FindProjParm ( const char *  pszParameter,
const OGR_SRSNode poPROJCS = nullptr 
) const

Return the child index of the named projection parameter on its parent PROJCS node.

Parameters
pszParameterprojection parameter to look for
poPROJCSprojection CS node to look in. If NULL is passed, the PROJCS node of the SpatialReference object will be searched.
Returns
the child index of the named projection parameter. -1 on failure

◆ Fixup()

OGRErr OGRSpatialReference::Fixup ( )

Fixup as needed.

Some mechanisms to create WKT using OGRSpatialReference, and some imported WKT, are not valid according to the OGC CT specification. This method attempts to fill in any missing defaults that are required, and fixup ordering problems (using OSRFixupOrdering()) so that the resulting WKT is valid.

This method should be expected to evolve over time to as problems are discovered. The following are among the fixup actions this method will take:

  • Fixup the ordering of nodes to match the BNF WKT ordering, using the FixupOrdering() method.
  • Add missing linear or angular units nodes.

This method is the same as the C function OSRFixup().

Returns
OGRERR_NONE on success or an error code if something goes wrong.

◆ FixupOrdering()

OGRErr OGRSpatialReference::FixupOrdering ( )

Correct parameter ordering to match CT Specification.

Some mechanisms to create WKT using OGRSpatialReference, and some imported WKT fail to maintain the order of parameters required according to the BNF definitions in the OpenGIS SF-SQL and CT Specifications. This method attempts to massage things back into the required order.

This method is the same as the C function OSRFixupOrdering().

Returns
OGRERR_NONE on success or an error code if something goes wrong.

◆ FromHandle()

static OGRSpatialReference* OGRSpatialReference::FromHandle ( OGRSpatialReferenceH  hSRS)
inlinestatic

Convert a OGRSpatialReferenceH to a OGRSpatialReference*.

Since
GDAL 2.3

◆ GetAngularUnits() [1/2]

double OGRSpatialReference::GetAngularUnits ( char **  ppszName) const

Fetch angular geographic coordinate system units.

If no units are available, a value of "degree" and SRS_UA_DEGREE_CONV will be assumed. This method only checks directly under the GEOGCS node for units.

This method does the same thing as the C function OSRGetAngularUnits().

Parameters
ppszNamea pointer to be updated with the pointer to the units name. The returned value remains internal to the OGRSpatialReference and should not be freed, or modified. It may be invalidated on the next OGRSpatialReference call.
Returns
the value to multiply by angular distances to transform them to radians.
Since
GDAL 2.3.0

◆ GetAngularUnits() [2/2]

double OGRSpatialReference::GetAngularUnits ( const char **  ppszName = nullptr) const

Fetch angular geographic coordinate system units.

If no units are available, a value of "degree" and SRS_UA_DEGREE_CONV will be assumed. This method only checks directly under the GEOGCS node for units.

This method does the same thing as the C function OSRGetAngularUnits().

Parameters
ppszNamea pointer to be updated with the pointer to the units name. The returned value remains internal to the OGRSpatialReference and should not be freed, or modified. It may be invalidated on the next OGRSpatialReference call.
Returns
the value to multiply by angular distances to transform them to radians.
Deprecated:
GDAL 2.3.0. Use GetAngularUnits(const char**) const.

◆ GetAttrNode() [1/2]

OGR_SRSNode * OGRSpatialReference::GetAttrNode ( const char *  pszNodePath)

Find named node in tree.

This method does a pre-order traversal of the node tree searching for a node with this exact value (case insensitive), and returns it. Leaf nodes are not considered, under the assumption that they are just attribute value nodes.

If a node appears more than once in the tree (such as UNIT for instance), the first encountered will be returned. Use GetNode() on a subtree to be more specific.

Parameters
pszNodePaththe name of the node to search for. May contain multiple components such as "GEOGCS|UNIT".
Returns
a pointer to the node found, or NULL if none.

◆ GetAttrNode() [2/2]

const OGR_SRSNode * OGRSpatialReference::GetAttrNode ( const char *  pszNodePath) const

Find named node in tree.

This method does a pre-order traversal of the node tree searching for a node with this exact value (case insensitive), and returns it. Leaf nodes are not considered, under the assumption that they are just attribute value nodes.

If a node appears more than once in the tree (such as UNIT for instance), the first encountered will be returned. Use GetNode() on a subtree to be more specific.

Parameters
pszNodePaththe name of the node to search for. May contain multiple components such as "GEOGCS|UNIT".
Returns
a pointer to the node found, or NULL if none.

◆ GetAttrValue()

const char * OGRSpatialReference::GetAttrValue ( const char *  pszNodeName,
int  iAttr = 0 
) const

Fetch indicated attribute of named node.

This method uses GetAttrNode() to find the named node, and then extracts the value of the indicated child. Thus a call to GetAttrValue("UNIT",1) would return the second child of the UNIT node, which is normally the length of the linear unit in meters.

This method does the same thing as the C function OSRGetAttrValue().

Parameters
pszNodeNamethe tree node to look for (case insensitive).
iAttrthe child of the node to fetch (zero based).
Returns
the requested value, or NULL if it fails for any reason.

◆ GetAuthorityCode()

const char * OGRSpatialReference::GetAuthorityCode ( const char *  pszTargetKey) const

Get the authority code for a node.

This method is used to query an AUTHORITY[] node from within the WKT tree, and fetch the code value.

While in theory values may be non-numeric, for the EPSG authority all code values should be integral.

This method is the same as the C function OSRGetAuthorityCode().

Parameters
pszTargetKeythe partial or complete path to the node to get an authority from. i.e. "PROJCS", "GEOGCS", "GEOGCS|UNIT" or NULL to search for an authority node on the root element.
Returns
value code from authority node, or NULL on failure. The value returned is internal and should not be freed or modified.

◆ GetAuthorityName()

const char * OGRSpatialReference::GetAuthorityName ( const char *  pszTargetKey) const

Get the authority name for a node.

This method is used to query an AUTHORITY[] node from within the WKT tree, and fetch the authority name value.

The most common authority is "EPSG".

This method is the same as the C function OSRGetAuthorityName().

Parameters
pszTargetKeythe partial or complete path to the node to get an authority from. i.e. "PROJCS", "GEOGCS", "GEOGCS|UNIT" or NULL to search for an authority node on the root element.
Returns
value code from authority node, or NULL on failure. The value returned is internal and should not be freed or modified.

◆ GetAxis()

const char * OGRSpatialReference::GetAxis ( const char *  pszTargetKey,
int  iAxis,
OGRAxisOrientation peOrientation 
) const

Fetch the orientation of one axis.

Fetches the request axis (iAxis - zero based) from the indicated portion of the coordinate system (pszTargetKey) which should be either "GEOGCS" or "PROJCS".

No CPLError is issued on routine failures (such as not finding the AXIS).

This method is equivalent to the C function OSRGetAxis().

Parameters
pszTargetKeythe coordinate system part to query ("PROJCS" or "GEOGCS").
iAxisthe axis to query (0 for first, 1 for second).
peOrientationlocation into which to place the fetch orientation, may be NULL.
Returns
the name of the axis or NULL on failure.

◆ GetEccentricity()

double OGRSpatialReference::GetEccentricity ( ) const

Get spheroid eccentricity.

Returns
eccentricity (or -1 in case of error)
Since
GDAL 2.3

◆ GetEPSGGeogCS()

int OGRSpatialReference::GetEPSGGeogCS ( ) const

Try to establish what the EPSG code for this coordinate systems GEOGCS might be.

Returns -1 if no reasonable guess can be made.

Returns
EPSG code

◆ GetExtension()

const char * OGRSpatialReference::GetExtension ( const char *  pszTargetKey,
const char *  pszName,
const char *  pszDefault = nullptr 
) const

Fetch extension value.

Fetch the value of the named EXTENSION item for the identified target node.

Parameters
pszTargetKeythe name or path to the parent node of the EXTENSION.
pszNamethe name of the extension being fetched.
pszDefaultthe value to return if the extension is not found.
Returns
node value if successful or pszDefault on failure.

◆ GetInvFlattening()

double OGRSpatialReference::GetInvFlattening ( OGRErr pnErr = nullptr) const

Get spheroid inverse flattening.

This method does the same thing as the C function OSRGetInvFlattening().

Parameters
pnErrif non-NULL set to OGRERR_FAILURE if no inverse flattening can be found.
Returns
inverse flattening, or SRS_WGS84_INVFLATTENING if it can't be found.

◆ GetLinearUnits() [1/2]

double OGRSpatialReference::GetLinearUnits ( char **  ppszName) const

Fetch linear projection units.

If no units are available, a value of "Meters" and 1.0 will be assumed. This method only checks directly under the PROJCS, GEOCCS or LOCAL_CS node for units.

This method does the same thing as the C function OSRGetLinearUnits()

Parameters
ppszNamea pointer to be updated with the pointer to the units name. The returned value remains internal to the OGRSpatialReference and should not be freed, or modified. It may be invalidated on the next OGRSpatialReference call.
Returns
the value to multiply by linear distances to transform them to meters.
Deprecated:
GDAL 2.3.0. Use GetLinearUnits(const char**) const.

◆ GetLinearUnits() [2/2]

double OGRSpatialReference::GetLinearUnits ( const char **  ppszName = nullptr) const

Fetch linear projection units.

If no units are available, a value of "Meters" and 1.0 will be assumed. This method only checks directly under the PROJCS, GEOCCS or LOCAL_CS node for units.

This method does the same thing as the C function OSRGetLinearUnits()

Parameters
ppszNamea pointer to be updated with the pointer to the units name. The returned value remains internal to the OGRSpatialReference and should not be freed, or modified. It may be invalidated on the next OGRSpatialReference call.
Returns
the value to multiply by linear distances to transform them to meters.
Since
GDAL 2.3.0

◆ GetNormProjParm()

double OGRSpatialReference::GetNormProjParm ( const char *  pszName,
double  dfDefaultValue = 0.0,
OGRErr pnErr = nullptr 
) const

Fetch a normalized projection parameter value.

This method is the same as GetProjParm() except that the value of the parameter is "normalized" into degrees or meters depending on whether it is linear or angular.

This method is the same as the C function OSRGetNormProjParm().

Parameters
pszNamethe name of the parameter to fetch, from the set of SRS_PP codes in ogr_srs_api.h.
dfDefaultValuethe value to return if this parameter doesn't exist.
pnErrplace to put error code on failure. Ignored if NULL.
Returns
value of parameter.

◆ GetPrimeMeridian() [1/2]

double OGRSpatialReference::GetPrimeMeridian ( char **  ppszName) const

Fetch prime meridian info.

Returns the offset of the prime meridian from greenwich in degrees, and the prime meridian name (if requested). If no PRIMEM value exists in the coordinate system definition a value of "Greenwich" and an offset of 0.0 is assumed.

If the prime meridian name is returned, the pointer is to an internal copy of the name. It should not be freed, altered or depended on after the next OGR call.

This method is the same as the C function OSRGetPrimeMeridian().

Parameters
ppszNamereturn location for prime meridian name. If NULL, name is not returned.
Returns
the offset to the GEOGCS prime meridian from greenwich in decimal degrees.
Since
GDAL 2.3.0

◆ GetPrimeMeridian() [2/2]

double OGRSpatialReference::GetPrimeMeridian ( const char **  ppszName = nullptr) const

Fetch prime meridian info.

Returns the offset of the prime meridian from greenwich in degrees, and the prime meridian name (if requested). If no PRIMEM value exists in the coordinate system definition a value of "Greenwich" and an offset of 0.0 is assumed.

If the prime meridian name is returned, the pointer is to an internal copy of the name. It should not be freed, altered or depended on after the next OGR call.

This method is the same as the C function OSRGetPrimeMeridian().

Parameters
ppszNamereturn location for prime meridian name. If NULL, name is not returned.
Returns
the offset to the GEOGCS prime meridian from greenwich in decimal degrees.
Deprecated:
GDAL 2.3.0. Use GetPrimeMeridian(const char**) const.

◆ GetProjParm()

double OGRSpatialReference::GetProjParm ( const char *  pszName,
double  dfDefaultValue = 0.0,
OGRErr pnErr = nullptr 
) const

Fetch a projection parameter value.

NOTE: This code should be modified to translate non degree angles into degrees based on the GEOGCS unit. This has not yet been done.

This method is the same as the C function OSRGetProjParm().

Parameters
pszNamethe name of the parameter to fetch, from the set of SRS_PP codes in ogr_srs_api.h.
dfDefaultValuethe value to return if this parameter doesn't exist.
pnErrplace to put error code on failure. Ignored if NULL.
Returns
value of parameter.

◆ GetReferenceCount()

int OGRSpatialReference::GetReferenceCount ( ) const
inline

Fetch current reference count.

Returns
the current reference count.

◆ GetSemiMajor()

double OGRSpatialReference::GetSemiMajor ( OGRErr pnErr = nullptr) const

Get spheroid semi major axis.

This method does the same thing as the C function OSRGetSemiMajor().

Parameters
pnErrif non-NULL set to OGRERR_FAILURE if semi major axis can be found.
Returns
semi-major axis, or SRS_WGS84_SEMIMAJOR if it can't be found.

◆ GetSemiMinor()

double OGRSpatialReference::GetSemiMinor ( OGRErr pnErr = nullptr) const

Get spheroid semi minor axis.

This method does the same thing as the C function OSRGetSemiMinor().

Parameters
pnErrif non-NULL set to OGRERR_FAILURE if semi minor axis can be found.
Returns
semi-minor axis, or WGS84 semi minor if it can't be found.

◆ GetSquaredEccentricity()

double OGRSpatialReference::GetSquaredEccentricity ( ) const

Get spheroid squared eccentricity.

Returns
squared eccentricity (or -1 in case of error)
Since
GDAL 2.3

◆ GetTargetLinearUnits() [1/2]

double OGRSpatialReference::GetTargetLinearUnits ( const char *  pszTargetKey,
char **  ppszName 
) const

Fetch linear units for target.

If no units are available, a value of "Meters" and 1.0 will be assumed.

This method does the same thing as the C function OSRGetTargetLinearUnits()

Parameters
pszTargetKeythe key to look on. i.e. "PROJCS" or "VERT_CS". Might be NULL, in which case PROJCS will be implied (and if not found, LOCAL_CS, GEOCCS and VERT_CS are looked up)
ppszNamea pointer to be updated with the pointer to the units name. The returned value remains internal to the OGRSpatialReference and should not be freed, or modified. It may be invalidated on the next OGRSpatialReference call. ppszName can be set to NULL.
Returns
the value to multiply by linear distances to transform them to meters.
Since
GDAL 2.3.0

◆ GetTargetLinearUnits() [2/2]

double OGRSpatialReference::GetTargetLinearUnits ( const char *  pszTargetKey,
const char **  ppszName = nullptr 
) const

Fetch linear units for target.

If no units are available, a value of "Meters" and 1.0 will be assumed.

This method does the same thing as the C function OSRGetTargetLinearUnits()

Parameters
pszTargetKeythe key to look on. i.e. "PROJCS" or "VERT_CS". Might be NULL, in which case PROJCS will be implied (and if not found, LOCAL_CS, GEOCCS and VERT_CS are looked up)
ppszNamea pointer to be updated with the pointer to the units name. The returned value remains internal to the OGRSpatialReference and should not be freed, or modified. It may be invalidated on the next OGRSpatialReference call. ppszName can be set to NULL.
Returns
the value to multiply by linear distances to transform them to meters.
Since
OGR 1.9.0
Deprecated:
GDAL 2.3.0. Use GetTargetLinearUnits(const char*, const char**) const.

◆ GetTOWGS84()

OGRErr OGRSpatialReference::GetTOWGS84 ( double *  padfCoeff,
int  nCoeffCount = 7 
) const

Fetch TOWGS84 parameters, if available.

Parameters
padfCoeffarray into which up to 7 coefficients are placed.
nCoeffCountsize of padfCoeff - defaults to 7.
Returns
OGRERR_NONE on success, or OGRERR_FAILURE if there is no TOWGS84 node available.

◆ GetUTMZone()

int OGRSpatialReference::GetUTMZone ( int *  pbNorth = nullptr) const

Get utm zone information.

This is the same as the C function OSRGetUTMZone().

In SWIG bindings (Python, Java, etc) the GetUTMZone() method returns a zone which is negative in the southern hemisphere instead of having the pbNorth flag used in the C and C++ interface.

Parameters
pbNorthpointer to in to set to TRUE if northern hemisphere, or FALSE if southern.
Returns
UTM zone number or zero if this isn't a UTM definition.

◆ GetWGS84SRS()

OGRSpatialReference * OGRSpatialReference::GetWGS84SRS ( )
static

Returns an instance of a SRS object with WGS84 WKT.

The reference counter of the returned object is not increased by this operation.

Returns
instance.
Since
GDAL 2.0

◆ importFromCRSURL()

OGRErr OGRSpatialReference::importFromCRSURL ( const char *  pszURL)

Initialize from OGC URL.

Initializes this spatial reference from a coordinate system defined by an OGC URL prefixed with "http://opengis.net/def/crs" per best practice paper 11-135. Currently EPSG and OGC authority values are supported, including OGC auto codes, but not including CRS1 or CRS88 (NAVD88).

This method is also supported through SetFromUserInput() which can normally be used for URLs.

Parameters
pszURLthe URL string.
Returns
OGRERR_NONE on success or an error code.

◆ importFromDict()

OGRErr OGRSpatialReference::importFromDict ( const char *  pszDictFile,
const char *  pszCode 
)

Read SRS from WKT dictionary.

This method will attempt to find the indicated coordinate system identity in the indicated dictionary file. If found, the WKT representation is imported and used to initialize this OGRSpatialReference.

More complete information on the format of the dictionary files can be found in the epsg.wkt file in the GDAL data tree. The dictionary files are searched for in the "GDAL" domain using CPLFindFile(). Normally this results in searching /usr/local/share/gdal or somewhere similar.

This method is the same as the C function OSRImportFromDict().

Parameters
pszDictFilethe name of the dictionary file to load.
pszCodethe code to lookup in the dictionary.
Returns
OGRERR_NONE on success, or OGRERR_SRS_UNSUPPORTED if the code isn't found, and OGRERR_SRS_FAILURE if something more dramatic goes wrong.

◆ importFromEPSG()

OGRErr OGRSpatialReference::importFromEPSG ( int  nCode)

Initialize SRS based on EPSG GCS or PCS code.

This method will initialize the spatial reference based on the passed in EPSG GCS or PCS code. The coordinate system definitions are normally read from the EPSG derived support files such as pcs.csv, gcs.csv, pcs.override.csv, gcs.override.csv and falling back to search for a PROJ.4 epsg init file or a definition in epsg.wkt.

These support files are normally searched for in /usr/local/share/gdal or in the directory identified by the GDAL_DATA configuration option. See CPLFindFile() for details.

This method is relatively expensive, and generally involves quite a bit of text file scanning. Reasonable efforts should be made to avoid calling it many times for the same coordinate system.

This method is similar to importFromEPSGA() except that EPSG preferred axis ordering will not be applied for geographic coordinate systems. EPSG normally defines geographic coordinate systems to use lat/long contrary to typical GIS use). Since OGR 1.10.0, EPSG preferred axis ordering will also not be applied for projected coordinate systems that use northing/easting order.

This method is the same as the C function OSRImportFromEPSG().

Parameters
nCodea GCS or PCS code from the horizontal coordinate system table.
Returns
OGRERR_NONE on success, or an error code on failure.

◆ importFromEPSGA()

OGRErr OGRSpatialReference::importFromEPSGA ( int  nCode)

Initialize SRS based on EPSG GCS or PCS code.

This method will initialize the spatial reference based on the passed in EPSG GCS or PCS code.

This method is similar to importFromEPSG() except that EPSG preferred axis ordering will be applied for geographic and projected coordinate systems. EPSG normally defines geographic coordinate systems to use lat/long, and also there are also a few projected coordinate systems that use northing/easting order contrary to typical GIS use). See OGRSpatialReference::importFromEPSG() for more details on operation of this method.

This method is the same as the C function OSRImportFromEPSGA().

Parameters
nCodea GCS or PCS code from the horizontal coordinate system table.
Returns
OGRERR_NONE on success, or an error code on failure.

◆ importFromERM()

OGRErr OGRSpatialReference::importFromERM ( const char *  pszProj,
const char *  pszDatum,
const char *  pszUnits 
)

Create OGR WKT from ERMapper projection definitions.

Generates an OGRSpatialReference definition from an ERMapper datum and projection name. Based on the ecw_cs.wkt dictionary file from gdal/data.

Parameters
pszProjthe projection name, such as "NUTM11" or "GEOGRAPHIC".
pszDatumthe datum name, such as "NAD83".
pszUnitsthe linear units "FEET" or "METERS".
Returns
OGRERR_NONE on success or OGRERR_UNSUPPORTED_SRS if not found.

◆ importFromESRI()

OGRErr OGRSpatialReference::importFromESRI ( char **  papszPrj)

Import coordinate system from ESRI .prj format(s).

This function will read the text loaded from an ESRI .prj file, and translate it into an OGRSpatialReference definition. This should support many (but by no means all) old style (Arc/Info 7.x) .prj files, as well as the newer pseudo-OGC WKT .prj files. Note that new style .prj files are in OGC WKT format, but require some manipulation to correct datum names, and units on some projection parameters. This is addressed within importFromESRI() by an automatic call to morphFromESRI().

Currently only GEOGRAPHIC, UTM, STATEPLANE, GREATBRITIAN_GRID, ALBERS, EQUIDISTANT_CONIC, TRANSVERSE (mercator), POLAR, MERCATOR and POLYCONIC projections are supported from old style files.

At this time there is no equivalent exportToESRI() method. Writing old style .prj files is not supported by OGRSpatialReference. However the morphToESRI() and exportToWkt() methods can be used to generate output suitable to write to new style (Arc 8) .prj files.

This function is the equivalent of the C function OSRImportFromESRI().

Parameters
papszPrjNULL terminated list of strings containing the definition.
Returns
OGRERR_NONE on success or an error code in case of failure.

◆ importFromMICoordSys()

OGRErr OGRSpatialReference::importFromMICoordSys ( const char *  pszCoordSys)

Import Mapinfo style CoordSys definition.

The OGRSpatialReference is initialized from the passed Mapinfo style CoordSys definition string.

This method is the equivalent of the C function OSRImportFromMICoordSys().

Parameters
pszCoordSysMapinfo style CoordSys definition string.
Returns
OGRERR_NONE on success, OGRERR_FAILURE on failure, OGRERR_UNSUPPORTED_OPERATION if MITAB library was not linked in.

◆ importFromOzi()

OGRErr OGRSpatialReference::importFromOzi ( const char *const *  papszLines)

Import coordinate system from OziExplorer projection definition.

This method will import projection definition in style, used by OziExplorer software.

Parameters
papszLinesMap file lines. This is an array of strings containing the whole OziExplorer .MAP file. The array is terminated by a NULL pointer.
Returns
OGRERR_NONE on success or an error code in case of failure.
Since
OGR 1.10

◆ importFromPanorama()

OGRErr OGRSpatialReference::importFromPanorama ( long  iProjSys,
long  iDatum,
long  iEllips,
double *  padfPrjParams 
)

Import coordinate system from "Panorama" GIS projection definition.

This method will import projection definition in style, used by "Panorama" GIS.

This function is the equivalent of the C function OSRImportFromPanorama().

Parameters
iProjSysInput projection system code, used in GIS "Panorama".
 <h4>Supported Projections</h4>
     1:  Gauss-Kruger (Transverse Mercator)
     2:  Lambert Conformal Conic 2SP
     5:  Stereographic
     6:  Azimuthal Equidistant (Postel)
     8:  Mercator
     10: Polyconic
     13: Polar Stereographic
     15: Gnomonic
     17: Universal Transverse Mercator (UTM)
     18: Wagner I (Kavraisky VI)
     19: Mollweide
     20: Equidistant Conic
     24: Lambert Azimuthal Equal Area
     27: Equirectangular
     28: Cylindrical Equal Area (Lambert)
     29: International Map of the World Polyconic
iDatumInput coordinate system.
 <h4>Supported Datums</h4>
      1: Pulkovo, 1942
      2: WGS, 1984
      3: OSGB 1936 (British National Grid)
      9: Pulkovo, 1995
iEllipsInput spheroid.
 <h4>Supported Spheroids</h4>
      1: Krassovsky, 1940
      2: WGS, 1972
      3: International, 1924 (Hayford, 1909)
      4: Clarke, 1880
      5: Clarke, 1866 (NAD1927)
      6: Everest, 1830
      7: Bessel, 1841
      8: Airy, 1830
      9: WGS, 1984 (GPS)
padfPrjParamsArray of 8 coordinate system parameters:
     [0]  Latitude of the first standard parallel (radians)
     [1]  Latitude of the second standard parallel (radians)
     [2]  Latitude of center of projection (radians)
     [3]  Longitude of center of projection (radians)
     [4]  Scaling factor
     [5]  False Easting
     [6]  False Northing
     [7]  Zone number

Particular projection uses different parameters, unused ones may be set to zero. If NULL supplied instead of array pointer default values will be used (i.e., zeroes).

Returns
OGRERR_NONE on success or an error code in case of failure.

◆ importFromPCI()

OGRErr OGRSpatialReference::importFromPCI ( const char *  pszProj,
const char *  pszUnits = nullptr,
double *  padfPrjParams = nullptr 
)

Import coordinate system from PCI projection definition.

PCI software uses 16-character string to specify coordinate system and datum/ellipsoid. You should supply at least this string to the importFromPCI() function.

This function is the equivalent of the C function OSRImportFromPCI().

Parameters
pszProjNULL terminated string containing the definition. Looks like "pppppppppppp Ennn" or "pppppppppppp Dnnn", where "pppppppppppp" is a projection code, "Ennn" is an ellipsoid code, "Dnnn" — a datum code.
pszUnitsGrid units code ("DEGREE" or "METRE"). If NULL "METRE" will be used.
padfPrjParamsArray of 17 coordinate system parameters:

[0] Spheroid semi major axis [1] Spheroid semi minor axis [2] Reference Longitude [3] Reference Latitude [4] First Standard Parallel [5] Second Standard Parallel [6] False Easting [7] False Northing [8] Scale Factor [9] Height above sphere surface [10] Longitude of 1st point on center line [11] Latitude of 1st point on center line [12] Longitude of 2nd point on center line [13] Latitude of 2nd point on center line [14] Azimuth east of north for center line [15] Landsat satellite number [16] Landsat path number

Particular projection uses different parameters, unused ones may be set to zero. If NULL is supplied instead of an array pointer, default values will be used (i.e., zeroes).

Returns
OGRERR_NONE on success or an error code in case of failure.

◆ importFromProj4()

OGRErr OGRSpatialReference::importFromProj4 ( const char *  pszProj4)

Import PROJ.4 coordinate string.

The OGRSpatialReference is initialized from the passed PROJ.4 style coordinate system string. In addition to many +proj formulations which have OGC equivalents, it is also possible to import "+init=epsg:n" style definitions. These are passed to importFromEPSG(). Other init strings (such as the state plane zones) are not currently supported.

Example: pszProj4 = "+proj=utm +zone=11 +datum=WGS84"

Some parameters, such as grids, recognized by PROJ.4 may not be well understood and translated into the OGRSpatialReference model. It is possible to add the +wktext parameter which is a special keyword that OGR recognized as meaning "embed the entire PROJ.4 string in the WKT and use it literally when converting back to PROJ.4 format".

For example: "+proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 +ellps=intl +units=m +nadgrids=nzgd2kgrid0005.gsb +wktext"

will be translated as :

PROJCS["unnamed",
GEOGCS["International 1909 (Hayford)",
DATUM["unknown",
SPHEROID["intl",6378388,297]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433]],
PROJECTION["New_Zealand_Map_Grid"],
PARAMETER["latitude_of_origin",-41],
PARAMETER["central_meridian",173],
PARAMETER["false_easting",2510000],
PARAMETER["false_northing",6023150],
UNIT["Meter",1],
EXTENSION["PROJ4","+proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000
+y_0=6023150 +ellps=intl +units=m +nadgrids=nzgd2kgrid0005.gsb +wktext"]]

Special processing for 'etmerc' (GDAL >= 1.10 ): if +proj=etmerc is found in the passed string, the SRS built will use the WKT representation for a standard Transverse Mercator, but will aso include a PROJ4 EXTENSION node to preserve the etmerc projection method.

For example: "+proj=etmerc +lat_0=0 +lon_0=9 +k=0.9996 +units=m +x_0=500000 +datum=WGS84"

will be translated as :

PROJCS["unnamed",
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
TOWGS84[0,0,0,0,0,0,0],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.0174532925199433,
AUTHORITY["EPSG","9108"]],
AUTHORITY["EPSG","4326"]],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",9],
PARAMETER["scale_factor",0.9996],
PARAMETER["false_easting",500000],
PARAMETER["false_northing",0],
UNIT["Meter",1],
EXTENSION["PROJ4","+proj=etmerc +lat_0=0 +lon_0=9 +k=0.9996 +units=m +x_0=500000 +datum=WGS84 +nodefs"]]

This method is the equivalent of the C function OSRImportFromProj4().

Parameters
pszProj4the PROJ.4 style string.
Returns
OGRERR_NONE on success or OGRERR_CORRUPT_DATA on failure.

◆ importFromUrl()

OGRErr OGRSpatialReference::importFromUrl ( const char *  pszUrl)

Set spatial reference from a URL.

This method will download the spatial reference at a given URL and feed it into SetFromUserInput for you.

This method does the same thing as the OSRImportFromUrl() function.

Parameters
pszUrltext definition to try to deduce SRS from.
Returns
OGRERR_NONE on success, or an error code with the curl error message if it is unable to dowload data.

◆ importFromURN()

OGRErr OGRSpatialReference::importFromURN ( const char *  pszURN)

Initialize from OGC URN.

Initializes this spatial reference from a coordinate system defined by an OGC URN prefixed with "urn:ogc:def:crs:" per recommendation paper 06-023r1. Currently EPSG and OGC authority values are supported, including OGC auto codes, but not including CRS1 or CRS88 (NAVD88).

This method is also support through SetFromUserInput() which can normally be used for URNs.

Parameters
pszURNthe urn string.
Returns
OGRERR_NONE on success or an error code.

◆ importFromUSGS()

OGRErr OGRSpatialReference::importFromUSGS ( long  iProjSys,
long  iZone,
double *  padfPrjParams,
long  iDatum,
int  nUSGSAngleFormat = USGS_ANGLE_PACKEDDMS 
)

Import coordinate system from USGS projection definition.

This method will import projection definition in style, used by USGS GCTP software. GCTP operates on angles in packed DMS format (see CPLDecToPackedDMS() function for details), so all angle values (latitudes, longitudes, azimuths, etc.) specified in the padfPrjParams array should be in the packed DMS format, unless bAnglesInPackedDMSFormat is set to FALSE.

This function is the equivalent of the C function OSRImportFromUSGS(). Note that the bAnglesInPackedDMSFormat parameter is only present in the C++ method. The C function assumes bAnglesInPackedFormat = TRUE.

Parameters
iProjSysInput projection system code, used in GCTP.
iZoneInput zone for UTM and State Plane projection systems. For Southern Hemisphere UTM use a negative zone code. iZone ignored for all other projections.
padfPrjParamsArray of 15 coordinate system parameters. These parameters differs for different projections.

Projection Transformation Package Projection Parameters

----------------------------------------------------------------------------
                        |                    Array Element
 Code & Projection Id   |---------------------------------------------------
                        |   0  |   1  |  2   |  3   |   4   |    5    |6 | 7
----------------------------------------------------------------------------
 0 Geographic           |      |      |      |      |       |         |  |
 1 U T M                |Lon/Z |Lat/Z |      |      |       |         |  |
 2 State Plane          |      |      |      |      |       |         |  |
 3 Albers Equal Area    |SMajor|SMinor|STDPR1|STDPR2|CentMer|OriginLat|FE|FN
 4 Lambert Conformal C  |SMajor|SMinor|STDPR1|STDPR2|CentMer|OriginLat|FE|FN
 5 Mercator             |SMajor|SMinor|      |      |CentMer|TrueScale|FE|FN
 6 Polar Stereographic  |SMajor|SMinor|      |      |LongPol|TrueScale|FE|FN
 7 Polyconic            |SMajor|SMinor|      |      |CentMer|OriginLat|FE|FN
 8 Equid. Conic A       |SMajor|SMinor|STDPAR|      |CentMer|OriginLat|FE|FN
   Equid. Conic B       |SMajor|SMinor|STDPR1|STDPR2|CentMer|OriginLat|FE|FN
 9 Transverse Mercator  |SMajor|SMinor|Factor|      |CentMer|OriginLat|FE|FN
10 Stereographic        |Sphere|      |      |      |CentLon|CenterLat|FE|FN
11 Lambert Azimuthal    |Sphere|      |      |      |CentLon|CenterLat|FE|FN
12 Azimuthal            |Sphere|      |      |      |CentLon|CenterLat|FE|FN
13 Gnomonic             |Sphere|      |      |      |CentLon|CenterLat|FE|FN
14 Orthographic         |Sphere|      |      |      |CentLon|CenterLat|FE|FN
15 Gen. Vert. Near Per  |Sphere|      |Height|      |CentLon|CenterLat|FE|FN
16 Sinusoidal           |Sphere|      |      |      |CentMer|         |FE|FN
17 Equirectangular      |Sphere|      |      |      |CentMer|TrueScale|FE|FN
18 Miller Cylindrical   |Sphere|      |      |      |CentMer|         |FE|FN
19 Van der Grinten      |Sphere|      |      |      |CentMer|OriginLat|FE|FN
20 Hotin Oblique Merc A |SMajor|SMinor|Factor|      |       |OriginLat|FE|FN
   Hotin Oblique Merc B |SMajor|SMinor|Factor|AziAng|AzmthPt|OriginLat|FE|FN
21 Robinson             |Sphere|      |      |      |CentMer|         |FE|FN
22 Space Oblique Merc A |SMajor|SMinor|      |IncAng|AscLong|         |FE|FN
   Space Oblique Merc B |SMajor|SMinor|Satnum|Path  |       |         |FE|FN
23 Alaska Conformal     |SMajor|SMinor|      |      |       |         |FE|FN
24 Interrupted Goode    |Sphere|      |      |      |       |         |  |
25 Mollweide            |Sphere|      |      |      |CentMer|         |FE|FN
26 Interrupt Mollweide  |Sphere|      |      |      |       |         |  |
27 Hammer               |Sphere|      |      |      |CentMer|         |FE|FN
28 Wagner IV            |Sphere|      |      |      |CentMer|         |FE|FN
29 Wagner VII           |Sphere|      |      |      |CentMer|         |FE|FN
30 Oblated Equal Area   |Sphere|      |Shapem|Shapen|CentLon|CenterLat|FE|FN
----------------------------------------------------------------------------
      ----------------------------------------------------
                              |      Array Element       |
        Code & Projection Id  |---------------------------
                              |  8  |  9 |  10 | 11 | 12 |
      ----------------------------------------------------
       0 Geographic           |     |    |     |    |    |
       1 U T M                |     |    |     |    |    |
       2 State Plane          |     |    |     |    |    |
       3 Albers Equal Area    |     |    |     |    |    |
       4 Lambert Conformal C  |     |    |     |    |    |
       5 Mercator             |     |    |     |    |    |
       6 Polar Stereographic  |     |    |     |    |    |
       7 Polyconic            |     |    |     |    |    |
       8 Equid. Conic A       |zero |    |     |    |    |
         Equid. Conic B       |one  |    |     |    |    |
       9 Transverse Mercator  |     |    |     |    |    |
      10 Stereographic        |     |    |     |    |    |
      11 Lambert Azimuthal    |     |    |     |    |    |
      12 Azimuthal            |     |    |     |    |    |
      13 Gnomonic             |     |    |     |    |    |
      14 Orthographic         |     |    |     |    |    |
      15 Gen. Vert. Near Per  |     |    |     |    |    |
      16 Sinusoidal           |     |    |     |    |    |
      17 Equirectangular      |     |    |     |    |    |
      18 Miller Cylindrical   |     |    |     |    |    |
      19 Van der Grinten      |     |    |     |    |    |
      20 Hotin Oblique Merc A |Long1|Lat1|Long2|Lat2|zero|
         Hotin Oblique Merc B |     |    |     |    |one |
      21 Robinson             |     |    |     |    |    |
      22 Space Oblique Merc A |PSRev|LRat|PFlag|    |zero|
         Space Oblique Merc B |     |    |     |    |one |
      23 Alaska Conformal     |     |    |     |    |    |
      24 Interrupted Goode    |     |    |     |    |    |
      25 Mollweide            |     |    |     |    |    |
      26 Interrupt Mollweide  |     |    |     |    |    |
      27 Hammer               |     |    |     |    |    |
      28 Wagner IV            |     |    |     |    |    |
      29 Wagner VII           |     |    |     |    |    |
      30 Oblated Equal Area   |Angle|    |     |    |    |
      ----------------------------------------------------
  where
   Lon/Z     Longitude of any point in the UTM zone or zero.  If zero,
             a zone code must be specified.
   Lat/Z     Latitude of any point in the UTM zone or zero.  If zero, a
             zone code must be specified.
   SMajor    Semi-major axis of ellipsoid.  If zero, Clarke 1866 in meters
             is assumed.
   SMinor    Eccentricity squared of the ellipsoid if less than zero,
             if zero, a spherical form is assumed, or if greater than
             zero, the semi-minor axis of ellipsoid.
   Sphere    Radius of reference sphere.  If zero, 6370997 meters is used.
   STDPAR    Latitude of the standard parallel
   STDPR1    Latitude of the first standard parallel
   STDPR2    Latitude of the second standard parallel
   CentMer   Longitude of the central meridian
   OriginLat Latitude of the projection origin
   FE        False easting in the same units as the semi-major axis
   FN        False northing in the same units as the semi-major axis
   TrueScale Latitude of true scale
   LongPol   Longitude down below pole of map
   Factor    Scale factor at central meridian (Transverse Mercator) or
             center of projection (Hotine Oblique Mercator)
   CentLon   Longitude of center of projection
   CenterLat Latitude of center of projection
   Height    Height of perspective point
   Long1     Longitude of first point on center line (Hotine Oblique
             Mercator, format A)
   Long2     Longitude of second point on center line (Hotine Oblique
             Mercator, format A)
   Lat1      Latitude of first point on center line (Hotine Oblique
             Mercator, format A)
   Lat2      Latitude of second point on center line (Hotine Oblique
             Mercator, format A)
   AziAng    Azimuth angle east of north of center line (Hotine Oblique
             Mercator, format B)
   AzmthPt   Longitude of point on central meridian where azimuth occurs
             (Hotine Oblique Mercator, format B)
   IncAng    Inclination of orbit at ascending node, counter-clockwise
             from equator (SOM, format A)
   AscLong   Longitude of ascending orbit at equator (SOM, format A)
   PSRev     Period of satellite revolution in minutes (SOM, format A)
   LRat      Landsat ratio to compensate for confusion at northern end
             of orbit (SOM, format A -- use 0.5201613)
   PFlag     End of path flag for Landsat:  0 = start of path,
             1 = end of path (SOM, format A)
   Satnum    Landsat Satellite Number (SOM, format B)
   Path      Landsat Path Number (Use WRS-1 for Landsat 1, 2 and 3 and
             WRS-2 for Landsat 4, 5 and 6.)  (SOM, format B)
   Shapem    Oblated Equal Area oval shape parameter m
   Shapen    Oblated Equal Area oval shape parameter n
   Angle     Oblated Equal Area oval rotation angle
Array elements 13 and 14 are set to zero. All array elements with blank
fields are set to zero too.
Parameters
iDatumInput spheroid.

If the datum code is negative, the first two values in the parameter array (parm) are used to define the values as follows:

  • If padfPrjParams[0] is a non-zero value and padfPrjParams[1] is greater than one, the semimajor axis is set to padfPrjParams[0] and the semiminor axis is set to padfPrjParams[1].

  • If padfPrjParams[0] is nonzero and padfPrjParams[1] is greater than zero but less than or equal to one, the semimajor axis is set to padfPrjParams[0] and the semiminor axis is computed from the eccentricity squared value padfPrjParams[1]:

    semiminor = sqrt(1.0 - ES) * semimajor

    where

    ES = eccentricity squared

  • If padfPrjParams[0] is nonzero and padfPrjParams[1] is equal to zero, the semimajor axis and semiminor axis are set to padfPrjParams[0].

  • If padfPrjParams[0] equals zero and padfPrjParams[1] is greater than zero, the default Clarke 1866 is used to assign values to the semimajor axis and semiminor axis.

  • If padfPrjParams[0] and padfPrjParams[1] equals zero, the semimajor axis is set to 6370997.0 and the semiminor axis is set to zero.

If a datum code is zero or greater, the semimajor and semiminor axis are defined by the datum code as found in the following table:

Supported Datums

      0: Clarke 1866 (default)
      1: Clarke 1880
      2: Bessel
      3: International 1967
      4: International 1909
      5: WGS 72
      6: Everest
      7: WGS 66
      8: GRS 1980/WGS 84
      9: Airy
     10: Modified Everest
     11: Modified Airy
     12: WGS 84
     13: Southeast Asia
     14: Australian National
     15: Krassovsky
     16: Hough
     17: Mercury 1960
     18: Modified Mercury 1968
     19: Sphere of Radius 6370997 meters
Parameters
nUSGSAngleFormatone of USGS_ANGLE_DECIMALDEGREES, USGS_ANGLE_PACKEDDMS, or USGS_ANGLE_RADIANS (default is USGS_ANGLE_PACKEDDMS).
Returns
OGRERR_NONE on success or an error code in case of failure.

◆ importFromWkt() [1/3]

OGRErr OGRSpatialReference::importFromWkt ( char **  ppszInput)

Import from WKT string.

This method will wipe the existing SRS definition, and reassign it based on the contents of the passed WKT string. Only as much of the input string as needed to construct this SRS is consumed from the input string, and the input string pointer is then updated to point to the remaining (unused) input.

Consult also the OGC WKT Coordinate System Issues page for implementation details of WKT in OGR.

This method is the same as the C function OSRImportFromWkt().

Parameters
ppszInputPointer to pointer to input. The pointer is updated to point to remaining unused input text.
Returns
OGRERR_NONE if import succeeds, or OGRERR_CORRUPT_DATA if it fails for any reason.
Deprecated:
GDAL 2.3. Use importFromWkt(const char**) or importFromWkt(const char*)

◆ importFromWkt() [2/3]

OGRErr OGRSpatialReference::importFromWkt ( const char **  ppszInput)

Import from WKT string.

This method will wipe the existing SRS definition, and reassign it based on the contents of the passed WKT string. Only as much of the input string as needed to construct this SRS is consumed from the input string, and the input string pointer is then updated to point to the remaining (unused) input.

Consult also the OGC WKT Coordinate System Issues page for implementation details of WKT in OGR.

This method is the same as the C function OSRImportFromWkt().

Parameters
ppszInputPointer to pointer to input. The pointer is updated to point to remaining unused input text.
Returns
OGRERR_NONE if import succeeds, or OGRERR_CORRUPT_DATA if it fails for any reason.
Since
GDAL 2.3

◆ importFromWkt() [3/3]

OGRErr OGRSpatialReference::importFromWkt ( const char *  pszInput)

Import from WKT string.

This method will wipe the existing SRS definition, and reassign it based on the contents of the passed WKT string. Only as much of the input string as needed to construct this SRS is consumed from the input string, and the input string pointer is then updated to point to the remaining (unused) input.

Consult also the OGC WKT Coordinate System Issues page for implementation details of WKT in OGR.

Parameters
pszInputInput WKT
Returns
OGRERR_NONE if import succeeds, or OGRERR_CORRUPT_DATA if it fails for any reason.
Since
GDAL 2.3

◆ importFromWMSAUTO()

OGRErr OGRSpatialReference::importFromWMSAUTO ( const char *  pszDefinition)

Initialize from WMSAUTO string.

Note that the WMS 1.3 specification does not include the units code, while apparently earlier specs do. We try to guess around this.

Parameters
pszDefinitionthe WMSAUTO string
Returns
OGRERR_NONE on success or an error code.

◆ importFromXML()

OGRErr OGRSpatialReference::importFromXML ( const char *  pszXML)

Import coordinate system from XML format (GML only currently).

This method is the same as the C function OSRImportFromXML()

Parameters
pszXMLXML string to import
Returns
OGRERR_NONE on success or OGRERR_CORRUPT_DATA on failure.

◆ IsAngularParameter()

int OGRSpatialReference::IsAngularParameter ( const char *  pszParameterName)
static

Is the passed projection parameter an angular one?

Returns
TRUE or FALSE

◆ IsCompound()

int OGRSpatialReference::IsCompound ( ) const

Check if coordinate system is compound.

This method is the same as the C function OSRIsCompound().

Returns
TRUE if this is rooted with a COMPD_CS node.

◆ IsGeocentric()

int OGRSpatialReference::IsGeocentric ( ) const

Check if geocentric coordinate system.

This method is the same as the C function OSRIsGeocentric().

Returns
TRUE if this contains a GEOCCS node indicating a it is a geocentric coordinate system.
Since
OGR 1.9.0

◆ IsGeographic()

int OGRSpatialReference::IsGeographic ( ) const

Check if geographic coordinate system.

This method is the same as the C function OSRIsGeographic().

Returns
TRUE if this spatial reference is geographic ... that is the root is a GEOGCS node.

◆ IsLinearParameter()

int OGRSpatialReference::IsLinearParameter ( const char *  pszParameterName)
static

Is the passed projection parameter an linear one measured in meters or some similar linear measure.

Returns
TRUE or FALSE

◆ IsLocal()

int OGRSpatialReference::IsLocal ( ) const

Check if local coordinate system.

This method is the same as the C function OSRIsLocal().

Returns
TRUE if this spatial reference is local ... that is the root is a LOCAL_CS node.

◆ IsLongitudeParameter()

int OGRSpatialReference::IsLongitudeParameter ( const char *  pszParameterName)
static

Is the passed projection parameter an angular longitude (relative to a prime meridian)?

Returns
TRUE or FALSE

◆ IsProjected()

int OGRSpatialReference::IsProjected ( ) const

Check if projected coordinate system.

This method is the same as the C function OSRIsProjected().

Returns
TRUE if this contains a PROJCS node indicating a it is a projected coordinate system.

◆ IsSame() [1/2]

int OGRSpatialReference::IsSame ( const OGRSpatialReference poOtherSRS) const

Do these two spatial references describe the same system ?

Parameters
poOtherSRSthe SRS being compared to.
Returns
TRUE if equivalent or FALSE otherwise.

◆ IsSame() [2/2]

int OGRSpatialReference::IsSame ( const OGRSpatialReference poOtherSRS,
const char *const *  papszOptions 
) const

Do these two spatial references describe the same system ?

Parameters
poOtherSRSthe SRS being compared to.
papszOptionsoptions. DATUM=STRICT/IGNORE. TOWGS84=STRICT/ONLY_IF_IN_BOTH/IGNORE
Returns
TRUE if equivalent or FALSE otherwise.

◆ IsSameGeogCS() [1/2]

int OGRSpatialReference::IsSameGeogCS ( const OGRSpatialReference poOther) const

Do the GeogCS'es match?

This method is the same as the C function OSRIsSameGeogCS().

Parameters
poOtherthe SRS being compared against.
Returns
TRUE if they are the same or FALSE otherwise.

◆ IsSameGeogCS() [2/2]

int OGRSpatialReference::IsSameGeogCS ( const OGRSpatialReference poOther,
const char *const *  papszOptions 
) const

Do the GeogCS'es match?

This method is the same as the C function OSRIsSameGeogCS().

Parameters
poOtherthe SRS being compared against.
papszOptionsoptions. DATUM=STRICT/IGNORE. TOWGS84=STRICT/ONLY_IF_IN_BOTH/IGNORE
Returns
TRUE if they are the same or FALSE otherwise.

◆ IsSameVertCS()

int OGRSpatialReference::IsSameVertCS ( const OGRSpatialReference poOther) const

Do the VertCS'es match?

This method is the same as the C function OSRIsSameVertCS().

Parameters
poOtherthe SRS being compared against.
Returns
TRUE if they are the same or FALSE otherwise.

◆ IsVertical()

int OGRSpatialReference::IsVertical ( ) const

Check if vertical coordinate system.

This method is the same as the C function OSRIsVertical().

Returns
TRUE if this contains a VERT_CS node indicating a it is a vertical coordinate system.
Since
OGR 1.8.0

◆ morphFromESRI()

OGRErr OGRSpatialReference::morphFromESRI ( )

Convert in place from ESRI WKT format.

The value notes of this coordinate system are modified in various manners to adhere more closely to the WKT standard. This mostly involves translating a variety of ESRI names for projections, arguments and datums to "standard" names, as defined by Adam Gawne-Cain's reference translation of EPSG to WKT for the CT specification.

Starting with GDAL 1.9.0, missing parameters in TOWGS84, DATUM or GEOGCS nodes can be added to the WKT, comparing existing WKT parameters to GDAL's databases. Note that this optional procedure is very conservative and should not introduce false information into the WKT definition (although caution should be advised when activating it). Needs the Configuration Option GDAL_FIX_ESRI_WKT be set to one of the following values (TOWGS84 is recommended for proper datum shift calculations):

GDAL_FIX_ESRI_WKT values

  TOWGS84  Adds missing TOWGS84 parameters (necessary for datum transformations), based on named datum and spheroid values.
  DATUM  Adds EPSG AUTHORITY nodes and sets SPHEROID name to OGR spec.
  GEOGCS  Adds EPSG AUTHORITY nodes and sets GEOGCS, DATUM and SPHEROID names to OGR spec. Effectively replaces GEOGCS node with the result of importFromEPSG(n), using EPSG code n corresponding to the existing GEOGCS. Does not impact PROJCS values.

This does the same as the C function OSRMorphFromESRI().

Returns
OGRERR_NONE unless something goes badly wrong.

◆ morphToESRI()

OGRErr OGRSpatialReference::morphToESRI ( )

Convert in place to ESRI WKT format.

The value nodes of this coordinate system are modified in various manners more closely map onto the ESRI concept of WKT format. This includes renaming a variety of projections and arguments, and stripping out nodes note recognised by ESRI (like AUTHORITY and AXIS).

This does the same as the C function OSRMorphToESRI().

Returns
OGRERR_NONE unless something goes badly wrong.

◆ operator=()

OGRSpatialReference & OGRSpatialReference::operator= ( const OGRSpatialReference oSource)

Assignment operator.

Parameters
oSourceSRS to assign to *this
Returns
*this

◆ Reference()

int OGRSpatialReference::Reference ( )

Increments the reference count by one.

The reference count is used keep track of the number of OGRGeometry objects referencing this SRS.

The method does the same thing as the C function OSRReference().

Returns
the updated reference count.

◆ Release()

void OGRSpatialReference::Release ( )

Decrements the reference count by one, and destroy if zero.

The method does the same thing as the C function OSRRelease().

◆ SetAngularUnits()

OGRErr OGRSpatialReference::SetAngularUnits ( const char *  pszUnitsName,
double  dfInRadians 
)

Set the angular units for the geographic coordinate system.

This method creates a UNIT subnode with the specified values as a child of the GEOGCS node.

This method does the same as the C function OSRSetAngularUnits().

Parameters
pszUnitsNamethe units name to be used. Some preferred units names can be found in ogr_srs_api.h such as SRS_UA_DEGREE.
dfInRadiansthe value to multiple by an angle in the indicated units to transform to radians. Some standard conversion factors can be found in ogr_srs_api.h.
Returns
OGRERR_NONE on success.

◆ SetAuthority()

OGRErr OGRSpatialReference::SetAuthority ( const char *  pszTargetKey,
const char *  pszAuthority,
int  nCode 
)

Set the authority for a node.

This method is the same as the C function OSRSetAuthority().

Parameters
pszTargetKeythe partial or complete path to the node to set an authority on. i.e. "PROJCS", "GEOGCS" or "GEOGCS|UNIT".
pszAuthorityauthority name, such as "EPSG".
nCodecode for value with this authority.
Returns
OGRERR_NONE on success.

◆ SetAxes()

OGRErr OGRSpatialReference::SetAxes ( const char *  pszTargetKey,
const char *  pszXAxisName,
OGRAxisOrientation  eXAxisOrientation,
const char *  pszYAxisName,
OGRAxisOrientation  eYAxisOrientation 
)

Set the axes for a coordinate system.

Set the names, and orientations of the axes for either a projected (PROJCS) or geographic (GEOGCS) coordinate system.

This method is equivalent to the C function OSRSetAxes().

Parameters
pszTargetKeyeither "PROJCS" or "GEOGCS", must already exist in SRS.
pszXAxisNamename of first axis, normally "Long" or "Easting".
eXAxisOrientationnormally OAO_East.
pszYAxisNamename of second axis, normally "Lat" or "Northing".
eYAxisOrientationnormally OAO_North.
Returns
OGRERR_NONE on success or an error code.

◆ SetCompoundCS()

OGRErr OGRSpatialReference::SetCompoundCS ( const char *  pszName,
const OGRSpatialReference poHorizSRS,
const OGRSpatialReference poVertSRS 
)

Setup a compound coordinate system.

This method is the same as the C function OSRSetCompoundCS().

This method is replace the current SRS with a COMPD_CS coordinate system consisting of the passed in horizontal and vertical coordinate systems.

Parameters
pszNamethe name of the compound coordinate system.
poHorizSRSthe horizontal SRS (PROJCS or GEOGCS).
poVertSRSthe vertical SRS (VERT_CS).
Returns
OGRERR_NONE on success.

◆ SetExtension()

OGRErr OGRSpatialReference::SetExtension ( const char *  pszTargetKey,
const char *  pszName,
const char *  pszValue 
)

Set extension value.

Set the value of the named EXTENSION item for the identified target node.

Parameters
pszTargetKeythe name or path to the parent node of the EXTENSION.
pszNamethe name of the extension being fetched.
pszValuethe value to set
Returns
OGRERR_NONE on success

◆ SetFromUserInput()

OGRErr OGRSpatialReference::SetFromUserInput ( const char *  pszDefinition)

Set spatial reference from various text formats.

This method will examine the provided input, and try to deduce the format, and then use it to initialize the spatial reference system. It may take the following forms:

  1. Well Known Text definition - passed on to importFromWkt().
  2. "EPSG:n" - number passed on to importFromEPSG().
  3. "EPSGA:n" - number passed on to importFromEPSGA().
  4. "AUTO:proj_id,unit_id,lon0,lat0" - WMS auto projections.
  5. "urn:ogc:def:crs:EPSG::n" - ogc urns
  6. PROJ.4 definitions - passed on to importFromProj4().
  7. filename - file read for WKT, XML or PROJ.4 definition.
  8. well known name accepted by SetWellKnownGeogCS(), such as NAD27, NAD83, WGS84 or WGS72.
  9. WKT (directly or in a file) in ESRI format should be prefixed with ESRI:: to trigger an automatic morphFromESRI().
  10. "IGNF:xxx" - "+init=IGNF:xxx" passed on to importFromProj4().

It is expected that this method will be extended in the future to support XML and perhaps a simplified "minilanguage" for indicating common UTM and State Plane definitions.

This method is intended to be flexible, but by its nature it is imprecise as it must guess information about the format intended. When possible applications should call the specific method appropriate if the input is known to be in a particular format.

This method does the same thing as the OSRSetFromUserInput() function.

Parameters
pszDefinitiontext definition to try to deduce SRS from.
Returns
OGRERR_NONE on success, or an error code if the name isn't recognised, the definition is corrupt, or an EPSG value can't be successfully looked up.

◆ SetGeocCS()

OGRErr OGRSpatialReference::SetGeocCS ( const char *  pszName)

Set the user visible GEOCCS name.

This method is the same as the C function OSRSetGeocCS().

This method will ensure a GEOCCS node is created as the root, and set the provided name on it. If used on a GEOGCS coordinate system, the DATUM and PRIMEM nodes from the GEOGCS will be transferred over to the GEOGCS.

Parameters
pszNamethe user visible name to assign. Not used as a key.
Returns
OGRERR_NONE on success.
Since
OGR 1.9.0

◆ SetGeogCS()

OGRErr OGRSpatialReference::SetGeogCS ( const char *  pszGeogName,
const char *  pszDatumName,
const char *  pszSpheroidName,
double  dfSemiMajor,
double  dfInvFlattening,
const char *  pszPMName = nullptr,
double  dfPMOffset = 0.0,
const char *  pszAngularUnits = nullptr,
double  dfConvertToRadians = 0.0 
)

Set geographic coordinate system.

This method is used to set the datum, ellipsoid, prime meridian and angular units for a geographic coordinate system. It can be used on its own to establish a geographic spatial reference, or applied to a projected coordinate system to establish the underlying geographic coordinate system.

This method does the same as the C function OSRSetGeogCS().

Parameters
pszGeogNameuser visible name for the geographic coordinate system (not to serve as a key).
pszDatumNamekey name for this datum. The OpenGIS specification lists some known values, and otherwise EPSG datum names with a standard transformation are considered legal keys.
pszSpheroidNameuser visible spheroid name (not to serve as a key)
dfSemiMajorthe semi major axis of the spheroid.
dfInvFlatteningthe inverse flattening for the spheroid. This can be computed from the semi minor axis as 1/f = 1.0 / (1.0 - semiminor/semimajor).
pszPMNamethe name of the prime meridian (not to serve as a key) If this is NULL a default value of "Greenwich" will be used.
dfPMOffsetthe longitude of Greenwich relative to this prime meridian.
pszAngularUnitsthe angular units name (see ogr_srs_api.h for some standard names). If NULL a value of "degrees" will be assumed.
dfConvertToRadiansvalue to multiply angular units by to transform them to radians. A value of SRS_UA_DEGREE_CONV will be used if pszAngularUnits is NULL.
Returns
OGRERR_NONE on success.

◆ SetHOM()

OGRErr OGRSpatialReference::SetHOM ( double  dfCenterLat,
double  dfCenterLong,
double  dfAzimuth,
double  dfRectToSkew,
double  dfScale,
double  dfFalseEasting,
double  dfFalseNorthing 
)

Hotine Oblique Mercator.

Set a Hotine Oblique Mercator projection using azimuth angle.

This projection corresponds to EPSG projection method 9812, also sometimes known as hotine oblique mercator (variant A)..

This method does the same thing as the C function OSRSetHOM().

Parameters
dfCenterLatLatitude of the projection origin.
dfCenterLongLongitude of the projection origin.
dfAzimuthAzimuth, measured clockwise from North, of the projection centerline.
dfRectToSkew?.
dfScaleScale factor applies to the projection origin.
dfFalseEastingFalse easting.
dfFalseNorthingFalse northing.
Returns
OGRERR_NONE on success.

◆ SetHOM2PNO()

OGRErr OGRSpatialReference::SetHOM2PNO ( double  dfCenterLat,
double  dfLat1,
double  dfLong1,
double  dfLat2,
double  dfLong2,
double  dfScale,
double  dfFalseEasting,
double  dfFalseNorthing 
)

Hotine Oblique Mercator 2 points.

Set a Hotine Oblique Mercator projection using two points on projection centerline.

This method does the same thing as the C function OSRSetHOM2PNO().

Parameters
dfCenterLatLatitude of the projection origin.
dfLat1Latitude of the first point on center line.
dfLong1Longitude of the first point on center line.
dfLat2Latitude of the second point on center line.
dfLong2Longitude of the second point on center line.
dfScaleScale factor applies to the projection origin.
dfFalseEastingFalse easting.
dfFalseNorthingFalse northing.
Returns
OGRERR_NONE on success.

◆ SetHOMAC()

OGRErr OGRSpatialReference::SetHOMAC ( double  dfCenterLat,
double  dfCenterLong,
double  dfAzimuth,
double  dfRectToSkew,
double  dfScale,
double  dfFalseEasting,
double  dfFalseNorthing 
)

Hotine Oblique Mercator Azimuth Center / Variant B.

Set an Hotine Oblique Mercator Azimuth Center projection using azimuth angle.

This projection corresponds to EPSG projection method 9815, also sometimes known as hotine oblique mercator (variant B).

This method does the same thing as the C function OSRSetHOMAC().

Parameters
dfCenterLatLatitude of the projection origin.
dfCenterLongLongitude of the projection origin.
dfAzimuthAzimuth, measured clockwise from North, of the projection centerline.
dfRectToSkew?.
dfScaleScale factor applies to the projection origin.
dfFalseEastingFalse easting.
dfFalseNorthingFalse northing.
Returns
OGRERR_NONE on success.

◆ SetKrovak()

OGRErr OGRSpatialReference::SetKrovak ( double  dfCenterLat,
double  dfCenterLong,
double  dfAzimuth,
double  dfPseudoStdParallel1,
double  dfScale,
double  dfFalseEasting,
double  dfFalseNorthing 
)

Krovak Oblique Conic Conformal.

Krovak east-north projection.

Note that dfAzimuth and dfPseudoStdParallel1 are ignored when exporting to PROJ and should be respectively set to 30.28813972222222 and 78.5

◆ SetLinearUnits()

OGRErr OGRSpatialReference::SetLinearUnits ( const char *  pszUnitsName,
double  dfInMeters 
)

Set the linear units for the projection.

This method creates a UNIT subnode with the specified values as a child of the PROJCS, GEOCCS or LOCAL_CS node.

This method does the same as the C function OSRSetLinearUnits().

Parameters
pszUnitsNamethe units name to be used. Some preferred units names can be found in ogr_srs_api.h such as SRS_UL_METER, SRS_UL_FOOT and SRS_UL_US_FOOT.
dfInMetersthe value to multiple by a length in the indicated units to transform to meters. Some standard conversion factors can be found in ogr_srs_api.h.
Returns
OGRERR_NONE on success.

◆ SetLinearUnitsAndUpdateParameters()

OGRErr OGRSpatialReference::SetLinearUnitsAndUpdateParameters ( const char *  pszName,
double  dfInMeters 
)

Set the linear units for the projection.

This method creates a UNIT subnode with the specified values as a child of the PROJCS or LOCAL_CS node. It works the same as the SetLinearUnits() method, but it also updates all existing linear projection parameter values from the old units to the new units.

Parameters
pszNamethe units name to be used. Some preferred units names can be found in ogr_srs_api.h such as SRS_UL_METER, SRS_UL_FOOT and SRS_UL_US_FOOT.
dfInMetersthe value to multiple by a length in the indicated units to transform to meters. Some standard conversion factors can be found in ogr_srs_api.h.
Returns
OGRERR_NONE on success.

◆ SetLocalCS()

OGRErr OGRSpatialReference::SetLocalCS ( const char *  pszName)

Set the user visible LOCAL_CS name.

This method is the same as the C function OSRSetLocalCS().

This method will ensure a LOCAL_CS node is created as the root, and set the provided name on it. It must be used before SetLinearUnits().

Parameters
pszNamethe user visible name to assign. Not used as a key.
Returns
OGRERR_NONE on success.

◆ SetNode() [1/2]

OGRErr OGRSpatialReference::SetNode ( const char *  pszNodePath,
const char *  pszNewNodeValue 
)

Set attribute value in spatial reference.

Missing intermediate nodes in the path will be created if not already in existence. If the attribute has no children one will be created and assigned the value otherwise the zeroth child will be assigned the value.

This method does the same as the C function OSRSetAttrValue().

Parameters
pszNodePathfull path to attribute to be set. For instance "PROJCS|GEOGCS|UNIT".
pszNewNodeValuevalue to be assigned to node, such as "meter". This may be NULL if you just want to force creation of the intermediate path.
Returns
OGRERR_NONE on success.

◆ SetNode() [2/2]

OGRErr OGRSpatialReference::SetNode ( const char *  pszNodePath,
double  dfValue 
)

Set attribute value in spatial reference.

Missing intermediate nodes in the path will be created if not already in existence. If the attribute has no children one will be created and assigned the value otherwise the zeroth child will be assigned the value.

This method does the same as the C function OSRSetAttrValue().

Parameters
pszNodePathfull path to attribute to be set. For instance "PROJCS|GEOGCS|UNIT".
dfValuevalue to be assigned to node.
Returns
OGRERR_NONE on success.

◆ SetNormProjParm()

OGRErr OGRSpatialReference::SetNormProjParm ( const char *  pszName,
double  dfValue 
)

Set a projection parameter with a normalized value.

This method is the same as SetProjParm() except that the value of the parameter passed in is assumed to be in "normalized" form (decimal degrees for angular values, meters for linear values. The values are converted in a form suitable for the GEOGCS and linear units in effect.

This method is the same as the C function OSRSetNormProjParm().

Parameters
pszNamethe parameter name, which should be selected from the macros in ogr_srs_api.h, such as SRS_PP_CENTRAL_MERIDIAN.
dfValuevalue to assign.
Returns
OGRERR_NONE on success.

◆ SetProjCS()

OGRErr OGRSpatialReference::SetProjCS ( const char *  pszName)

Set the user visible PROJCS name.

This method is the same as the C function OSRSetProjCS().

This method will ensure a PROJCS node is created as the root, and set the provided name on it. If used on a GEOGCS coordinate system, the GEOGCS node will be demoted to be a child of the new PROJCS root.

Parameters
pszNamethe user visible name to assign. Not used as a key.
Returns
OGRERR_NONE on success.

◆ SetProjection()

OGRErr OGRSpatialReference::SetProjection ( const char *  pszProjection)

Set a projection name.

This method is the same as the C function OSRSetProjection().

Parameters
pszProjectionthe projection name, which should be selected from the macros in ogr_srs_api.h, such as SRS_PT_TRANSVERSE_MERCATOR.
Returns
OGRERR_NONE on success.

◆ SetProjParm()

OGRErr OGRSpatialReference::SetProjParm ( const char *  pszParmName,
double  dfValue 
)

Set a projection parameter value.

Adds a new PARAMETER under the PROJCS with the indicated name and value.

This method is the same as the C function OSRSetProjParm().

Please check http://www.remotesensing.org/geotiff/proj_list pages for legal parameter names for specific projections.

Parameters
pszParmNamethe parameter name, which should be selected from the macros in ogr_srs_api.h, such as SRS_PP_CENTRAL_MERIDIAN.
dfValuevalue to assign.
Returns
OGRERR_NONE on success.

◆ SetRoot()

void OGRSpatialReference::SetRoot ( OGR_SRSNode poNewRoot)

Set the root SRS node.

If the object has an existing tree of OGR_SRSNodes, they are destroyed as part of assigning the new root. Ownership of the passed OGR_SRSNode is is assumed by the OGRSpatialReference.

Parameters
poNewRootobject to assign as root.

◆ SetStatePlane()

OGRErr OGRSpatialReference::SetStatePlane ( int  nZone,
int  bNAD83 = TRUE,
const char *  pszOverrideUnitName = nullptr,
double  dfOverrideUnit = 0.0 
)

State Plane.

Set State Plane projection definition.

This will attempt to generate a complete definition of a state plane zone based on generating the entire SRS from the EPSG tables. If the EPSG tables are unavailable, it will produce a stubbed LOCAL_CS definition and return OGRERR_FAILURE.

This method is the same as the C function OSRSetStatePlaneWithUnits().

Parameters
nZoneState plane zone number, in the USGS numbering scheme (as distinct from the Arc/Info and Erdas numbering scheme.
bNAD83TRUE if the NAD83 zone definition should be used or FALSE if the NAD27 zone definition should be used.
pszOverrideUnitNameLinear unit name to apply overriding the legal definition for this zone.
dfOverrideUnitLinear unit conversion factor to apply overriding the legal definition for this zone.
Returns
OGRERR_NONE on success, or OGRERR_FAILURE on failure, mostly likely due to the EPSG tables not being accessible.

◆ SetTargetLinearUnits()

OGRErr OGRSpatialReference::SetTargetLinearUnits ( const char *  pszTargetKey,
const char *  pszUnitsName,
double  dfInMeters 
)

Set the linear units for the projection.

This method creates a UNIT subnode with the specified values as a child of the target node.

This method does the same as the C function OSRSetTargetLinearUnits().

Parameters
pszTargetKeythe keyword to set the linear units for. i.e. "PROJCS" or "VERT_CS"
pszUnitsNamethe units name to be used. Some preferred units names can be found in ogr_srs_api.h such as SRS_UL_METER, SRS_UL_FOOT and SRS_UL_US_FOOT.
dfInMetersthe value to multiple by a length in the indicated units to transform to meters. Some standard conversion factors can be found in ogr_srs_api.h.
Returns
OGRERR_NONE on success.
Since
OGR 1.9.0

◆ SetTMVariant()

OGRErr OGRSpatialReference::SetTMVariant ( const char *  pszVariantName,
double  dfCenterLat,
double  dfCenterLong,
double  dfScale,
double  dfFalseEasting,
double  dfFalseNorthing 
)

Transverse Mercator variants.

◆ SetTOWGS84()

OGRErr OGRSpatialReference::SetTOWGS84 ( double  dfDX,
double  dfDY,
double  dfDZ,
double  dfEX = 0.0,
double  dfEY = 0.0,
double  dfEZ = 0.0,
double  dfPPM = 0.0 
)

Set the Bursa-Wolf conversion to WGS84.

This will create the TOWGS84 node as a child of the DATUM. It will fail if there is no existing DATUM node. Unlike most OGRSpatialReference methods it will insert itself in the appropriate order, and will replace an existing TOWGS84 node if there is one.

The parameters have the same meaning as EPSG transformation 9606 (Position Vector 7-param. transformation).

This method is the same as the C function OSRSetTOWGS84().

Parameters
dfDXX child in meters.
dfDYY child in meters.
dfDZZ child in meters.
dfEXX rotation in arc seconds (optional, defaults to zero).
dfEYY rotation in arc seconds (optional, defaults to zero).
dfEZZ rotation in arc seconds (optional, defaults to zero).
dfPPMscaling factor (parts per million).
Returns
OGRERR_NONE on success.

◆ SetUTM()

OGRErr OGRSpatialReference::SetUTM ( int  nZone,
int  bNorth = TRUE 
)

Universal Transverse Mercator.

Set UTM projection definition.

This will generate a projection definition with the full set of transverse mercator projection parameters for the given UTM zone. If no PROJCS[] description is set yet, one will be set to look like "UTM Zone %d, {Northern, Southern} Hemisphere".

This method is the same as the C function OSRSetUTM().

Parameters
nZoneUTM zone.
bNorthTRUE for northern hemisphere, or FALSE for southern hemisphere.
Returns
OGRERR_NONE on success.

◆ SetVertCS()

OGRErr OGRSpatialReference::SetVertCS ( const char *  pszVertCSName,
const char *  pszVertDatumName,
int  nVertDatumType = 2005 
)

Set the user visible VERT_CS name.

This method is the same as the C function OSRSetVertCS().

This method will ensure a VERT_CS node is created if needed. If the existing coordinate system is GEOGCS or PROJCS rooted, then it will be turned into a COMPD_CS.

Parameters
pszVertCSNamethe user visible name of the vertical coordinate system. Not used as a key.
pszVertDatumNamethe user visible name of the vertical datum. It is helpful if this matches the EPSG name.
nVertDatumTypethe OGC vertical datum type, usually 2005.
Returns
OGRERR_NONE on success.
Since
OGR 1.9.0

◆ SetWellKnownGeogCS()

OGRErr OGRSpatialReference::SetWellKnownGeogCS ( const char *  pszName)

Set a GeogCS based on well known name.

This may be called on an empty OGRSpatialReference to make a geographic coordinate system, or on something with an existing PROJCS node to set the underlying geographic coordinate system of a projected coordinate system.

The following well known text values are currently supported:

  • "WGS84": same as "EPSG:4326" but has no dependence on EPSG data files.
  • "WGS72": same as "EPSG:4322" but has no dependence on EPSG data files.
  • "NAD27": same as "EPSG:4267" but has no dependence on EPSG data files.
  • "NAD83": same as "EPSG:4269" but has no dependence on EPSG data files.
  • "EPSG:n": where n is the code a Geographic coordinate reference system.
Parameters
pszNamename of well known geographic coordinate system.
Returns
OGRERR_NONE on success, or OGRERR_FAILURE if the name isn't recognised, the target object is already initialized, or an EPSG value can't be successfully looked up.

◆ StripCTParms()

OGRErr OGRSpatialReference::StripCTParms ( OGR_SRSNode poCurrent = nullptr)

Strip OGC CT Parameters.

This method will remove all components of the coordinate system that are specific to the OGC CT Specification. That is it will attempt to strip it down to being compatible with the Simple Features 1.0 specification.

This method is the same as the C function OSRStripCTParms().

Parameters
poCurrentnode to operate on. NULL to operate on whole tree.
Returns
OGRERR_NONE on success or an error code.

◆ StripVertical()

OGRErr OGRSpatialReference::StripVertical ( )

Convert a compound cs into a horizontal CS.

If this SRS is of type COMPD_CS[] then the vertical CS and the root COMPD_CS nodes are stripped resulting and only the horizontal coordinate system portion remains (normally PROJCS, GEOGCS or LOCAL_CS).

If this is not a compound coordinate system then nothing is changed.

Since
OGR 1.8.0

◆ ToHandle()

static OGRSpatialReferenceH OGRSpatialReference::ToHandle ( OGRSpatialReference poSRS)
inlinestatic

Convert a OGRSpatialReference* to a OGRSpatialReferenceH.

Since
GDAL 2.3

◆ Validate()

OGRErr OGRSpatialReference::Validate ( ) const

Validate SRS tokens.

This method attempts to verify that the spatial reference system is well formed, and consists of known tokens. The validation is not comprehensive.

This method is the same as the C function OSRValidate().

Returns
OGRERR_NONE if all is fine, OGRERR_CORRUPT_DATA if the SRS is not well formed, and OGRERR_UNSUPPORTED_SRS if the SRS is well formed, but contains non-standard PROJECTION[] values.

The documentation for this class was generated from the following files:

Generated for GDAL by doxygen 1.8.13.