GDAL
ogr_spatialref.h
Go to the documentation of this file.
1 /******************************************************************************
2  * $Id: ogr_spatialref.h 41226 2018-01-08 17:38:41Z rouault $
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 
136 class CPL_DLL OGRSpatialReference
137 {
138  double dfFromGreenwich;
139  double dfToMeter;
140  double dfToDegrees;
141 
142  OGR_SRSNode *poRoot;
143 
144  int nRefCount;
145  int bNormInfoSet;
146 
147  static OGRErr Validate(OGR_SRSNode *poRoot);
148  static OGRErr ValidateAuthority(OGR_SRSNode *poRoot);
149  static OGRErr ValidateAxis(OGR_SRSNode *poRoot);
150  static OGRErr ValidateUnit(OGR_SRSNode *poRoot);
151  static OGRErr ValidateVertDatum(OGR_SRSNode *poRoot);
152  static OGRErr ValidateProjection( OGR_SRSNode* poRoot );
153  static int IsAliasFor( const char *, const char * );
154  void GetNormInfo() const;
155 
156  OGRErr importFromURNPart(const char* pszAuthority,
157  const char* pszCode,
158  const char* pszURN);
159 
160  OGRErr importFromEPSGAInternal(int nCode,
161  const char* pszSRSType);
162 
163  static const std::vector<OGRSpatialReference*>* GetSRSCache(
164  const char* pszSRSType,
165  const std::map<CPLString, int>*& poMapESRICSNameToCodeOut);
166 
167  public:
169  explicit OGRSpatialReference(const char * = nullptr);
170 
171  virtual ~OGRSpatialReference();
172 
173  static void DestroySpatialReference(OGRSpatialReference* poSRS);
174 
175  OGRSpatialReference &operator=(const OGRSpatialReference&);
176 
177  int Reference();
178  int Dereference();
179  int GetReferenceCount() const { return nRefCount; }
180  void Release();
181 
182  OGRSpatialReference *Clone() const;
183  OGRSpatialReference *CloneGeogCS() const;
184 
185  void dumpReadable();
186  OGRErr exportToWkt( char ** ) const;
187  OGRErr exportToPrettyWkt( char **, int = FALSE) const;
188  OGRErr exportToProj4( char ** ) const;
189  OGRErr exportToPCI( char **, char **, double ** ) const;
190  OGRErr exportToUSGS( long *, long *, double **, long * ) const;
191  OGRErr exportToXML( char **, const char * = nullptr ) const;
192  OGRErr exportToPanorama( long *, long *, long *, long *,
193  double * ) const;
194  OGRErr exportToERM( char *pszProj, char *pszDatum, char *pszUnits );
195  OGRErr exportToMICoordSys( char ** ) const;
196 
197  OGRErr importFromWkt( char ** );
198  OGRErr importFromProj4( const char * );
199  OGRErr importFromEPSG( int );
200  OGRErr importFromEPSGA( int );
201  OGRErr importFromESRI( char ** );
202  OGRErr importFromPCI( const char *, const char * = nullptr,
203  double * = nullptr );
204 
205 #define USGS_ANGLE_DECIMALDEGREES 0
206 #define USGS_ANGLE_PACKEDDMS TRUE
207 #define USGS_ANGLE_RADIANS 2
208  OGRErr importFromUSGS( long iProjSys, long iZone,
209  double *padfPrjParams, long iDatum,
210  int nUSGSAngleFormat = USGS_ANGLE_PACKEDDMS );
211  OGRErr importFromPanorama( long, long, long, double* );
212  OGRErr importFromOzi( const char * const* papszLines );
213  OGRErr importFromWMSAUTO( const char *pszAutoDef );
214  OGRErr importFromXML( const char * );
215  OGRErr importFromDict( const char *pszDict, const char *pszCode );
216  OGRErr importFromURN( const char * );
217  OGRErr importFromCRSURL( const char * );
218  OGRErr importFromERM( const char *pszProj, const char *pszDatum,
219  const char *pszUnits );
220  OGRErr importFromUrl( const char * );
221  OGRErr importFromMICoordSys( const char * );
222 
223  OGRErr morphToESRI();
224  OGRErr morphFromESRI();
225 
226  OGRSpatialReference* convertToOtherProjection(
227  const char* pszTargetProjection,
228  const char* const* papszOptions = nullptr ) const;
229 
230  OGRErr Validate();
231  OGRErr StripCTParms( OGR_SRSNode * = nullptr );
232  OGRErr StripVertical();
233  OGRErr FixupOrdering();
234  OGRErr Fixup();
235 
236  int EPSGTreatsAsLatLong();
237  int EPSGTreatsAsNorthingEasting();
238  const char *GetAxis( const char *pszTargetKey, int iAxis,
239  OGRAxisOrientation *peOrientation ) const;
240  OGRErr SetAxes( const char *pszTargetKey,
241  const char *pszXAxisName,
242  OGRAxisOrientation eXAxisOrientation,
243  const char *pszYAxisName,
244  OGRAxisOrientation eYAxisOrientation );
245 
246  // Machinery for accessing parse nodes
247 
249  OGR_SRSNode *GetRoot() { return poRoot; }
251  const OGR_SRSNode *GetRoot() const { return poRoot; }
252  void SetRoot( OGR_SRSNode * );
253 
254  OGR_SRSNode *GetAttrNode(const char *);
255  const OGR_SRSNode *GetAttrNode(const char *) const;
256  const char *GetAttrValue(const char *, int = 0) const;
257 
258  OGRErr SetNode( const char *, const char * );
259  OGRErr SetNode( const char *, double );
260 
261  OGRErr SetLinearUnitsAndUpdateParameters( const char *pszName,
262  double dfInMeters );
263  OGRErr SetLinearUnits( const char *pszName, double dfInMeters );
264  OGRErr SetTargetLinearUnits( const char *pszTargetKey,
265  const char *pszName, double dfInMeters );
266  double GetLinearUnits( char ** = nullptr ) const;
267  double GetTargetLinearUnits( const char *pszTargetKey,
268  char ** ppszRetName = nullptr ) const;
269 
270  OGRErr SetAngularUnits( const char *pszName, double dfInRadians );
271  double GetAngularUnits( char ** = nullptr ) const;
272 
273  double GetPrimeMeridian( char ** = nullptr ) const;
274 
275  int IsGeographic() const;
276  int IsProjected() const;
277  int IsGeocentric() const;
278  int IsLocal() const;
279  int IsVertical() const;
280  int IsCompound() const;
281  int IsSameGeogCS( const OGRSpatialReference * ) const;
282  int IsSameGeogCS( const OGRSpatialReference *,
283  const char* const * papszOptions ) const;
284  int IsSameVertCS( const OGRSpatialReference * ) const;
285  int IsSame( const OGRSpatialReference * ) const;
286  int IsSame( const OGRSpatialReference *,
287  const char* const * papszOptions ) const;
288 
289  void Clear();
290  OGRErr SetLocalCS( const char * );
291  OGRErr SetProjCS( const char * );
292  OGRErr SetProjection( const char * );
293  OGRErr SetGeocCS( const char * pszGeocName );
294  OGRErr SetGeogCS( const char * pszGeogName,
295  const char * pszDatumName,
296  const char * pszEllipsoidName,
297  double dfSemiMajor, double dfInvFlattening,
298  const char * pszPMName = nullptr,
299  double dfPMOffset = 0.0,
300  const char * pszUnits = nullptr,
301  double dfConvertToRadians = 0.0 );
302  OGRErr SetWellKnownGeogCS( const char * );
303  OGRErr CopyGeogCSFrom( const OGRSpatialReference * poSrcSRS );
304  OGRErr SetVertCS( const char *pszVertCSName,
305  const char *pszVertDatumName,
306  int nVertDatumClass = 2005 );
307  OGRErr SetCompoundCS( const char *pszName,
308  const OGRSpatialReference *poHorizSRS,
309  const OGRSpatialReference *poVertSRS );
310 
311  OGRErr SetFromUserInput( const char * );
312 
313  OGRErr SetTOWGS84( double, double, double,
314  double = 0.0, double = 0.0, double = 0.0,
315  double = 0.0 );
316  OGRErr GetTOWGS84( double *padfCoef, int nCoeff = 7 ) const;
317 
318  double GetSemiMajor( OGRErr * = nullptr ) const;
319  double GetSemiMinor( OGRErr * = nullptr ) const;
320  double GetInvFlattening( OGRErr * = nullptr ) const;
321  double GetEccentricity() const;
322  double GetSquaredEccentricity() const;
323 
324  OGRErr SetAuthority( const char * pszTargetKey,
325  const char * pszAuthority,
326  int nCode );
327 
328  OGRErr AutoIdentifyEPSG();
329  OGRSpatialReferenceH* FindMatches( char** papszOptions,
330  int* pnEntries,
331  int** ppanMatchConfidence ) const;
332 
333  int GetEPSGGeogCS();
334 
335  const char *GetAuthorityCode( const char * pszTargetKey ) const;
336  const char *GetAuthorityName( const char * pszTargetKey ) const;
337 
338  const char *GetExtension( const char *pszTargetKey,
339  const char *pszName,
340  const char *pszDefault = nullptr ) const;
341  OGRErr SetExtension( const char *pszTargetKey,
342  const char *pszName,
343  const char *pszValue );
344 
345  int FindProjParm( const char *pszParameter,
346  const OGR_SRSNode *poPROJCS=nullptr ) const;
347  OGRErr SetProjParm( const char *, double );
348  double GetProjParm( const char *, double =0.0, OGRErr* = nullptr ) const;
349 
350  OGRErr SetNormProjParm( const char *, double );
351  double GetNormProjParm( const char *, double=0.0, OGRErr* =nullptr)const;
352 
353  static int IsAngularParameter( const char * );
354  static int IsLongitudeParameter( const char * );
355  static int IsLinearParameter( const char * );
356 
358  OGRErr SetACEA( double dfStdP1, double dfStdP2,
359  double dfCenterLat, double dfCenterLong,
360  double dfFalseEasting, double dfFalseNorthing );
361 
363  OGRErr SetAE( double dfCenterLat, double dfCenterLong,
364  double dfFalseEasting, double dfFalseNorthing );
365 
367  OGRErr SetBonne( double dfStdP1, double dfCentralMeridian,
368  double dfFalseEasting, double dfFalseNorthing );
369 
371  OGRErr SetCEA( double dfStdP1, double dfCentralMeridian,
372  double dfFalseEasting, double dfFalseNorthing );
373 
375  OGRErr SetCS( double dfCenterLat, double dfCenterLong,
376  double dfFalseEasting, double dfFalseNorthing );
377 
379  OGRErr SetEC( double dfStdP1, double dfStdP2,
380  double dfCenterLat, double dfCenterLong,
381  double dfFalseEasting, double dfFalseNorthing );
382 
384  OGRErr SetEckert( int nVariation, double dfCentralMeridian,
385  double dfFalseEasting, double dfFalseNorthing );
386 
388  OGRErr SetEckertIV( double dfCentralMeridian,
389  double dfFalseEasting, double dfFalseNorthing );
390 
392  OGRErr SetEckertVI( double dfCentralMeridian,
393  double dfFalseEasting, double dfFalseNorthing );
394 
396  OGRErr SetEquirectangular(double dfCenterLat, double dfCenterLong,
397  double dfFalseEasting, double dfFalseNorthing );
399  OGRErr SetEquirectangular2( double dfCenterLat, double dfCenterLong,
400  double dfPseudoStdParallel1,
401  double dfFalseEasting, double dfFalseNorthing );
402 
404  OGRErr SetGEOS( double dfCentralMeridian, double dfSatelliteHeight,
405  double dfFalseEasting, double dfFalseNorthing );
406 
408  OGRErr SetGH( double dfCentralMeridian,
409  double dfFalseEasting, double dfFalseNorthing );
410 
412  OGRErr SetIGH();
413 
415  OGRErr SetGS( double dfCentralMeridian,
416  double dfFalseEasting, double dfFalseNorthing );
417 
419  OGRErr SetGaussSchreiberTMercator(double dfCenterLat, double dfCenterLong,
420  double dfScale,
421  double dfFalseEasting, double dfFalseNorthing );
422 
424  OGRErr SetGnomonic(double dfCenterLat, double dfCenterLong,
425  double dfFalseEasting, double dfFalseNorthing );
426 
428  OGRErr SetHOM( double dfCenterLat, double dfCenterLong,
429  double dfAzimuth, double dfRectToSkew,
430  double dfScale,
431  double dfFalseEasting, double dfFalseNorthing );
432 
434  OGRErr SetHOM2PNO( double dfCenterLat,
435  double dfLat1, double dfLong1,
436  double dfLat2, double dfLong2,
437  double dfScale,
438  double dfFalseEasting, double dfFalseNorthing );
439 
440 #ifdef undef
441 
442  OGRErr SetOM( double dfCenterLat, double dfCenterLong,
443  double dfAzimuth, double dfRectToSkew,
444  double dfScale,
445  double dfFalseEasting, double dfFalseNorthing );
446 #endif
447 
449  OGRErr SetHOMAC( double dfCenterLat, double dfCenterLong,
450  double dfAzimuth, double dfRectToSkew,
451  double dfScale,
452  double dfFalseEasting, double dfFalseNorthing );
453 
455  OGRErr SetIWMPolyconic( double dfLat1, double dfLat2,
456  double dfCenterLong,
457  double dfFalseEasting,
458  double dfFalseNorthing );
459 
461  OGRErr SetKrovak( double dfCenterLat, double dfCenterLong,
462  double dfAzimuth, double dfPseudoStdParallelLat,
463  double dfScale,
464  double dfFalseEasting, double dfFalseNorthing );
465 
467  OGRErr SetLAEA( double dfCenterLat, double dfCenterLong,
468  double dfFalseEasting, double dfFalseNorthing );
469 
471  OGRErr SetLCC( double dfStdP1, double dfStdP2,
472  double dfCenterLat, double dfCenterLong,
473  double dfFalseEasting, double dfFalseNorthing );
474 
476  OGRErr SetLCC1SP( double dfCenterLat, double dfCenterLong,
477  double dfScale,
478  double dfFalseEasting, double dfFalseNorthing );
479 
481  OGRErr SetLCCB( double dfStdP1, double dfStdP2,
482  double dfCenterLat, double dfCenterLong,
483  double dfFalseEasting, double dfFalseNorthing );
484 
486  OGRErr SetMC( double dfCenterLat, double dfCenterLong,
487  double dfFalseEasting, double dfFalseNorthing );
488 
490  OGRErr SetMercator( double dfCenterLat, double dfCenterLong,
491  double dfScale,
492  double dfFalseEasting, double dfFalseNorthing );
493 
495  OGRErr SetMercator2SP( double dfStdP1,
496  double dfCenterLat, double dfCenterLong,
497  double dfFalseEasting, double dfFalseNorthing );
498 
500  OGRErr SetMollweide( double dfCentralMeridian,
501  double dfFalseEasting, double dfFalseNorthing );
502 
504  OGRErr SetNZMG( double dfCenterLat, double dfCenterLong,
505  double dfFalseEasting, double dfFalseNorthing );
506 
508  OGRErr SetOS( double dfOriginLat, double dfCMeridian,
509  double dfScale,
510  double dfFalseEasting,double dfFalseNorthing);
511 
513  OGRErr SetOrthographic( double dfCenterLat, double dfCenterLong,
514  double dfFalseEasting,double dfFalseNorthing);
515 
517  OGRErr SetPolyconic( double dfCenterLat, double dfCenterLong,
518  double dfFalseEasting, double dfFalseNorthing );
519 
521  OGRErr SetPS( double dfCenterLat, double dfCenterLong,
522  double dfScale,
523  double dfFalseEasting, double dfFalseNorthing);
524 
526  OGRErr SetRobinson( double dfCenterLong,
527  double dfFalseEasting, double dfFalseNorthing );
528 
530  OGRErr SetSinusoidal( double dfCenterLong,
531  double dfFalseEasting, double dfFalseNorthing );
532 
534  OGRErr SetStereographic( double dfCenterLat, double dfCenterLong,
535  double dfScale,
536  double dfFalseEasting,double dfFalseNorthing);
537 
539  OGRErr SetSOC( double dfLatitudeOfOrigin, double dfCentralMeridian,
540  double dfFalseEasting, double dfFalseNorthing );
541 
543  OGRErr SetTM( double dfCenterLat, double dfCenterLong,
544  double dfScale,
545  double dfFalseEasting, double dfFalseNorthing );
546 
548  OGRErr SetTMVariant( const char *pszVariantName,
549  double dfCenterLat, double dfCenterLong,
550  double dfScale,
551  double dfFalseEasting, double dfFalseNorthing );
552 
554  OGRErr SetTMG( double dfCenterLat, double dfCenterLong,
555  double dfFalseEasting, double dfFalseNorthing );
556 
558  OGRErr SetTMSO( double dfCenterLat, double dfCenterLong,
559  double dfScale,
560  double dfFalseEasting, double dfFalseNorthing );
561 
563  OGRErr SetTPED( double dfLat1, double dfLong1,
564  double dfLat2, double dfLong2,
565  double dfFalseEasting, double dfFalseNorthing );
566 
568  OGRErr SetVDG( double dfCenterLong,
569  double dfFalseEasting, double dfFalseNorthing );
570 
572  OGRErr SetUTM( int nZone, int bNorth = TRUE );
573  int GetUTMZone( int *pbNorth = nullptr ) const;
574 
576  OGRErr SetWagner( int nVariation, double dfCenterLat,
577  double dfFalseEasting, double dfFalseNorthing );
578 
580  OGRErr SetQSC(double dfCenterLat, double dfCenterLong);
581 
583  OGRErr SetSCH( double dfPegLat, double dfPegLong,
584  double dfPegHeading, double dfPegHgt);
586  OGRErr SetStatePlane( int nZone, int bNAD83 = TRUE,
587  const char *pszOverrideUnitName = nullptr,
588  double dfOverrideUnit = 0.0 );
589 
591  OGRErr ImportFromESRIStatePlaneWKT(
592  int nCode, const char* pszDatumName, const char* pszUnitsName,
593  int nPCSCode, const char* pszCSName = nullptr );
594 
596  OGRErr ImportFromESRIWisconsinWKT(
597  const char* pszPrjName, double dfCentralMeridian, double dfLatOfOrigin,
598  const char* pszUnitsName, const char* pszCSName = nullptr );
599 
600  static OGRSpatialReference* GetWGS84SRS();
601 };
602 
603 /************************************************************************/
604 /* OGRCoordinateTransformation */
605 /* */
606 /* This is really just used as a base class for a private */
607 /* implementation. */
608 /************************************************************************/
609 
620 {
621 public:
622  virtual ~OGRCoordinateTransformation() {}
623 
624  static void DestroyCT(OGRCoordinateTransformation* poCT);
625 
626  // From CT_CoordinateTransformation
627 
629  virtual OGRSpatialReference *GetSourceCS() = 0;
630 
632  virtual OGRSpatialReference *GetTargetCS() = 0;
633 
635  virtual bool GetEmitErrors() { return false; }
636 
638  virtual void SetEmitErrors(bool /*bEmitErrors*/) {}
639 
640  // From CT_MathTransform
641 
657  virtual int Transform( int nCount,
658  double *x, double *y, double *z = nullptr ) = 0;
659 
675  virtual int TransformEx( int nCount,
676  double *x, double *y, double *z = nullptr,
677  int *pabSuccess = nullptr ) = 0;
678 };
679 
682  OGRSpatialReference *poTarget );
683 
684 #endif /* ndef OGR_SPATIALREF_H_INCLUDED */
virtual void SetEmitErrors(bool)
Set if the transformer must emit CPLError.
Definition: ogr_spatialref.h:638
OGRCoordinateTransformation * OGRCreateCoordinateTransformation(OGRSpatialReference *poSource, OGRSpatialReference *poTarget)
Create transformation object.
Definition: ogrct.cpp:433
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.
#define USGS_ANGLE_PACKEDDMS
Angle is in packed degree minute second.
Definition: ogr_spatialref.h:206
OGR_SRSNode * GetRoot()
Return root node.
Definition: ogr_spatialref.h:249
void * OGRSpatialReferenceH
Opaque type for a spatial reference system.
Definition: ogr_api.h:69
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:635
This class represents an OpenGIS Spatial Reference System, and contains methods for converting betwee...
Definition: ogr_spatialref.h:136
int GetReferenceCount() const
Fetch current reference count.
Definition: ogr_spatialref.h:179
Interface for transforming between coordinate systems.
Definition: ogr_spatialref.h:619
const OGR_SRSNode * GetRoot() const
Return root node.
Definition: ogr_spatialref.h:251
int OGRErr
Simple container for a bounding region.
Definition: ogr_core.h:287
int GetChildCount() const
Get number of children nodes.
Definition: ogr_spatialref.h:85

Generated for GDAL by doxygen 1.8.8.