DYT/Tool/OpenSceneGraph-3.6.5/include/ogr_srs_api.h
2024-12-25 07:49:36 +08:00

1089 lines
49 KiB
C

/******************************************************************************
* $Id$
*
* Project: OpenGIS Simple Features Reference Implementation
* Purpose: C API and constant declarations for OGR Spatial References.
* Author: Frank Warmerdam, warmerdam@pobox.com
*
******************************************************************************
* Copyright (c) 2000, Frank Warmerdam
* Copyright (c) 2008-2013, Even Rouault <even dot rouault at spatialys.com>
*
* SPDX-License-Identifier: MIT
****************************************************************************/
#ifndef OGR_SRS_API_H_INCLUDED
#define OGR_SRS_API_H_INCLUDED
#include <stdbool.h>
#ifndef SWIG
#include "ogr_core.h"
CPL_C_START
/**
* \file ogr_srs_api.h
*
* C spatial reference system services and defines.
*
* See also: ogr_spatialref.h
*/
/** Axis orientations (corresponds to CS_AxisOrientationEnum). */
typedef enum
{
OAO_Other = 0, /**< Other */
OAO_North = 1, /**< North */
OAO_South = 2, /**< South */
OAO_East = 3, /**< East */
OAO_West = 4, /**< West */
OAO_Up = 5, /**< Up (to space) */
OAO_Down = 6 /**< Down (to Earth center) */
} OGRAxisOrientation;
const char CPL_DLL *OSRAxisEnumToName(OGRAxisOrientation eOrientation);
#endif // ndef SWIG
/* ==================================================================== */
/* Some standard WKT geographic coordinate systems. */
/* ==================================================================== */
#ifdef USE_DEPRECATED_SRS_WKT_WGS84
#define SRS_WKT_WGS84 \
"GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS " \
"84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[" \
"\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]]" \
",UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]," \
"AUTHORITY[\"EPSG\",\"4326\"]]"
#endif
/** WGS 84 geodetic (lat/long) WKT / EPSG:4326 with lat,long ordering */
#define SRS_WKT_WGS84_LAT_LONG \
"GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS " \
"84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[" \
"\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]]" \
",UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AXIS[" \
"\"Latitude\",NORTH],AXIS[\"Longitude\",EAST],AUTHORITY[\"EPSG\"," \
"\"4326\"]]"
/* ==================================================================== */
/* Some "standard" strings. */
/* ==================================================================== */
/** Albers_Conic_Equal_Area projection */
#define SRS_PT_ALBERS_CONIC_EQUAL_AREA "Albers_Conic_Equal_Area"
/** Azimuthal_Equidistant projection */
#define SRS_PT_AZIMUTHAL_EQUIDISTANT "Azimuthal_Equidistant"
/** Cassini_Soldner projection */
#define SRS_PT_CASSINI_SOLDNER "Cassini_Soldner"
/** Cylindrical_Equal_Area projection */
#define SRS_PT_CYLINDRICAL_EQUAL_AREA "Cylindrical_Equal_Area"
/** Cylindrical_Equal_Area projection */
#define SRS_PT_BONNE "Bonne"
/** Eckert_I projection */
#define SRS_PT_ECKERT_I "Eckert_I"
/** Eckert_II projection */
#define SRS_PT_ECKERT_II "Eckert_II"
/** Eckert_III projection */
#define SRS_PT_ECKERT_III "Eckert_III"
/** Eckert_IV projection */
#define SRS_PT_ECKERT_IV "Eckert_IV"
/** Eckert_V projection */
#define SRS_PT_ECKERT_V "Eckert_V"
/** Eckert_VI projection */
#define SRS_PT_ECKERT_VI "Eckert_VI"
/** Equidistant_Conic projection */
#define SRS_PT_EQUIDISTANT_CONIC "Equidistant_Conic"
/** Equirectangular projection */
#define SRS_PT_EQUIRECTANGULAR "Equirectangular"
/** Gall_Stereographic projection */
#define SRS_PT_GALL_STEREOGRAPHIC "Gall_Stereographic"
/** Gauss_Schreiber_Transverse_Mercator projection */
#define SRS_PT_GAUSSSCHREIBERTMERCATOR "Gauss_Schreiber_Transverse_Mercator"
/** Geostationary_Satellite projection */
#define SRS_PT_GEOSTATIONARY_SATELLITE "Geostationary_Satellite"
/** Goode_Homolosine projection */
#define SRS_PT_GOODE_HOMOLOSINE "Goode_Homolosine"
/** Interrupted_Goode_Homolosine projection */
#define SRS_PT_IGH "Interrupted_Goode_Homolosine"
/** Gnomonic projection */
#define SRS_PT_GNOMONIC "Gnomonic"
/** Hotine_Oblique_Mercator_Azimuth_Center projection */
#define SRS_PT_HOTINE_OBLIQUE_MERCATOR_AZIMUTH_CENTER \
"Hotine_Oblique_Mercator_Azimuth_Center"
/** Hotine_Oblique_Mercator projection */
#define SRS_PT_HOTINE_OBLIQUE_MERCATOR "Hotine_Oblique_Mercator"
/** Hotine_Oblique_Mercator_Two_Point_Natural_Origin projection */
#define SRS_PT_HOTINE_OBLIQUE_MERCATOR_TWO_POINT_NATURAL_ORIGIN \
"Hotine_Oblique_Mercator_Two_Point_Natural_Origin"
/** Laborde_Oblique_Mercator projection */
#define SRS_PT_LABORDE_OBLIQUE_MERCATOR "Laborde_Oblique_Mercator"
/** Lambert_Conformal_Conic_1SP projection */
#define SRS_PT_LAMBERT_CONFORMAL_CONIC_1SP "Lambert_Conformal_Conic_1SP"
/** Lambert_Conformal_Conic_2SP projection */
#define SRS_PT_LAMBERT_CONFORMAL_CONIC_2SP "Lambert_Conformal_Conic_2SP"
/** Lambert_Conformal_Conic_2SP_Belgium projection */
#define SRS_PT_LAMBERT_CONFORMAL_CONIC_2SP_BELGIUM \
"Lambert_Conformal_Conic_2SP_Belgium"
/** Lambert_Azimuthal_Equal_Area projection */
#define SRS_PT_LAMBERT_AZIMUTHAL_EQUAL_AREA "Lambert_Azimuthal_Equal_Area"
/** Mercator_1SP projection */
#define SRS_PT_MERCATOR_1SP "Mercator_1SP"
/** Mercator_2SP projection */
#define SRS_PT_MERCATOR_2SP "Mercator_2SP"
/** Mercator_Auxiliary_Sphere is used used by ESRI to mean EPSG:3875 */
#define SRS_PT_MERCATOR_AUXILIARY_SPHERE "Mercator_Auxiliary_Sphere"
/** Miller_Cylindrical projection */
#define SRS_PT_MILLER_CYLINDRICAL "Miller_Cylindrical"
/** Mollweide projection */
#define SRS_PT_MOLLWEIDE "Mollweide"
/** New_Zealand_Map_Grid projection */
#define SRS_PT_NEW_ZEALAND_MAP_GRID "New_Zealand_Map_Grid"
/** Oblique_Stereographic projection */
#define SRS_PT_OBLIQUE_STEREOGRAPHIC "Oblique_Stereographic"
/** Orthographic projection */
#define SRS_PT_ORTHOGRAPHIC "Orthographic"
/** Polar_Stereographic projection */
#define SRS_PT_POLAR_STEREOGRAPHIC "Polar_Stereographic"
/** Polyconic projection */
#define SRS_PT_POLYCONIC "Polyconic"
/** Robinson projection */
#define SRS_PT_ROBINSON "Robinson"
/** Sinusoidal projection */
#define SRS_PT_SINUSOIDAL "Sinusoidal"
/** Stereographic projection */
#define SRS_PT_STEREOGRAPHIC "Stereographic"
/** Swiss_Oblique_Cylindrical projection */
#define SRS_PT_SWISS_OBLIQUE_CYLINDRICAL "Swiss_Oblique_Cylindrical"
/** Transverse_Mercator projection */
#define SRS_PT_TRANSVERSE_MERCATOR "Transverse_Mercator"
/** Transverse_Mercator_South_Orientated projection */
#define SRS_PT_TRANSVERSE_MERCATOR_SOUTH_ORIENTED \
"Transverse_Mercator_South_Orientated"
/* special mapinfo variants on Transverse Mercator */
/** Transverse_Mercator_MapInfo_21 projection */
#define SRS_PT_TRANSVERSE_MERCATOR_MI_21 "Transverse_Mercator_MapInfo_21"
/** Transverse_Mercator_MapInfo_22 projection */
#define SRS_PT_TRANSVERSE_MERCATOR_MI_22 "Transverse_Mercator_MapInfo_22"
/** Transverse_Mercator_MapInfo_23 projection */
#define SRS_PT_TRANSVERSE_MERCATOR_MI_23 "Transverse_Mercator_MapInfo_23"
/** Transverse_Mercator_MapInfo_24 projection */
#define SRS_PT_TRANSVERSE_MERCATOR_MI_24 "Transverse_Mercator_MapInfo_24"
/** Transverse_Mercator_MapInfo_25 projection */
#define SRS_PT_TRANSVERSE_MERCATOR_MI_25 "Transverse_Mercator_MapInfo_25"
/** Tunisia_Mining_Grid projection */
#define SRS_PT_TUNISIA_MINING_GRID "Tunisia_Mining_Grid"
/** Two_Point_Equidistant projection */
#define SRS_PT_TWO_POINT_EQUIDISTANT "Two_Point_Equidistant"
/** VanDerGrinten projection */
#define SRS_PT_VANDERGRINTEN "VanDerGrinten"
/** Krovak projection */
#define SRS_PT_KROVAK "Krovak"
/** International_Map_of_the_World_Polyconic projection */
#define SRS_PT_IMW_POLYCONIC "International_Map_of_the_World_Polyconic"
/** Wagner_I projection */
#define SRS_PT_WAGNER_I "Wagner_I"
/** Wagner_II projection */
#define SRS_PT_WAGNER_II "Wagner_II"
/** Wagner_III projection */
#define SRS_PT_WAGNER_III "Wagner_III"
/** Wagner_IV projection */
#define SRS_PT_WAGNER_IV "Wagner_IV"
/** Wagner_V projection */
#define SRS_PT_WAGNER_V "Wagner_V"
/** Wagner_VI projection */
#define SRS_PT_WAGNER_VI "Wagner_VI"
/** Wagner_VII projection */
#define SRS_PT_WAGNER_VII "Wagner_VII"
/** Quadrilateralized_Spherical_Cube projection */
#define SRS_PT_QSC "Quadrilateralized_Spherical_Cube"
/** Aitoff projection */
#define SRS_PT_AITOFF "Aitoff"
/** Winkel_I projection */
#define SRS_PT_WINKEL_I "Winkel_I"
/** Winkel_II projection */
#define SRS_PT_WINKEL_II "Winkel_II"
/** Winkel_Tripel projection */
#define SRS_PT_WINKEL_TRIPEL "Winkel_Tripel"
/** Craster_Parabolic projection */
#define SRS_PT_CRASTER_PARABOLIC "Craster_Parabolic"
/** Loximuthal projection */
#define SRS_PT_LOXIMUTHAL "Loximuthal"
/** Quartic_Authalic projection */
#define SRS_PT_QUARTIC_AUTHALIC "Quartic_Authalic"
/** Spherical_Cross_Track_Height projection */
#define SRS_PT_SCH "Spherical_Cross_Track_Height"
/** central_meridian projection parameter */
#define SRS_PP_CENTRAL_MERIDIAN "central_meridian"
/** scale_factor projection parameter */
#define SRS_PP_SCALE_FACTOR "scale_factor"
/** standard_parallel_1 projection parameter */
#define SRS_PP_STANDARD_PARALLEL_1 "standard_parallel_1"
/** standard_parallel_2 projection parameter */
#define SRS_PP_STANDARD_PARALLEL_2 "standard_parallel_2"
/** pseudo_standard_parallel_1 projection parameter */
#define SRS_PP_PSEUDO_STD_PARALLEL_1 "pseudo_standard_parallel_1"
/** longitude_of_center projection parameter */
#define SRS_PP_LONGITUDE_OF_CENTER "longitude_of_center"
/** latitude_of_center projection parameter */
#define SRS_PP_LATITUDE_OF_CENTER "latitude_of_center"
/** longitude_of_origin projection parameter */
#define SRS_PP_LONGITUDE_OF_ORIGIN "longitude_of_origin"
/** latitude_of_origin projection parameter */
#define SRS_PP_LATITUDE_OF_ORIGIN "latitude_of_origin"
/** false_easting projection parameter */
#define SRS_PP_FALSE_EASTING "false_easting"
/** false_northing projection parameter */
#define SRS_PP_FALSE_NORTHING "false_northing"
/** azimuth projection parameter */
#define SRS_PP_AZIMUTH "azimuth"
/** longitude_of_point_1 projection parameter */
#define SRS_PP_LONGITUDE_OF_POINT_1 "longitude_of_point_1"
/** latitude_of_point_1 projection parameter */
#define SRS_PP_LATITUDE_OF_POINT_1 "latitude_of_point_1"
/** longitude_of_point_2 projection parameter */
#define SRS_PP_LONGITUDE_OF_POINT_2 "longitude_of_point_2"
/** latitude_of_point_2 projection parameter */
#define SRS_PP_LATITUDE_OF_POINT_2 "latitude_of_point_2"
/** longitude_of_point_3 projection parameter */
#define SRS_PP_LONGITUDE_OF_POINT_3 "longitude_of_point_3"
/** latitude_of_point_3 projection parameter */
#define SRS_PP_LATITUDE_OF_POINT_3 "latitude_of_point_3"
/** rectified_grid_angle projection parameter */
#define SRS_PP_RECTIFIED_GRID_ANGLE "rectified_grid_angle"
/** landsat_number projection parameter */
#define SRS_PP_LANDSAT_NUMBER "landsat_number"
/** path_number projection parameter */
#define SRS_PP_PATH_NUMBER "path_number"
/** perspective_point_height projection parameter */
#define SRS_PP_PERSPECTIVE_POINT_HEIGHT "perspective_point_height"
/** satellite_height projection parameter */
#define SRS_PP_SATELLITE_HEIGHT "satellite_height"
/** fipszone projection parameter */
#define SRS_PP_FIPSZONE "fipszone"
/** zone projection parameter */
#define SRS_PP_ZONE "zone"
/** Latitude_Of_1st_Point projection parameter */
#define SRS_PP_LATITUDE_OF_1ST_POINT "Latitude_Of_1st_Point"
/** Longitude_Of_1st_Point projection parameter */
#define SRS_PP_LONGITUDE_OF_1ST_POINT "Longitude_Of_1st_Point"
/** Latitude_Of_2nd_Point projection parameter */
#define SRS_PP_LATITUDE_OF_2ND_POINT "Latitude_Of_2nd_Point"
/** Longitude_Of_2nd_Point projection parameter */
#define SRS_PP_LONGITUDE_OF_2ND_POINT "Longitude_Of_2nd_Point"
/** peg_point_latitude projection parameter */
#define SRS_PP_PEG_POINT_LATITUDE "peg_point_latitude"
/** peg_point_longitude projection parameter */
#define SRS_PP_PEG_POINT_LONGITUDE "peg_point_longitude"
/** peg_point_heading projection parameter */
#define SRS_PP_PEG_POINT_HEADING "peg_point_heading"
/** peg_point_height projection parameter */
#define SRS_PP_PEG_POINT_HEIGHT "peg_point_height"
/** Linear unit Meter */
#define SRS_UL_METER "Meter"
/** Linear unit Foot (International) */
#define SRS_UL_FOOT "Foot (International)" /* or just "FOOT"? */
/** Linear unit Foot (International) conversion factor to meter*/
#define SRS_UL_FOOT_CONV "0.3048"
/** Linear unit Foot */
#define SRS_UL_US_FOOT "Foot_US" /* or "US survey foot" from EPSG */
/** Linear unit Foot conversion factor to meter */
#define SRS_UL_US_FOOT_CONV "0.3048006096012192"
/** Linear unit Nautical Mile */
#define SRS_UL_NAUTICAL_MILE "Nautical Mile"
/** Linear unit Nautical Mile conversion factor to meter */
#define SRS_UL_NAUTICAL_MILE_CONV "1852.0"
/** Linear unit Link */
#define SRS_UL_LINK "Link" /* Based on US Foot */
/** Linear unit Link conversion factor to meter */
#define SRS_UL_LINK_CONV "0.20116684023368047"
/** Linear unit Chain */
#define SRS_UL_CHAIN "Chain" /* based on US Foot */
/** Linear unit Chain conversion factor to meter */
#define SRS_UL_CHAIN_CONV "20.116684023368047"
/** Linear unit Rod */
#define SRS_UL_ROD "Rod" /* based on US Foot */
/** Linear unit Rod conversion factor to meter */
#define SRS_UL_ROD_CONV "5.02921005842012"
/** Linear unit Link_Clarke */
#define SRS_UL_LINK_Clarke "Link_Clarke"
/** Linear unit Link_Clarke conversion factor to meter */
#define SRS_UL_LINK_Clarke_CONV "0.2011661949"
/** Linear unit Kilometer */
#define SRS_UL_KILOMETER "Kilometer"
/** Linear unit Kilometer conversion factor to meter */
#define SRS_UL_KILOMETER_CONV "1000."
/** Linear unit Decimeter */
#define SRS_UL_DECIMETER "Decimeter"
/** Linear unit Decimeter conversion factor to meter */
#define SRS_UL_DECIMETER_CONV "0.1"
/** Linear unit Decimeter */
#define SRS_UL_CENTIMETER "Centimeter"
/** Linear unit Decimeter conversion factor to meter */
#define SRS_UL_CENTIMETER_CONV "0.01"
/** Linear unit Millimeter */
#define SRS_UL_MILLIMETER "Millimeter"
/** Linear unit Millimeter conversion factor to meter */
#define SRS_UL_MILLIMETER_CONV "0.001"
/** Linear unit Nautical_Mile_International */
#define SRS_UL_INTL_NAUT_MILE "Nautical_Mile_International"
/** Linear unit Nautical_Mile_International conversion factor to meter */
#define SRS_UL_INTL_NAUT_MILE_CONV "1852.0"
/** Linear unit Inch_International */
#define SRS_UL_INTL_INCH "Inch_International"
/** Linear unit Inch_International conversion factor to meter */
#define SRS_UL_INTL_INCH_CONV "0.0254"
/** Linear unit Foot_International */
#define SRS_UL_INTL_FOOT "Foot_International"
/** Linear unit Foot_International conversion factor to meter */
#define SRS_UL_INTL_FOOT_CONV "0.3048"
/** Linear unit Yard_International */
#define SRS_UL_INTL_YARD "Yard_International"
/** Linear unit Yard_International conversion factor to meter */
#define SRS_UL_INTL_YARD_CONV "0.9144"
/** Linear unit Statute_Mile_International */
#define SRS_UL_INTL_STAT_MILE "Statute_Mile_International"
/** Linear unit Statute_Mile_Internationalconversion factor to meter */
#define SRS_UL_INTL_STAT_MILE_CONV "1609.344"
/** Linear unit Fathom_International */
#define SRS_UL_INTL_FATHOM "Fathom_International"
/** Linear unit Fathom_International conversion factor to meter */
#define SRS_UL_INTL_FATHOM_CONV "1.8288"
/** Linear unit Chain_International */
#define SRS_UL_INTL_CHAIN "Chain_International"
/** Linear unit Chain_International conversion factor to meter */
#define SRS_UL_INTL_CHAIN_CONV "20.1168"
/** Linear unit Link_International */
#define SRS_UL_INTL_LINK "Link_International"
/** Linear unit Link_International conversion factor to meter */
#define SRS_UL_INTL_LINK_CONV "0.201168"
/** Linear unit Inch_US_Surveyor */
#define SRS_UL_US_INCH "Inch_US_Surveyor"
/** Linear unit Inch_US_Surveyor conversion factor to meter */
#define SRS_UL_US_INCH_CONV "0.025400050800101603"
/** Linear unit Yard_US_Surveyor */
#define SRS_UL_US_YARD "Yard_US_Surveyor"
/** Linear unit Yard_US_Surveyor conversion factor to meter */
#define SRS_UL_US_YARD_CONV "0.914401828803658"
/** Linear unit Chain_US_Surveyor */
#define SRS_UL_US_CHAIN "Chain_US_Surveyor"
/** Linear unit Chain_US_Surveyor conversion factor to meter */
#define SRS_UL_US_CHAIN_CONV "20.11684023368047"
/** Linear unit Statute_Mile_US_Surveyor */
#define SRS_UL_US_STAT_MILE "Statute_Mile_US_Surveyor"
/** Linear unit Statute_Mile_US_Surveyor conversion factor to meter */
#define SRS_UL_US_STAT_MILE_CONV "1609.347218694437"
/** Linear unit Yard_Indian */
#define SRS_UL_INDIAN_YARD "Yard_Indian"
/** Linear unit Yard_Indian conversion factor to meter */
#define SRS_UL_INDIAN_YARD_CONV "0.91439523"
/** Linear unit Foot_Indian */
#define SRS_UL_INDIAN_FOOT "Foot_Indian"
/** Linear unit Foot_Indian conversion factor to meter */
#define SRS_UL_INDIAN_FOOT_CONV "0.30479841"
/** Linear unit Chain_Indian */
#define SRS_UL_INDIAN_CHAIN "Chain_Indian"
/** Linear unit Chain_Indian conversion factor to meter */
#define SRS_UL_INDIAN_CHAIN_CONV "20.11669506"
/** Angular unit degree */
#define SRS_UA_DEGREE "degree"
/** Angular unit degree conversion factor to radians */
#define SRS_UA_DEGREE_CONV "0.0174532925199433"
/** Angular unit radian */
#define SRS_UA_RADIAN "radian"
/** Prime meridian Greenwich */
#define SRS_PM_GREENWICH "Greenwich"
/** North_American_Datum_1927 datum name */
#define SRS_DN_NAD27 "North_American_Datum_1927"
/** North_American_Datum_1983 datum name */
#define SRS_DN_NAD83 "North_American_Datum_1983"
/** WGS_1972 datum name */
#define SRS_DN_WGS72 "WGS_1972"
/** WGS_1984 datum name */
#define SRS_DN_WGS84 "WGS_1984"
/** Semi-major axis of the WGS84 ellipsoid */
#define SRS_WGS84_SEMIMAJOR 6378137.0
/** Inverse flattening of the WGS84 ellipsoid */
#define SRS_WGS84_INVFLATTENING 298.257223563
#ifndef SWIG
/* -------------------------------------------------------------------- */
/* C Wrappers for C++ objects and methods. */
/* -------------------------------------------------------------------- */
#ifndef DEFINED_OGRSpatialReferenceH
/*! @cond Doxygen_Suppress */
#define DEFINED_OGRSpatialReferenceH
/*! @endcond */
#ifdef DEBUG
typedef struct OGRSpatialReferenceHS *OGRSpatialReferenceH;
typedef struct OGRCoordinateTransformationHS *OGRCoordinateTransformationH;
#else
/** Opaque type for a Spatial Reference object */
typedef void *OGRSpatialReferenceH;
/** Opaque type for a coordinate transformation object */
typedef void *OGRCoordinateTransformationH;
#endif
#endif
void CPL_DLL OSRSetPROJSearchPaths(const char *const *papszPaths);
char CPL_DLL **OSRGetPROJSearchPaths(void);
void CPL_DLL OSRSetPROJAuxDbPaths(const char *const *papszPaths);
char CPL_DLL **OSRGetPROJAuxDbPaths(void);
void CPL_DLL OSRSetPROJEnableNetwork(int enabled);
int CPL_DLL OSRGetPROJEnableNetwork(void);
void CPL_DLL OSRGetPROJVersion(int *pnMajor, int *pnMinor, int *pnPatch);
OGRSpatialReferenceH CPL_DLL CPL_STDCALL
OSRNewSpatialReference(const char * /* = NULL */);
OGRSpatialReferenceH CPL_DLL CPL_STDCALL OSRCloneGeogCS(OGRSpatialReferenceH);
OGRSpatialReferenceH CPL_DLL CPL_STDCALL OSRClone(OGRSpatialReferenceH);
void CPL_DLL CPL_STDCALL OSRDestroySpatialReference(OGRSpatialReferenceH);
int CPL_DLL OSRReference(OGRSpatialReferenceH);
int CPL_DLL OSRDereference(OGRSpatialReferenceH);
void CPL_DLL OSRRelease(OGRSpatialReferenceH);
OGRErr CPL_DLL OSRValidate(OGRSpatialReferenceH);
OGRErr CPL_DLL CPL_STDCALL OSRImportFromEPSG(OGRSpatialReferenceH, int);
OGRErr CPL_DLL CPL_STDCALL OSRImportFromEPSGA(OGRSpatialReferenceH, int);
OGRErr CPL_DLL OSRImportFromWkt(OGRSpatialReferenceH, char **);
OGRErr CPL_DLL OSRImportFromProj4(OGRSpatialReferenceH, const char *);
OGRErr CPL_DLL OSRImportFromESRI(OGRSpatialReferenceH, char **);
OGRErr CPL_DLL OSRImportFromPCI(OGRSpatialReferenceH hSRS, const char *,
const char *, double *);
OGRErr CPL_DLL OSRImportFromUSGS(OGRSpatialReferenceH, long, long, double *,
long);
OGRErr CPL_DLL OSRImportFromXML(OGRSpatialReferenceH, const char *);
OGRErr CPL_DLL OSRImportFromDict(OGRSpatialReferenceH, const char *,
const char *);
OGRErr CPL_DLL OSRImportFromPanorama(OGRSpatialReferenceH, long, long, long,
double *);
OGRErr CPL_DLL OSRImportFromOzi(OGRSpatialReferenceH, const char *const *);
OGRErr CPL_DLL OSRImportFromMICoordSys(OGRSpatialReferenceH, const char *);
OGRErr CPL_DLL OSRImportFromERM(OGRSpatialReferenceH, const char *,
const char *, const char *);
OGRErr CPL_DLL OSRImportFromUrl(OGRSpatialReferenceH, const char *);
OGRErr CPL_DLL OSRImportFromCF1(OGRSpatialReferenceH,
CSLConstList papszKeyValues,
const char *pszUnits);
OGRErr CPL_DLL CPL_STDCALL OSRExportToWkt(OGRSpatialReferenceH, char **);
OGRErr CPL_DLL OSRExportToWktEx(OGRSpatialReferenceH, char **ppszResult,
const char *const *papszOptions);
OGRErr CPL_DLL CPL_STDCALL OSRExportToPrettyWkt(OGRSpatialReferenceH, char **,
int);
OGRErr CPL_DLL OSRExportToPROJJSON(OGRSpatialReferenceH hSRS, char **ppszReturn,
const char *const *papszOptions);
OGRErr CPL_DLL CPL_STDCALL OSRExportToProj4(OGRSpatialReferenceH, char **);
OGRErr CPL_DLL OSRExportToPCI(OGRSpatialReferenceH, char **, char **,
double **);
OGRErr CPL_DLL OSRExportToUSGS(OGRSpatialReferenceH, long *, long *, double **,
long *);
OGRErr CPL_DLL OSRExportToXML(OGRSpatialReferenceH, char **, const char *);
OGRErr CPL_DLL OSRExportToPanorama(OGRSpatialReferenceH, long *, long *, long *,
long *, double *);
OGRErr CPL_DLL OSRExportToMICoordSys(OGRSpatialReferenceH, char **);
OGRErr CPL_DLL OSRExportToERM(OGRSpatialReferenceH, char *, char *, char *);
OGRErr CPL_DLL OSRExportToCF1(OGRSpatialReferenceH, char **ppszGridMappingName,
char ***ppapszKeyValues, char **ppszUnits,
CSLConstList papszOptions);
OGRErr CPL_DLL OSRMorphToESRI(OGRSpatialReferenceH);
OGRErr CPL_DLL OSRMorphFromESRI(OGRSpatialReferenceH);
OGRErr CPL_DLL OSRStripVertical(OGRSpatialReferenceH);
OGRSpatialReferenceH CPL_DLL OSRConvertToOtherProjection(
OGRSpatialReferenceH hSRS, const char *pszTargetProjection,
const char *const *papszOptions);
const char CPL_DLL *OSRGetName(OGRSpatialReferenceH hSRS);
OGRErr CPL_DLL CPL_STDCALL OSRSetAttrValue(OGRSpatialReferenceH hSRS,
const char *pszNodePath,
const char *pszNewNodeValue);
const char CPL_DLL *CPL_STDCALL OSRGetAttrValue(OGRSpatialReferenceH hSRS,
const char *pszName,
int iChild /* = 0 */);
OGRErr CPL_DLL OSRSetAngularUnits(OGRSpatialReferenceH, const char *, double);
double CPL_DLL OSRGetAngularUnits(OGRSpatialReferenceH, char **);
OGRErr CPL_DLL OSRSetLinearUnits(OGRSpatialReferenceH, const char *, double);
OGRErr CPL_DLL OSRSetTargetLinearUnits(OGRSpatialReferenceH, const char *,
const char *, double);
OGRErr CPL_DLL OSRSetLinearUnitsAndUpdateParameters(OGRSpatialReferenceH,
const char *, double);
double CPL_DLL OSRGetLinearUnits(OGRSpatialReferenceH, char **);
double CPL_DLL OSRGetTargetLinearUnits(OGRSpatialReferenceH, const char *,
char **);
double CPL_DLL OSRGetPrimeMeridian(OGRSpatialReferenceH, char **);
int CPL_DLL OSRIsGeographic(OGRSpatialReferenceH);
int CPL_DLL OSRIsDerivedGeographic(OGRSpatialReferenceH);
int CPL_DLL OSRIsLocal(OGRSpatialReferenceH);
int CPL_DLL OSRIsProjected(OGRSpatialReferenceH);
int CPL_DLL OSRIsDerivedProjected(OGRSpatialReferenceH);
int CPL_DLL OSRIsCompound(OGRSpatialReferenceH);
int CPL_DLL OSRIsGeocentric(OGRSpatialReferenceH);
int CPL_DLL OSRIsVertical(OGRSpatialReferenceH);
int CPL_DLL OSRIsDynamic(OGRSpatialReferenceH);
int CPL_DLL OSRHasPointMotionOperation(OGRSpatialReferenceH);
int CPL_DLL OSRIsSameGeogCS(OGRSpatialReferenceH, OGRSpatialReferenceH);
int CPL_DLL OSRIsSameVertCS(OGRSpatialReferenceH, OGRSpatialReferenceH);
int CPL_DLL OSRIsSame(OGRSpatialReferenceH, OGRSpatialReferenceH);
int CPL_DLL OSRIsSameEx(OGRSpatialReferenceH, OGRSpatialReferenceH,
const char *const *papszOptions);
void CPL_DLL OSRSetCoordinateEpoch(OGRSpatialReferenceH hSRS,
double dfCoordinateEpoch);
double CPL_DLL OSRGetCoordinateEpoch(OGRSpatialReferenceH hSRS);
OGRErr CPL_DLL OSRSetLocalCS(OGRSpatialReferenceH hSRS, const char *pszName);
OGRErr CPL_DLL OSRSetProjCS(OGRSpatialReferenceH hSRS, const char *pszName);
OGRErr CPL_DLL OSRSetGeocCS(OGRSpatialReferenceH hSRS, const char *pszName);
OGRErr CPL_DLL OSRSetWellKnownGeogCS(OGRSpatialReferenceH hSRS,
const char *pszName);
OGRErr CPL_DLL CPL_STDCALL OSRSetFromUserInput(OGRSpatialReferenceH hSRS,
const char *);
OGRErr CPL_DLL OSRSetFromUserInputEx(OGRSpatialReferenceH hSRS, const char *,
CSLConstList papszOptions);
OGRErr CPL_DLL OSRCopyGeogCSFrom(OGRSpatialReferenceH hSRS,
const OGRSpatialReferenceH hSrcSRS);
OGRErr CPL_DLL OSRSetTOWGS84(OGRSpatialReferenceH hSRS, double, double, double,
double, double, double, double);
OGRErr CPL_DLL OSRGetTOWGS84(OGRSpatialReferenceH hSRS, double *, int);
OGRErr CPL_DLL OSRAddGuessedTOWGS84(OGRSpatialReferenceH hSRS);
OGRErr CPL_DLL OSRSetCompoundCS(OGRSpatialReferenceH hSRS, const char *pszName,
OGRSpatialReferenceH hHorizSRS,
OGRSpatialReferenceH hVertSRS);
OGRErr CPL_DLL OSRPromoteTo3D(OGRSpatialReferenceH hSRS, const char *pszName);
OGRErr CPL_DLL OSRDemoteTo2D(OGRSpatialReferenceH hSRS, const char *pszName);
OGRErr CPL_DLL OSRSetGeogCS(OGRSpatialReferenceH hSRS, const char *pszGeogName,
const char *pszDatumName,
const char *pszEllipsoidName, double dfSemiMajor,
double dfInvFlattening,
const char *pszPMName /* = NULL */,
double dfPMOffset /* = 0.0 */,
const char *pszUnits /* = NULL */,
double dfConvertToRadians /* = 0.0 */);
OGRErr CPL_DLL OSRSetVertCS(OGRSpatialReferenceH hSRS,
const char *pszVertCSName,
const char *pszVertDatumName, int nVertDatumType);
double CPL_DLL OSRGetSemiMajor(OGRSpatialReferenceH, OGRErr * /* = NULL */);
double CPL_DLL OSRGetSemiMinor(OGRSpatialReferenceH, OGRErr * /* = NULL */);
double CPL_DLL OSRGetInvFlattening(OGRSpatialReferenceH, OGRErr * /*=NULL*/);
OGRErr CPL_DLL OSRSetAuthority(OGRSpatialReferenceH hSRS,
const char *pszTargetKey,
const char *pszAuthority, int nCode);
const char CPL_DLL *OSRGetAuthorityCode(OGRSpatialReferenceH hSRS,
const char *pszTargetKey);
const char CPL_DLL *OSRGetAuthorityName(OGRSpatialReferenceH hSRS,
const char *pszTargetKey);
int CPL_DLL OSRGetAreaOfUse(OGRSpatialReferenceH hSRS,
double *pdfWestLongitudeDeg,
double *pdfSouthLatitudeDeg,
double *pdfEastLongitudeDeg,
double *pdfNorthLatitudeDeg,
const char **ppszAreaName);
OGRErr CPL_DLL OSRSetProjection(OGRSpatialReferenceH, const char *);
OGRErr CPL_DLL OSRSetProjParm(OGRSpatialReferenceH, const char *, double);
double CPL_DLL OSRGetProjParm(OGRSpatialReferenceH hSRS,
const char *pszParamName,
double dfDefault /* = 0.0 */,
OGRErr * /* = NULL */);
OGRErr CPL_DLL OSRSetNormProjParm(OGRSpatialReferenceH, const char *, double);
double CPL_DLL OSRGetNormProjParm(OGRSpatialReferenceH hSRS,
const char *pszParamName,
double dfDefault /* = 0.0 */,
OGRErr * /* = NULL */);
OGRErr CPL_DLL OSRSetUTM(OGRSpatialReferenceH hSRS, int nZone, int bNorth);
int CPL_DLL OSRGetUTMZone(OGRSpatialReferenceH hSRS, int *pbNorth);
OGRErr CPL_DLL OSRSetStatePlane(OGRSpatialReferenceH hSRS, int nZone,
int bNAD83);
OGRErr CPL_DLL OSRSetStatePlaneWithUnits(OGRSpatialReferenceH hSRS, int nZone,
int bNAD83,
const char *pszOverrideUnitName,
double dfOverrideUnit);
OGRErr CPL_DLL OSRAutoIdentifyEPSG(OGRSpatialReferenceH hSRS);
OGRSpatialReferenceH CPL_DLL *OSRFindMatches(OGRSpatialReferenceH hSRS,
char **papszOptions,
int *pnEntries,
int **ppanMatchConfidence);
void CPL_DLL OSRFreeSRSArray(OGRSpatialReferenceH *pahSRS);
int CPL_DLL OSREPSGTreatsAsLatLong(OGRSpatialReferenceH hSRS);
int CPL_DLL OSREPSGTreatsAsNorthingEasting(OGRSpatialReferenceH hSRS);
const char CPL_DLL *OSRGetAxis(OGRSpatialReferenceH hSRS,
const char *pszTargetKey, int iAxis,
OGRAxisOrientation *peOrientation);
int CPL_DLL OSRGetAxesCount(OGRSpatialReferenceH hSRS);
OGRErr CPL_DLL OSRSetAxes(OGRSpatialReferenceH hSRS, const char *pszTargetKey,
const char *pszXAxisName,
OGRAxisOrientation eXAxisOrientation,
const char *pszYAxisName,
OGRAxisOrientation eYAxisOrientation);
/** Data axis to CRS axis mapping strategy. */
typedef enum
{
OAMS_TRADITIONAL_GIS_ORDER, /**< Traditional GIS order */
OAMS_AUTHORITY_COMPLIANT, /**< Compliant with the order mandated by the CRS
authority */
OAMS_CUSTOM /**< Custom */
} OSRAxisMappingStrategy;
OSRAxisMappingStrategy CPL_DLL
OSRGetAxisMappingStrategy(OGRSpatialReferenceH hSRS);
void CPL_DLL OSRSetAxisMappingStrategy(OGRSpatialReferenceH hSRS,
OSRAxisMappingStrategy strategy);
const int CPL_DLL *OSRGetDataAxisToSRSAxisMapping(OGRSpatialReferenceH hSRS,
int *pnCount);
OGRErr CPL_DLL OSRSetDataAxisToSRSAxisMapping(OGRSpatialReferenceH hSRS,
int nMappingSize,
const int *panMapping);
/** Albers Conic Equal Area */
OGRErr CPL_DLL OSRSetACEA(OGRSpatialReferenceH hSRS, double dfStdP1,
double dfStdP2, double dfCenterLat,
double dfCenterLong, double dfFalseEasting,
double dfFalseNorthing);
/** Azimuthal Equidistant */
OGRErr CPL_DLL OSRSetAE(OGRSpatialReferenceH hSRS, double dfCenterLat,
double dfCenterLong, double dfFalseEasting,
double dfFalseNorthing);
/** Bonne */
OGRErr CPL_DLL OSRSetBonne(OGRSpatialReferenceH hSRS, double dfStandardParallel,
double dfCentralMeridian, double dfFalseEasting,
double dfFalseNorthing);
/** Cylindrical Equal Area */
OGRErr CPL_DLL OSRSetCEA(OGRSpatialReferenceH hSRS, double dfStdP1,
double dfCentralMeridian, double dfFalseEasting,
double dfFalseNorthing);
/** Cassini-Soldner */
OGRErr CPL_DLL OSRSetCS(OGRSpatialReferenceH hSRS, double dfCenterLat,
double dfCenterLong, double dfFalseEasting,
double dfFalseNorthing);
/** Equidistant Conic */
OGRErr CPL_DLL OSRSetEC(OGRSpatialReferenceH hSRS, double dfStdP1,
double dfStdP2, double dfCenterLat, double dfCenterLong,
double dfFalseEasting, double dfFalseNorthing);
/** Eckert I-VI */
OGRErr CPL_DLL OSRSetEckert(OGRSpatialReferenceH hSRS, int nVariation,
double dfCentralMeridian, double dfFalseEasting,
double dfFalseNorthing);
/** Eckert IV */
OGRErr CPL_DLL OSRSetEckertIV(OGRSpatialReferenceH hSRS,
double dfCentralMeridian, double dfFalseEasting,
double dfFalseNorthing);
/** Eckert VI */
OGRErr CPL_DLL OSRSetEckertVI(OGRSpatialReferenceH hSRS,
double dfCentralMeridian, double dfFalseEasting,
double dfFalseNorthing);
/** Equirectangular */
OGRErr CPL_DLL OSRSetEquirectangular(OGRSpatialReferenceH hSRS,
double dfCenterLat, double dfCenterLong,
double dfFalseEasting,
double dfFalseNorthing);
/** Equirectangular generalized form */
OGRErr CPL_DLL OSRSetEquirectangular2(OGRSpatialReferenceH hSRS,
double dfCenterLat, double dfCenterLong,
double dfPseudoStdParallel1,
double dfFalseEasting,
double dfFalseNorthing);
/** Gall Stereograpic */
OGRErr CPL_DLL OSRSetGS(OGRSpatialReferenceH hSRS, double dfCentralMeridian,
double dfFalseEasting, double dfFalseNorthing);
/** Goode Homolosine */
OGRErr CPL_DLL OSRSetGH(OGRSpatialReferenceH hSRS, double dfCentralMeridian,
double dfFalseEasting, double dfFalseNorthing);
/** Interrupted Goode Homolosine */
OGRErr CPL_DLL OSRSetIGH(OGRSpatialReferenceH hSRS);
/** GEOS - Geostationary Satellite View */
OGRErr CPL_DLL OSRSetGEOS(OGRSpatialReferenceH hSRS, double dfCentralMeridian,
double dfSatelliteHeight, double dfFalseEasting,
double dfFalseNorthing);
/** Gauss Schreiber Transverse Mercator */
OGRErr CPL_DLL OSRSetGaussSchreiberTMercator(
OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong,
double dfScale, double dfFalseEasting, double dfFalseNorthing);
/** Gnomonic */
OGRErr CPL_DLL OSRSetGnomonic(OGRSpatialReferenceH hSRS, double dfCenterLat,
double dfCenterLong, double dfFalseEasting,
double dfFalseNorthing);
#ifdef undef
/** Oblique Mercator (aka HOM (variant B) */
OGRErr CPL_DLL OSRSetOM(OGRSpatialReferenceH hSRS, double dfCenterLat,
double dfCenterLong, double dfAzimuth,
double dfRectToSkew, double dfScale,
double dfFalseEasting, double dfFalseNorthing);
#endif
/** Hotine Oblique Mercator using azimuth angle */
OGRErr CPL_DLL OSRSetHOM(OGRSpatialReferenceH hSRS, double dfCenterLat,
double dfCenterLong, double dfAzimuth,
double dfRectToSkew, double dfScale,
double dfFalseEasting, double dfFalseNorthing);
OGRErr CPL_DLL OSRSetHOMAC(OGRSpatialReferenceH hSRS, double dfCenterLat,
double dfCenterLong, double dfAzimuth,
double dfRectToSkew, double dfScale,
double dfFalseEasting, double dfFalseNorthing);
/** Hotine Oblique Mercator using two points on centerline */
OGRErr CPL_DLL OSRSetHOM2PNO(OGRSpatialReferenceH hSRS, double dfCenterLat,
double dfLat1, double dfLong1, double dfLat2,
double dfLong2, double dfScale,
double dfFalseEasting, double dfFalseNorthing);
/** International Map of the World Polyconic */
OGRErr CPL_DLL OSRSetIWMPolyconic(OGRSpatialReferenceH hSRS, double dfLat1,
double dfLat2, double dfCenterLong,
double dfFalseEasting,
double dfFalseNorthing);
/** Krovak Oblique Conic Conformal */
OGRErr CPL_DLL OSRSetKrovak(OGRSpatialReferenceH hSRS, double dfCenterLat,
double dfCenterLong, double dfAzimuth,
double dfPseudoStdParallelLat, double dfScale,
double dfFalseEasting, double dfFalseNorthing);
/** Lambert Azimuthal Equal-Area */
OGRErr CPL_DLL OSRSetLAEA(OGRSpatialReferenceH hSRS, double dfCenterLat,
double dfCenterLong, double dfFalseEasting,
double dfFalseNorthing);
/** Lambert Conformal Conic */
OGRErr CPL_DLL OSRSetLCC(OGRSpatialReferenceH hSRS, double dfStdP1,
double dfStdP2, double dfCenterLat,
double dfCenterLong, double dfFalseEasting,
double dfFalseNorthing);
/** Lambert Conformal Conic 1SP */
OGRErr CPL_DLL OSRSetLCC1SP(OGRSpatialReferenceH hSRS, double dfCenterLat,
double dfCenterLong, double dfScale,
double dfFalseEasting, double dfFalseNorthing);
/** Lambert Conformal Conic (Belgium) */
OGRErr CPL_DLL OSRSetLCCB(OGRSpatialReferenceH hSRS, double dfStdP1,
double dfStdP2, double dfCenterLat,
double dfCenterLong, double dfFalseEasting,
double dfFalseNorthing);
/** Miller Cylindrical */
OGRErr CPL_DLL OSRSetMC(OGRSpatialReferenceH hSRS, double dfCenterLat,
double dfCenterLong, double dfFalseEasting,
double dfFalseNorthing);
/** Mercator */
OGRErr CPL_DLL OSRSetMercator(OGRSpatialReferenceH hSRS, double dfCenterLat,
double dfCenterLong, double dfScale,
double dfFalseEasting, double dfFalseNorthing);
/** Mercator 2SP */
OGRErr CPL_DLL OSRSetMercator2SP(OGRSpatialReferenceH hSRS, double dfStdP1,
double dfCenterLat, double dfCenterLong,
double dfFalseEasting, double dfFalseNorthing);
/** Mollweide */
OGRErr CPL_DLL OSRSetMollweide(OGRSpatialReferenceH hSRS,
double dfCentralMeridian, double dfFalseEasting,
double dfFalseNorthing);
/** New Zealand Map Grid */
OGRErr CPL_DLL OSRSetNZMG(OGRSpatialReferenceH hSRS, double dfCenterLat,
double dfCenterLong, double dfFalseEasting,
double dfFalseNorthing);
/** Oblique Stereographic */
OGRErr CPL_DLL OSRSetOS(OGRSpatialReferenceH hSRS, double dfOriginLat,
double dfCMeridian, double dfScale,
double dfFalseEasting, double dfFalseNorthing);
/** Orthographic */
OGRErr CPL_DLL OSRSetOrthographic(OGRSpatialReferenceH hSRS, double dfCenterLat,
double dfCenterLong, double dfFalseEasting,
double dfFalseNorthing);
/** Polyconic */
OGRErr CPL_DLL OSRSetPolyconic(OGRSpatialReferenceH hSRS, double dfCenterLat,
double dfCenterLong, double dfFalseEasting,
double dfFalseNorthing);
/** Polar Stereographic */
OGRErr CPL_DLL OSRSetPS(OGRSpatialReferenceH hSRS, double dfCenterLat,
double dfCenterLong, double dfScale,
double dfFalseEasting, double dfFalseNorthing);
/** Robinson */
OGRErr CPL_DLL OSRSetRobinson(OGRSpatialReferenceH hSRS, double dfCenterLong,
double dfFalseEasting, double dfFalseNorthing);
/** Sinusoidal */
OGRErr CPL_DLL OSRSetSinusoidal(OGRSpatialReferenceH hSRS, double dfCenterLong,
double dfFalseEasting, double dfFalseNorthing);
/** Stereographic */
OGRErr CPL_DLL OSRSetStereographic(OGRSpatialReferenceH hSRS,
double dfCenterLat, double dfCenterLong,
double dfScale, double dfFalseEasting,
double dfFalseNorthing);
/** Swiss Oblique Cylindrical */
OGRErr CPL_DLL OSRSetSOC(OGRSpatialReferenceH hSRS, double dfLatitudeOfOrigin,
double dfCentralMeridian, double dfFalseEasting,
double dfFalseNorthing);
/** Transverse Mercator
*
* Special processing available for Transverse Mercator with GDAL &gt;= 1.10 and
* PROJ &gt;= 4.8 : see OGRSpatialReference::exportToProj4().
*/
OGRErr CPL_DLL OSRSetTM(OGRSpatialReferenceH hSRS, double dfCenterLat,
double dfCenterLong, double dfScale,
double dfFalseEasting, double dfFalseNorthing);
/** Transverse Mercator variant */
OGRErr CPL_DLL OSRSetTMVariant(OGRSpatialReferenceH hSRS,
const char *pszVariantName, double dfCenterLat,
double dfCenterLong, double dfScale,
double dfFalseEasting, double dfFalseNorthing);
/** Tunesia Mining Grid */
OGRErr CPL_DLL OSRSetTMG(OGRSpatialReferenceH hSRS, double dfCenterLat,
double dfCenterLong, double dfFalseEasting,
double dfFalseNorthing);
/** Transverse Mercator (South Oriented) */
OGRErr CPL_DLL OSRSetTMSO(OGRSpatialReferenceH hSRS, double dfCenterLat,
double dfCenterLong, double dfScale,
double dfFalseEasting, double dfFalseNorthing);
/** TPED (Two Point Equi Distant) */
OGRErr CPL_DLL OSRSetTPED(OGRSpatialReferenceH hSRS, double dfLat1,
double dfLong1, double dfLat2, double dfLong2,
double dfFalseEasting, double dfFalseNorthing);
/** VanDerGrinten */
OGRErr CPL_DLL OSRSetVDG(OGRSpatialReferenceH hSRS, double dfCenterLong,
double dfFalseEasting, double dfFalseNorthing);
/** Wagner I -- VII */
OGRErr CPL_DLL OSRSetWagner(OGRSpatialReferenceH hSRS, int nVariation,
double dfCenterLat, double dfFalseEasting,
double dfFalseNorthing);
/** Quadrilateralized Spherical Cube */
OGRErr CPL_DLL OSRSetQSC(OGRSpatialReferenceH hSRS, double dfCenterLat,
double dfCenterLong);
/** Spherical, Cross-track, Height */
OGRErr CPL_DLL OSRSetSCH(OGRSpatialReferenceH hSRS, double dfPegLat,
double dfPegLong, double dfPegHeading,
double dfPegHgt);
/** Vertical Perspective / Near-sided Perspective */
OGRErr CPL_DLL OSRSetVerticalPerspective(
OGRSpatialReferenceH hSRS, double dfTopoOriginLat, double dfTopoOriginLon,
double dfTopoOriginHeight, double dfViewPointHeight, double dfFalseEasting,
double dfFalseNorthing);
double CPL_DLL OSRCalcInvFlattening(double dfSemiMajor, double dfSemiMinor);
double CPL_DLL OSRCalcSemiMinorFromInvFlattening(double dfSemiMajor,
double dfInvFlattening);
void CPL_DLL OSRCleanup(void);
/** \brief Type of Coordinate Reference System (CRS). */
typedef enum
{
/** Geographic 2D CRS */
OSR_CRS_TYPE_GEOGRAPHIC_2D,
/** Geographic 3D CRS */
OSR_CRS_TYPE_GEOGRAPHIC_3D,
/** Geocentric CRS */
OSR_CRS_TYPE_GEOCENTRIC,
/** Projected CRS */
OSR_CRS_TYPE_PROJECTED,
/** Vertical CRS */
OSR_CRS_TYPE_VERTICAL,
/** Compound CRS */
OSR_CRS_TYPE_COMPOUND,
/** Other */
OSR_CRS_TYPE_OTHER,
} OSRCRSType;
/** \brief Structure given overall description of a CRS.
*
* This structure may grow over time, and should not be directly allocated by
* client code.
*/
typedef struct
{
/** Authority name. */
char *pszAuthName;
/** Object code. */
char *pszCode;
/** Object name. */
char *pszName;
/** Object type. */
OSRCRSType eType;
/** Whether the object is deprecated */
int bDeprecated;
/** Whereas the west_lon_degree, south_lat_degree, east_lon_degree and
* north_lat_degree fields are valid. */
int bBboxValid;
/** Western-most longitude of the area of use, in degrees. */
double dfWestLongitudeDeg;
/** Southern-most latitude of the area of use, in degrees. */
double dfSouthLatitudeDeg;
/** Eastern-most longitude of the area of use, in degrees. */
double dfEastLongitudeDeg;
/** Northern-most latitude of the area of use, in degrees. */
double dfNorthLatitudeDeg;
/** Name of the area of use. */
char *pszAreaName;
/** Name of the projection method for a projected CRS. Might be NULL even
*for projected CRS in some cases. */
char *pszProjectionMethod;
} OSRCRSInfo;
/** \brief Structure to describe optional parameters to
* OSRGetCRSInfoListFromDatabase()
*
* Unused for now.
*/
typedef struct OSRCRSListParameters OSRCRSListParameters;
OSRCRSInfo CPL_DLL **
OSRGetCRSInfoListFromDatabase(const char *pszAuthName,
const OSRCRSListParameters *params,
int *pnOutResultCount);
void CPL_DLL OSRDestroyCRSInfoList(OSRCRSInfo **list);
char CPL_DLL **OSRGetAuthorityListFromDatabase(void);
/* -------------------------------------------------------------------- */
/* OGRCoordinateTransform C API. */
/* -------------------------------------------------------------------- */
OGRCoordinateTransformationH CPL_DLL CPL_STDCALL OCTNewCoordinateTransformation(
OGRSpatialReferenceH hSourceSRS, OGRSpatialReferenceH hTargetSRS);
/** Coordinate transformation options. */
typedef struct OGRCoordinateTransformationOptions
*OGRCoordinateTransformationOptionsH;
OGRCoordinateTransformationOptionsH CPL_DLL
OCTNewCoordinateTransformationOptions(void);
int CPL_DLL OCTCoordinateTransformationOptionsSetOperation(
OGRCoordinateTransformationOptionsH hOptions, const char *pszCO,
int bReverseCO);
int CPL_DLL OCTCoordinateTransformationOptionsSetAreaOfInterest(
OGRCoordinateTransformationOptionsH hOptions, double dfWestLongitudeDeg,
double dfSouthLatitudeDeg, double dfEastLongitudeDeg,
double dfNorthLatitudeDeg);
int CPL_DLL OCTCoordinateTransformationOptionsSetDesiredAccuracy(
OGRCoordinateTransformationOptionsH hOptions, double dfAccuracy);
int CPL_DLL OCTCoordinateTransformationOptionsSetBallparkAllowed(
OGRCoordinateTransformationOptionsH hOptions, int bAllowBallpark);
int CPL_DLL OCTCoordinateTransformationOptionsSetOnlyBest(
OGRCoordinateTransformationOptionsH hOptions, bool bOnlyBest);
void CPL_DLL OCTDestroyCoordinateTransformationOptions(
OGRCoordinateTransformationOptionsH);
OGRCoordinateTransformationH CPL_DLL OCTNewCoordinateTransformationEx(
OGRSpatialReferenceH hSourceSRS, OGRSpatialReferenceH hTargetSRS,
OGRCoordinateTransformationOptionsH hOptions);
OGRCoordinateTransformationH CPL_DLL
OCTClone(OGRCoordinateTransformationH hTransform);
OGRSpatialReferenceH CPL_DLL
OCTGetSourceCS(OGRCoordinateTransformationH hTransform);
OGRSpatialReferenceH CPL_DLL
OCTGetTargetCS(OGRCoordinateTransformationH hTransform);
OGRCoordinateTransformationH CPL_DLL
OCTGetInverse(OGRCoordinateTransformationH hTransform);
void CPL_DLL CPL_STDCALL
OCTDestroyCoordinateTransformation(OGRCoordinateTransformationH);
int CPL_DLL CPL_STDCALL OCTTransform(OGRCoordinateTransformationH hCT,
int nCount, double *x, double *y,
double *z);
int CPL_DLL CPL_STDCALL OCTTransformEx(OGRCoordinateTransformationH hCT,
int nCount, double *x, double *y,
double *z, int *pabSuccess);
int CPL_DLL OCTTransform4D(OGRCoordinateTransformationH hCT, int nCount,
double *x, double *y, double *z, double *t,
int *pabSuccess);
int CPL_DLL OCTTransform4DWithErrorCodes(OGRCoordinateTransformationH hCT,
int nCount, double *x, double *y,
double *z, double *t,
int *panErrorCodes);
int CPL_DLL CPL_STDCALL 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);
CPL_C_END
#endif /* ndef SWIG */
#endif /* ndef OGR_SRS_API_H_INCLUDED */