proj_api.h
5.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
/******************************************************************************
* $Id: proj_api.h,v 1.16 2007/11/29 21:07:49 fwarmerdam Exp $
*
* Project: PROJ.4
* Purpose: Public (application) include file for PROJ.4 API, and constants.
* Author: Frank Warmerdam, <warmerdam@pobox.com>
*
******************************************************************************
* Copyright (c) 2001, Frank Warmerdam <warmerdam@pobox.com>
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
******************************************************************************
*
* $Log: proj_api.h,v $
* Revision 1.16 2007/11/29 21:07:49 fwarmerdam
* prepare for 4.6.0 release
*
* Revision 1.15 2007/08/20 13:40:06 fwarmerdam
* avoid warnings in c++ for some prototypes
*
* Revision 1.14 2006/04/20 04:19:59 fwarmerdam
* updated version
*
* Revision 1.13 2004/10/30 02:33:47 fwarmerdam
* Updated release version.
*
* Revision 1.12 2004/09/16 15:14:01 fwarmerdam
* * src/pj_open_lib.c: added pj_set_searchpath() provided by Eric Miller.
*
* Revision 1.11 2004/07/28 23:23:49 warmerda
* Changed ra to es in declarations for pj_geocentric_to_geodetic()
* and pj_geodetic_to_geocentric() as suggested by Britton Kerin.
*
* Revision 1.10 2004/05/04 03:28:01 warmerda
* Updated version.
*
* Revision 1.9 2004/04/15 13:56:24 warmerda
* added pj_get_release
*
* Revision 1.8 2003/03/31 14:52:38 warmerda
* updated to 4.4.7
*
* Revision 1.7 2002/12/14 20:14:35 warmerda
* added geocentric support
*
* Revision 1.6 2002/06/11 18:08:25 warmerda
* Added the pj_get_def() function
*
* Revision 1.5 2002/01/09 14:36:22 warmerda
* updated to 4.4.5
*
* Revision 1.4 2001/09/15 22:55:28 warmerda
* final prep for 4.4.4 release
*
* Revision 1.3 2001/08/23 20:25:55 warmerda
* added pj_set_finder function
*
* Revision 1.2 2001/06/02 03:35:36 warmerda
* added pj_get_errno_ref()
*
* Revision 1.1 2001/04/06 01:24:22 warmerda
* New
*
*/
/* General projections header file */
#ifndef PROJ_API_H
#define PROJ_API_H
/* standard inclusions */
#include <math.h>
#include <stdlib.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Try to update this every version! */
#define PJ_VERSION 460
extern char const pj_release[]; /* global release id string */
#define RAD_TO_DEG 57.29577951308232
#define DEG_TO_RAD .0174532925199432958
extern int pj_errno; /* global error return code */
#if !defined(PROJECTS_H)
typedef struct { double u, v; } projUV;
typedef void *projPJ;
#define projXY projUV
#define projLP projUV
#else
typedef PJ *projPJ;
# define projXY XY
# define projLP LP
#endif
/* procedure prototypes */
projXY pj_fwd(projLP, projPJ);
projLP pj_inv(projXY, projPJ);
int pj_transform( projPJ src, projPJ dst, long point_count, int point_offset,
double *x, double *y, double *z );
int pj_datum_transform( projPJ src, projPJ dst, long point_count, int point_offset,
double *x, double *y, double *z );
int pj_geocentric_to_geodetic( double a, double es,
long point_count, int point_offset,
double *x, double *y, double *z );
int pj_geodetic_to_geocentric( double a, double es,
long point_count, int point_offset,
double *x, double *y, double *z );
int pj_compare_datums( projPJ srcdefn, projPJ dstdefn );
int pj_apply_gridshift( const char *, int,
long point_count, int point_offset,
double *x, double *y, double *z );
void pj_deallocate_grids(void);
int pj_is_latlong(projPJ);
int pj_is_geocent(projPJ);
void pj_pr_list(projPJ);
void pj_free(projPJ);
void pj_set_finder( const char *(*)(const char *) );
void pj_set_searchpath ( int count, const char **path );
projPJ pj_init(int, char **);
projPJ pj_init_plus(const char *);
char *pj_get_def(projPJ, int);
projPJ pj_latlong_from_proj( projPJ );
void *pj_malloc(size_t);
void pj_dalloc(void *);
char *pj_strerrno(int);
int *pj_get_errno_ref(void);
const char *pj_get_release(void);
#ifdef __cplusplus
}
#endif
#endif /* ndef PROJ_API_H */