32 #ifndef OGR_SPATIALREF_H_INCLUDED 33 #define OGR_SPATIALREF_H_INCLUDED 74 int NeedsQuoting()
const;
75 OGRErr importFromWkt(
const char **,
int nRecLevel,
int* pnNodes );
95 int FindChild(
const char * )
const;
96 void DestroyChild(
int );
98 void StripNodes(
const char * );
101 void SetValue(
const char * );
103 void MakeValueSafe();
108 OGRErr importFromWkt(
char ** )
110 CPL_WARN_DEPRECATED(
"Use importFromWkt(const char**)")
113 OGRErr importFromWkt(
const char ** );
114 OGRErr exportToWkt(
char ** )
const;
115 OGRErr exportToPrettyWkt(
char **,
int = 1)
const;
117 OGRErr applyRemapper(
const char *pszNode,
118 const char *
const *papszSrcValues,
119 const char *
const *papszDstValues,
121 int bChildOfHit = FALSE );
147 mutable double dfFromGreenwich;
148 mutable double dfToMeter;
149 mutable double dfToDegrees;
154 mutable int bNormInfoSet;
162 static int IsAliasFor(
const char *,
const char * );
163 void GetNormInfo()
const;
165 OGRErr importFromURNPart(
const char* pszAuthority,
169 OGRErr importFromEPSGAInternal(
int nCode,
170 const char* pszSRSType);
172 static const std::vector<OGRSpatialReference*>* GetSRSCache(
173 const char* pszSRSType,
174 const std::map<CPLString, int>*& poMapESRICSNameToCodeOut);
195 OGRErr exportToWkt(
char ** )
const;
196 OGRErr exportToPrettyWkt(
char **,
int = FALSE)
const;
197 OGRErr exportToProj4(
char ** )
const;
198 OGRErr exportToPCI(
char **,
char **,
double ** )
const;
199 OGRErr exportToUSGS(
long *,
long *,
double **,
long * )
const;
200 OGRErr exportToXML(
char **,
const char * =
nullptr )
const;
201 OGRErr exportToPanorama(
long *,
long *,
long *,
long *,
203 OGRErr exportToERM(
char *pszProj,
char *pszDatum,
char *pszUnits );
204 OGRErr exportToMICoordSys(
char ** )
const;
207 OGRErr importFromWkt(
char ** )
209 CPL_WARN_DEPRECATED(
"Use importFromWkt(const char**) or importFromWkt(const char*)")
213 OGRErr importFromWkt(
const char ** );
214 OGRErr importFromWkt(
const char* );
215 OGRErr importFromProj4(
const char * );
216 OGRErr importFromEPSG(
int );
217 OGRErr importFromEPSGA(
int );
218 OGRErr importFromESRI(
char ** );
219 OGRErr importFromPCI(
const char *,
const char * =
nullptr,
220 double * =
nullptr );
222 #define USGS_ANGLE_DECIMALDEGREES 0 223 #define USGS_ANGLE_PACKEDDMS TRUE 224 #define USGS_ANGLE_RADIANS 2 225 OGRErr importFromUSGS( long iProjSys, long iZone, 226 double *padfPrjParams,
long iDatum,
228 OGRErr importFromPanorama(
long,
long,
long,
double* );
229 OGRErr importFromOzi(
const char *
const* papszLines );
230 OGRErr importFromWMSAUTO(
const char *pszAutoDef );
231 OGRErr importFromXML(
const char * );
232 OGRErr importFromDict(
const char *pszDict,
const char *pszCode );
233 OGRErr importFromURN(
const char * );
234 OGRErr importFromCRSURL(
const char * );
235 OGRErr importFromERM(
const char *pszProj,
const char *pszDatum,
236 const char *pszUnits );
237 OGRErr importFromUrl(
const char * );
238 OGRErr importFromMICoordSys(
const char * );
244 const char* pszTargetProjection,
245 const char*
const* papszOptions =
nullptr )
const;
253 int EPSGTreatsAsLatLong()
const;
254 int EPSGTreatsAsNorthingEasting()
const;
255 const char *GetAxis(
const char *pszTargetKey,
int iAxis,
257 OGRErr SetAxes(
const char *pszTargetKey,
258 const char *pszXAxisName,
260 const char *pszYAxisName,
272 const OGR_SRSNode *GetAttrNode(
const char *)
const;
273 const char *GetAttrValue(
const char *,
int = 0)
const;
275 OGRErr SetNode(
const char *,
const char * );
276 OGRErr SetNode(
const char *,
double );
278 OGRErr SetLinearUnitsAndUpdateParameters(
const char *pszName,
280 OGRErr SetLinearUnits(
const char *pszName,
double dfInMeters );
281 OGRErr SetTargetLinearUnits(
const char *pszTargetKey,
282 const char *pszName,
double dfInMeters );
284 double GetLinearUnits(
char ** )
const CPL_WARN_DEPRECATED(
"Use GetLinearUnits(const char**) instead");
285 double GetLinearUnits(
const char ** =
nullptr )
const;
287 double GetLinearUnits( std::nullptr_t )
const 288 {
return GetLinearUnits( static_cast<const char**>(
nullptr) ); }
291 double GetTargetLinearUnits(
const char *pszTargetKey,
292 char ** ppszRetName )
const 293 CPL_WARN_DEPRECATED(
"Use GetTargetLinearUnits(const char*, const char**)");
294 double GetTargetLinearUnits(
const char *pszTargetKey,
295 const char ** ppszRetName =
nullptr )
const;
297 double GetTargetLinearUnits(
const char *pszTargetKey, std::nullptr_t )
const 298 {
return GetTargetLinearUnits( pszTargetKey, static_cast<const char**>(
nullptr) ); }
301 OGRErr SetAngularUnits(
const char *pszName,
double dfInRadians );
302 double GetAngularUnits(
char ** )
const CPL_WARN_DEPRECATED(
"Use GetAngularUnits(const char**) instead");
303 double GetAngularUnits(
const char ** =
nullptr )
const;
305 double GetAngularUnits( std::nullptr_t )
const 306 {
return GetAngularUnits( static_cast<const char**>(
nullptr) ); }
309 double GetPrimeMeridian(
char ** )
const CPL_WARN_DEPRECATED(
"Use GetPrimeMeridian(const char**) instead");
310 double GetPrimeMeridian(
const char ** =
nullptr )
const;
312 double GetPrimeMeridian( std::nullptr_t )
const 313 {
return GetPrimeMeridian( static_cast<const char**>(
nullptr) ); }
316 int IsGeographic()
const;
317 int IsProjected()
const;
318 int IsGeocentric()
const;
320 int IsVertical()
const;
321 int IsCompound()
const;
324 const char*
const * papszOptions )
const;
328 const char*
const * papszOptions )
const;
331 OGRErr SetLocalCS(
const char * );
332 OGRErr SetProjCS(
const char * );
333 OGRErr SetProjection(
const char * );
334 OGRErr SetGeocCS(
const char * pszGeocName );
335 OGRErr SetGeogCS(
const char * pszGeogName,
336 const char * pszDatumName,
337 const char * pszEllipsoidName,
338 double dfSemiMajor,
double dfInvFlattening,
339 const char * pszPMName =
nullptr,
340 double dfPMOffset = 0.0,
341 const char * pszUnits =
nullptr,
342 double dfConvertToRadians = 0.0 );
343 OGRErr SetWellKnownGeogCS(
const char * );
345 OGRErr SetVertCS(
const char *pszVertCSName,
346 const char *pszVertDatumName,
347 int nVertDatumClass = 2005 );
348 OGRErr SetCompoundCS(
const char *pszName,
352 OGRErr SetFromUserInput(
const char * );
354 OGRErr SetTOWGS84(
double,
double,
double,
355 double = 0.0,
double = 0.0,
double = 0.0,
357 OGRErr GetTOWGS84(
double *padfCoef,
int nCoeff = 7 )
const;
359 double GetSemiMajor(
OGRErr * =
nullptr )
const;
360 double GetSemiMinor(
OGRErr * =
nullptr )
const;
361 double GetInvFlattening(
OGRErr * =
nullptr )
const;
362 double GetEccentricity()
const;
363 double GetSquaredEccentricity()
const;
365 OGRErr SetAuthority(
const char * pszTargetKey,
366 const char * pszAuthority,
369 OGRErr AutoIdentifyEPSG();
372 int** ppanMatchConfidence )
const;
374 int GetEPSGGeogCS()
const;
376 const char *GetAuthorityCode(
const char * pszTargetKey )
const;
377 const char *GetAuthorityName(
const char * pszTargetKey )
const;
379 const char *GetExtension(
const char *pszTargetKey,
381 const char *pszDefault =
nullptr )
const;
382 OGRErr SetExtension(
const char *pszTargetKey,
384 const char *pszValue );
386 int FindProjParm(
const char *pszParameter,
388 OGRErr SetProjParm(
const char *,
double );
389 double GetProjParm(
const char *,
double =0.0,
OGRErr* =
nullptr )
const;
391 OGRErr SetNormProjParm(
const char *,
double );
392 double GetNormProjParm(
const char *,
double=0.0,
OGRErr* =
nullptr)
const;
394 static int IsAngularParameter(
const char * );
395 static int IsLongitudeParameter(
const char * );
396 static int IsLinearParameter(
const char * );
399 OGRErr SetACEA(
double dfStdP1,
double dfStdP2,
400 double dfCenterLat,
double dfCenterLong,
401 double dfFalseEasting,
double dfFalseNorthing );
404 OGRErr SetAE(
double dfCenterLat,
double dfCenterLong,
405 double dfFalseEasting,
double dfFalseNorthing );
408 OGRErr SetBonne(
double dfStdP1,
double dfCentralMeridian,
409 double dfFalseEasting,
double dfFalseNorthing );
412 OGRErr SetCEA(
double dfStdP1,
double dfCentralMeridian,
413 double dfFalseEasting,
double dfFalseNorthing );
416 OGRErr SetCS(
double dfCenterLat,
double dfCenterLong,
417 double dfFalseEasting,
double dfFalseNorthing );
420 OGRErr SetEC(
double dfStdP1,
double dfStdP2,
421 double dfCenterLat,
double dfCenterLong,
422 double dfFalseEasting,
double dfFalseNorthing );
425 OGRErr SetEckert(
int nVariation,
double dfCentralMeridian,
426 double dfFalseEasting,
double dfFalseNorthing );
429 OGRErr SetEckertIV(
double dfCentralMeridian,
430 double dfFalseEasting,
double dfFalseNorthing );
433 OGRErr SetEckertVI(
double dfCentralMeridian,
434 double dfFalseEasting,
double dfFalseNorthing );
437 OGRErr SetEquirectangular(
double dfCenterLat,
double dfCenterLong,
438 double dfFalseEasting,
double dfFalseNorthing );
440 OGRErr SetEquirectangular2(
double dfCenterLat,
double dfCenterLong,
441 double dfPseudoStdParallel1,
442 double dfFalseEasting,
double dfFalseNorthing );
445 OGRErr SetGEOS(
double dfCentralMeridian,
double dfSatelliteHeight,
446 double dfFalseEasting,
double dfFalseNorthing );
449 OGRErr SetGH(
double dfCentralMeridian,
450 double dfFalseEasting,
double dfFalseNorthing );
456 OGRErr SetGS(
double dfCentralMeridian,
457 double dfFalseEasting,
double dfFalseNorthing );
460 OGRErr SetGaussSchreiberTMercator(
double dfCenterLat,
double dfCenterLong,
462 double dfFalseEasting,
double dfFalseNorthing );
465 OGRErr SetGnomonic(
double dfCenterLat,
double dfCenterLong,
466 double dfFalseEasting,
double dfFalseNorthing );
469 OGRErr SetHOM(
double dfCenterLat,
double dfCenterLong,
470 double dfAzimuth,
double dfRectToSkew,
472 double dfFalseEasting,
double dfFalseNorthing );
475 OGRErr SetHOM2PNO(
double dfCenterLat,
476 double dfLat1,
double dfLong1,
477 double dfLat2,
double dfLong2,
479 double dfFalseEasting,
double dfFalseNorthing );
483 OGRErr SetOM(
double dfCenterLat,
double dfCenterLong,
484 double dfAzimuth,
double dfRectToSkew,
486 double dfFalseEasting,
double dfFalseNorthing );
490 OGRErr SetHOMAC(
double dfCenterLat,
double dfCenterLong,
491 double dfAzimuth,
double dfRectToSkew,
493 double dfFalseEasting,
double dfFalseNorthing );
496 OGRErr SetIWMPolyconic(
double dfLat1,
double dfLat2,
498 double dfFalseEasting,
499 double dfFalseNorthing );
502 OGRErr SetKrovak(
double dfCenterLat,
double dfCenterLong,
503 double dfAzimuth,
double dfPseudoStdParallelLat,
505 double dfFalseEasting,
double dfFalseNorthing );
508 OGRErr SetLAEA(
double dfCenterLat,
double dfCenterLong,
509 double dfFalseEasting,
double dfFalseNorthing );
512 OGRErr SetLCC(
double dfStdP1,
double dfStdP2,
513 double dfCenterLat,
double dfCenterLong,
514 double dfFalseEasting,
double dfFalseNorthing );
517 OGRErr SetLCC1SP(
double dfCenterLat,
double dfCenterLong,
519 double dfFalseEasting,
double dfFalseNorthing );
522 OGRErr SetLCCB(
double dfStdP1,
double dfStdP2,
523 double dfCenterLat,
double dfCenterLong,
524 double dfFalseEasting,
double dfFalseNorthing );
527 OGRErr SetMC(
double dfCenterLat,
double dfCenterLong,
528 double dfFalseEasting,
double dfFalseNorthing );
531 OGRErr SetMercator(
double dfCenterLat,
double dfCenterLong,
533 double dfFalseEasting,
double dfFalseNorthing );
536 OGRErr SetMercator2SP(
double dfStdP1,
537 double dfCenterLat,
double dfCenterLong,
538 double dfFalseEasting,
double dfFalseNorthing );
541 OGRErr SetMollweide(
double dfCentralMeridian,
542 double dfFalseEasting,
double dfFalseNorthing );
545 OGRErr SetNZMG(
double dfCenterLat,
double dfCenterLong,
546 double dfFalseEasting,
double dfFalseNorthing );
549 OGRErr SetOS(
double dfOriginLat,
double dfCMeridian,
551 double dfFalseEasting,
double dfFalseNorthing);
554 OGRErr SetOrthographic(
double dfCenterLat,
double dfCenterLong,
555 double dfFalseEasting,
double dfFalseNorthing);
558 OGRErr SetPolyconic(
double dfCenterLat,
double dfCenterLong,
559 double dfFalseEasting,
double dfFalseNorthing );
562 OGRErr SetPS(
double dfCenterLat,
double dfCenterLong,
564 double dfFalseEasting,
double dfFalseNorthing);
567 OGRErr SetRobinson(
double dfCenterLong,
568 double dfFalseEasting,
double dfFalseNorthing );
571 OGRErr SetSinusoidal(
double dfCenterLong,
572 double dfFalseEasting,
double dfFalseNorthing );
575 OGRErr SetStereographic(
double dfCenterLat,
double dfCenterLong,
577 double dfFalseEasting,
double dfFalseNorthing);
580 OGRErr SetSOC(
double dfLatitudeOfOrigin,
double dfCentralMeridian,
581 double dfFalseEasting,
double dfFalseNorthing );
584 OGRErr SetTM(
double dfCenterLat,
double dfCenterLong,
586 double dfFalseEasting,
double dfFalseNorthing );
589 OGRErr SetTMVariant(
const char *pszVariantName,
590 double dfCenterLat,
double dfCenterLong,
592 double dfFalseEasting,
double dfFalseNorthing );
595 OGRErr SetTMG(
double dfCenterLat,
double dfCenterLong,
596 double dfFalseEasting,
double dfFalseNorthing );
599 OGRErr SetTMSO(
double dfCenterLat,
double dfCenterLong,
601 double dfFalseEasting,
double dfFalseNorthing );
604 OGRErr SetTPED(
double dfLat1,
double dfLong1,
605 double dfLat2,
double dfLong2,
606 double dfFalseEasting,
double dfFalseNorthing );
609 OGRErr SetVDG(
double dfCenterLong,
610 double dfFalseEasting,
double dfFalseNorthing );
613 OGRErr SetUTM(
int nZone,
int bNorth = TRUE );
614 int GetUTMZone(
int *pbNorth =
nullptr )
const;
617 OGRErr SetWagner(
int nVariation,
double dfCenterLat,
618 double dfFalseEasting,
double dfFalseNorthing );
621 OGRErr SetQSC(
double dfCenterLat,
double dfCenterLong);
624 OGRErr SetSCH(
double dfPegLat,
double dfPegLong,
625 double dfPegHeading,
double dfPegHgt);
627 OGRErr SetStatePlane(
int nZone,
int bNAD83 = TRUE,
628 const char *pszOverrideUnitName =
nullptr,
629 double dfOverrideUnit = 0.0 );
632 OGRErr ImportFromESRIStatePlaneWKT(
633 int nCode,
const char* pszDatumName,
const char* pszUnitsName,
634 int nPCSCode,
const char* pszCSName =
nullptr );
637 OGRErr ImportFromESRIWisconsinWKT(
638 const char* pszPrjName,
double dfCentralMeridian,
double dfLatOfOrigin,
639 const char* pszUnitsName,
const char* pszCSName =
nullptr );
647 {
return reinterpret_cast<OGRSpatialReferenceH>(poSRS); }
653 {
return reinterpret_cast<OGRSpatialReference*>(hSRS); }
711 virtual int Transform(
int nCount,
712 double *x,
double *y,
double *z =
nullptr ) = 0;
729 virtual int TransformEx(
int nCount,
730 double *x,
double *y,
double *z =
nullptr,
731 int *pabSuccess =
nullptr ) = 0;
737 {
return reinterpret_cast<OGRCoordinateTransformationH>(poCT); }
743 {
return reinterpret_cast<OGRCoordinateTransformation*>(hCT); }
int GetReferenceCount() const
Fetch current reference count.
Definition: ogr_spatialref.h:188
int IsLeafNode() const
Definition: ogr_spatialref.h:84
OGRCoordinateTransformation * OGRCreateCoordinateTransformation(OGRSpatialReference *poSource, OGRSpatialReference *poTarget)
Definition: ogrct.cpp:493
Definition: ogr_spatialref.h:65
const char * GetValue() const
Definition: ogr_spatialref.h:100
int GetChildCount() const
Definition: ogr_spatialref.h:86
void * OGRCoordinateTransformationH
Definition: ogr_api.h:76
#define USGS_ANGLE_PACKEDDMS
Definition: ogr_spatialref.h:223
OGR_SRSNode * GetRoot()
Return root node.
Definition: ogr_spatialref.h:266
void * OGRSpatialReferenceH
Definition: ogr_api.h:74
OGRAxisOrientation
Definition: ogr_srs_api.h:48
Definition: ogr_spatialref.h:145
static OGRSpatialReferenceH ToHandle(OGRSpatialReference *poSRS)
Definition: ogr_spatialref.h:646
static OGRSpatialReference * FromHandle(OGRSpatialReferenceH hSRS)
Definition: ogr_spatialref.h:652
const OGR_SRSNode * GetRoot() const
Return root node.
Definition: ogr_spatialref.h:268
int OGRErr
Definition: ogr_core.h:290