# ogr_srs_api.h: Spatial Reference System C API

C spatial reference system services and defines.

See also: ogr_spatialref.h

Defines

SRS_WKT_WGS84_LAT_LONG

  WGS 84 geodetic (lat/long) WKT / EPSG:4326 with lat,long ordering.

SRS_PT_ALBERS_CONIC_EQUAL_AREA

  Albers_Conic_Equal_Area projection.

SRS_PT_AZIMUTHAL_EQUIDISTANT

  Azimuthal_Equidistant projection.

SRS_PT_CASSINI_SOLDNER

  Cassini_Soldner projection.

SRS_PT_CYLINDRICAL_EQUAL_AREA

  Cylindrical_Equal_Area projection.

SRS_PT_BONNE

  Cylindrical_Equal_Area projection.

SRS_PT_ECKERT_I

  Eckert_I projection.

SRS_PT_ECKERT_II

  Eckert_II projection.

SRS_PT_ECKERT_III

  Eckert_III projection.

SRS_PT_ECKERT_IV

  Eckert_IV projection.

SRS_PT_ECKERT_V

  Eckert_V projection.

SRS_PT_ECKERT_VI

  Eckert_VI projection.

SRS_PT_EQUIDISTANT_CONIC

  Equidistant_Conic projection.

SRS_PT_EQUIRECTANGULAR

  Equirectangular projection.

SRS_PT_GALL_STEREOGRAPHIC

  Gall_Stereographic projection.

SRS_PT_GAUSSSCHREIBERTMERCATOR

  Gauss_Schreiber_Transverse_Mercator projection.

SRS_PT_GEOSTATIONARY_SATELLITE

  Geostationary_Satellite projection.

SRS_PT_GOODE_HOMOLOSINE

  Goode_Homolosine projection.

SRS_PT_IGH

  Interrupted_Goode_Homolosine projection.

SRS_PT_GNOMONIC

  Gnomonic projection.

SRS_PT_HOTINE_OBLIQUE_MERCATOR_AZIMUTH_CENTER

  Hotine_Oblique_Mercator_Azimuth_Center projection.

SRS_PT_HOTINE_OBLIQUE_MERCATOR

  Hotine_Oblique_Mercator projection.

SRS_PT_HOTINE_OBLIQUE_MERCATOR_TWO_POINT_NATURAL_ORIGIN

  Hotine_Oblique_Mercator_Two_Point_Natural_Origin projection.

SRS_PT_LABORDE_OBLIQUE_MERCATOR

  Laborde_Oblique_Mercator projection.

SRS_PT_LAMBERT_CONFORMAL_CONIC_1SP

  Lambert_Conformal_Conic_1SP projection.

SRS_PT_LAMBERT_CONFORMAL_CONIC_2SP

  Lambert_Conformal_Conic_2SP projection.

SRS_PT_LAMBERT_CONFORMAL_CONIC_2SP_BELGIUM

  Lambert_Conformal_Conic_2SP_Belgium projection.

SRS_PT_LAMBERT_AZIMUTHAL_EQUAL_AREA

  Lambert_Azimuthal_Equal_Area projection.

SRS_PT_MERCATOR_1SP

  Mercator_1SP projection.

SRS_PT_MERCATOR_2SP

  Mercator_2SP projection.

SRS_PT_MERCATOR_AUXILIARY_SPHERE

  Mercator_Auxiliary_Sphere is used used by ESRI to mean EPSG:3875.

SRS_PT_MILLER_CYLINDRICAL

  Miller_Cylindrical projection.

SRS_PT_MOLLWEIDE

  Mollweide projection.

SRS_PT_NEW_ZEALAND_MAP_GRID

  New_Zealand_Map_Grid projection.

SRS_PT_OBLIQUE_STEREOGRAPHIC

  Oblique_Stereographic projection.

SRS_PT_ORTHOGRAPHIC

  Orthographic projection.

SRS_PT_POLAR_STEREOGRAPHIC

  Polar_Stereographic projection.

SRS_PT_POLYCONIC

  Polyconic projection.

SRS_PT_ROBINSON

  Robinson projection.

SRS_PT_SINUSOIDAL

  Sinusoidal projection.

SRS_PT_STEREOGRAPHIC

  Stereographic projection.

SRS_PT_SWISS_OBLIQUE_CYLINDRICAL

  Swiss_Oblique_Cylindrical projection.

SRS_PT_TRANSVERSE_MERCATOR

  Transverse_Mercator projection.

SRS_PT_TRANSVERSE_MERCATOR_SOUTH_ORIENTED

  Transverse_Mercator_South_Orientated projection.

SRS_PT_TRANSVERSE_MERCATOR_MI_21

  Transverse_Mercator_MapInfo_21 projection.

SRS_PT_TRANSVERSE_MERCATOR_MI_22

  Transverse_Mercator_MapInfo_22 projection.

SRS_PT_TRANSVERSE_MERCATOR_MI_23

  Transverse_Mercator_MapInfo_23 projection.

SRS_PT_TRANSVERSE_MERCATOR_MI_24

  Transverse_Mercator_MapInfo_24 projection.

SRS_PT_TRANSVERSE_MERCATOR_MI_25

  Transverse_Mercator_MapInfo_25 projection.

SRS_PT_TUNISIA_MINING_GRID

  Tunisia_Mining_Grid projection.

SRS_PT_TWO_POINT_EQUIDISTANT

  Two_Point_Equidistant projection.

SRS_PT_VANDERGRINTEN

  VanDerGrinten projection.

SRS_PT_KROVAK

  Krovak projection.

SRS_PT_IMW_POLYCONIC

  International_Map_of_the_World_Polyconic projection.

SRS_PT_WAGNER_I

  Wagner_I projection.

SRS_PT_WAGNER_II

  Wagner_II projection.

SRS_PT_WAGNER_III

  Wagner_III projection.

SRS_PT_WAGNER_IV

  Wagner_IV projection.

SRS_PT_WAGNER_V

  Wagner_V projection.

SRS_PT_WAGNER_VI

  Wagner_VI projection.

SRS_PT_WAGNER_VII

  Wagner_VII projection.

SRS_PT_QSC

  Quadrilateralized_Spherical_Cube projection.

SRS_PT_AITOFF

  Aitoff projection.

SRS_PT_WINKEL_I

  Winkel_I projection.

SRS_PT_WINKEL_II

  Winkel_II projection.

SRS_PT_WINKEL_TRIPEL

  Winkel_Tripel projection.

SRS_PT_CRASTER_PARABOLIC

  Craster_Parabolic projection.

SRS_PT_LOXIMUTHAL

  Loximuthal projection.

SRS_PT_QUARTIC_AUTHALIC

  Quartic_Authalic projection.

SRS_PT_SCH

  Spherical_Cross_Track_Height projection.

SRS_PP_CENTRAL_MERIDIAN

  central_meridian projection parameter

SRS_PP_SCALE_FACTOR

  scale_factor projection parameter

SRS_PP_STANDARD_PARALLEL_1

  standard_parallel_1 projection parameter

SRS_PP_STANDARD_PARALLEL_2

  standard_parallel_2 projection parameter

SRS_PP_PSEUDO_STD_PARALLEL_1

  pseudo_standard_parallel_1 projection parameter

SRS_PP_LONGITUDE_OF_CENTER

  longitude_of_center projection parameter

SRS_PP_LATITUDE_OF_CENTER

  latitude_of_center projection parameter

SRS_PP_LONGITUDE_OF_ORIGIN

  longitude_of_origin projection parameter

SRS_PP_LATITUDE_OF_ORIGIN

  latitude_of_origin projection parameter

SRS_PP_FALSE_EASTING

  false_easting projection parameter

SRS_PP_FALSE_NORTHING

  false_northing projection parameter

SRS_PP_AZIMUTH

  azimuth projection parameter

SRS_PP_LONGITUDE_OF_POINT_1

  longitude_of_point_1 projection parameter

SRS_PP_LATITUDE_OF_POINT_1

  latitude_of_point_1 projection parameter

SRS_PP_LONGITUDE_OF_POINT_2

  longitude_of_point_2 projection parameter

SRS_PP_LATITUDE_OF_POINT_2

  latitude_of_point_2 projection parameter

SRS_PP_LONGITUDE_OF_POINT_3

  longitude_of_point_3 projection parameter

SRS_PP_LATITUDE_OF_POINT_3

  latitude_of_point_3 projection parameter

SRS_PP_RECTIFIED_GRID_ANGLE

  rectified_grid_angle projection parameter

SRS_PP_LANDSAT_NUMBER

  landsat_number projection parameter

SRS_PP_PATH_NUMBER

  path_number projection parameter

SRS_PP_PERSPECTIVE_POINT_HEIGHT

  perspective_point_height projection parameter

SRS_PP_SATELLITE_HEIGHT

  satellite_height projection parameter

SRS_PP_FIPSZONE

  fipszone projection parameter

SRS_PP_ZONE

  zone projection parameter

SRS_PP_LATITUDE_OF_1ST_POINT

  Latitude_Of_1st_Point projection parameter.

SRS_PP_LONGITUDE_OF_1ST_POINT

  Longitude_Of_1st_Point projection parameter.

SRS_PP_LATITUDE_OF_2ND_POINT

  Latitude_Of_2nd_Point projection parameter.

SRS_PP_LONGITUDE_OF_2ND_POINT

  Longitude_Of_2nd_Point projection parameter.

SRS_PP_PEG_POINT_LATITUDE

  peg_point_latitude projection parameter

SRS_PP_PEG_POINT_LONGITUDE

  peg_point_longitude projection parameter

SRS_PP_PEG_POINT_HEADING

  peg_point_heading projection parameter

SRS_PP_PEG_POINT_HEIGHT

  peg_point_height projection parameter

SRS_UL_METER

  Linear unit Meter.

SRS_UL_FOOT

  Linear unit Foot (International)

SRS_UL_FOOT_CONV

  Linear unit Foot (International) conversion factor to meter.

SRS_UL_US_FOOT

  Linear unit Foot.

SRS_UL_US_FOOT_CONV

  Linear unit Foot conversion factor to meter.

SRS_UL_NAUTICAL_MILE

  Linear unit Nautical Mile.

SRS_UL_NAUTICAL_MILE_CONV

  Linear unit Nautical Mile conversion factor to meter.

SRS_UL_LINK

  Linear unit Link.

SRS_UL_LINK_CONV

  Linear unit Link conversion factor to meter.

SRS_UL_CHAIN

  Linear unit Chain.

SRS_UL_CHAIN_CONV

  Linear unit Chain conversion factor to meter.

SRS_UL_ROD

  Linear unit Rod.

SRS_UL_ROD_CONV

  Linear unit Rod conversion factor to meter.

SRS_UL_LINK_Clarke

  Linear unit Link_Clarke.

SRS_UL_LINK_Clarke_CONV

  Linear unit Link_Clarke conversion factor to meter.

SRS_UL_KILOMETER

  Linear unit Kilometer.

SRS_UL_KILOMETER_CONV

  Linear unit Kilometer conversion factor to meter.

SRS_UL_DECIMETER

  Linear unit Decimeter.

SRS_UL_DECIMETER_CONV

  Linear unit Decimeter conversion factor to meter.

SRS_UL_CENTIMETER

  Linear unit Decimeter.

SRS_UL_CENTIMETER_CONV

  Linear unit Decimeter conversion factor to meter.

SRS_UL_MILLIMETER

  Linear unit Millimeter.

SRS_UL_MILLIMETER_CONV

  Linear unit Millimeter conversion factor to meter.

SRS_UL_INTL_NAUT_MILE

  Linear unit Nautical_Mile_International.

SRS_UL_INTL_NAUT_MILE_CONV

  Linear unit Nautical_Mile_International conversion factor to meter.

SRS_UL_INTL_INCH

  Linear unit Inch_International.

SRS_UL_INTL_INCH_CONV

  Linear unit Inch_International conversion factor to meter.

SRS_UL_INTL_FOOT

  Linear unit Foot_International.

SRS_UL_INTL_FOOT_CONV

  Linear unit Foot_International conversion factor to meter.

SRS_UL_INTL_YARD

  Linear unit Yard_International.

SRS_UL_INTL_YARD_CONV

  Linear unit Yard_International conversion factor to meter.

SRS_UL_INTL_STAT_MILE

  Linear unit Statute_Mile_International.

SRS_UL_INTL_STAT_MILE_CONV

  Linear unit Statute_Mile_Internationalconversion factor to meter.

SRS_UL_INTL_FATHOM

  Linear unit Fathom_International.

SRS_UL_INTL_FATHOM_CONV

  Linear unit Fathom_International conversion factor to meter.

SRS_UL_INTL_CHAIN

  Linear unit Chain_International.

SRS_UL_INTL_CHAIN_CONV

  Linear unit Chain_International conversion factor to meter.

SRS_UL_INTL_LINK

  Linear unit Link_International.

SRS_UL_INTL_LINK_CONV

  Linear unit Link_International conversion factor to meter.

SRS_UL_US_INCH

  Linear unit Inch_US_Surveyor.

SRS_UL_US_INCH_CONV

  Linear unit Inch_US_Surveyor conversion factor to meter.

SRS_UL_US_YARD

  Linear unit Yard_US_Surveyor.

SRS_UL_US_YARD_CONV

  Linear unit Yard_US_Surveyor conversion factor to meter.

SRS_UL_US_CHAIN

  Linear unit Chain_US_Surveyor.

SRS_UL_US_CHAIN_CONV

  Linear unit Chain_US_Surveyor conversion factor to meter.

SRS_UL_US_STAT_MILE

  Linear unit Statute_Mile_US_Surveyor.

SRS_UL_US_STAT_MILE_CONV

  Linear unit Statute_Mile_US_Surveyor conversion factor to meter.

SRS_UL_INDIAN_YARD

  Linear unit Yard_Indian.

SRS_UL_INDIAN_YARD_CONV

  Linear unit Yard_Indian conversion factor to meter.

SRS_UL_INDIAN_FOOT

  Linear unit Foot_Indian.

SRS_UL_INDIAN_FOOT_CONV

  Linear unit Foot_Indian conversion factor to meter.

SRS_UL_INDIAN_CHAIN

  Linear unit Chain_Indian.

SRS_UL_INDIAN_CHAIN_CONV

  Linear unit Chain_Indian conversion factor to meter.

SRS_UA_DEGREE

  Angular unit degree.

SRS_UA_DEGREE_CONV

  Angular unit degree conversion factor to radians.

SRS_UA_RADIAN

  Angular unit radian.

SRS_PM_GREENWICH

  Prime meridian Greenwich.

SRS_DN_NAD27

  North_American_Datum_1927 datum name.

SRS_DN_NAD83

  North_American_Datum_1983 datum name.

SRS_DN_WGS72

  WGS_1972 datum name.

SRS_DN_WGS84

  WGS_1984 datum name.

SRS_WGS84_SEMIMAJOR

  Semi-major axis of the WGS84 ellipsoid.

SRS_WGS84_INVFLATTENING

  Inverse flattening of the WGS84 ellipsoid.

Typedefs

typedef struct OSRCRSListParameters OSRCRSListParameters

  Structure to describe optional parameters to OSRGetCRSInfoListFromDatabase()

  Unused for now.

Enums

enum OGRAxisOrientation

  Axis orientations (corresponds to CS_AxisOrientationEnum).

  Values:

  enumerator OAO_Other

    Other.

  enumerator OAO_North

    North.

  enumerator OAO_South

    South.

  enumerator OAO_East

    East.

  enumerator OAO_West

    West.

  enumerator OAO_Up

    Up (to space)

  enumerator OAO_Down

    Down (to Earth center)

enum OSRAxisMappingStrategy

  Data axis to CRS axis mapping strategy.

  Values:

  enumerator OAMS_TRADITIONAL_GIS_ORDER

    Traditional GIS order.

  enumerator OAMS_AUTHORITY_COMPLIANT

    Compliant with the order mandated by the CRS authority.

  enumerator OAMS_CUSTOM

    Custom.

enum OSRCRSType

  Type of Coordinate Reference System (CRS).

  Values:

  enumerator OSR_CRS_TYPE_GEOGRAPHIC_2D

    Geographic 2D CRS.

  enumerator OSR_CRS_TYPE_GEOGRAPHIC_3D

    Geographic 3D CRS.

  enumerator OSR_CRS_TYPE_GEOCENTRIC

    Geocentric CRS.

  enumerator OSR_CRS_TYPE_PROJECTED

    Projected CRS.

  enumerator OSR_CRS_TYPE_VERTICAL

    Vertical CRS.

  enumerator OSR_CRS_TYPE_COMPOUND

    Compound CRS.

  enumerator OSR_CRS_TYPE_OTHER

    Other.

Functions

const char *OSRAxisEnumToName(OGRAxisOrientation eOrientation)

  Return the string representation for the OGRAxisOrientation enumeration.

  For example "NORTH" for OAO_North.

  Returns:

    an internal string

void OSRSetPROJSearchPaths(const char *const *papszPaths)

  Set the search path(s) for PROJ resource files.

  Note: starting with GDAL 3.7, CPLSetConfigOption("PROJ_DATA", ...) can also been used for the same effect.

  Since

    GDAL 3.0

  Parameters:

    papszPaths -- NULL terminated list of directory paths.

char **OSRGetPROJSearchPaths(void)

  Get the search path(s) for PROJ resource files.

  Since

    GDAL 3.0.3

  Returns:

    NULL terminated list of directory paths. To be freed with CSLDestroy()

void OSRSetPROJAuxDbPaths(const char *const *papszPaths)

  Set list of PROJ auxiliary database filenames.

  See also

  OSRGetPROJAuxDbPaths, proj_context_set_database_path

  Since

    GDAL 3.3

  Parameters:

    papszAux -- NULL-terminated list of auxiliary database filenames, or NULL

char **OSRGetPROJAuxDbPaths(void)

  Get PROJ auxiliary database filenames.

  See also

  OSRSetPROJAuxDbPaths, proj_context_set_database_path

  Since

    GDAL 3.3.0

  Returns:

    NULL terminated list of PROJ auxiliary database filenames. To be freed with CSLDestroy()

void OSRSetPROJEnableNetwork(int enabled)

  Enable or disable PROJ networking capabilities.

  See also

  OSRGetPROJEnableNetwork, proj_context_set_enable_network

  Since

    GDAL 3.4 and PROJ 7

  Parameters:

    enabled -- Set to TRUE to enable networking capabilities.

int OSRGetPROJEnableNetwork(void)

  Get whether PROJ networking capabilities are enabled.

  See also

  OSRSetPROJEnableNetwork, proj_context_is_network_enabled

  Since

    GDAL 3.4 and PROJ 7

  Returns:

    TRUE if PROJ networking capabilities are enabled.

void OSRGetPROJVersion(int *pnMajor, int *pnMinor, int *pnPatch)

  Get the PROJ version.

  Since

    GDAL 3.0.1

  Parameters:

    - pnMajor -- Pointer to major version number, or NULL

    - pnMinor -- Pointer to minor version number, or NULL

    - pnPatch -- Pointer to patch version number, or NULL

OGRSpatialReferenceH OSRNewSpatialReference(const char*)

  Constructor.

  Starting with GDAL 3.0, coordinates associated with a OGRSpatialReference object are assumed to be in the order of the axis of the CRS definition (which for example means latitude first, longitude second for geographic CRS belonging to the EPSG authority). It is possible to define a data axis to CRS axis mapping strategy with the SetAxisMappingStrategy() method.

  Starting with GDAL 3.5, the OSR_DEFAULT_AXIS_MAPPING_STRATEGY configuration option can be set to "TRADITIONAL_GIS_ORDER" / "AUTHORITY_COMPLIANT" (the later being the default value when the option is not set) to control the value of the data axis to CRS axis mapping strategy when a OSRSpatialReference object is created. Calling SetAxisMappingStrategy() will override this default value.

  This function is the same as OGRSpatialReference::OGRSpatialReference()

OGRSpatialReferenceH OSRCloneGeogCS(OGRSpatialReferenceH)

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

  This function is the same as OGRSpatialReference::CloneGeogCS().

OGRSpatialReferenceH OSRClone(OGRSpatialReferenceH)

  Make a duplicate of this OGRSpatialReference.

  This function is the same as OGRSpatialReference::Clone()

void OSRDestroySpatialReference(OGRSpatialReferenceH)

  OGRSpatialReference destructor.

  This function is the same as OGRSpatialReference::~OGRSpatialReference() and OGRSpatialReference::DestroySpatialReference()

  Parameters:

    hSRS -- the object to delete

int OSRReference(OGRSpatialReferenceH)

  Increments the reference count by one.

  This function is the same as OGRSpatialReference::Reference()

int OSRDereference(OGRSpatialReferenceH)

  Decrements the reference count by one.

  This function is the same as OGRSpatialReference::Dereference()

void OSRRelease(OGRSpatialReferenceH)

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

  This function is the same as OGRSpatialReference::Release()

OGRErr OSRValidate(OGRSpatialReferenceH)

  Validate SRS tokens.

  This function is the same as the C++ method OGRSpatialReference::Validate().

OGRErr OSRImportFromEPSG(OGRSpatialReferenceH, int)

  Initialize SRS based on EPSG geographic, projected or vertical CRS code.

  This function is the same as OGRSpatialReference::importFromEPSG().

OGRErr OSRImportFromEPSGA(OGRSpatialReferenceH, int)

  Initialize SRS based on EPSG geographic, projected or vertical CRS code.

  This function is the same as OGRSpatialReference::importFromEPSGA().

OGRErr OSRImportFromWkt(OGRSpatialReferenceH, char**)

  Import from WKT string.

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

  This function is the same as OGRSpatialReference::importFromWkt().

OGRErr OSRImportFromProj4(OGRSpatialReferenceH, const char*)

  Import PROJ coordinate string.

  This function is the same as OGRSpatialReference::importFromProj4().

OGRErr OSRImportFromESRI(OGRSpatialReferenceH, char**)

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

  This function is the same as the C++ method OGRSpatialReference::importFromESRI().

OGRErr OSRImportFromPCI(OGRSpatialReferenceH hSRS, const char*, const char*, double*)

  Import coordinate system from PCI projection definition.

  This function is the same as OGRSpatialReference::importFromPCI().

OGRErr OSRImportFromUSGS(OGRSpatialReferenceH, long, long, double*, long)

  Import coordinate system from USGS projection definition.

  This function is the same as OGRSpatialReference::importFromUSGS().

OGRErr OSRImportFromXML(OGRSpatialReferenceH, const char*)

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

  This function is the same as OGRSpatialReference::importFromXML().

OGRErr OSRImportFromDict(OGRSpatialReferenceH, const char*, const char*)

  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++ method OGRSpatialReference::importFromDict().

  Parameters:

    - hSRS -- spatial reference system handle.

    - pszDictFile -- the name of the dictionary file to load.

    - pszCode -- the 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.

OGRErr OSRImportFromPanorama(OGRSpatialReferenceH, long, long, long, double*)

  Import coordinate system from "Panorama" GIS projection definition.

  See OGRSpatialReference::importFromPanorama()

OGRErr OSRImportFromOzi(OGRSpatialReferenceH, const char*const*)

  Import coordinate system from OziExplorer projection definition.

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

  Parameters:

    - hSRS -- spatial reference object.

    - papszLines -- Map 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.

OGRErr OSRImportFromMICoordSys(OGRSpatialReferenceH, const char*)

  Import Mapinfo style CoordSys definition.

  This method is the equivalent of the C++ method OGRSpatialReference::importFromMICoordSys

OGRErr OSRImportFromERM(OGRSpatialReferenceH, const char*, const char*, const char*)

  Create OGR WKT from ERMapper projection definitions.

  This function is the same as OGRSpatialReference::importFromERM().

OGRErr OSRImportFromUrl(OGRSpatialReferenceH, const char*)

  Set spatial reference from a URL.

  This function is the same as OGRSpatialReference::importFromUrl()

OGRErr OSRImportFromCF1(OGRSpatialReferenceH, CSLConstList papszKeyValues, const char *pszUnits)

  Import a CRS from netCDF CF-1 definitions.

  This function is the same as OGRSpatialReference::importFromCF1().

  Since

    3.9

OGRErr OSRExportToWkt(OGRSpatialReferenceH, char**)

  Convert this SRS into WKT 1 format.

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

  The WKT version can be overridden by using the OSR_WKT_FORMAT configuration option. Valid values are the one of the FORMAT option of exportToWkt( char ** ppszResult, const char* const* papszOptions ) const

  This function is the same as OGRSpatialReference::exportToWkt().

OGRErr OSRExportToWktEx(OGRSpatialReferenceH, char **ppszResult, const char *const *papszOptions)

  Convert this SRS into WKT format.

  This function is the same as OGRSpatialReference::exportToWkt(char **ppszResult,const char* const* papszOptions ) const

  Since

    GDAL 3.0

OGRErr OSRExportToPrettyWkt(OGRSpatialReferenceH, char**, int)

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

  The WKT version can be overridden by using the OSR_WKT_FORMAT configuration option. Valid values are the one of the FORMAT option of exportToWkt( char ** ppszResult, const char* const* papszOptions ) const

  This function is the same as OGRSpatialReference::exportToPrettyWkt().

OGRErr OSRExportToPROJJSON(OGRSpatialReferenceH hSRS, char **ppszReturn, const char *const *papszOptions)

  Convert this SRS into PROJJSON format.

  This function is the same as OGRSpatialReference::exportToPROJJSON() const

  Since

    GDAL 3.1 and PROJ 6.2

OGRErr OSRExportToProj4(OGRSpatialReferenceH, char**)

  Export coordinate system in PROJ.4 legacy format.

  This function is the same as OGRSpatialReference::exportToProj4().

  Warning

  Use of this function is discouraged. Its behavior in GDAL >= 3 / PROJ >= 6 is significantly different from earlier versions. In particular +datum will only encode WGS84, NAD27 and NAD83, and +towgs84/+nadgrids terms will be missing most of the time. PROJ strings to encode CRS should be considered as a legacy solution. Using a AUTHORITY:CODE or WKT representation is the recommended way.

OGRErr OSRExportToPCI(OGRSpatialReferenceH, char**, char**, double**)

  Export coordinate system in PCI projection definition.

  This function is the same as OGRSpatialReference::exportToPCI().

OGRErr OSRExportToUSGS(OGRSpatialReferenceH, long*, long*, double**, long*)

  Export coordinate system in USGS GCTP projection definition.

  This function is the same as OGRSpatialReference::exportToUSGS().

OGRErr OSRExportToXML(OGRSpatialReferenceH, char**, const char*)

  Export coordinate system in XML format.

  This function is the same as OGRSpatialReference::exportToXML().

OGRErr OSRExportToPanorama(OGRSpatialReferenceH, long*, long*, long*, long*, double*)

  Export coordinate system in "Panorama" GIS projection definition.

  See OGRSpatialReference::exportToPanorama()

OGRErr OSRExportToMICoordSys(OGRSpatialReferenceH, char**)

  Export coordinate system in Mapinfo style CoordSys format.

  This method is the equivalent of the C++ method OGRSpatialReference::exportToMICoordSys

OGRErr OSRExportToERM(OGRSpatialReferenceH, char*, char*, char*)

  Convert coordinate system to ERMapper format.

  This function is the same as OGRSpatialReference::exportToERM().

OGRErr OSRExportToCF1(OGRSpatialReferenceH, char **ppszGridMappingName, char ***ppapszKeyValues, char **ppszUnits, CSLConstList papszOptions)

  Export a CRS to netCDF CF-1 definitions.

  This function is the same as OGRSpatialReference::exportToCF1().

OGRErr OSRMorphToESRI(OGRSpatialReferenceH)

  Convert in place to ESRI WKT format.

  This function is the same as the C++ method OGRSpatialReference::morphToESRI().

OGRErr OSRMorphFromESRI(OGRSpatialReferenceH)

  Convert in place from ESRI WKT format.

  This function is the same as the C++ method OGRSpatialReference::morphFromESRI().

OGRErr OSRStripVertical(OGRSpatialReferenceH)

  Convert a compound cs into a horizontal CS.

  This function is the same as the C++ method OGRSpatialReference::StripVertical().

OGRSpatialReferenceH OSRConvertToOtherProjection(OGRSpatialReferenceH hSRS, const char *pszTargetProjection, const char *const *papszOptions)

  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:

    - hSRS -- source SRS

    - pszTargetProjection -- target projection.

    - papszOptions -- lists of options. None supported currently.

  Returns:

    a new SRS, or NULL in case of error.

const char *OSRGetName(OGRSpatialReferenceH hSRS)

  Return the CRS name.

  The returned value is only short lived and should not be used after other calls to methods on this object.

  Since

    GDAL 3.0

const char *OSRGetCelestialBodyName(OGRSpatialReferenceH hSRS)

  Return the name of the celestial body of this CRS.

  e.g. "Earth" for an Earth CRS

  The returned value is only short lived and should not be used after other calls to methods on this object.

  Since

    GDAL 3.12 and PROJ 8.1

OGRErr OSRSetAttrValue(OGRSpatialReferenceH hSRS, const char *pszNodePath, const char *pszNewNodeValue)

  Set attribute value in spatial reference.

  This function is the same as OGRSpatialReference::SetNode()

const char *OSRGetAttrValue(OGRSpatialReferenceH hSRS, const char *pszName, int iChild)

  Fetch indicated attribute of named node.

  This function is the same as OGRSpatialReference::GetAttrValue()

OGRErr OSRSetAngularUnits(OGRSpatialReferenceH, const char*, double)

  Set the angular units for the geographic coordinate system.

  This function is the same as OGRSpatialReference::SetAngularUnits()

double OSRGetAngularUnits(OGRSpatialReferenceH, char**)

  Fetch angular geographic coordinate system units.

  This function is the same as OGRSpatialReference::GetAngularUnits()

OGRErr OSRSetLinearUnits(OGRSpatialReferenceH, const char*, double)

  Set the linear units for the projection.

  This function is the same as OGRSpatialReference::SetLinearUnits()

OGRErr OSRSetTargetLinearUnits(OGRSpatialReferenceH, const char*, const char*, double)

  Set the linear units for the target node.

  This function is the same as OGRSpatialReference::SetTargetLinearUnits()

OGRErr OSRSetLinearUnitsAndUpdateParameters(OGRSpatialReferenceH, const char*, double)

  Set the linear units for the projection.

  This function is the same as OGRSpatialReference::SetLinearUnitsAndUpdateParameters()

double OSRGetLinearUnits(OGRSpatialReferenceH, char**)

  Fetch linear projection units.

  This function is the same as OGRSpatialReference::GetLinearUnits()

double OSRGetTargetLinearUnits(OGRSpatialReferenceH, const char*, char**)

  Fetch linear projection units.

  This function is the same as OGRSpatialReference::GetTargetLinearUnits()

double OSRGetPrimeMeridian(OGRSpatialReferenceH, char**)

  Fetch prime meridian info.

  This function is the same as OGRSpatialReference::GetPrimeMeridian()

int OSRIsGeographic(OGRSpatialReferenceH)

  Check if geographic coordinate system.

  This function is the same as OGRSpatialReference::IsGeographic().

int OSRIsDerivedGeographic(OGRSpatialReferenceH)

  Check if the CRS is a derived geographic coordinate system.

  (for example a rotated long/lat grid)

  This function is the same as OGRSpatialReference::IsDerivedGeographic().

int OSRIsLocal(OGRSpatialReferenceH)

  Check if local coordinate system.

  This function is the same as OGRSpatialReference::IsLocal().

int OSRIsProjected(OGRSpatialReferenceH)

  Check if projected coordinate system.

  This function is the same as OGRSpatialReference::IsProjected().

int OSRIsDerivedProjected(OGRSpatialReferenceH)

  Check if the CRS is a derived projected coordinate system.

  This function is the same as OGRSpatialReference::IsDerivedProjected().

  Since

    GDAL 3.9.0 (and may only return non-zero starting with PROJ 9.2.0)

int OSRIsCompound(OGRSpatialReferenceH)

  Check if the coordinate system is compound.

  This function is the same as OGRSpatialReference::IsCompound().

int OSRIsGeocentric(OGRSpatialReferenceH)

  Check if geocentric coordinate system.

  This function is the same as OGRSpatialReference::IsGeocentric().

int OSRIsVertical(OGRSpatialReferenceH)

  Check if vertical coordinate system.

  This function is the same as OGRSpatialReference::IsVertical().

int OSRIsDynamic(OGRSpatialReferenceH)

  Check if a CRS is a dynamic CRS.

  A dynamic CRS relies on a dynamic datum, that is a datum that is not plate-fixed.

  This function is the same as OGRSpatialReference::IsDynamic().

  Since

    OGR 3.4.0

int OSRHasPointMotionOperation(OGRSpatialReferenceH)

  Check if a CRS has at least an associated point motion operation.

  Some CRS are not formally declared as dynamic, but may behave as such in practice due to the presence of point motion operation, to perform coordinate epoch changes within the CRS. Typically NAD83(CSRS)v7

  This function is the same as OGRSpatialReference::HasPointMotionOperation().

  Since

    OGR 3.8.0 and PROJ 9.4.0

int OSRIsSameGeogCS(OGRSpatialReferenceH, OGRSpatialReferenceH)

  Do the GeogCS'es match?

  This function is the same as OGRSpatialReference::IsSameGeogCS().

int OSRIsSameVertCS(OGRSpatialReferenceH, OGRSpatialReferenceH)

  Do the VertCS'es match?

  This function is the same as OGRSpatialReference::IsSameVertCS().

int OSRIsSame(OGRSpatialReferenceH, OGRSpatialReferenceH)

  Do these two spatial references describe the same system ?

  This function is the same as OGRSpatialReference::IsSame().

int OSRIsSameEx(OGRSpatialReferenceH, OGRSpatialReferenceH, const char *const *papszOptions)

  Do these two spatial references describe the same system ?

  This function is the same as OGRSpatialReference::IsSame().

void OSRSetCoordinateEpoch(OGRSpatialReferenceH hSRS, double dfCoordinateEpoch)

  Set the coordinate epoch, as decimal year.

  See OGRSpatialReference::SetCoordinateEpoch()

  Since

    OGR 3.4

double OSRGetCoordinateEpoch(OGRSpatialReferenceH hSRS)

  Get the coordinate epoch, as decimal year.

  See OGRSpatialReference::GetCoordinateEpoch()

  Since

    OGR 3.4

OGRErr OSRSetLocalCS(OGRSpatialReferenceH hSRS, const char *pszName)

  Set the user visible LOCAL_CS name.

  This function is the same as OGRSpatialReference::SetLocalCS()

OGRErr OSRSetProjCS(OGRSpatialReferenceH hSRS, const char *pszName)

  Set the user visible PROJCS name.

  This function is the same as OGRSpatialReference::SetProjCS()

OGRErr OSRSetGeocCS(OGRSpatialReferenceH hSRS, const char *pszName)

  Set the user visible PROJCS name.

  This function is the same as OGRSpatialReference::SetGeocCS()

OGRErr OSRSetWellKnownGeogCS(OGRSpatialReferenceH hSRS, const char *pszName)

  Set a GeogCS based on well known name.

  This function is the same as OGRSpatialReference::SetWellKnownGeogCS()

OGRErr OSRSetFromUserInput(OGRSpatialReferenceH hSRS, const char*)

  Set spatial reference from various text formats.

  This function is the same as OGRSpatialReference::SetFromUserInput()

  See also

  OSRSetFromUserInputEx() for a variant allowing to pass options.

OGRErr OSRSetFromUserInputEx(OGRSpatialReferenceH hSRS, const char*, CSLConstList papszOptions)

  Set spatial reference from various text formats.

  This function is the same as OGRSpatialReference::SetFromUserInput().

  Since

    GDAL 3.9

OGRErr OSRCopyGeogCSFrom(OGRSpatialReferenceH hSRS, const OGRSpatialReferenceH hSrcSRS)

  Copy GEOGCS from another OGRSpatialReference.

  This function is the same as OGRSpatialReference::CopyGeogCSFrom()

OGRErr OSRSetTOWGS84(OGRSpatialReferenceH hSRS, double, double, double, double, double, double, double)

  Set the Bursa-Wolf conversion to WGS84.

  This function is the same as OGRSpatialReference::SetTOWGS84().

OGRErr OSRGetTOWGS84(OGRSpatialReferenceH hSRS, double*, int)

  Fetch TOWGS84 parameters, if available.

  This function is the same as OGRSpatialReference::GetTOWGS84().

OGRErr OSRAddGuessedTOWGS84(OGRSpatialReferenceH hSRS)

  Try to add a a 3-parameter or 7-parameter Helmert transformation to WGS84.

  This function is the same as OGRSpatialReference::AddGuessedTOWGS84().

  Since

    GDAL 3.0.3

OGRErr OSRSetCompoundCS(OGRSpatialReferenceH hSRS, const char *pszName, OGRSpatialReferenceH hHorizSRS, OGRSpatialReferenceH hVertSRS)

  Setup a compound coordinate system.

  This function is the same as OGRSpatialReference::SetCompoundCS()

OGRErr OSRPromoteTo3D(OGRSpatialReferenceH hSRS, const char *pszName)

  "Promotes" a 2D CRS to a 3D CRS one.

  See OGRSpatialReference::PromoteTo3D()

  Since

    GDAL 3.1 and PROJ 6.3

OGRErr OSRDemoteTo2D(OGRSpatialReferenceH hSRS, const char *pszName)

  "Demote" a 3D CRS to a 2D CRS one.

  See OGRSpatialReference::DemoteTo2D()

  Since

    GDAL 3.2 and PROJ 6.3

OGRErr OSRSetGeogCS(OGRSpatialReferenceH hSRS, const char *pszGeogName, const char *pszDatumName, const char *pszEllipsoidName, double dfSemiMajor, double dfInvFlattening, const char *pszPMName, double dfPMOffset, const char *pszUnits, double dfConvertToRadians)

  Set geographic coordinate system.

  This function is the same as OGRSpatialReference::SetGeogCS()

OGRErr OSRSetVertCS(OGRSpatialReferenceH hSRS, const char *pszVertCSName, const char *pszVertDatumName, int nVertDatumType)

  Setup the vertical coordinate system.

  This function is the same as OGRSpatialReference::SetVertCS()

double OSRGetSemiMajor(OGRSpatialReferenceH, OGRErr*)

  Get spheroid semi major axis.

  This function is the same as OGRSpatialReference::GetSemiMajor()

double OSRGetSemiMinor(OGRSpatialReferenceH, OGRErr*)

  Get spheroid semi minor axis.

  This function is the same as OGRSpatialReference::GetSemiMinor()

double OSRGetInvFlattening(OGRSpatialReferenceH, OGRErr*)

  Get spheroid inverse flattening.

  This function is the same as OGRSpatialReference::GetInvFlattening()

OGRErr OSRSetAuthority(OGRSpatialReferenceH hSRS, const char *pszTargetKey, const char *pszAuthority, int nCode)

  Set the authority for a node.

  This function is the same as OGRSpatialReference::SetAuthority().

const char *OSRGetAuthorityCode(OGRSpatialReferenceH hSRS, const char *pszTargetKey)

  Get the authority code for a node.

  This function is the same as OGRSpatialReference::GetAuthorityCode().

const char *OSRGetAuthorityName(OGRSpatialReferenceH hSRS, const char *pszTargetKey)

  Get the authority name for a node.

  This function is the same as OGRSpatialReference::GetAuthorityName().

int OSRGetAreaOfUse(OGRSpatialReferenceH hSRS, double *pdfWestLongitudeDeg, double *pdfSouthLatitudeDeg, double *pdfEastLongitudeDeg, double *pdfNorthLatitudeDeg, const char **ppszAreaName)

  Return the area of use of the CRS.

  This function is the same as the OGRSpatialReference::GetAreaOfUse() method.

  Since

    GDAL 3.0

OGRErr OSRSetProjection(OGRSpatialReferenceH, const char*)

  Set a projection name.

  This function is the same as OGRSpatialReference::SetProjection()

OGRErr OSRSetProjParm(OGRSpatialReferenceH, const char*, double)

  Set a projection parameter value.

  This function is the same as OGRSpatialReference::SetProjParm()

double OSRGetProjParm(OGRSpatialReferenceH hSRS, const char *pszParamName, double dfDefault, OGRErr*)

  Fetch a projection parameter value.

  This function is the same as OGRSpatialReference::GetProjParm()

OGRErr OSRSetNormProjParm(OGRSpatialReferenceH, const char*, double)

  Set a projection parameter with a normalized value.

  This function is the same as OGRSpatialReference::SetNormProjParm()

double OSRGetNormProjParm(OGRSpatialReferenceH hSRS, const char *pszParamName, double dfDefault, OGRErr*)

  This function is the same as OGRSpatialReference::

  This function is the same as OGRSpatialReference::GetNormProjParm()

OGRErr OSRSetUTM(OGRSpatialReferenceH hSRS, int nZone, int bNorth)

  Set UTM projection definition.

  This is the same as the C++ method OGRSpatialReference::SetUTM()

int OSRGetUTMZone(OGRSpatialReferenceH hSRS, int *pbNorth)

  Get utm zone information.

  This is the same as the C++ method OGRSpatialReference::GetUTMZone()

OGRErr OSRSetStatePlane(OGRSpatialReferenceH hSRS, int nZone, int bNAD83)

  Set State Plane projection definition.

  This function is the same as OGRSpatialReference::SetStatePlane().

OGRErr OSRSetStatePlaneWithUnits(OGRSpatialReferenceH hSRS, int nZone, int bNAD83, const char *pszOverrideUnitName, double dfOverrideUnit)

  Set State Plane projection definition.

  This function is the same as OGRSpatialReference::SetStatePlane().

OGRErr OSRAutoIdentifyEPSG(OGRSpatialReferenceH hSRS)

  Set EPSG authority info if possible.

  This function is the same as OGRSpatialReference::AutoIdentifyEPSG().

  The OSRFindMatches() function can also be used for improved matching by researching the EPSG catalog.

OGRSpatialReferenceH *OSRFindMatches(OGRSpatialReferenceH hSRS, char **papszOptions, int *pnEntries, int **ppanMatchConfidence)

  Try to identify a match between the passed SRS and a related SRS in a catalog.

  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. Starting with GDAL 3.0, it relies on PROJ' proj_identify() function.

  This function is the same as OGRSpatialReference::FindMatches().

  Parameters:

    - hSRS -- SRS to match

    - papszOptions -- NULL terminated list of options or NULL

    - pnEntries -- Output parameter. Number of values in the returned array.

    - ppanMatchConfidence -- Output 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()

void OSRFreeSRSArray(OGRSpatialReferenceH *pahSRS)

  Free return of OSRIdentifyMatches()

  Parameters:

    pahSRS -- array of SRS (must be NULL terminated)

int OSREPSGTreatsAsLatLong(OGRSpatialReferenceH hSRS)

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

  This function is the same as OGRSpatialReference::OSREPSGTreatsAsLatLong().

int OSREPSGTreatsAsNorthingEasting(OGRSpatialReferenceH hSRS)

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

  This function is the same as OGRSpatialReference::EPSGTreatsAsNorthingEasting().

const char *OSRGetAxis(OGRSpatialReferenceH hSRS, const char *pszTargetKey, int iAxis, OGRAxisOrientation *peOrientation)

  Fetch the orientation of one axis.

  This method is the equivalent of the C++ method OGRSpatialReference::GetAxis

int OSRGetAxesCount(OGRSpatialReferenceH hSRS)

  Return the number of axis of the coordinate system of the CRS.

  This method is the equivalent of the C++ method OGRSpatialReference::GetAxesCount()

  Since

    GDAL 3.1

OGRErr OSRSetAxes(OGRSpatialReferenceH hSRS, const char *pszTargetKey, const char *pszXAxisName, OGRAxisOrientation eXAxisOrientation, const char *pszYAxisName, OGRAxisOrientation eYAxisOrientation)

  Set the axes for a coordinate system.

  This method is the equivalent of the C++ method OGRSpatialReference::SetAxes

OSRAxisMappingStrategy OSRGetAxisMappingStrategy(OGRSpatialReferenceH hSRS)

  Return the data axis to CRS axis mapping strategy.

  See OGRSpatialReference::GetAxisMappingStrategy()

  Since

    GDAL 3.0

void OSRSetAxisMappingStrategy(OGRSpatialReferenceH hSRS, OSRAxisMappingStrategy strategy)

  Set the data axis to CRS axis mapping strategy.

  See OGRSpatialReference::SetAxisMappingStrategy()

  Since

    GDAL 3.0

const int *OSRGetDataAxisToSRSAxisMapping(OGRSpatialReferenceH hSRS, int *pnCount)

  Return the data axis to SRS axis mapping.

  See OGRSpatialReference::GetDataAxisToSRSAxisMapping()

  Since

    GDAL 3.0

OGRErr OSRSetDataAxisToSRSAxisMapping(OGRSpatialReferenceH hSRS, int nMappingSize, const int *panMapping)

  Set a custom data axis to CRS axis mapping.

  Automatically implies SetAxisMappingStrategy(OAMS_CUSTOM)

  This is the same as the C++ method OGRSpatialReference::SetDataAxisToSRSAxisMapping()

  Since

    GDAL 3.1

OGRErr OSRSetACEA(OGRSpatialReferenceH hSRS, double dfStdP1, double dfStdP2, double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)

  Albers Conic Equal Area.

OGRErr OSRSetAE(OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)

  Azimuthal Equidistant.

OGRErr OSRSetBonne(OGRSpatialReferenceH hSRS, double dfStandardParallel, double dfCentralMeridian, double dfFalseEasting, double dfFalseNorthing)

  Bonne.

OGRErr OSRSetCEA(OGRSpatialReferenceH hSRS, double dfStdP1, double dfCentralMeridian, double dfFalseEasting, double dfFalseNorthing)

  Cylindrical Equal Area.

OGRErr OSRSetCS(OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)

  Cassini-Soldner.

OGRErr OSRSetEC(OGRSpatialReferenceH hSRS, double dfStdP1, double dfStdP2, double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)

  Equidistant Conic.

OGRErr OSRSetEckert(OGRSpatialReferenceH hSRS, int nVariation, double dfCentralMeridian, double dfFalseEasting, double dfFalseNorthing)

  Eckert I-VI.

OGRErr OSRSetEckertIV(OGRSpatialReferenceH hSRS, double dfCentralMeridian, double dfFalseEasting, double dfFalseNorthing)

  Eckert IV.

OGRErr OSRSetEckertVI(OGRSpatialReferenceH hSRS, double dfCentralMeridian, double dfFalseEasting, double dfFalseNorthing)

  Eckert VI.

OGRErr OSRSetEquirectangular(OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)

  Equirectangular.

OGRErr OSRSetEquirectangular2(OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong, double dfPseudoStdParallel1, double dfFalseEasting, double dfFalseNorthing)

  Equirectangular generalized form.

OGRErr OSRSetGS(OGRSpatialReferenceH hSRS, double dfCentralMeridian, double dfFalseEasting, double dfFalseNorthing)

  Gall Stereograpic.

OGRErr OSRSetGH(OGRSpatialReferenceH hSRS, double dfCentralMeridian, double dfFalseEasting, double dfFalseNorthing)

  Goode Homolosine.

OGRErr OSRSetIGH(OGRSpatialReferenceH hSRS)

  Interrupted Goode Homolosine.

OGRErr OSRSetGEOS(OGRSpatialReferenceH hSRS, double dfCentralMeridian, double dfSatelliteHeight, double dfFalseEasting, double dfFalseNorthing)

  GEOS - Geostationary Satellite View.

OGRErr OSRSetGaussSchreiberTMercator(OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong, double dfScale, double dfFalseEasting, double dfFalseNorthing)

  Gauss Schreiber Transverse Mercator.

OGRErr OSRSetGnomonic(OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)

  Gnomonic.

OGRErr OSRSetHOM(OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong, double dfAzimuth, double dfRectToSkew, double dfScale, double dfFalseEasting, double dfFalseNorthing)

  Hotine Oblique Mercator using azimuth angle.

  Hotine Oblique Mercator using azimuth angle.

  This is the same as the C++ method OGRSpatialReference::SetHOM()

OGRErr OSRSetHOMAC(OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong, double dfAzimuth, double dfRectToSkew, double dfScale, double dfFalseEasting, double dfFalseNorthing)

  Set an Oblique Mercator projection using azimuth angle.

  This is the same as the C++ method OGRSpatialReference::SetHOMAC()

OGRErr OSRSetHOM2PNO(OGRSpatialReferenceH hSRS, double dfCenterLat, double dfLat1, double dfLong1, double dfLat2, double dfLong2, double dfScale, double dfFalseEasting, double dfFalseNorthing)

  Hotine Oblique Mercator using two points on centerline.

  Hotine Oblique Mercator using two points on centerline.

  This is the same as the C++ method OGRSpatialReference::SetHOM2PNO()

OGRErr OSRSetIWMPolyconic(OGRSpatialReferenceH hSRS, double dfLat1, double dfLat2, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)

  International Map of the World Polyconic.

OGRErr OSRSetKrovak(OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong, double dfAzimuth, double dfPseudoStdParallelLat, double dfScale, double dfFalseEasting, double dfFalseNorthing)

  Krovak Oblique Conic Conformal.

OGRErr OSRSetLAEA(OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)

  Lambert Azimuthal Equal-Area.

OGRErr OSRSetLCC(OGRSpatialReferenceH hSRS, double dfStdP1, double dfStdP2, double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)

  Lambert Conformal Conic.

OGRErr OSRSetLCC1SP(OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong, double dfScale, double dfFalseEasting, double dfFalseNorthing)

  Lambert Conformal Conic 1SP.

OGRErr OSRSetLCCB(OGRSpatialReferenceH hSRS, double dfStdP1, double dfStdP2, double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)

  Lambert Conformal Conic (Belgium)

OGRErr OSRSetMC(OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)

  Miller Cylindrical.

OGRErr OSRSetMercator(OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong, double dfScale, double dfFalseEasting, double dfFalseNorthing)

  Mercator.

OGRErr OSRSetMercator2SP(OGRSpatialReferenceH hSRS, double dfStdP1, double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)

  Mercator 2SP.

OGRErr OSRSetMollweide(OGRSpatialReferenceH hSRS, double dfCentralMeridian, double dfFalseEasting, double dfFalseNorthing)

  Mollweide.

OGRErr OSRSetNZMG(OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)

  New Zealand Map Grid.

OGRErr OSRSetOS(OGRSpatialReferenceH hSRS, double dfOriginLat, double dfCMeridian, double dfScale, double dfFalseEasting, double dfFalseNorthing)

  Oblique Stereographic.

OGRErr OSRSetOrthographic(OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)

  Orthographic.

OGRErr OSRSetPolyconic(OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)

  Polyconic.

OGRErr OSRSetPS(OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong, double dfScale, double dfFalseEasting, double dfFalseNorthing)

  Polar Stereographic.

OGRErr OSRSetRobinson(OGRSpatialReferenceH hSRS, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)

  Robinson.

OGRErr OSRSetSinusoidal(OGRSpatialReferenceH hSRS, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)

  Sinusoidal.

OGRErr OSRSetStereographic(OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong, double dfScale, double dfFalseEasting, double dfFalseNorthing)

  Stereographic.

OGRErr OSRSetSOC(OGRSpatialReferenceH hSRS, double dfLatitudeOfOrigin, double dfCentralMeridian, double dfFalseEasting, double dfFalseNorthing)

  Swiss Oblique Cylindrical.

OGRErr OSRSetTM(OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong, double dfScale, double dfFalseEasting, double dfFalseNorthing)

  Transverse Mercator.

  Special processing available for Transverse Mercator with GDAL >= 1.10 and PROJ >= 4.8 : see OGRSpatialReference::exportToProj4().

OGRErr OSRSetTMVariant(OGRSpatialReferenceH hSRS, const char *pszVariantName, double dfCenterLat, double dfCenterLong, double dfScale, double dfFalseEasting, double dfFalseNorthing)

  Transverse Mercator variant.

OGRErr OSRSetTMG(OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)

  Tunesia Mining Grid

OGRErr OSRSetTMSO(OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong, double dfScale, double dfFalseEasting, double dfFalseNorthing)

  Transverse Mercator (South Oriented)

OGRErr OSRSetTPED(OGRSpatialReferenceH hSRS, double dfLat1, double dfLong1, double dfLat2, double dfLong2, double dfFalseEasting, double dfFalseNorthing)

  TPED (Two Point Equi Distant)

OGRErr OSRSetVDG(OGRSpatialReferenceH hSRS, double dfCenterLong, double dfFalseEasting, double dfFalseNorthing)

  VanDerGrinten.

OGRErr OSRSetWagner(OGRSpatialReferenceH hSRS, int nVariation, double dfCenterLat, double dfFalseEasting, double dfFalseNorthing)

  Wagner I -- VII.

OGRErr OSRSetQSC(OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong)

  Quadrilateralized Spherical Cube.

OGRErr OSRSetSCH(OGRSpatialReferenceH hSRS, double dfPegLat, double dfPegLong, double dfPegHeading, double dfPegHgt)

  Spherical, Cross-track, Height.

OGRErr OSRSetVerticalPerspective(OGRSpatialReferenceH hSRS, double dfTopoOriginLat, double dfTopoOriginLon, double dfTopoOriginHeight, double dfViewPointHeight, double dfFalseEasting, double dfFalseNorthing)

  Vertical Perspective / Near-sided Perspective.

double OSRCalcInvFlattening(double dfSemiMajor, double dfSemiMinor)

  Compute inverse flattening from semi-major and semi-minor axis.

  Parameters:

    - dfSemiMajor -- Semi-major axis length.

    - dfSemiMinor -- Semi-minor axis length.

  Returns:

    inverse flattening, or 0 if both axis are equal.

double OSRCalcSemiMinorFromInvFlattening(double dfSemiMajor, double dfInvFlattening)

  Compute semi-minor axis from semi-major axis and inverse flattening.

  Parameters:

    - dfSemiMajor -- Semi-major axis length.

    - dfInvFlattening -- Inverse flattening or 0 for sphere.

  Returns:

    semi-minor axis

void OSRCleanup(void)

  Cleanup cached SRS related memory.

  This function will attempt to cleanup any cache spatial reference related information, such as cached tables of coordinate systems.

  This function should not be called concurrently with any other GDAL/OGR function. It is meant at being called once before process termination (typically from the main thread). CPLCleanupTLS() might be used to clean thread-specific resources before thread termination.

OSRCRSInfo **OSRGetCRSInfoListFromDatabase(const char *pszAuthName, const OSRCRSListParameters *params, int *pnOutResultCount)

  Enumerate CRS objects from the database.

  The returned object is an array of OSRCRSInfo* pointers, whose last entry is NULL. This array should be freed with OSRDestroyCRSInfoList()

  Since

    GDAL 3.0

  Parameters:

    - pszAuthName -- Authority name, used to restrict the search. Or NULL for all authorities.

    - params -- Additional criteria. Must be set to NULL for now.

    - pnOutResultCount -- Output parameter pointing to an integer to receive the size of the result list. Might be NULL

  Returns:

    an array of OSRCRSInfo* pointers to be freed with OSRDestroyCRSInfoList(), or NULL in case of error.

void OSRDestroyCRSInfoList(OSRCRSInfo **list)

  Destroy the result returned by OSRGetCRSInfoListFromDatabase().

  Since

    GDAL 3.0

char **OSRGetAuthorityListFromDatabase(void)

  Return the list of CRS authorities used in the PROJ database.

  Such as "EPSG", "ESRI", "PROJ", "IGNF", "IAU_2015", etc.

  This is a direct mapping of https://proj.org/en/latest/development/reference/functions.html#c.proj_get_authorities_from_database

  Since

    GDAL 3.10

  Returns:

    nullptr in case of error, or a NULL terminated list of strings to free with CSLDestroy()

OGRCoordinateTransformationH OCTNewCoordinateTransformation(OGRSpatialReferenceH hSourceSRS, OGRSpatialReferenceH hTargetSRS)

  Create transformation object.

  This is the same as the C++ function OGRCreateCoordinateTransformation(const

  OGRSpatialReference *, const OGRSpatialReference *)

  Input spatial reference system objects are assigned by copy (calling clone() method) and no ownership transfer occurs.

  OCTDestroyCoordinateTransformation() should be used to destroy transformation objects.

  This will honour the axis order advertized by the source and target SRS, as well as their "data axis to SRS axis mapping". To have a behavior similar to GDAL < 3.0, the OGR_CT_FORCE_TRADITIONAL_GIS_ORDER configuration option can be set to YES.

  Parameters:

    - hSourceSRS -- source spatial reference system.

    - hTargetSRS -- target spatial reference system.

  Returns:

    NULL on failure or a ready to use transformation object.

OGRCoordinateTransformationOptionsH OCTNewCoordinateTransformationOptions(void)

  Create coordinate transformation options.

  To be freed with OCTDestroyCoordinateTransformationOptions()

  Since

    GDAL 3.0

int OCTCoordinateTransformationOptionsSetOperation(OGRCoordinateTransformationOptionsH hOptions, const char *pszCO, int bReverseCO)

  Sets a coordinate operation.

  See OGRCoordinateTransformationOptions::SetCoordinateTransformation()

  Since

    GDAL 3.0

int OCTCoordinateTransformationOptionsSetAreaOfInterest(OGRCoordinateTransformationOptionsH hOptions, double dfWestLongitudeDeg, double dfSouthLatitudeDeg, double dfEastLongitudeDeg, double dfNorthLatitudeDeg)

  Sets an area of interest.

  See OGRCoordinateTransformationOptions::SetAreaOfInterest()

  Since

    GDAL 3.0

int OCTCoordinateTransformationOptionsSetDesiredAccuracy(OGRCoordinateTransformationOptionsH hOptions, double dfAccuracy)

  Sets the desired accuracy for coordinate operations.

  See OGRCoordinateTransformationOptions::SetDesiredAccuracy()

  Since

    GDAL 3.3

int OCTCoordinateTransformationOptionsSetBallparkAllowed(OGRCoordinateTransformationOptionsH hOptions, int bAllowBallpark)

  Sets whether ballpark transformations are allowed.

  See OGRCoordinateTransformationOptions::SetDesiredAccuracy()

  Since

    GDAL 3.3 and PROJ 8

int OCTCoordinateTransformationOptionsSetOnlyBest(OGRCoordinateTransformationOptionsH hOptions, bool bOnlyBest)

  Sets whether only the "best" operation(s) should be used.

  See OGRCoordinateTransformationOptions::SetOnlyBest()

  Since

    GDAL 3.8 and PROJ 9.2

void OCTDestroyCoordinateTransformationOptions(OGRCoordinateTransformationOptionsH)

  Destroy coordinate transformation options.

  Since

    GDAL 3.0

OGRCoordinateTransformationH OCTNewCoordinateTransformationEx(OGRSpatialReferenceH hSourceSRS, OGRSpatialReferenceH hTargetSRS, OGRCoordinateTransformationOptionsH hOptions)

  Create transformation object.

  This is the same as the C++ function OGRCreateCoordinateTransformation(const

  OGRSpatialReference *, const OGRSpatialReference *, const

  OGRCoordinateTransformationOptions& )

  Input spatial reference system objects are assigned by copy (calling clone() method) and no ownership transfer occurs.

  OCTDestroyCoordinateTransformation() should be used to destroy transformation objects.

  The source SRS and target SRS should generally not be NULL. This is only allowed if a custom coordinate operation is set through the hOptions argument.

  This will honour the axis order advertized by the source and target SRS, as well as their "data axis to SRS axis mapping". To have a behavior similar to GDAL < 3.0, the OGR_CT_FORCE_TRADITIONAL_GIS_ORDER configuration option can be set to YES.

  If options contains a user defined coordinate transformation pipeline, it will be unconditionally used. If options has an area of interest defined, it will be used to research the best fitting coordinate transformation (which will be used for all coordinate transformations, even if they don't fall into the declared area of interest) If no options are set, then a list of candidate coordinate operations will be researched, and at each call to Transform(), the best of those candidate regarding the centroid of the coordinate set will be dynamically selected.

  Since

    GDAL 3.0

  Parameters:

    - hSourceSRS -- source spatial reference system.

    - hTargetSRS -- target spatial reference system.

    - hOptions -- Coordinate transformation options.

  Returns:

    NULL on failure or a ready to use transformation object.

OGRCoordinateTransformationH OCTClone(OGRCoordinateTransformationH hTransform)

  Clone transformation object.

  This is the same as the C++ function OGRCreateCoordinateTransformation::Clone

  Since

    GDAL 3.4

  Returns:

    handle to transformation's clone or NULL on error, must be freed with OCTDestroyCoordinateTransformation

OGRSpatialReferenceH OCTGetSourceCS(OGRCoordinateTransformationH hTransform)

  Transformation's source coordinate system reference.

  This is the same as the C++ function OGRCreateCoordinateTransformation::GetSourceCS

  The ownership of the returned SRS belongs to the transformation object, and the returned SRS should not be modified.

  Since

    GDAL 3.4

  Returns:

    handle to transformation's source coordinate system or NULL if not present.

OGRSpatialReferenceH OCTGetTargetCS(OGRCoordinateTransformationH hTransform)

  Transformation's target coordinate system reference.

  This is the same as the C++ function OGRCreateCoordinateTransformation::GetTargetCS

  The ownership of the returned SRS belongs to the transformation object, and the returned SRS should not be modified.

  Since

    GDAL 3.4

  Returns:

    handle to transformation's target coordinate system or NULL if not present.

OGRCoordinateTransformationH OCTGetInverse(OGRCoordinateTransformationH hTransform)

  Inverse transformation object.

  This is the same as the C++ function OGRCreateCoordinateTransformation::GetInverse

  Since

    GDAL 3.4

  Returns:

    handle to inverse transformation or NULL on error, must be freed with OCTDestroyCoordinateTransformation

void OCTDestroyCoordinateTransformation(OGRCoordinateTransformationH)

  OGRCoordinateTransformation destructor.

  This function is the same as OGRCoordinateTransformation::DestroyCT()

  Parameters:

    hCT -- the object to delete

int OCTTransform(OGRCoordinateTransformationH hCT, int nCount, double *x, double *y, double *z)

  Transform an array of points.

  Parameters:

    - hTransform -- Transformation object

    - nCount -- Number of points

    - x -- Array of nCount x values.

    - y -- Array of nCount y values.

    - z -- Array of nCount z values.

  Returns:

    TRUE if a transformation could be found (but not all points may have necessarily succeed to transform), otherwise FALSE.

int OCTTransformEx(OGRCoordinateTransformationH hCT, int nCount, double *x, double *y, double *z, int *pabSuccess)

  Transform an array of points.

  Parameters:

    - hTransform -- Transformation object

    - nCount -- Number of points

    - x -- Array of nCount x values.

    - y -- Array of nCount y values.

    - z -- Array of nCount z values.

    - pabSuccess -- Output array of nCount value that will be set to TRUE/FALSE

  Returns:

    TRUE if a transformation could be found (but not all points may have necessarily succeed to transform), otherwise FALSE.

int OCTTransform4D(OGRCoordinateTransformationH hCT, int nCount, double *x, double *y, double *z, double *t, int *pabSuccess)

  Transform an array of points.

  Since

    GDAL 3.0

  Parameters:

    - hTransform -- Transformation object

    - nCount -- Number of points

    - x -- Array of nCount x values. Should not be NULL

    - y -- Array of nCount y values. Should not be NULL

    - z -- Array of nCount z values. Might be NULL

    - t -- Array of nCount time values. Might be NULL

    - pabSuccess -- Output array of nCount value that will be set to TRUE/FALSE. Might be NULL.

  Returns:

    TRUE if a transformation could be found (but not all points may have necessarily succeed to transform), otherwise FALSE.

int OCTTransform4DWithErrorCodes(OGRCoordinateTransformationH hCT, int nCount, double *x, double *y, double *z, double *t, int *panErrorCodes)

  Transform an array of points.

  Since

    GDAL 3.3, and PROJ 8 to be able to use PROJ public error codes

  Parameters:

    - hTransform -- Transformation object

    - nCount -- Number of points

    - x -- Array of nCount x values. Should not be NULL

    - y -- Array of nCount y values. Should not be NULL

    - z -- Array of nCount z values. Might be NULL

    - t -- Array of nCount time values. Might be NULL

    - panErrorCodes -- Output array of nCount value that will be set to 0 for success, or a non-zero value for failure. Refer to PROJ 8 public error codes. Might be NULL

  Returns:

    TRUE if a transformation could be found (but not all points may have necessarily succeed to transform), otherwise FALSE.

int OCTTransformBounds(OGRCoordinateTransformationH hCT, const double xmin, const double ymin, const double xmax, const double ymax, double *out_xmin, double *out_ymin, double *out_xmax, double *out_ymax, const int densify_pts)

  Transform boundary.

  Transform boundary densifying the edges to account for nonlinear transformations along these edges and extracting the outermost bounds.

  If the destination CRS is geographic, the first axis is longitude, and *out_xmax < *out_xmin then the bounds crossed the antimeridian. In this scenario there are two polygons, one on each side of the antimeridian. The first polygon should be constructed with (*out_xmin, *out_ymin, 180, ymax) and the second with (-180, *out_ymin, *out_xmax, *out_ymax).

  If the destination CRS is geographic, the first axis is latitude, and *out_ymax < *out_ymin then the bounds crossed the antimeridian. In this scenario there are two polygons, one on each side of the antimeridian. The first polygon should be constructed with (*out_ymin, *out_xmin, *out_ymax, 180) and the second with (*out_ymin, -180, *out_ymax, *out_xmax).

  Since

    3.4

  Parameters:

    - hTransform -- Transformation object

    - xmin -- Minimum bounding coordinate of the first axis in source CRS.

    - ymin -- Minimum bounding coordinate of the second axis in source CRS.

    - xmax -- Maximum bounding coordinate of the first axis in source CRS.

    - ymax -- Maximum bounding coordinate of the second axis in source CRS.

    - out_xmin -- Minimum bounding coordinate of the first axis in target CRS

    - out_ymin -- Minimum bounding coordinate of the second axis in target CRS.

    - out_xmax -- Maximum bounding coordinate of the first axis in target CRS.

    - out_ymax -- Maximum bounding coordinate of the second axis in target CRS.

    - densify_pts -- Recommended to use 21. This is the number of points to use to densify the bounding polygon in the transformation.

  Returns:

    TRUE if successful. FALSE if failures encountered.

struct OSRCRSInfo
  #include <ogr_srs_api.h>

  Structure given overall description of a CRS.

  This structure may grow over time, and should not be directly allocated by client code.

  Public Members

  char *pszAuthName

    Authority name.

  char *pszCode

    Object code.

  char *pszName

    Object name.

  OSRCRSType eType

    Object type.

  int bDeprecated

    Whether the object is deprecated.

  int bBboxValid

    Whereas the west_lon_degree, south_lat_degree, east_lon_degree and north_lat_degree fields are valid.

  double dfWestLongitudeDeg

    Western-most longitude of the area of use, in degrees.

  double dfSouthLatitudeDeg

    Southern-most latitude of the area of use, in degrees.

  double dfEastLongitudeDeg

    Eastern-most longitude of the area of use, in degrees.

  double dfNorthLatitudeDeg

    Northern-most latitude of the area of use, in degrees.

  char *pszAreaName

    Name of the area of use.

  char *pszProjectionMethod

    Name of the projection method for a projected CRS.

    Might be NULL even for projected CRS in some cases.

  char *pszCelestialBodyName

    Name of the celestial body of the CRS (e.g.

    "Earth").

    Since

      GDAL 3.12, and filled only if PROJ >= 8.1