GDAL
ogr_spatialref.h
Go to the documentation of this file.
1 /******************************************************************************
2  * $Id$
3  *
4  * Project: OpenGIS Simple Features Reference Implementation
5  * Purpose: Classes for manipulating spatial reference systems in a
6  * platform non-specific manner.
7  * Author: Frank Warmerdam, warmerdam@pobox.com
8  *
9  ******************************************************************************
10  * Copyright (c) 1999, Les Technologies SoftMap Inc.
11  * Copyright (c) 2008-2013, Even Rouault <even dot rouault at mines-paris dot org>
12  *
13  * Permission is hereby granted, free of charge, to any person obtaining a
14  * copy of this software and associated documentation files (the "Software"),
15  * to deal in the Software without restriction, including without limitation
16  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
17  * and/or sell copies of the Software, and to permit persons to whom the
18  * Software is furnished to do so, subject to the following conditions:
19  *
20  * The above copyright notice and this permission notice shall be included
21  * in all copies or substantial portions of the Software.
22  *
23  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
29  * DEALINGS IN THE SOFTWARE.
30  ****************************************************************************/
31 
32 #ifndef OGR_SPATIALREF_H_INCLUDED
33 #define OGR_SPATIALREF_H_INCLUDED
34 
35 #include "cpl_string.h"
36 #include "ogr_srs_api.h"
37 
38 #include <map>
39 #include <vector>
40 
47 /************************************************************************/
48 /* OGR_SRSNode */
49 /************************************************************************/
50 
64 class CPL_DLL OGR_SRSNode
65 {
66  char *pszValue;
67 
68  OGR_SRSNode **papoChildNodes;
69  OGR_SRSNode *poParent;
70 
71  int nChildren;
72 
73  int NeedsQuoting() const;
74  OGRErr importFromWkt( char **, int nRecLevel, int* pnNodes );
75 
76  public:
77  explicit OGR_SRSNode(const char * = nullptr);
78  ~OGR_SRSNode();
79 
83  int IsLeafNode() const { return nChildren == 0; }
84 
85  int GetChildCount() const { return nChildren; }
86  OGR_SRSNode *GetChild( int );
87  const OGR_SRSNode *GetChild( int ) const;
88 
89  OGR_SRSNode *GetNode( const char * );
90  const OGR_SRSNode *GetNode( const char * ) const;
91 
92  void InsertChild( OGR_SRSNode *, int );
93  void AddChild( OGR_SRSNode * );
94  int FindChild( const char * ) const;
95  void DestroyChild( int );
96  void ClearChildren();
97  void StripNodes( const char * );
98 
99  const char *GetValue() const { return pszValue; }
100  void SetValue( const char * );
101 
102  void MakeValueSafe();
103  OGRErr FixupOrdering();
104 
105  OGR_SRSNode *Clone() const;
106 
107  OGRErr importFromWkt( char ** );
108  OGRErr exportToWkt( char ** ) const;
109  OGRErr exportToPrettyWkt( char **, int = 1) const;
110 
111  OGRErr applyRemapper( const char *pszNode,
112  char **papszSrcValues,
113  char **papszDstValues,
114  int nStepSize = 1,
115  int bChildOfHit = FALSE );
116 };
117 
118 /************************************************************************/
119 /* OGRSpatialReference */
120 /************************************************************************/
121 
139 class CPL_DLL OGRSpatialReference
140 {
141  double dfFromGreenwich;
142  double dfToMeter;
143  double dfToDegrees;
144 
145  OGR_SRSNode *poRoot;
146 
147  int nRefCount;
148  int bNormInfoSet;
149 
150  static OGRErr Validate(OGR_SRSNode *poRoot);
151  static OGRErr ValidateAuthority(OGR_SRSNode *poRoot);
152  static OGRErr ValidateAxis(OGR_SRSNode *poRoot);
153  static OGRErr ValidateUnit(OGR_SRSNode *poRoot);
154  static OGRErr ValidateVertDatum(OGR_SRSNode *poRoot);
155  static OGRErr ValidateProjection( OGR_SRSNode* poRoot );
156  static int IsAliasFor( const char *, const char * );
157  void GetNormInfo() const;
158 
159  OGRErr importFromURNPart(const char* pszAuthority,
160  const char* pszCode,
161  const char* pszURN);
162 
163  OGRErr importFromEPSGAInternal(int nCode,
164  const char* pszSRSType);
165 
166  static const std::vector<OGRSpatialReference*>* GetSRSCache(
167  const char* pszSRSType,
168  const std::map<CPLString, int>*& poMapESRICSNameToCodeOut);
169 
170  public:
172  explicit OGRSpatialReference(const char * = nullptr);
173 
174  virtual ~OGRSpatialReference();
175 
176  static void DestroySpatialReference(OGRSpatialReference* poSRS);
177 
178  OGRSpatialReference &operator=(const OGRSpatialReference&);
179 
180  int Reference();
181  int Dereference();
182  int GetReferenceCount() const { return nRefCount; }
183  void Release();
184 
185  OGRSpatialReference *Clone() const;
186  OGRSpatialReference *CloneGeogCS() const;
187 
188  void dumpReadable();
189  OGRErr exportToWkt( char ** ) const;
190  OGRErr exportToPrettyWkt( char **, int = FALSE) const;
191  OGRErr exportToProj4( char ** ) const;
192  OGRErr exportToPCI( char **, char **, double ** ) const;
193  OGRErr exportToUSGS( long *, long *, double **, long * ) const;
194  OGRErr exportToXML( char **, const char * = nullptr ) const;
195  OGRErr exportToPanorama( long *, long *, long *, long *,
196  double * ) const;
197  OGRErr exportToERM( char *pszProj, char *pszDatum, char *pszUnits );
198  OGRErr exportToMICoordSys( char ** ) const;
199 
200  OGRErr importFromWkt( char ** );
201  OGRErr importFromWkt( const char* );
202  OGRErr importFromProj4( const char * );
203  OGRErr importFromEPSG( int );
204  OGRErr importFromEPSGA( int );
205  OGRErr importFromESRI( char ** );
206  OGRErr importFromPCI( const char *, const char * = nullptr,
207  double * = nullptr );
208 
209 #define USGS_ANGLE_DECIMALDEGREES 0
210 #define USGS_ANGLE_PACKEDDMS TRUE
211 #define USGS_ANGLE_RADIANS 2
212  OGRErr importFromUSGS( long iProjSys, long iZone,
213  double *padfPrjParams, long iDatum,
214  int nUSGSAngleFormat = USGS_ANGLE_PACKEDDMS );
215  OGRErr importFromPanorama( long, long, long, double* );
216  OGRErr importFromOzi( const char * const* papszLines );
217  OGRErr importFromWMSAUTO( const char *pszAutoDef );
218  OGRErr importFromXML( const char * );
219  OGRErr importFromDict( const char *pszDict, const char *pszCode );
220  OGRErr importFromURN( const char * );
221  OGRErr importFromCRSURL( const char * );
222  OGRErr importFromERM( const char *pszProj, const char *pszDatum,
223  const char *pszUnits );
224  OGRErr importFromUrl( const char * );
225  OGRErr importFromMICoordSys( const char * );
226 
227  OGRErr morphToESRI();
228  OGRErr morphFromESRI();
229 
230  OGRSpatialReference* convertToOtherProjection(
231  const char* pszTargetProjection,
232  const char* const* papszOptions = nullptr ) const;
233 
234  OGRErr Validate();
235  OGRErr StripCTParms( OGR_SRSNode * = nullptr );
236  OGRErr StripVertical();
237  OGRErr FixupOrdering();
238  OGRErr Fixup();
239 
240  int EPSGTreatsAsLatLong();
241  int EPSGTreatsAsNorthingEasting();
242  const char *GetAxis( const char *pszTargetKey, int iAxis,
243  OGRAxisOrientation *peOrientation ) const;
244  OGRErr SetAxes( const char *pszTargetKey,
245  const char *pszXAxisName,
246  OGRAxisOrientation eXAxisOrientation,
247  const char *pszYAxisName,
248  OGRAxisOrientation eYAxisOrientation );
249 
250  // Machinery for accessing parse nodes
251 
253  OGR_SRSNode *GetRoot() { return poRoot; }
255  const OGR_SRSNode *GetRoot() const { return poRoot; }
256  void SetRoot( OGR_SRSNode * );
257 
258  OGR_SRSNode *GetAttrNode(const char *);
259  const OGR_SRSNode *GetAttrNode(const char *) const;
260  const char *GetAttrValue(const char *, int = 0) const;
261 
262  OGRErr SetNode( const char *, const char * );
263  OGRErr SetNode( const char *, double );
264 
265  OGRErr SetLinearUnitsAndUpdateParameters( const char *pszName,
266  double dfInMeters );
267  OGRErr SetLinearUnits( const char *pszName, double dfInMeters );
268  OGRErr SetTargetLinearUnits( const char *pszTargetKey,
269  const char *pszName, double dfInMeters );
270  double GetLinearUnits( char ** = nullptr ) const;
271  double GetTargetLinearUnits( const char *pszTargetKey,
272  char ** ppszRetName = nullptr ) const;
273 
274  OGRErr SetAngularUnits( const char *pszName, double dfInRadians );
275  double GetAngularUnits( char ** = nullptr ) const;
276 
277  double GetPrimeMeridian( char ** = nullptr ) const;
278 
279  int IsGeographic() const;
280  int IsProjected() const;
281  int IsGeocentric() const;
282  int IsLocal() const;
283  int IsVertical() const;
284  int IsCompound() const;
285  int IsSameGeogCS( const OGRSpatialReference * ) const;
286  int IsSameGeogCS( const OGRSpatialReference *,
287  const char* const * papszOptions ) const;
288  int IsSameVertCS( const OGRSpatialReference * ) const;
289  int IsSame( const OGRSpatialReference * ) const;
290  int IsSame( const OGRSpatialReference *,
291  const char* const * papszOptions ) const;
292 
293  void Clear();
294  OGRErr SetLocalCS( const char * );
295  OGRErr SetProjCS( const char * );
296  OGRErr SetProjection( const char * );
297  OGRErr SetGeocCS( const char * pszGeocName );
298  OGRErr SetGeogCS( const char * pszGeogName,
299  const char * pszDatumName,
300  const char * pszEllipsoidName,
301  double dfSemiMajor, double dfInvFlattening,
302  const char * pszPMName = nullptr,
303  double dfPMOffset = 0.0,
304  const char * pszUnits = nullptr,
305  double dfConvertToRadians = 0.0 );
306  OGRErr SetWellKnownGeogCS( const char * );
307  OGRErr CopyGeogCSFrom( const OGRSpatialReference * poSrcSRS );
308  OGRErr SetVertCS( const char *pszVertCSName,
309  const char *pszVertDatumName,
310  int nVertDatumClass = 2005 );
311  OGRErr SetCompoundCS( const char *pszName,
312  const OGRSpatialReference *poHorizSRS,
313  const OGRSpatialReference *poVertSRS );
314 
315  OGRErr SetFromUserInput( const char * );
316 
317  OGRErr SetTOWGS84( double, double, double,
318  double = 0.0, double = 0.0, double = 0.0,
319  double = 0.0 );
320  OGRErr GetTOWGS84( double *padfCoef, int nCoeff = 7 ) const;
321 
322  double GetSemiMajor( OGRErr * = nullptr ) const;
323  double GetSemiMinor( OGRErr * = nullptr ) const;
324  double GetInvFlattening( OGRErr * = nullptr ) const;
325  double GetEccentricity() const;
326  double GetSquaredEccentricity() const;
327 
328  OGRErr SetAuthority( const char * pszTargetKey,
329  const char * pszAuthority,
330  int nCode );
331 
332  OGRErr AutoIdentifyEPSG();
333  OGRSpatialReferenceH* FindMatches( char** papszOptions,
334  int* pnEntries,
335  int** ppanMatchConfidence ) const;
336 
337  int GetEPSGGeogCS();
338 
339  const char *GetAuthorityCode( const char * pszTargetKey ) const;
340  const char *GetAuthorityName( const char * pszTargetKey ) const;
341 
342  const char *GetExtension( const char *pszTargetKey,
343  const char *pszName,
344  const char *pszDefault = nullptr ) const;
345  OGRErr SetExtension( const char *pszTargetKey,
346  const char *pszName,
347  const char *pszValue );
348 
349  int FindProjParm( const char *pszParameter,
350  const OGR_SRSNode *poPROJCS=nullptr ) const;
351  OGRErr SetProjParm( const char *, double );
352  double GetProjParm( const char *, double =0.0, OGRErr* = nullptr ) const;
353 
354  OGRErr SetNormProjParm( const char *, double );
355  double GetNormProjParm( const char *, double=0.0, OGRErr* =nullptr)const;
356 
357  static int IsAngularParameter( const char * );
358  static int IsLongitudeParameter( const char * );
359  static int IsLinearParameter( const char * );
360 
362  OGRErr SetACEA( double dfStdP1, double dfStdP2,
363  double dfCenterLat, double dfCenterLong,
364  double dfFalseEasting, double dfFalseNorthing );
365 
367  OGRErr SetAE( double dfCenterLat, double dfCenterLong,
368  double dfFalseEasting, double dfFalseNorthing );
369 
371  OGRErr SetBonne( double dfStdP1, double dfCentralMeridian,
372  double dfFalseEasting, double dfFalseNorthing );
373 
375  OGRErr SetCEA( double dfStdP1, double dfCentralMeridian,
376  double dfFalseEasting, double dfFalseNorthing );
377 
379  OGRErr SetCS( double dfCenterLat, double dfCenterLong,
380  double dfFalseEasting, double dfFalseNorthing );
381 
383  OGRErr SetEC( double dfStdP1, double dfStdP2,
384  double dfCenterLat, double dfCenterLong,
385  double dfFalseEasting, double dfFalseNorthing );
386 
388  OGRErr SetEckert( int nVariation, double dfCentralMeridian,
389  double dfFalseEasting, double dfFalseNorthing );
390 
392  OGRErr SetEckertIV( double dfCentralMeridian,
393  double dfFalseEasting, double dfFalseNorthing );
394 
396  OGRErr SetEckertVI( double dfCentralMeridian,
397  double dfFalseEasting, double dfFalseNorthing );
398 
400  OGRErr SetEquirectangular(double dfCenterLat, double dfCenterLong,
401  double dfFalseEasting, double dfFalseNorthing );
403  OGRErr SetEquirectangular2( double dfCenterLat, double dfCenterLong,
404  double dfPseudoStdParallel1,
405  double dfFalseEasting, double dfFalseNorthing );
406 
408  OGRErr SetGEOS( double dfCentralMeridian, double dfSatelliteHeight,
409  double dfFalseEasting, double dfFalseNorthing );
410 
412  OGRErr SetGH( double dfCentralMeridian,
413  double dfFalseEasting, double dfFalseNorthing );
414 
416  OGRErr SetIGH();
417 
419  OGRErr SetGS( double dfCentralMeridian,
420  double dfFalseEasting, double dfFalseNorthing );
421 
423  OGRErr SetGaussSchreiberTMercator(double dfCenterLat, double dfCenterLong,
424  double dfScale,
425  double dfFalseEasting, double dfFalseNorthing );
426 
428  OGRErr SetGnomonic(double dfCenterLat, double dfCenterLong,
429  double dfFalseEasting, double dfFalseNorthing );
430 
432  OGRErr SetHOM( double dfCenterLat, double dfCenterLong,
433  double dfAzimuth, double dfRectToSkew,
434  double dfScale,
435  double dfFalseEasting, double dfFalseNorthing );
436 
438  OGRErr SetHOM2PNO( double dfCenterLat,
439  double dfLat1, double dfLong1,
440  double dfLat2, double dfLong2,
441  double dfScale,
442  double dfFalseEasting, double dfFalseNorthing );
443 
444 #ifdef undef
445 
446  OGRErr SetOM( double dfCenterLat, double dfCenterLong,
447  double dfAzimuth, double dfRectToSkew,
448  double dfScale,
449  double dfFalseEasting, double dfFalseNorthing );
450 #endif
451 
453  OGRErr SetHOMAC( double dfCenterLat, double dfCenterLong,
454  double dfAzimuth, double dfRectToSkew,
455  double dfScale,
456  double dfFalseEasting, double dfFalseNorthing );
457 
459  OGRErr SetIWMPolyconic( double dfLat1, double dfLat2,
460  double dfCenterLong,
461  double dfFalseEasting,
462  double dfFalseNorthing );
463 
465  OGRErr SetKrovak( double dfCenterLat, double dfCenterLong,
466  double dfAzimuth, double dfPseudoStdParallelLat,
467  double dfScale,
468  double dfFalseEasting, double dfFalseNorthing );
469 
471  OGRErr SetLAEA( double dfCenterLat, double dfCenterLong,
472  double dfFalseEasting, double dfFalseNorthing );
473 
475  OGRErr SetLCC( double dfStdP1, double dfStdP2,
476  double dfCenterLat, double dfCenterLong,
477  double dfFalseEasting, double dfFalseNorthing );
478 
480  OGRErr SetLCC1SP( double dfCenterLat, double dfCenterLong,
481  double dfScale,
482  double dfFalseEasting, double dfFalseNorthing );
483 
485  OGRErr SetLCCB( double dfStdP1, double dfStdP2,
486  double dfCenterLat, double dfCenterLong,
487  double dfFalseEasting, double dfFalseNorthing );
488 
490  OGRErr SetMC( double dfCenterLat, double dfCenterLong,
491  double dfFalseEasting, double dfFalseNorthing );
492 
494  OGRErr SetMercator( double dfCenterLat, double dfCenterLong,
495  double dfScale,
496  double dfFalseEasting, double dfFalseNorthing );
497 
499  OGRErr SetMercator2SP( double dfStdP1,
500  double dfCenterLat, double dfCenterLong,
501  double dfFalseEasting, double dfFalseNorthing );
502 
504  OGRErr SetMollweide( double dfCentralMeridian,
505  double dfFalseEasting, double dfFalseNorthing );
506 
508  OGRErr SetNZMG( double dfCenterLat, double dfCenterLong,
509  double dfFalseEasting, double dfFalseNorthing );
510 
512  OGRErr SetOS( double dfOriginLat, double dfCMeridian,
513  double dfScale,
514  double dfFalseEasting,double dfFalseNorthing);
515 
517  OGRErr SetOrthographic( double dfCenterLat, double dfCenterLong,
518  double dfFalseEasting,double dfFalseNorthing);
519 
521  OGRErr SetPolyconic( double dfCenterLat, double dfCenterLong,
522  double dfFalseEasting, double dfFalseNorthing );
523 
525  OGRErr SetPS( double dfCenterLat, double dfCenterLong,
526  double dfScale,
527  double dfFalseEasting, double dfFalseNorthing);
528 
530  OGRErr SetRobinson( double dfCenterLong,
531  double dfFalseEasting, double dfFalseNorthing );
532 
534  OGRErr SetSinusoidal( double dfCenterLong,
535  double dfFalseEasting, double dfFalseNorthing );
536 
538  OGRErr SetStereographic( double dfCenterLat, double dfCenterLong,
539  double dfScale,
540  double dfFalseEasting,double dfFalseNorthing);
541 
543  OGRErr SetSOC( double dfLatitudeOfOrigin, double dfCentralMeridian,
544  double dfFalseEasting, double dfFalseNorthing );
545 
547  OGRErr SetTM( double dfCenterLat, double dfCenterLong,
548  double dfScale,
549  double dfFalseEasting, double dfFalseNorthing );
550 
552  OGRErr SetTMVariant( const char *pszVariantName,
553  double dfCenterLat, double dfCenterLong,
554  double dfScale,
555  double dfFalseEasting, double dfFalseNorthing );
556 
558  OGRErr SetTMG( double dfCenterLat, double dfCenterLong,
559  double dfFalseEasting, double dfFalseNorthing );
560 
562  OGRErr SetTMSO( double dfCenterLat, double dfCenterLong,
563  double dfScale,
564  double dfFalseEasting, double dfFalseNorthing );
565 
567  OGRErr SetTPED( double dfLat1, double dfLong1,
568  double dfLat2, double dfLong2,
569  double dfFalseEasting, double dfFalseNorthing );
570 
572  OGRErr SetVDG( double dfCenterLong,
573  double dfFalseEasting, double dfFalseNorthing );
574 
576  OGRErr SetUTM( int nZone, int bNorth = TRUE );
577  int GetUTMZone( int *pbNorth = nullptr ) const;
578 
580  OGRErr SetWagner( int nVariation, double dfCenterLat,
581  double dfFalseEasting, double dfFalseNorthing );
582 
584  OGRErr SetQSC(double dfCenterLat, double dfCenterLong);
585 
587  OGRErr SetSCH( double dfPegLat, double dfPegLong,
588  double dfPegHeading, double dfPegHgt);
590  OGRErr SetStatePlane( int nZone, int bNAD83 = TRUE,
591  const char *pszOverrideUnitName = nullptr,
592  double dfOverrideUnit = 0.0 );
593 
595  OGRErr ImportFromESRIStatePlaneWKT(
596  int nCode, const char* pszDatumName, const char* pszUnitsName,
597  int nPCSCode, const char* pszCSName = nullptr );
598 
600  OGRErr ImportFromESRIWisconsinWKT(
601  const char* pszPrjName, double dfCentralMeridian, double dfLatOfOrigin,
602  const char* pszUnitsName, const char* pszCSName = nullptr );
603 
604  static OGRSpatialReference* GetWGS84SRS();
605 
610  { return reinterpret_cast<OGRSpatialReferenceH>(poSRS); }
611 
616  { return reinterpret_cast<OGRSpatialReference*>(hSRS); }
617 
618 };
619 
620 /************************************************************************/
621 /* OGRCoordinateTransformation */
622 /* */
623 /* This is really just used as a base class for a private */
624 /* implementation. */
625 /************************************************************************/
626 
637 {
638 public:
639  virtual ~OGRCoordinateTransformation() {}
640 
641  static void DestroyCT(OGRCoordinateTransformation* poCT);
642 
643  // From CT_CoordinateTransformation
644 
646  virtual OGRSpatialReference *GetSourceCS() = 0;
647 
649  virtual OGRSpatialReference *GetTargetCS() = 0;
650 
652  virtual bool GetEmitErrors() { return false; }
653 
655  virtual void SetEmitErrors(bool /*bEmitErrors*/) {}
656 
657  // From CT_MathTransform
658 
674  virtual int Transform( int nCount,
675  double *x, double *y, double *z = nullptr ) = 0;
676 
692  virtual int TransformEx( int nCount,
693  double *x, double *y, double *z = nullptr,
694  int *pabSuccess = nullptr ) = 0;
695 
700  { return reinterpret_cast<OGRCoordinateTransformationH>(poCT); }
701 
706  { return reinterpret_cast<OGRCoordinateTransformation*>(hCT); }
707 };
708 
711  OGRSpatialReference *poTarget );
712 
713 #endif /* ndef OGR_SPATIALREF_H_INCLUDED */
static OGRCoordinateTransformationH ToHandle(OGRCoordinateTransformation *poCT)
Convert a OGRCoordinateTransformation* to a OGRCoordinateTransformationH.
Definition: ogr_spatialref.h:699
virtual void SetEmitErrors(bool)
Set if the transformer must emit CPLError.
Definition: ogr_spatialref.h:655
OGRCoordinateTransformation * OGRCreateCoordinateTransformation(OGRSpatialReference *poSource, OGRSpatialReference *poTarget)
Create transformation object.
Definition: ogrct.cpp:493
Objects of this class are used to represent value nodes in the parsed representation of the WKT SRS f...
Definition: ogr_spatialref.h:64
int IsLeafNode() const
Return whether this is a leaf node.
Definition: ogr_spatialref.h:83
const char * GetValue() const
Fetch value string for this node.
Definition: ogr_spatialref.h:99
Various convenience functions for working with strings and string lists.
void * OGRCoordinateTransformationH
Opaque type for a coordinate transformation object.
Definition: ogr_api.h:76
#define USGS_ANGLE_PACKEDDMS
Angle is in packed degree minute second.
Definition: ogr_spatialref.h:210
OGR_SRSNode * GetRoot()
Return root node.
Definition: ogr_spatialref.h:253
void * OGRSpatialReferenceH
Opaque type for a spatial reference system.
Definition: ogr_api.h:74
C spatial reference system services and defines.
OGRAxisOrientation
Axis orientations (corresponds to CS_AxisOrientationEnum).
Definition: ogr_srs_api.h:48
virtual bool GetEmitErrors()
Whether the transformer will emit CPLError.
Definition: ogr_spatialref.h:652
This class represents an OpenGIS Spatial Reference System, and contains methods for converting betwee...
Definition: ogr_spatialref.h:139
static OGRSpatialReferenceH ToHandle(OGRSpatialReference *poSRS)
Convert a OGRSpatialReference* to a OGRSpatialReferenceH.
Definition: ogr_spatialref.h:609
static OGRSpatialReference * FromHandle(OGRSpatialReferenceH hSRS)
Convert a OGRSpatialReferenceH to a OGRSpatialReference*.
Definition: ogr_spatialref.h:615
static OGRCoordinateTransformation * FromHandle(OGRCoordinateTransformationH hCT)
Convert a OGRCoordinateTransformationH to a OGRCoordinateTransformation*.
Definition: ogr_spatialref.h:705
int GetReferenceCount() const
Fetch current reference count.
Definition: ogr_spatialref.h:182
Interface for transforming between coordinate systems.
Definition: ogr_spatialref.h:636
const OGR_SRSNode * GetRoot() const
Return root node.
Definition: ogr_spatialref.h:255
int OGRErr
Simple container for a bounding region.
Definition: ogr_core.h:290
int GetChildCount() const
Get number of children nodes.
Definition: ogr_spatialref.h:85

Generated for GDAL by doxygen 1.8.8.