Statistics
| Revision:

svn-gvsig-desktop / tags / v1_0_RELEASE / libraries / libjni-gdal / include / ogr_srs_api.h @ 9167

History | View | Annotate | Download (29.4 KB)

1
/******************************************************************************
2
 * $Id: ogr_srs_api.h 9167 2006-12-04 16:01:24Z  $
3
 *
4
 * Project:  OpenGIS Simple Features Reference Implementation
5
 * Purpose:  C API and constant declarations for OGR Spatial References.
6
 * Author:   Frank Warmerdam, warmerda@home.com
7
 *
8
 ******************************************************************************
9
 * Copyright (c) 2000, Frank Warmerdam
10
 *
11
 * Permission is hereby granted, free of charge, to any person obtaining a
12
 * copy of this software and associated documentation files (the "Software"),
13
 * to deal in the Software without restriction, including without limitation
14
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
15
 * and/or sell copies of the Software, and to permit persons to whom the
16
 * Software is furnished to do so, subject to the following conditions:
17
 *
18
 * The above copyright notice and this permission notice shall be included
19
 * in all copies or substantial portions of the Software.
20
 *
21
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
24
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
26
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
27
 * DEALINGS IN THE SOFTWARE.
28
 ******************************************************************************
29
 *
30
 * $Log$
31
 * Revision 1.2.10.2  2006-11-15 00:08:29  jjdelcerro
32
 * *** empty log message ***
33
 *
34
 * Revision 1.3  2006/10/03 07:05:18  nacho
35
 * *** empty log message ***
36
 *
37
 * Revision 1.1  2006/07/18 16:21:00  nacho
38
 * *** empty log message ***
39
 *
40
 * Revision 1.1  2006/06/29 16:23:27  nacho
41
 * *** empty log message ***
42
 *
43
 * Revision 1.2  2006/01/09 12:50:13  nacho
44
 * *** empty log message ***
45
 *
46
 * Revision 1.1  2005/07/27 08:22:55  igbrotru
47
 * *** empty log message ***
48
 *
49
 * Revision 1.1  2004/12/28 14:06:59  igbrotru
50
 * *** empty log message ***
51
 *
52
 * Revision 1.1  2004/12/28 13:32:25  igbrotru
53
 * *** empty log message ***
54
 *
55
 * Revision 1.46  2004/09/23 16:20:13  fwarmerdam
56
 * added OSRCleanup
57
 *
58
 * Revision 1.45  2004/05/12 19:25:54  dron
59
 * SRS_DN_WGS72 constant added.
60
 *
61
 * Revision 1.44  2004/05/10 17:05:14  warmerda
62
 * added AutoIdentifyEPSG()
63
 *
64
 * Revision 1.43  2004/05/06 19:26:04  dron
65
 * Added OSRSetProjection() function.
66
 *
67
 * Revision 1.42  2004/03/04 18:04:45  warmerda
68
 * added importFromDict() support
69
 *
70
 * Revision 1.41  2004/02/07 17:31:21  dron
71
 * Added OSRExportToUSGS() method.
72
 *
73
 * Revision 1.40  2004/02/05 17:07:59  dron
74
 * Support for HOM projection, specified by two points on centerline.
75
 *
76
 * Revision 1.39  2004/02/01 14:23:29  dron
77
 * Added OSRImportFromUSGS().
78
 *
79
 * Revision 1.38  2004/01/24 09:35:00  warmerda
80
 * added TransformEx support to capture per point reprojection failure
81
 *
82
 * Revision 1.37  2003/09/09 07:49:52  dron
83
 * Added OSRExportToPCI().
84
 *
85
 * Revision 1.36  2003/08/31 14:51:01  dron
86
 * Added OSRImportFromPCI().
87
 *
88
 * Revision 1.35  2003/08/18 13:26:01  warmerda
89
 * added SetTMVariant() and related definitions
90
 *
91
 * Revision 1.34  2003/06/21 23:24:36  warmerda
92
 * added Set/Get TOWGS84 calls
93
 *
94
 * Revision 1.33  2003/06/19 17:10:26  warmerda
95
 * a couple fixes in last commit
96
 *
97
 * Revision 1.32  2003/06/18 18:24:17  warmerda
98
 * added projection specific set methods to C API
99
 *
100
 * Revision 1.31  2003/06/10 09:31:12  dron
101
 * Added OSRSetAngularUnits() and OSRGetAngularUnits().
102
 *
103
 * Revision 1.30  2003/05/30 15:39:53  warmerda
104
 * Added override units capability for SetStatePlane()
105
 *
106
 * Revision 1.29  2003/03/21 22:15:11  warmerda
107
 * added C XML import/export entry points
108
 *
109
 * Revision 1.28  2003/03/12 14:29:34  warmerda
110
 * Rename OGRAxisOrientation and OGRDatumType values to avoid conflicts with
111
 * the real OGC definitions in applications such as Cadcorps.
112
 *
113
 * Revision 1.27  2003/02/25 04:53:38  warmerda
114
 * added OSRCopyGeogCSFrom
115
 *
116
 * Revision 1.26  2003/02/06 04:53:12  warmerda
117
 * added Fixup() method
118
 *
119
 * Revision 1.25  2003/01/08 18:14:28  warmerda
120
 * added FixupOrdering()
121
 *
122
 * Revision 1.24  2002/12/16 17:07:13  warmerda
123
 * added NormProjParm functions, and OSRGetPrimeMeridian
124
 *
125
 * Revision 1.23  2002/12/14 22:59:14  warmerda
126
 * added Krovak in ESRI compatible way
127
 *
128
 * Revision 1.22  2002/12/09 18:55:07  warmerda
129
 * moved DMS stuff to gdal/port
130
 *
131
 * Revision 1.21  2002/12/09 16:11:53  warmerda
132
 * added DMS translation
133
 *
134
 * Revision 1.20  2002/11/25 16:12:54  warmerda
135
 * added GetAuthorityCode/Name
136
 *
137
 * Revision 1.19  2002/09/26 18:13:25  warmerda
138
 * avoid double def
139
 *
140
 * Revision 1.18  2002/06/11 18:02:03  warmerda
141
 * add PROJ.4 normalization and EPSG support
142
 *
143
 * Revision 1.17  2001/10/11 19:27:12  warmerda
144
 * upgraded validation infrastructure
145
 *
146
 * Revision 1.16  2001/10/10 20:42:43  warmerda
147
 * added ESRI WKT morphing support
148
 *
149
 * Revision 1.15  2001/09/21 16:21:02  warmerda
150
 * added Clear(), and SetFromUserInput() methods
151
 *
152
 * Revision 1.14  2000/11/09 06:21:32  warmerda
153
 * added limited ESRI prj support
154
 *
155
 * Revision 1.13  2000/10/20 04:19:38  warmerda
156
 * added setstateplane
157
 *
158
 * Revision 1.12  2000/10/16 21:26:07  warmerda
159
 * added some level of LOCAL_CS support
160
 *
161
 * Revision 1.11  2000/09/01 20:58:01  warmerda
162
 * added CPL_DLL for entry points
163
 *
164
 * Revision 1.10  2000/08/30 20:06:14  warmerda
165
 * added projection method list functions
166
 *
167
 * Revision 1.9  2000/08/28 20:13:23  warmerda
168
 * added importFromProj4
169
 *
170
 * Revision 1.8  2000/07/11 01:02:06  warmerda
171
 * added ExportToProj4()
172
 *
173
 * Revision 1.7  2000/07/09 20:48:02  warmerda
174
 * added exportToPrettyWkt
175
 *
176
 * Revision 1.6  2000/05/30 22:45:44  warmerda
177
 * added OSRCloneGeogCS()
178
 *
179
 * Revision 1.5  2000/04/26 18:25:56  warmerda
180
 * added missing CPL_DLL attributes
181
 *
182
 * Revision 1.4  2000/03/22 01:09:43  warmerda
183
 * added SetProjCS and SetWellKnownTextCS
184
 *
185
 * Revision 1.3  2000/03/20 23:33:51  warmerda
186
 * updated docs a bit
187
 *
188
 * Revision 1.2  2000/03/20 22:39:31  warmerda
189
 * Added C API.
190
 *
191
 * Revision 1.1  2000/03/16 19:04:14  warmerda
192
 * New
193
 *
194
 */
195

    
196
#ifndef _OGR_SRS_API_H_INCLUDED
197
#define _OGR_SRS_API_H_INCLUDED
198

    
199
#include "ogr_core.h"
200

    
201
CPL_C_START
202

    
203
/**
204
 * \file ogr_srs_api.h
205
 * 
206
 * C spatial reference system services and defines.
207
 * 
208
 * See also: ogr_spatialref.h
209
 */
210

    
211
/* -------------------------------------------------------------------- */
212
/*      Axis orientations (corresponds to CS_AxisOrientationEnum).      */
213
/* -------------------------------------------------------------------- */
214
typedef enum {
215
    OAO_Other=0,
216
    OAO_North=1,
217
    OAO_South=2,
218
    OAO_East=3,
219
    OAO_West=4,
220
    OAO_Up=5,
221
    OAO_Down=6
222
} OGRAxisOrientation;
223
    
224
/* -------------------------------------------------------------------- */
225
/*      Datum types (corresponds to CS_DatumType).                      */
226
/* -------------------------------------------------------------------- */
227

    
228
typedef enum {
229
    ODT_HD_Min=1000,
230
    ODT_HD_Other=1000,
231
    ODT_HD_Classic=1001,
232
    ODT_HD_Geocentric=1002,
233
    ODT_HD_Max=1999,
234
    ODT_VD_Min=2000,
235
    ODT_VD_Other=2000,
236
    ODT_VD_Orthometric=2001,
237
    ODT_VD_Ellipsoidal=2002,
238
    ODT_VD_AltitudeBarometric=2003,
239
    ODT_VD_Normal=2004,
240
    ODT_VD_GeoidModelDerived=2005,
241
    ODT_VD_Depth=2006,
242
    ODT_VD_Max=2999,
243
    ODT_LD_Min=10000,
244
    ODT_LD_Max=32767
245
} OGRDatumType; 
246

    
247
/* ==================================================================== */
248
/*      Some "standard" strings.                                        */
249
/* ==================================================================== */
250

    
251
#define SRS_PT_ALBERS_CONIC_EQUAL_AREA                                  \
252
                                "Albers_Conic_Equal_Area"
253
#define SRS_PT_AZIMUTHAL_EQUIDISTANT "Azimuthal_Equidistant"
254
#define SRS_PT_CASSINI_SOLDNER  "Cassini_Soldner"
255
#define SRS_PT_CYLINDRICAL_EQUAL_AREA "Cylindrical_Equal_Area"
256
#define SRS_PT_ECKERT_IV        "Eckert_IV"
257
#define SRS_PT_ECKERT_VI        "Eckert_VI"
258
#define SRS_PT_EQUIDISTANT_CONIC "Equidistant_Conic"
259
#define SRS_PT_EQUIRECTANGULAR  "Equirectangular"
260
#define SRS_PT_GALL_STEREOGRAPHIC "Gall_Stereographic"
261
#define SRS_PT_GNOMONIC         "Gnomonic"
262
#define SRS_PT_HOTINE_OBLIQUE_MERCATOR                                  \
263
                                "Hotine_Oblique_Mercator"
264
#define SRS_PT_HOTINE_OBLIQUE_MERCATOR_TWO_POINT_NATURAL_ORIGIN         \
265
                            "Hotine_Oblique_Mercator_Two_Point_Natural_Origin"
266
#define SRS_PT_LABORDE_OBLIQUE_MERCATOR                                 \
267
                                "Laborde_Oblique_Mercator"
268
#define SRS_PT_LAMBERT_CONFORMAL_CONIC_1SP                              \
269
                                "Lambert_Conformal_Conic_1SP"
270
#define SRS_PT_LAMBERT_CONFORMAL_CONIC_2SP                              \
271
                                "Lambert_Conformal_Conic_2SP"
272
#define SRS_PT_LAMBERT_CONFORMAL_CONIC_2SP_BELGIUM                      \
273
                                "Lambert_Conformal_Conic_2SP_Belgium)"
274
#define SRS_PT_LAMBERT_AZIMUTHAL_EQUAL_AREA                     \
275
                                "Lambert_Azimuthal_Equal_Area"
276
#define SRS_PT_MERCATOR_1SP     "Mercator_1SP"
277
#define SRS_PT_MERCATOR_2SP     "Mercator_2SP"
278
#define SRS_PT_MILLER_CYLINDRICAL "Miller_Cylindrical"
279
#define SRS_PT_MOLLWEIDE        "Mollweide"
280
#define SRS_PT_NEW_ZEALAND_MAP_GRID                                     \
281
                                "New_Zealand_Map_Grid"
282
#define SRS_PT_OBLIQUE_STEREOGRAPHIC                                    \
283
                                "Oblique_Stereographic"
284
#define SRS_PT_ORTHOGRAPHIC     "Orthographic"
285
#define SRS_PT_POLAR_STEREOGRAPHIC                                      \
286
                                "Polar_Stereographic"
287
#define SRS_PT_POLYCONIC        "Polyconic"
288
#define SRS_PT_ROBINSON         "Robinson"
289
#define SRS_PT_SINUSOIDAL       "Sinusoidal"
290
#define SRS_PT_STEREOGRAPHIC    "Stereographic"
291
#define SRS_PT_SWISS_OBLIQUE_CYLINDRICAL                                \
292
                                "Swiss_Oblique_Cylindrical"
293
#define SRS_PT_TRANSVERSE_MERCATOR                                      \
294
                                "Transverse_Mercator"
295
#define SRS_PT_TRANSVERSE_MERCATOR_SOUTH_ORIENTED                       \
296
                                "Transverse_Mercator_South_Orientated"
297

    
298
/* special mapinfo variants on Transverse Mercator */
299
#define SRS_PT_TRANSVERSE_MERCATOR_MI_22 \
300
                                "Transverse_Mercator_MapInfo_22"
301
#define SRS_PT_TRANSVERSE_MERCATOR_MI_23 \
302
                                "Transverse_Mercator_MapInfo_23"
303
#define SRS_PT_TRANSVERSE_MERCATOR_MI_24 \
304
                                "Transverse_Mercator_MapInfo_24"
305
#define SRS_PT_TRANSVERSE_MERCATOR_MI_25 \
306
                                "Transverse_Mercator_MapInfo_25"
307

    
308
#define SRS_PT_TUNISIA_MINING_GRID                                      \
309
                                "Tunisia_Mining_Grid"
310
#define SRS_PT_VANDERGRINTEN    "VanDerGrinten"
311
#define SRS_PT_KROVAK           "Krovak"
312

    
313
                                
314

    
315
#define SRS_PP_CENTRAL_MERIDIAN         "central_meridian"
316
#define SRS_PP_SCALE_FACTOR             "scale_factor"
317
#define SRS_PP_STANDARD_PARALLEL_1      "standard_parallel_1"
318
#define SRS_PP_STANDARD_PARALLEL_2      "standard_parallel_2"
319
#define SRS_PP_PSEUDO_STD_PARALLEL_1    "pseudo_standard_parallel_1"
320
#define SRS_PP_LONGITUDE_OF_CENTER      "longitude_of_center"
321
#define SRS_PP_LATITUDE_OF_CENTER       "latitude_of_center"
322
#define SRS_PP_LONGITUDE_OF_ORIGIN      "longitude_of_origin"
323
#define SRS_PP_LATITUDE_OF_ORIGIN       "latitude_of_origin"
324
#define SRS_PP_FALSE_EASTING            "false_easting"
325
#define SRS_PP_FALSE_NORTHING           "false_northing"
326
#define SRS_PP_AZIMUTH                  "azimuth"
327
#define SRS_PP_LONGITUDE_OF_POINT_1     "longitude_of_point_1"
328
#define SRS_PP_LATITUDE_OF_POINT_1      "latitude_of_point_1"
329
#define SRS_PP_LONGITUDE_OF_POINT_2     "longitude_of_point_2"
330
#define SRS_PP_LATITUDE_OF_POINT_2      "latitude_of_point_2"
331
#define SRS_PP_LONGITUDE_OF_POINT_3     "longitude_of_point_3"
332
#define SRS_PP_LATITUDE_OF_POINT_3      "latitude_of_point_3"
333
#define SRS_PP_RECTIFIED_GRID_ANGLE     "rectified_grid_angle"
334
#define SRS_PP_LANDSAT_NUMBER           "landsat_number"
335
#define SRS_PP_PATH_NUMBER              "path_number"
336
#define SRS_PP_PERSPECTIVE_POINT_HEIGHT "perspective_point_height"
337
#define SRS_PP_FIPSZONE                 "fipszone"
338
#define SRS_PP_ZONE                     "zone"
339

    
340
#define SRS_UL_METER            "Meter"
341
#define SRS_UL_FOOT             "Foot (International)" /* or just "FOOT"? */
342
#define SRS_UL_FOOT_CONV                    "0.3048"
343
#define SRS_UL_US_FOOT          "U.S. Foot" /* or "US survey foot" */
344
#define SRS_UL_US_FOOT_CONV                 "0.3048006"
345
#define SRS_UL_NAUTICAL_MILE    "Nautical Mile"
346
#define SRS_UL_NAUTICAL_MILE_CONV           "1852.0"
347
#define SRS_UL_LINK             "Link"          /* Based on US Foot */
348
#define SRS_UL_LINK_CONV                    "0.20116684023368047"
349
#define SRS_UL_CHAIN            "Chain"         /* based on US Foot */
350
#define SRS_UL_CHAIN_CONV                   "2.0116684023368047"
351
#define SRS_UL_ROD              "Rod"           /* based on US Foot */
352
#define SRS_UL_ROD_CONV                     "5.02921005842012"
353

    
354
#define SRS_UA_DEGREE           "degree"
355
#define SRS_UA_DEGREE_CONV                  "0.0174532925199433"
356
#define SRS_UA_RADIAN           "radian"
357

    
358
#define SRS_PM_GREENWICH        "Greenwich"
359

    
360
#define SRS_DN_NAD27            "North_American_Datum_1927"
361
#define SRS_DN_NAD83            "North_American_Datum_1983"
362
#define SRS_DN_WGS72            "WGS_1972"
363
#define SRS_DN_WGS84            "WGS_1984"
364

    
365
#define SRS_WGS84_SEMIMAJOR     6378137.0                                
366
#define SRS_WGS84_INVFLATTENING 298.257223563
367

    
368
/* -------------------------------------------------------------------- */
369
/*      C Wrappers for C++ objects and methods.                         */
370
/* -------------------------------------------------------------------- */
371
#ifndef _DEFINED_OGRSpatialReferenceH
372
#define _DEFINED_OGRSpatialReferenceH
373

    
374
typedef void *OGRSpatialReferenceH;                               
375
typedef void *OGRCoordinateTransformationH;
376

    
377
#endif
378

    
379

    
380
OGRSpatialReferenceH CPL_DLL
381
      OSRNewSpatialReference( const char * /* = NULL */);
382
OGRSpatialReferenceH CPL_DLL OSRCloneGeogCS( OGRSpatialReferenceH );
383
OGRSpatialReferenceH CPL_DLL OSRCloneCS( OGRSpatialReferenceH );
384
void CPL_DLL OSRDestroySpatialReference( OGRSpatialReferenceH );
385

    
386
int CPL_DLL OSRReference( OGRSpatialReferenceH );
387
int CPL_DLL OSRDereference( OGRSpatialReferenceH );
388

    
389
OGRErr CPL_DLL OSRValidate( OGRSpatialReferenceH );
390
OGRErr CPL_DLL OSRFixupOrdering( OGRSpatialReferenceH );
391
OGRErr CPL_DLL OSRFixup( OGRSpatialReferenceH );
392
OGRErr CPL_DLL OSRStripCTParms( OGRSpatialReferenceH );
393

    
394
OGRErr CPL_DLL OSRImportFromEPSG( OGRSpatialReferenceH, int );
395
OGRErr CPL_DLL OSRImportFromWkt( OGRSpatialReferenceH, char ** );
396
OGRErr CPL_DLL OSRImportFromProj4( OGRSpatialReferenceH, const char *);
397
OGRErr CPL_DLL OSRImportFromESRI( OGRSpatialReferenceH, char **);
398
OGRErr CPL_DLL OSRImportFromPCI( OGRSpatialReferenceH hSRS, const char *,
399
                                 const char *, double * );
400
OGRErr CPL_DLL OSRImportFromUSGS( OGRSpatialReferenceH,
401
                                  long, long, double *, long);
402
OGRErr CPL_DLL OSRImportFromXML( OGRSpatialReferenceH, const char * );
403
OGRErr CPL_DLL OSRImportFromDict( OGRSpatialReferenceH, const char *, 
404
                                  const char * );
405
OGRErr CPL_DLL OSRExportToWkt( OGRSpatialReferenceH, char ** );
406
OGRErr CPL_DLL OSRExportToPrettyWkt( OGRSpatialReferenceH, char **, int);
407
OGRErr CPL_DLL OSRExportToProj4( OGRSpatialReferenceH, char **);
408
OGRErr CPL_DLL OSRExportToPCI( OGRSpatialReferenceH, char **, char **,
409
                               double ** );
410
OGRErr CPL_DLL OSRExportToUSGS( OGRSpatialReferenceH, long *, long *,
411
                                double **, long * );
412
OGRErr CPL_DLL OSRExportToXML( OGRSpatialReferenceH, char **, const char * );
413

    
414
OGRErr CPL_DLL OSRMorphToESRI( OGRSpatialReferenceH );
415
OGRErr CPL_DLL OSRMorphFromESRI( OGRSpatialReferenceH );
416

    
417
OGRErr CPL_DLL OSRSetAttrValue( OGRSpatialReferenceH hSRS,
418
                                const char * pszNodePath,
419
                                const char * pszNewNodeValue );
420
const char CPL_DLL * OSRGetAttrValue( OGRSpatialReferenceH hSRS,
421
                           const char * pszName, int iChild /* = 0 */ );
422

    
423
OGRErr CPL_DLL OSRSetAngularUnits( OGRSpatialReferenceH, const char *, double );
424
double CPL_DLL OSRGetAngularUnits( OGRSpatialReferenceH, char ** );
425
OGRErr CPL_DLL OSRSetLinearUnits( OGRSpatialReferenceH, const char *, double );
426
double CPL_DLL OSRGetLinearUnits( OGRSpatialReferenceH, char ** );
427

    
428
double CPL_DLL OSRGetPrimeMeridian( OGRSpatialReferenceH, char ** );
429

    
430
int CPL_DLL OSRIsGeographic( OGRSpatialReferenceH );
431
int CPL_DLL OSRIsLocal( OGRSpatialReferenceH );
432
int CPL_DLL OSRIsProjected( OGRSpatialReferenceH );
433
int CPL_DLL OSRIsSameGeogCS( OGRSpatialReferenceH, OGRSpatialReferenceH );
434
int CPL_DLL OSRIsSame( OGRSpatialReferenceH, OGRSpatialReferenceH );
435

    
436
OGRErr CPL_DLL OSRSetLocalCS( OGRSpatialReferenceH hSRS, const char *pszName );
437
OGRErr CPL_DLL OSRSetProjCS( OGRSpatialReferenceH hSRS, const char * pszName );
438
OGRErr CPL_DLL OSRSetWellKnownGeogCS( OGRSpatialReferenceH hSRS,
439
                                      const char * pszName );
440
OGRErr CPL_DLL OSRSetFromUserInput( OGRSpatialReferenceH hSRS, 
441
                                    const char * );
442
OGRErr CPL_DLL OSRCopyGeogCSFrom( OGRSpatialReferenceH hSRS, 
443
                                  OGRSpatialReferenceH hSrcSRS );
444
OGRErr CPL_DLL OSRSetTOWGS84( OGRSpatialReferenceH hSRS, 
445
                              double, double, double, 
446
                              double, double, double, double );
447
OGRErr CPL_DLL OSRGetTOWGS84( OGRSpatialReferenceH hSRS, double *, int );
448
                        
449

    
450
OGRErr CPL_DLL OSRSetGeogCS( OGRSpatialReferenceH hSRS,
451
                      const char * pszGeogName,
452
                      const char * pszDatumName,
453
                      const char * pszEllipsoidName,
454
                      double dfSemiMajor, double dfInvFlattening,
455
                      const char * pszPMName /* = NULL */,
456
                      double dfPMOffset /* = 0.0 */,
457
                      const char * pszUnits /* = NULL */,
458
                      double dfConvertToRadians /* = 0.0 */ );
459

    
460
double CPL_DLL OSRGetSemiMajor( OGRSpatialReferenceH, OGRErr * /* = NULL */ );
461
double CPL_DLL OSRGetSemiMinor( OGRSpatialReferenceH, OGRErr * /* = NULL */ );
462
double CPL_DLL OSRGetInvFlattening( OGRSpatialReferenceH, OGRErr * /*=NULL*/);
463

    
464
OGRErr CPL_DLL OSRSetAuthority( OGRSpatialReferenceH hSRS,
465
                         const char * pszTargetKey,
466
                         const char * pszAuthority,
467
                         int nCode );
468
const char CPL_DLL *OSRGetAuthorityCode( OGRSpatialReferenceH hSRS,
469
                                         const char * pszTargetKey );
470
const char CPL_DLL *OSRGetAuthorityName( OGRSpatialReferenceH hSRS,
471
                                         const char * pszTargetKey );
472
OGRErr CPL_DLL OSRSetProjection( OGRSpatialReferenceH, const char * );
473
OGRErr CPL_DLL OSRSetProjParm( OGRSpatialReferenceH, const char *, double );
474
double CPL_DLL OSRGetProjParm( OGRSpatialReferenceH hSRS,
475
                        const char * pszParmName, 
476
                        double dfDefault /* = 0.0 */,
477
                        OGRErr * /* = NULL */ );
478
OGRErr CPL_DLL OSRSetNormProjParm( OGRSpatialReferenceH, const char *, double);
479
double CPL_DLL OSRGetNormProjParm( OGRSpatialReferenceH hSRS,
480
                                   const char * pszParmName, 
481
                                   double dfDefault /* = 0.0 */,
482
                                   OGRErr * /* = NULL */ );
483

    
484
OGRErr CPL_DLL OSRSetUTM( OGRSpatialReferenceH hSRS, int nZone, int bNorth );
485
int    CPL_DLL OSRGetUTMZone( OGRSpatialReferenceH hSRS, int *pbNorth );
486
OGRErr CPL_DLL OSRSetStatePlane( OGRSpatialReferenceH hSRS, 
487
                                 int nZone, int bNAD83 );
488
OGRErr CPL_DLL OSRSetStatePlaneWithUnits( OGRSpatialReferenceH hSRS, 
489
                                          int nZone, int bNAD83,
490
                                          const char *pszOverrideUnitName,
491
                                          double dfOverrideUnit );
492
OGRErr CPL_DLL OSRAutoIdentifyEPSG( OGRSpatialReferenceH hSRS );
493

    
494
/** Albers Conic Equal Area */
495
OGRErr CPL_DLL OSRSetACEA( OGRSpatialReferenceH hSRS, double dfStdP1, double dfStdP2,
496
                         double dfCenterLat, double dfCenterLong,
497
                         double dfFalseEasting, double dfFalseNorthing );
498
    
499
/** Azimuthal Equidistant */
500
OGRErr CPL_DLL  OSRSetAE( OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong,
501
                       double dfFalseEasting, double dfFalseNorthing );
502

    
503
/** Cylindrical Equal Area */
504
OGRErr CPL_DLL OSRSetCEA( OGRSpatialReferenceH hSRS, double dfStdP1, double dfCentralMeridian,
505
                        double dfFalseEasting, double dfFalseNorthing );
506

    
507
/** Cassini-Soldner */
508
OGRErr CPL_DLL OSRSetCS( OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong,
509
                       double dfFalseEasting, double dfFalseNorthing );
510

    
511
/** Equidistant Conic */
512
OGRErr CPL_DLL OSRSetEC( OGRSpatialReferenceH hSRS, double dfStdP1, double dfStdP2,
513
                       double dfCenterLat, double dfCenterLong,
514
                       double dfFalseEasting, double dfFalseNorthing );
515

    
516
/** Eckert IV */
517
OGRErr CPL_DLL OSRSetEckertIV( OGRSpatialReferenceH hSRS, double dfCentralMeridian,
518
                             double dfFalseEasting, double dfFalseNorthing );
519

    
520
/** Eckert VI */
521
OGRErr CPL_DLL OSRSetEckertVI( OGRSpatialReferenceH hSRS, double dfCentralMeridian,
522
                             double dfFalseEasting, double dfFalseNorthing );
523

    
524
/** Equirectangular */
525
OGRErr CPL_DLL OSRSetEquirectangular(OGRSpatialReferenceH hSRS,
526
                              double dfCenterLat, double dfCenterLong,
527
                              double dfFalseEasting, double dfFalseNorthing );
528

    
529
/** Gall Stereograpic */
530
OGRErr CPL_DLL OSRSetGS( OGRSpatialReferenceH hSRS, double dfCentralMeridian,
531
                       double dfFalseEasting, double dfFalseNorthing );
532
    
533
/** Gnomonic */
534
OGRErr CPL_DLL OSRSetGnomonic(OGRSpatialReferenceH hSRS,
535
                              double dfCenterLat, double dfCenterLong,
536
                            double dfFalseEasting, double dfFalseNorthing );
537

    
538
/** Hotine Oblique Mercator using azimuth angle */
539
OGRErr CPL_DLL OSRSetHOM( OGRSpatialReferenceH hSRS,
540
                          double dfCenterLat, double dfCenterLong,
541
                          double dfAzimuth, double dfRectToSkew,
542
                          double dfScale,
543
                          double dfFalseEasting, double dfFalseNorthing );
544

    
545
/** Hotine Oblique Mercator using two points on centerline */
546
OGRErr CPL_DLL OSRSetHOM2PNO( OGRSpatialReferenceH hSRS, double dfCenterLat,
547
                              double dfLat1, double dfLong1,
548
                              double dfLat2, double dfLong2,
549
                              double dfScale,
550
                              double dfFalseEasting, double dfFalseNorthing );
551

    
552
/** Krovak Oblique Conic Conformal */
553
OGRErr CPL_DLL OSRSetKrovak( OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong,
554
                           double dfAzimuth, double dfPseudoStdParallelLat,
555
                           double dfScale, 
556
                           double dfFalseEasting, double dfFalseNorthing );
557

    
558
/** Lambert Azimuthal Equal-Area */
559
OGRErr CPL_DLL OSRSetLAEA( OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong,
560
                         double dfFalseEasting, double dfFalseNorthing );
561

    
562
/** Lambert Conformal Conic */
563
OGRErr CPL_DLL OSRSetLCC( OGRSpatialReferenceH hSRS, double dfStdP1, double dfStdP2,
564
                        double dfCenterLat, double dfCenterLong,
565
                        double dfFalseEasting, double dfFalseNorthing );
566

    
567
/** Lambert Conformal Conic 1SP */
568
OGRErr CPL_DLL OSRSetLCC1SP( OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong,
569
                           double dfScale,
570
                           double dfFalseEasting, double dfFalseNorthing );
571

    
572
/** Lambert Conformal Conic (Belgium) */
573
OGRErr CPL_DLL OSRSetLCCB( OGRSpatialReferenceH hSRS, double dfStdP1, double dfStdP2,
574
                         double dfCenterLat, double dfCenterLong,
575
                         double dfFalseEasting, double dfFalseNorthing );
576
    
577
/** Miller Cylindrical */
578
OGRErr CPL_DLL OSRSetMC( OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong,
579
                       double dfFalseEasting, double dfFalseNorthing );
580

    
581
/** Mercator */
582
OGRErr CPL_DLL OSRSetMercator( OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong,
583
                             double dfScale, 
584
                             double dfFalseEasting, double dfFalseNorthing );
585

    
586
/** Mollweide */
587
OGRErr CPL_DLL  OSRSetMollweide( OGRSpatialReferenceH hSRS, double dfCentralMeridian,
588
                              double dfFalseEasting, double dfFalseNorthing );
589

    
590
/** New Zealand Map Grid */
591
OGRErr CPL_DLL OSRSetNZMG( OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong,
592
                         double dfFalseEasting, double dfFalseNorthing );
593

    
594
/** Oblique Stereographic */
595
OGRErr CPL_DLL OSRSetOS( OGRSpatialReferenceH hSRS, double dfOriginLat, double dfCMeridian,
596
                       double dfScale,
597
                       double dfFalseEasting,double dfFalseNorthing);
598
    
599
/** Orthographic */
600
OGRErr CPL_DLL OSRSetOrthographic( OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong,
601
                                 double dfFalseEasting,double dfFalseNorthing);
602

    
603
/** Polyconic */
604
OGRErr CPL_DLL OSRSetPolyconic( OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong,
605
                              double dfFalseEasting, double dfFalseNorthing );
606

    
607
/** Polar Stereographic */
608
OGRErr CPL_DLL OSRSetPS( OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong,
609
                       double dfScale,
610
                       double dfFalseEasting, double dfFalseNorthing);
611
    
612
/** Robinson */
613
OGRErr CPL_DLL OSRSetRobinson( OGRSpatialReferenceH hSRS, double dfCenterLong, 
614
                             double dfFalseEasting, double dfFalseNorthing );
615
    
616
/** Sinusoidal */
617
OGRErr CPL_DLL OSRSetSinusoidal( OGRSpatialReferenceH hSRS, double dfCenterLong, 
618
                               double dfFalseEasting, double dfFalseNorthing );
619
    
620
/** Stereographic */
621
OGRErr CPL_DLL OSRSetStereographic( OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong,
622
                                  double dfScale,
623
                                 double dfFalseEasting,double dfFalseNorthing);
624
    
625
/** Swiss Oblique Cylindrical */
626
OGRErr CPL_DLL OSRSetSOC( OGRSpatialReferenceH hSRS, double dfLatitudeOfOrigin, double dfCentralMeridian,
627
                        double dfFalseEasting, double dfFalseNorthing );
628
    
629
/** Transverse Mercator */
630
OGRErr CPL_DLL OSRSetTM( OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong,
631
                       double dfScale,
632
                       double dfFalseEasting, double dfFalseNorthing );
633

    
634
/** Transverse Mercator variant */
635
OGRErr CPL_DLL OSRSetTMVariant( 
636
    OGRSpatialReferenceH hSRS, const char *pszVariantName,
637
    double dfCenterLat, double dfCenterLong,
638
    double dfScale,
639
    double dfFalseEasting, double dfFalseNorthing );
640

    
641
/** Tunesia Mining Grid  */
642
OGRErr CPL_DLL OSRSetTMG( OGRSpatialReferenceH hSRS, double dfCenterLat, double dfCenterLong, 
643
                        double dfFalseEasting, double dfFalseNorthing );
644

    
645
/** Transverse Mercator (South Oriented) */
646
OGRErr CPL_DLL OSRSetTMSO( OGRSpatialReferenceH hSRS,
647
                           double dfCenterLat, double dfCenterLong,
648
                           double dfScale,
649
                           double dfFalseEasting, double dfFalseNorthing );
650

    
651
/** VanDerGrinten */
652
OGRErr CPL_DLL OSRSetVDG( OGRSpatialReferenceH hSRS,
653
                          double dfCenterLong,
654
                          double dfFalseEasting, double dfFalseNorthing );
655

    
656
void CPL_DLL OSRCleanup( void );
657

    
658
/* -------------------------------------------------------------------- */
659
/*      OGRCoordinateTransform C API.                                   */
660
/* -------------------------------------------------------------------- */
661
OGRCoordinateTransformationH CPL_DLL
662
OCTNewCoordinateTransformation( OGRSpatialReferenceH hSourceSRS,
663
                                OGRSpatialReferenceH hTargetSRS );
664
void CPL_DLL
665
      OCTDestroyCoordinateTransformation( OGRCoordinateTransformationH );
666

    
667
int CPL_DLL OCTTransform( OGRCoordinateTransformationH hCT,
668
                  int nCount, double *x, double *y, double *z );
669
int CPL_DLL OCTTransformEx( OGRCoordinateTransformationH hCT,
670
                            int nCount, double *x, double *y, double *z,
671
                            int *pabSuccess );
672

    
673
/* this is really private to OGR. */
674
char *OCTProj4Normalize( const char *pszProj4Src );
675

    
676
/* -------------------------------------------------------------------- */
677
/*      Projection transform dictionary query.                          */
678
/* -------------------------------------------------------------------- */
679

    
680
char CPL_DLL ** OPTGetProjectionMethods();
681
char CPL_DLL ** OPTGetParameterList( const char * pszProjectionMethod,
682
                             char ** ppszUserName );
683
int CPL_DLL OPTGetParameterInfo( const char * pszProjectionMethod,
684
                                 const char * pszParameterName,
685
                                 char ** ppszUserName,
686
                                 char ** ppszType,
687
                                 double *pdfDefaultValue );
688

    
689
CPL_C_END
690

    
691
#endif /* ndef _OGR_SRS_API_H_INCLUDED */