2
static const char SCCSID[]="@(#)geod_set.c 4.8 95/09/23 GIE REL";
7
geod_set(int argc, char **argv) {
8
paralist *start = 0, *curr;
13
/* put arguments into internal linked list */
15
emess(1, "no arguments in initialization list");
16
for (i = 0; i < argc; ++i)
18
curr = curr->next = pj_mkparam(argv[i]);
20
start = curr = pj_mkparam(argv[i]);
21
/* set elliptical parameters */
22
if (pj_ell_set(start, &a, &es)) emess(1,"ellipse setup failure");
24
if (name = pj_param(start, "sunits").s) {
27
for (i = 0; (s = pj_units[i].id) && strcmp(name, s) ; ++i) ;
29
emess(1,"%s unknown unit conversion id", name);
30
fr_meter = 1. / (to_meter = atof(pj_units[i].to_meter));
32
to_meter = fr_meter = 1.;
33
if (ellipse = es != 0.) {
41
f = f2 = f4 = f64 = 0.;
43
/* check if line or arc mode */
44
if (pj_param(start, "tlat_1").i) {
47
phi1 = pj_param(start, "rlat_1").f;
48
lam1 = pj_param(start, "rlon_1").f;
49
if (pj_param(start, "tlat_2").i) {
50
phi2 = pj_param(start, "rlat_2").f;
51
lam2 = pj_param(start, "rlon_2").f;
54
} else if (S = pj_param(start, "dS").f) {
55
al12 = pj_param(start, "rA").f;
58
} else emess(1,"incomplete geodesic/arc info");
59
if ((n_alpha = pj_param(start, "in_A").i) > 0) {
60
if (!(del_alpha = pj_param(start, "rdel_A").f))
61
emess(1,"del azimuth == 0");
62
} else if (del_S = fabs(pj_param(start, "ddel_S").f)) {
64
} else if ((n_S = pj_param(start, "in_S").i) <= 0)
65
emess(1,"no interval divisor selected");
67
/* free up linked list */
68
for ( ; start; start = curr) {