mirror of
https://github.com/boostorg/geometry.git
synced 2026-02-02 08:52:10 +00:00
[projections] changes in generation - avoid splitting lines
This commit is contained in:
@@ -158,9 +158,8 @@ namespace boost { namespace geometry { namespace projections
|
||||
{
|
||||
int i, j;
|
||||
char line[10];
|
||||
for (i = 0;
|
||||
i < 3;
|
||||
++i) { /* get control point locations */
|
||||
|
||||
for (i = 0; i < 3; ++i) { /* get control point locations */
|
||||
(void)sprintf(line, "rlat_%d", i+1);
|
||||
proj_parm.c[i].phi = pj_param(par.params, line).f;
|
||||
(void)sprintf(line, "rlon_%d", i+1);
|
||||
@@ -169,9 +168,7 @@ namespace boost { namespace geometry { namespace projections
|
||||
proj_parm.c[i].cosphi = cos(proj_parm.c[i].phi);
|
||||
proj_parm.c[i].sinphi = sin(proj_parm.c[i].phi);
|
||||
}
|
||||
for (i = 0;
|
||||
i < 3;
|
||||
++i) { /* inter ctl pt. distances and azimuths */
|
||||
for (i = 0; i < 3; ++i) { /* inter ctl pt. distances and azimuths */
|
||||
j = i == 2 ? 0 : i + 1;
|
||||
proj_parm.c[i].v = vect(proj_parm.c[j].phi - proj_parm.c[i].phi, proj_parm.c[i].cosphi, proj_parm.c[i].sinphi,
|
||||
proj_parm.c[j].cosphi, proj_parm.c[j].sinphi, proj_parm.c[j].lam - proj_parm.c[i].lam);
|
||||
|
||||
@@ -227,12 +227,12 @@ namespace boost { namespace geometry { namespace projections
|
||||
void setup_etmerc(Parameters& par, par_etmerc& proj_parm)
|
||||
{
|
||||
double f, n, np, Z;
|
||||
|
||||
if (par.es <= 0) throw proj_exception(-34);
|
||||
f = par.es / (1 + sqrt(1 - par.es));
|
||||
/* Replaces: f = 1 - sqrt(1-par.es);
|
||||
*/
|
||||
f = par.es / (1 + sqrt(1 - par.es)); /* Replaces: f = 1 - sqrt(1-par.es); */
|
||||
/* third flattening */
|
||||
np = n = f/(2 - f);
|
||||
|
||||
/* COEF. OF TRIG SERIES GEO <-> GAUSS */
|
||||
/* cgb := Gaussian -> Geodetic, KW p190 - 191 (61) - (62) */
|
||||
/* cbg := Geodetic -> Gaussian, KW p186 - 187 (51) - (52) */
|
||||
|
||||
@@ -110,14 +110,11 @@ namespace boost { namespace geometry { namespace projections
|
||||
proj_parm.c= log(pj_tsfn(-1.0*proj_parm.phic,0.0,0.0))
|
||||
-proj_parm.n1*log(pj_tsfn(-1.0*par.phi0,-1.0*sin(par.phi0),par.e));
|
||||
proj_parm.n2= par.k0*par.a*sqrt(1.0-par.es)/(1.0-par.es*sin(par.phi0)*sin(par.phi0));
|
||||
proj_parm.XS= 0;
|
||||
/* -par.x0 */
|
||||
proj_parm.YS= -1.0*proj_parm.n2*proj_parm.phic;
|
||||
/* -par.y0 */
|
||||
// par.inv= s_inverse;
|
||||
// par.fwd= s_forward;
|
||||
/*fprintf(stderr,"a (m) =%16.4f\ne =%16.13f\nl0(rad)=%16.13f\np0(rad)=%16.13f\nk0 =%16.4f\nX0 (m)=%16.4f\nY0 (m)=%16.4f\n\nlC(rad)=%16.13f\npC(rad)=%16.13f\nc =%16.13f\nn1 =%16.13f\nn2 (m) =%16.4f\nXS (m) =%16.4f\nYS (m) =%16.4f\n", par.a, par.e, par.lam0, par.phi0, par.k0, par.x0, par.y0, proj_parm.lamc, proj_parm.phic, proj_parm.c, proj_parm.n1, proj_parm.n2, proj_parm.XS +par.x0, proj_parm.YS + par.y0);
|
||||
*/
|
||||
proj_parm.XS= 0;/* -par.x0 */
|
||||
proj_parm.YS= -1.0*proj_parm.n2*proj_parm.phic;/* -par.y0 */
|
||||
/*fprintf(stderr,"a (m) =%16.4f\ne =%16.13f\nl0(rad)=%16.13f\np0(rad)=%16.13f\nk0 =%16.4f\nX0 (m)=%16.4f\nY0 (m)=%16.4f\n\nlC(rad)=%16.13f\npC(rad)=%16.13f\nc =%16.13f\nn1 =%16.13f\nn2 (m) =%16.4f\nXS (m) =%16.4f\nYS (m) =%16.4f\n", par.a, par.e, par.lam0, par.phi0, par.k0, par.x0, par.y0, proj_parm.lamc, proj_parm.phic, proj_parm.c, proj_parm.n1, proj_parm.n2, proj_parm.XS +par.x0, proj_parm.YS + par.y0);*/
|
||||
}
|
||||
|
||||
}} // namespace detail::gstmerc
|
||||
|
||||
@@ -1036,9 +1036,9 @@ namespace boost { namespace geometry { namespace projections
|
||||
// par.fwd = s_forward;
|
||||
isea_grid_init(&proj_parm.dgg);
|
||||
proj_parm.dgg.output = ISEA_PLANE;
|
||||
/* proj_parm.dgg.radius = par.a;
|
||||
/ * otherwise defaults to 1 */
|
||||
/* proj_parm.dgg.radius = par.a; / * otherwise defaults to 1 */
|
||||
/* calling library will scale, I think */
|
||||
|
||||
opt = pj_param(par.params, "sorient").s;
|
||||
if (! opt.empty()) {
|
||||
if (opt == std::string("isea")) {
|
||||
|
||||
@@ -228,13 +228,9 @@ namespace boost { namespace geometry { namespace projections
|
||||
proj_parm.rlm2 = proj_parm.rlm + TWOPI;
|
||||
proj_parm.a2 = proj_parm.a4 = proj_parm.b = proj_parm.c1 = proj_parm.c3 = 0.;
|
||||
seraz0(0., 1., par, proj_parm);
|
||||
for (lam = 9.;
|
||||
lam <= 81.0001;
|
||||
lam += 18.)
|
||||
for (lam = 9.; lam <= 81.0001; lam += 18.)
|
||||
seraz0(lam, 4., par, proj_parm);
|
||||
for (lam = 18;
|
||||
lam <= 72.0001;
|
||||
lam += 18.)
|
||||
for (lam = 18; lam <= 72.0001; lam += 18.)
|
||||
seraz0(lam, 2., par, proj_parm);
|
||||
seraz0(90., 1., par, proj_parm);
|
||||
proj_parm.a2 /= 30.;
|
||||
|
||||
@@ -194,8 +194,7 @@ namespace boost { namespace geometry { namespace projections
|
||||
proj_parm.sinph0 = sin(par.phi0);
|
||||
proj_parm.cosph0 = cos(par.phi0);
|
||||
}
|
||||
proj_parm.pn1 = proj_parm.height / par.a;
|
||||
/* normalize by radius */
|
||||
proj_parm.pn1 = proj_parm.height / par.a; /* normalize by radius */
|
||||
proj_parm.p = 1. + proj_parm.pn1;
|
||||
proj_parm.rp = 1. / proj_parm.p;
|
||||
proj_parm.h = 1. / proj_parm.pn1;
|
||||
@@ -222,10 +221,8 @@ namespace boost { namespace geometry { namespace projections
|
||||
omega = pj_param(par.params, "dtilt").f * DEG_TO_RAD;
|
||||
gamma = pj_param(par.params, "dazi").f * DEG_TO_RAD;
|
||||
proj_parm.tilt = 1;
|
||||
proj_parm.cg = cos(gamma);
|
||||
proj_parm.sg = sin(gamma);
|
||||
proj_parm.cw = cos(omega);
|
||||
proj_parm.sw = sin(omega);
|
||||
proj_parm.cg = cos(gamma); proj_parm.sg = sin(gamma);
|
||||
proj_parm.cw = cos(omega); proj_parm.sw = sin(omega);
|
||||
setup(par, proj_parm);
|
||||
}
|
||||
|
||||
|
||||
@@ -158,8 +158,7 @@ namespace boost { namespace geometry { namespace projections
|
||||
/* get name of projection to be translated */
|
||||
pj.name = pj_param(par.params, "so_proj").s;
|
||||
/* copy existing header into new */
|
||||
par.es = 0.;
|
||||
/* force to spherical */
|
||||
par.es = 0.; /* force to spherical */
|
||||
pj.params = par.params;
|
||||
pj.over = par.over;
|
||||
pj.geoc = par.geoc;
|
||||
|
||||
Reference in New Issue
Block a user