forked from OSGeo/grass
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgprojects.h
113 lines (94 loc) · 2.88 KB
/
gprojects.h
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
/*
******************************************************************************
*
* MODULE: gproj library
* AUTHOR(S): Original Author unknown, probably Soil Conservation Service
* Paul Kelly
* PURPOSE: Include file for GRASS modules that use the PROJ.4
* wrapper functions
* COPYRIGHT: (C) 2003 by the GRASS Development Team
*
* This program is free software under the GNU General Public
* License (>=v2). Read the file COPYING that comes with GRASS
* for details.
*
*****************************************************************************/
#ifndef GRASS_GPROJECTS_H
#define GRASS_GPROJECTS_H
#include <grass/config.h>
/* TODO: clean up support for PROJ 5+ */
#ifdef HAVE_PROJ_H
#include <proj.h>
#define RAD_TO_DEG 57.295779513082321
#define DEG_TO_RAD .017453292519943296
#else
#include <proj_api.h>
#define PJ_FWD 1
#define PJ_INV -1
#endif
#ifdef HAVE_OGR
# include <ogr_srs_api.h>
#endif
/* Data Files */
#define ELLIPSOIDTABLE "/etc/proj/ellipse.table"
#define DATUMTABLE "/etc/proj/datum.table"
#define DATUMTRANSFORMTABLE "/etc/proj/datumtransform.table"
/* GRASS relative location of datum conversion lookup tables */
#define GRIDDIR "/etc/proj/nad"
/* TODO: rename pj_ to gpj_ to avoid symbol clash with PROJ lib */
struct pj_info
{
#ifdef HAVE_PROJ_H
PJ *pj;
#else
projPJ pj;
#endif
double meters;
int zone;
char proj[100];
char *def;
};
struct gpj_datum
{
char *name, *longname, *ellps;
double dx, dy, dz;
};
struct gpj_datum_transform_list
{
int count; /**< Transform Number (ordered list) */
char *params; /**< PROJ.4-style datum transform parameters */
char *where_used; /**< Comment text describing where (geographically)
* the transform is valid */
char *comment; /**< Additional Comments */
struct gpj_datum_transform_list *next; /**< Pointer to next set of
* transform parameters in linked list */
};
struct gpj_ellps
{
char *name, *longname;
double a, es, rf;
};
#ifndef HAVE_PROJ_H
/* PROJ.4's private datastructures copied from projects.h as removed
from upstream; pending better solution. see:
http://trac.osgeo.org/proj/ticket/98 */
/* In PROJ 5, the 'struct FACTORS' is back in as 'struct P5_FACTORS',
* and old 'struct LP' is now back in as 'PJ_UV' */
typedef struct { double u, v; } LP;
struct DERIVS {
double x_l, x_p; /* derivatives of x for lambda-phi */
double y_l, y_p; /* derivatives of y for lambda-phi */
};
struct FACTORS {
struct DERIVS der;
double h, k; /* meridinal, parallel scales */
double omega, thetap; /* angular distortion, theta prime */
double conv; /* convergence */
double s; /* areal scale factor */
double a, b; /* max-min scale error */
int code; /* info as to analytics, see following */
};
/* end of copy */
#endif
#include <grass/defs/gprojects.h>
#endif