aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am4
-rw-r--r--src/PJ_affine.c246
-rw-r--r--src/PJ_airy.c2
-rw-r--r--src/PJ_august.c2
-rw-r--r--src/PJ_bacon.c6
-rw-r--r--src/PJ_bipc.c2
-rw-r--r--src/PJ_boggs.c2
-rw-r--r--src/PJ_ccon.c2
-rw-r--r--src/PJ_chamb.c2
-rw-r--r--src/PJ_collg.c2
-rw-r--r--src/PJ_comill.c2
-rw-r--r--src/PJ_crast.c2
-rw-r--r--src/PJ_denoy.c2
-rw-r--r--src/PJ_eck1.c2
-rw-r--r--src/PJ_eck2.c2
-rw-r--r--src/PJ_eck3.c8
-rw-r--r--src/PJ_eck4.c2
-rw-r--r--src/PJ_eck5.c2
-rw-r--r--src/PJ_eqc.c2
-rw-r--r--src/PJ_eqearth.c6
-rw-r--r--src/PJ_fahey.c2
-rw-r--r--src/PJ_fouc_s.c2
-rw-r--r--src/PJ_gins8.c2
-rw-r--r--src/PJ_gn_sinu.c6
-rw-r--r--src/PJ_gnom.c2
-rw-r--r--src/PJ_goode.c2
-rw-r--r--src/PJ_hatano.c2
-rw-r--r--src/PJ_healpix.c4
-rw-r--r--src/PJ_igh.c2
-rw-r--r--src/PJ_krovak.c2
-rw-r--r--src/PJ_larr.c2
-rw-r--r--src/PJ_lask.c2
-rw-r--r--src/PJ_mbt_fps.c2
-rw-r--r--src/PJ_mbtfpp.c2
-rw-r--r--src/PJ_mbtfpq.c2
-rw-r--r--src/PJ_moll.c6
-rw-r--r--src/PJ_natearth.c2
-rw-r--r--src/PJ_natearth2.c2
-rw-r--r--src/PJ_nell.c2
-rw-r--r--src/PJ_nell_h.c2
-rw-r--r--src/PJ_nocol.c2
-rw-r--r--src/PJ_ortho.c2
-rw-r--r--src/PJ_patterson.c2
-rw-r--r--src/PJ_putp2.c2
-rw-r--r--src/PJ_putp3.c4
-rw-r--r--src/PJ_putp4p.c4
-rw-r--r--src/PJ_putp5.c4
-rw-r--r--src/PJ_putp6.c4
-rw-r--r--src/PJ_qsc.c2
-rw-r--r--src/PJ_robin.c2
-rw-r--r--src/PJ_rpoly.c2
-rw-r--r--src/PJ_sts.c8
-rw-r--r--src/PJ_tcc.c2
-rw-r--r--src/PJ_urm5.c2
-rw-r--r--src/PJ_urmfps.c4
-rw-r--r--src/PJ_vandg2.c4
-rw-r--r--src/PJ_vandg4.c2
-rw-r--r--src/PJ_vgridshift.c2
-rw-r--r--src/PJ_wag2.c2
-rw-r--r--src/PJ_wag3.c2
-rw-r--r--src/PJ_wag7.c2
-rw-r--r--src/PJ_wink1.c2
-rw-r--r--src/PJ_wink2.c2
-rw-r--r--src/cct.c2
-rw-r--r--src/lib_proj.cmake1
-rw-r--r--src/makefile.vc171
-rw-r--r--src/pj_list.h4
-rw-r--r--src/pj_transform.c6
-rw-r--r--src/pj_utils.c2
-rw-r--r--src/proj.c54
-rw-r--r--src/proj_4D_api.c11
-rw-r--r--src/proj_rouss.c2
-rw-r--r--src/projects.h1
73 files changed, 384 insertions, 284 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index e8bea068..eaf6bd38 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -13,7 +13,7 @@ AM_CPPFLAGS = -DPROJ_LIB=\"$(pkgdatadir)\" \
include_HEADERS = proj.h proj_api.h geodesic.h \
org_proj4_PJ.h
-EXTRA_DIST = makefile.vc proj.def bin_cct.cmake bin_gie.cmake bin_cs2cs.cmake \
+EXTRA_DIST = proj.def bin_cct.cmake bin_gie.cmake bin_cs2cs.cmake \
bin_geod.cmake bin_nad2bin.cmake bin_proj.cmake \
lib_proj.cmake CMakeLists.txt bin_geodtest.cmake geodtest.c
@@ -89,7 +89,7 @@ libproj_la_SOURCES = \
\
proj_4D_api.c PJ_cart.c PJ_pipeline.c PJ_horner.c PJ_helmert.c \
PJ_vgridshift.c PJ_hgridshift.c PJ_unitconvert.c PJ_molodensky.c \
- PJ_deformation.c pj_internal.c PJ_axisswap.c
+ PJ_deformation.c pj_internal.c PJ_axisswap.c PJ_affine.c
install-exec-local:
rm -f $(DESTDIR)$(bindir)/invproj$(EXEEXT)
diff --git a/src/PJ_affine.c b/src/PJ_affine.c
new file mode 100644
index 00000000..0d8b6374
--- /dev/null
+++ b/src/PJ_affine.c
@@ -0,0 +1,246 @@
+/************************************************************************
+* Copyright (c) 2018, Even Rouault <even.rouault at spatialys.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.
+*
+***********************************************************************/
+#define PJ_LIB__
+
+#include <errno.h>
+#include <math.h>
+
+#include "proj_internal.h"
+#include "proj.h"
+#include "projects.h"
+
+PROJ_HEAD(affine, "Affine transformation");
+PROJ_HEAD(geogoffset, "Geographic Offset");
+
+struct pj_affine_coeffs {
+ double s11;
+ double s12;
+ double s13;
+ double s21;
+ double s22;
+ double s23;
+ double s31;
+ double s32;
+ double s33;
+ double tscale;
+};
+
+struct pj_opaque_affine {
+ double xoff;
+ double yoff;
+ double zoff;
+ double toff;
+ struct pj_affine_coeffs forward;
+ struct pj_affine_coeffs reverse;
+};
+
+
+static PJ_COORD forward_4d(PJ_COORD obs, PJ *P) {
+ PJ_COORD newObs;
+ const struct pj_opaque_affine *Q = (const struct pj_opaque_affine *) P->opaque;
+ const struct pj_affine_coeffs *C = &(Q->forward);
+ newObs.xyzt.x = Q->xoff + C->s11 * obs.xyzt.x + C->s12 * obs.xyzt.y + C->s13 * obs.xyzt.z;
+ newObs.xyzt.y = Q->yoff + C->s21 * obs.xyzt.x + C->s22 * obs.xyzt.y + C->s23 * obs.xyzt.z;
+ newObs.xyzt.z = Q->zoff + C->s31 * obs.xyzt.x + C->s32 * obs.xyzt.y + C->s33 * obs.xyzt.z;
+ newObs.xyzt.t = Q->toff + C->tscale * obs.xyzt.t;
+ return newObs;
+}
+
+static XYZ forward_3d(LPZ lpz, PJ *P) {
+ PJ_COORD point = {{0,0,0,0}};
+ point.lpz = lpz;
+ return forward_4d(point, P).xyz;
+}
+
+
+static XY forward_2d(LP lp, PJ *P) {
+ PJ_COORD point = {{0,0,0,0}};
+ point.lp = lp;
+ return forward_4d(point, P).xy;
+}
+
+
+static PJ_COORD reverse_4d(PJ_COORD obs, PJ *P) {
+ PJ_COORD newObs;
+ const struct pj_opaque_affine *Q = (const struct pj_opaque_affine *) P->opaque;
+ const struct pj_affine_coeffs *C = &(Q->reverse);
+ obs.xyzt.x -= Q->xoff;
+ obs.xyzt.y -= Q->yoff;
+ obs.xyzt.z -= Q->zoff;
+ newObs.xyzt.x = C->s11 * obs.xyzt.x + C->s12 * obs.xyzt.y + C->s13 * obs.xyzt.z;
+ newObs.xyzt.y = C->s21 * obs.xyzt.x + C->s22 * obs.xyzt.y + C->s23 * obs.xyzt.z;
+ newObs.xyzt.z = C->s31 * obs.xyzt.x + C->s32 * obs.xyzt.y + C->s33 * obs.xyzt.z;
+ newObs.xyzt.t = C->tscale * (obs.xyzt.t - Q->toff);
+ return newObs;
+}
+
+static LPZ reverse_3d(XYZ xyz, PJ *P) {
+ PJ_COORD point = {{0,0,0,0}};
+ point.xyz = xyz;
+ return reverse_4d(point, P).lpz;
+}
+
+static LP reverse_2d(XY xy, PJ *P) {
+ PJ_COORD point = {{0,0,0,0}};
+ point.xy = xy;
+ return reverse_4d(point, P).lp;
+}
+
+static struct pj_opaque_affine * initQ() {
+ struct pj_opaque_affine *Q = pj_calloc(1, sizeof(struct pj_opaque_affine));
+ if (0==Q)
+ return 0;
+
+ /* default values */
+ Q->forward.s11 = 1.0;
+ Q->forward.s22 = 1.0;
+ Q->forward.s33 = 1.0;
+ Q->forward.tscale = 1.0;
+
+ Q->reverse.s11 = 1.0;
+ Q->reverse.s22 = 1.0;
+ Q->reverse.s33 = 1.0;
+ Q->reverse.tscale = 1.0;
+
+ return Q;
+}
+
+static void computeReverseParameters(PJ* P)
+{
+ struct pj_opaque_affine *Q = (struct pj_opaque_affine *) P->opaque;
+
+ /* cf https://en.wikipedia.org/wiki/Invertible_matrix#Inversion_of_3_%C3%97_3_matrices */
+ const double a = Q->forward.s11;
+ const double b = Q->forward.s12;
+ const double c = Q->forward.s13;
+ const double d = Q->forward.s21;
+ const double e = Q->forward.s22;
+ const double f = Q->forward.s23;
+ const double g = Q->forward.s31;
+ const double h = Q->forward.s32;
+ const double i = Q->forward.s33;
+ const double A = e * i - f * h;
+ const double B = -(d * i - f * g);
+ const double C = (d * h - e * g);
+ const double D = -(b * i - c * h);
+ const double E = (a * i - c * g);
+ const double F = -(a * h - b * g);
+ const double G = b * f - c * e;
+ const double H = -(a * f - c * d);
+ const double I = a * e - b * d;
+ const double det = a * A + b * B + c * C;
+ if( det == 0.0 || Q->forward.tscale == 0.0 ) {
+ if (proj_log_level(P->ctx, PJ_LOG_TELL) >= PJ_LOG_DEBUG) {
+ proj_log_debug(P, "Affine: matrix non invertible");
+ }
+ P->inv4d = NULL;
+ P->inv3d = NULL;
+ P->inv = NULL;
+ } else {
+ Q->reverse.s11 = A / det;
+ Q->reverse.s12 = D / det;
+ Q->reverse.s13 = G / det;
+ Q->reverse.s21 = B / det;
+ Q->reverse.s22 = E / det;
+ Q->reverse.s23 = H / det;
+ Q->reverse.s31 = C / det;
+ Q->reverse.s32 = F / det;
+ Q->reverse.s33 = I / det;
+ Q->reverse.tscale = 1.0 / Q->forward.tscale;
+ }
+}
+
+PJ *TRANSFORMATION(affine,0 /* no need for ellipsoid */) {
+ struct pj_opaque_affine *Q = initQ();
+ if (0==Q)
+ return pj_default_destructor(P, ENOMEM);
+ P->opaque = (void *) Q;
+
+ P->fwd4d = forward_4d;
+ P->inv4d = reverse_4d;
+ P->fwd3d = forward_3d;
+ P->inv3d = reverse_3d;
+ P->fwd = forward_2d;
+ P->inv = reverse_2d;
+
+ P->left = PJ_IO_UNITS_WHATEVER;
+ P->right = PJ_IO_UNITS_WHATEVER;
+
+ /* read args */
+ Q->xoff = pj_param(P->ctx, P->params, "dxoff").f;
+ Q->yoff = pj_param(P->ctx, P->params, "dyoff").f;
+ Q->zoff = pj_param(P->ctx, P->params, "dzoff").f;
+ Q->toff = pj_param(P->ctx, P->params, "dtoff").f;
+
+ if(pj_param (P->ctx, P->params, "ts11").i) {
+ Q->forward.s11 = pj_param(P->ctx, P->params, "ds11").f;
+ }
+ Q->forward.s12 = pj_param(P->ctx, P->params, "ds12").f;
+ Q->forward.s13 = pj_param(P->ctx, P->params, "ds13").f;
+ Q->forward.s21 = pj_param(P->ctx, P->params, "ds21").f;
+ if(pj_param (P->ctx, P->params, "ts22").i) {
+ Q->forward.s22 = pj_param(P->ctx, P->params, "ds22").f;
+ }
+ Q->forward.s23 = pj_param(P->ctx, P->params, "ds23").f;
+ Q->forward.s31 = pj_param(P->ctx, P->params, "ds31").f;
+ Q->forward.s32 = pj_param(P->ctx, P->params, "ds32").f;
+ if(pj_param (P->ctx, P->params, "ts33").i) {
+ Q->forward.s33 = pj_param(P->ctx, P->params, "ds33").f;
+ }
+ if(pj_param (P->ctx, P->params, "ttscale").i) {
+ Q->forward.tscale = pj_param(P->ctx, P->params, "dtscale").f;
+ }
+
+ computeReverseParameters(P);
+
+ return P;
+}
+
+
+/* Arcsecond to radians */
+#define ARCSEC_TO_RAD (DEG_TO_RAD / 3600.0)
+
+
+PJ *TRANSFORMATION(geogoffset,0 /* no need for ellipsoid */) {
+ struct pj_opaque_affine *Q = initQ();
+ if (0==Q)
+ return pj_default_destructor(P, ENOMEM);
+ P->opaque = (void *) Q;
+
+ P->fwd4d = forward_4d;
+ P->inv4d = reverse_4d;
+ P->fwd3d = forward_3d;
+ P->inv3d = reverse_3d;
+ P->fwd = forward_2d;
+ P->inv = reverse_2d;
+
+ P->left = PJ_IO_UNITS_ANGULAR;
+ P->right = PJ_IO_UNITS_ANGULAR;
+
+ /* read args */
+ Q->xoff = pj_param(P->ctx, P->params, "ddlon").f * ARCSEC_TO_RAD;
+ Q->yoff = pj_param(P->ctx, P->params, "ddlat").f * ARCSEC_TO_RAD;
+ Q->zoff = pj_param(P->ctx, P->params, "ddh").f;
+
+ return P;
+}
diff --git a/src/PJ_airy.c b/src/PJ_airy.c
index 6addea7d..75f95780 100644
--- a/src/PJ_airy.c
+++ b/src/PJ_airy.c
@@ -31,7 +31,7 @@
#include <errno.h>
#include "projects.h"
-PROJ_HEAD(airy, "Airy") "\n\tMisc Sph, no inv.\n\tno_cut lat_b=";
+PROJ_HEAD(airy, "Airy") "\n\tMisc Sph, no inv\n\tno_cut lat_b=";
enum Mode {
diff --git a/src/PJ_august.c b/src/PJ_august.c
index 4c197114..e891e84e 100644
--- a/src/PJ_august.c
+++ b/src/PJ_august.c
@@ -4,7 +4,7 @@
#include "projects.h"
-PROJ_HEAD(august, "August Epicycloidal") "\n\tMisc Sph, no inv.";
+PROJ_HEAD(august, "August Epicycloidal") "\n\tMisc Sph, no inv";
#define M 1.333333333333333
diff --git a/src/PJ_bacon.c b/src/PJ_bacon.c
index ae25bce1..f0f11c9d 100644
--- a/src/PJ_bacon.c
+++ b/src/PJ_bacon.c
@@ -12,9 +12,9 @@ struct pj_opaque {
int ortl;
};
-PROJ_HEAD(apian, "Apian Globular I") "\n\tMisc Sph, no inv.";
-PROJ_HEAD(ortel, "Ortelius Oval") "\n\tMisc Sph, no inv.";
-PROJ_HEAD(bacon, "Bacon Globular") "\n\tMisc Sph, no inv.";
+PROJ_HEAD(apian, "Apian Globular I") "\n\tMisc Sph, no inv";
+PROJ_HEAD(ortel, "Ortelius Oval") "\n\tMisc Sph, no inv";
+PROJ_HEAD(bacon, "Bacon Globular") "\n\tMisc Sph, no inv";
static XY s_forward (LP lp, PJ *P) { /* Spheroidal, forward */
diff --git a/src/PJ_bipc.c b/src/PJ_bipc.c
index ea7883a5..e4a69077 100644
--- a/src/PJ_bipc.c
+++ b/src/PJ_bipc.c
@@ -6,7 +6,7 @@
#include "projects.h"
#include "proj_math.h"
-PROJ_HEAD(bipc, "Bipolar conic of western hemisphere") "\n\tConic Sph.";
+PROJ_HEAD(bipc, "Bipolar conic of western hemisphere") "\n\tConic Sph";
# define EPS 1e-10
# define EPS10 1e-10
diff --git a/src/PJ_boggs.c b/src/PJ_boggs.c
index 83bafc18..119357c0 100644
--- a/src/PJ_boggs.c
+++ b/src/PJ_boggs.c
@@ -3,7 +3,7 @@
#include "projects.h"
-PROJ_HEAD(boggs, "Boggs Eumorphic") "\n\tPCyl., no inv., Sph.";
+PROJ_HEAD(boggs, "Boggs Eumorphic") "\n\tPCyl, no inv, Sph";
# define NITER 20
# define EPS 1e-7
# define FXC 2.00276
diff --git a/src/PJ_ccon.c b/src/PJ_ccon.c
index aed59fb6..0b8b70cb 100644
--- a/src/PJ_ccon.c
+++ b/src/PJ_ccon.c
@@ -37,7 +37,7 @@ struct pj_opaque {
};
PROJ_HEAD(ccon, "Central Conic")
- "\n\tCentral Conic, Sph.\n\tlat_1=";
+ "\n\tCentral Conic, Sph\n\tlat_1=";
diff --git a/src/PJ_chamb.c b/src/PJ_chamb.c
index 0d14b95e..6951d6a1 100644
--- a/src/PJ_chamb.c
+++ b/src/PJ_chamb.c
@@ -19,7 +19,7 @@ struct pj_opaque {
double beta_0, beta_1, beta_2;
};
-PROJ_HEAD(chamb, "Chamberlin Trimetric") "\n\tMisc Sph, no inv."
+PROJ_HEAD(chamb, "Chamberlin Trimetric") "\n\tMisc Sph, no inv"
"\n\tlat_1= lon_1= lat_2= lon_2= lat_3= lon_3=";
#include <stdio.h>
diff --git a/src/PJ_collg.c b/src/PJ_collg.c
index ef712905..7904de29 100644
--- a/src/PJ_collg.c
+++ b/src/PJ_collg.c
@@ -5,7 +5,7 @@
#include "proj.h"
#include "projects.h"
-PROJ_HEAD(collg, "Collignon") "\n\tPCyl, Sph.";
+PROJ_HEAD(collg, "Collignon") "\n\tPCyl, Sph";
#define FXC 1.12837916709551257390
#define FYC 1.77245385090551602729
#define ONEEPS 1.0000001
diff --git a/src/PJ_comill.c b/src/PJ_comill.c
index ce5bb392..b6e0192e 100644
--- a/src/PJ_comill.c
+++ b/src/PJ_comill.c
@@ -12,7 +12,7 @@ Port to PROJ.4 by Bojan Savric, 4 April 2016
#include "projects.h"
-PROJ_HEAD(comill, "Compact Miller") "\n\tCyl., Sph.";
+PROJ_HEAD(comill, "Compact Miller") "\n\tCyl, Sph";
#define K1 0.9902
#define K2 0.1604
diff --git a/src/PJ_crast.c b/src/PJ_crast.c
index 6db617d0..4e4dee8b 100644
--- a/src/PJ_crast.c
+++ b/src/PJ_crast.c
@@ -3,7 +3,7 @@
#include "projects.h"
-PROJ_HEAD(crast, "Craster Parabolic (Putnins P4)") "\n\tPCyl., Sph.";
+PROJ_HEAD(crast, "Craster Parabolic (Putnins P4)") "\n\tPCyl, Sph";
#define XM 0.97720502380583984317
#define RXM 1.02332670794648848847
diff --git a/src/PJ_denoy.c b/src/PJ_denoy.c
index 64de1f9f..5c337c45 100644
--- a/src/PJ_denoy.c
+++ b/src/PJ_denoy.c
@@ -3,7 +3,7 @@
#include "projects.h"
-PROJ_HEAD(denoy, "Denoyer Semi-Elliptical") "\n\tPCyl., no inv., Sph.";
+PROJ_HEAD(denoy, "Denoyer Semi-Elliptical") "\n\tPCyl, no inv, Sph";
#define C0 0.95
#define C1 -0.08333333333333333333
diff --git a/src/PJ_eck1.c b/src/PJ_eck1.c
index 069aa185..88a7430c 100644
--- a/src/PJ_eck1.c
+++ b/src/PJ_eck1.c
@@ -3,7 +3,7 @@
#include "projects.h"
-PROJ_HEAD(eck1, "Eckert I") "\n\tPCyl., Sph.";
+PROJ_HEAD(eck1, "Eckert I") "\n\tPCyl, Sph";
#define FC 0.92131773192356127802
#define RP 0.31830988618379067154
diff --git a/src/PJ_eck2.c b/src/PJ_eck2.c
index e9ef1229..f76ab4ec 100644
--- a/src/PJ_eck2.c
+++ b/src/PJ_eck2.c
@@ -5,7 +5,7 @@
#include "proj.h"
#include "projects.h"
-PROJ_HEAD(eck2, "Eckert II") "\n\tPCyl. Sph.";
+PROJ_HEAD(eck2, "Eckert II") "\n\tPCyl, Sph";
#define FXC 0.46065886596178063902
#define FYC 1.44720250911653531871
diff --git a/src/PJ_eck3.c b/src/PJ_eck3.c
index 674f6919..8f91c8bb 100644
--- a/src/PJ_eck3.c
+++ b/src/PJ_eck3.c
@@ -5,10 +5,10 @@
#include "projects.h"
-PROJ_HEAD(eck3, "Eckert III") "\n\tPCyl, Sph.";
-PROJ_HEAD(putp1, "Putnins P1") "\n\tPCyl, Sph.";
-PROJ_HEAD(wag6, "Wagner VI") "\n\tPCyl, Sph.";
-PROJ_HEAD(kav7, "Kavraisky VII") "\n\tPCyl, Sph.";
+PROJ_HEAD(eck3, "Eckert III") "\n\tPCyl, Sph";
+PROJ_HEAD(putp1, "Putnins P1") "\n\tPCyl, Sph";
+PROJ_HEAD(wag6, "Wagner VI") "\n\tPCyl, Sph";
+PROJ_HEAD(kav7, "Kavraisky VII") "\n\tPCyl, Sph";
struct pj_opaque {
double C_x, C_y, A, B;
diff --git a/src/PJ_eck4.c b/src/PJ_eck4.c
index 367d9cc9..4fa4c21f 100644
--- a/src/PJ_eck4.c
+++ b/src/PJ_eck4.c
@@ -4,7 +4,7 @@
#include "projects.h"
-PROJ_HEAD(eck4, "Eckert IV") "\n\tPCyl, Sph.";
+PROJ_HEAD(eck4, "Eckert IV") "\n\tPCyl, Sph";
#define C_x .42223820031577120149
#define C_y 1.32650042817700232218
diff --git a/src/PJ_eck5.c b/src/PJ_eck5.c
index 275430d8..f9f28460 100644
--- a/src/PJ_eck5.c
+++ b/src/PJ_eck5.c
@@ -4,7 +4,7 @@
#include "projects.h"
-PROJ_HEAD(eck5, "Eckert V") "\n\tPCyl, Sph.";
+PROJ_HEAD(eck5, "Eckert V") "\n\tPCyl, Sph";
#define XF 0.44101277172455148219
#define RXF 2.26750802723822639137
diff --git a/src/PJ_eqc.c b/src/PJ_eqc.c
index 86845aa3..07d6141c 100644
--- a/src/PJ_eqc.c
+++ b/src/PJ_eqc.c
@@ -10,7 +10,7 @@ struct pj_opaque {
double rc;
};
-PROJ_HEAD(eqc, "Equidistant Cylindrical (Plate Caree)")
+PROJ_HEAD(eqc, "Equidistant Cylindrical (Plate Carree)")
"\n\tCyl, Sph\n\tlat_ts=[, lat_0=0]";
diff --git a/src/PJ_eqearth.c b/src/PJ_eqearth.c
index 5a2e74fd..a0d4467b 100644
--- a/src/PJ_eqearth.c
+++ b/src/PJ_eqearth.c
@@ -18,7 +18,7 @@ Added ellipsoidal equations by Bojan Savric, 22 August 2018
#include "projects.h"
-PROJ_HEAD(eqearth, "Equal Earth") "\n\tPCyl., Sph&Ell";
+PROJ_HEAD(eqearth, "Equal Earth") "\n\tPCyl, Sph&Ell";
/* A1..A4, polynomial coefficients */
#define A1 1.340264
@@ -62,7 +62,7 @@ static XY e_forward (LP lp, PJ *P) { /* Ellipsoidal/spheroidal, forwar
xy.x = lp.lam * cos(psi) / (M * (A1 + 3 * A2 * psi2 + psi6 * (7 * A3 + 9 * A4 * psi2)));
xy.y = psi * (A1 + A2 * psi2 + psi6 * (A3 + A4 * psi2));
-
+
/* Adjusting x and y for authalic radius */
xy.x *= Q->rqda;
xy.y *= Q->rqda;
@@ -155,7 +155,7 @@ PJ *PROJECTION(eqearth) {
if (0 == Q->apa)
return destructor(P, ENOMEM);
Q->qp = pj_qsfn(1.0, P->e, P->one_es); /* For auth_lat(). */
- Q->rqda = sqrt(0.5*Q->qp); /* Authalic radius devided by major axis */
+ Q->rqda = sqrt(0.5*Q->qp); /* Authalic radius divided by major axis */
}
return P;
diff --git a/src/PJ_fahey.c b/src/PJ_fahey.c
index 18be5ea0..85e0ab69 100644
--- a/src/PJ_fahey.c
+++ b/src/PJ_fahey.c
@@ -4,7 +4,7 @@
#include "projects.h"
-PROJ_HEAD(fahey, "Fahey") "\n\tPcyl, Sph.";
+PROJ_HEAD(fahey, "Fahey") "\n\tPcyl, Sph";
#define TOL 1e-6
diff --git a/src/PJ_fouc_s.c b/src/PJ_fouc_s.c
index 10bd1765..6efe34bd 100644
--- a/src/PJ_fouc_s.c
+++ b/src/PJ_fouc_s.c
@@ -6,7 +6,7 @@
#include "proj.h"
#include "projects.h"
-PROJ_HEAD(fouc_s, "Foucaut Sinusoidal") "\n\tPCyl., Sph.";
+PROJ_HEAD(fouc_s, "Foucaut Sinusoidal") "\n\tPCyl, Sph";
#define MAX_ITER 10
#define LOOP_TOL 1e-7
diff --git a/src/PJ_gins8.c b/src/PJ_gins8.c
index ae0d4dee..c1a2fff0 100644
--- a/src/PJ_gins8.c
+++ b/src/PJ_gins8.c
@@ -1,7 +1,7 @@
#define PJ_LIB__
#include "projects.h"
-PROJ_HEAD(gins8, "Ginsburg VIII (TsNIIGAiK)") "\n\tPCyl, Sph., no inv.";
+PROJ_HEAD(gins8, "Ginsburg VIII (TsNIIGAiK)") "\n\tPCyl, Sph, no inv";
#define Cl 0.000952426
#define Cp 0.162388
diff --git a/src/PJ_gn_sinu.c b/src/PJ_gn_sinu.c
index 21cba308..2ef0f263 100644
--- a/src/PJ_gn_sinu.c
+++ b/src/PJ_gn_sinu.c
@@ -6,10 +6,10 @@
#include "proj.h"
#include "projects.h"
-PROJ_HEAD(gn_sinu, "General Sinusoidal Series") "\n\tPCyl, Sph.\n\tm= n=";
+PROJ_HEAD(gn_sinu, "General Sinusoidal Series") "\n\tPCyl, Sph\n\tm= n=";
PROJ_HEAD(sinu, "Sinusoidal (Sanson-Flamsteed)") "\n\tPCyl, Sph&Ell";
-PROJ_HEAD(eck6, "Eckert VI") "\n\tPCyl, Sph.";
-PROJ_HEAD(mbtfps, "McBryde-Thomas Flat-Polar Sinusoidal") "\n\tPCyl, Sph.";
+PROJ_HEAD(eck6, "Eckert VI") "\n\tPCyl, Sph";
+PROJ_HEAD(mbtfps, "McBryde-Thomas Flat-Polar Sinusoidal") "\n\tPCyl, Sph";
#define EPS10 1e-10
#define MAX_ITER 8
diff --git a/src/PJ_gnom.c b/src/PJ_gnom.c
index 9c2c7106..635ae49e 100644
--- a/src/PJ_gnom.c
+++ b/src/PJ_gnom.c
@@ -7,7 +7,7 @@
#include "projects.h"
#include "proj_math.h"
-PROJ_HEAD(gnom, "Gnomonic") "\n\tAzi, Sph.";
+PROJ_HEAD(gnom, "Gnomonic") "\n\tAzi, Sph";
#define EPS10 1.e-10
diff --git a/src/PJ_goode.c b/src/PJ_goode.c
index 4f299b54..8d8ac24d 100644
--- a/src/PJ_goode.c
+++ b/src/PJ_goode.c
@@ -6,7 +6,7 @@
#include "proj.h"
#include "projects.h"
-PROJ_HEAD(goode, "Goode Homolosine") "\n\tPCyl, Sph.";
+PROJ_HEAD(goode, "Goode Homolosine") "\n\tPCyl, Sph";
#define Y_COR 0.05280
#define PHI_LIM 0.71093078197902358062
diff --git a/src/PJ_hatano.c b/src/PJ_hatano.c
index 4e852888..019671cc 100644
--- a/src/PJ_hatano.c
+++ b/src/PJ_hatano.c
@@ -5,7 +5,7 @@
#include "proj.h"
#include "projects.h"
-PROJ_HEAD(hatano, "Hatano Asymmetrical Equal Area") "\n\tPCyl, Sph.";
+PROJ_HEAD(hatano, "Hatano Asymmetrical Equal Area") "\n\tPCyl, Sph";
#define NITER 20
#define EPS 1e-7
diff --git a/src/PJ_healpix.c b/src/PJ_healpix.c
index d76ca33d..ee575abf 100644
--- a/src/PJ_healpix.c
+++ b/src/PJ_healpix.c
@@ -37,8 +37,8 @@
#include "proj.h"
#include "projects.h"
-PROJ_HEAD(healpix, "HEALPix") "\n\tSph., Ellps.";
-PROJ_HEAD(rhealpix, "rHEALPix") "\n\tSph., Ellps.\n\tnorth_square= south_square=";
+PROJ_HEAD(healpix, "HEALPix") "\n\tSph&Ell";
+PROJ_HEAD(rhealpix, "rHEALPix") "\n\tSph&Ell\n\tnorth_square= south_square=";
/* Matrix for counterclockwise rotation by pi/2: */
# define R1 {{ 0,-1},{ 1, 0}}
diff --git a/src/PJ_igh.c b/src/PJ_igh.c
index 23614ac5..c991649a 100644
--- a/src/PJ_igh.c
+++ b/src/PJ_igh.c
@@ -5,7 +5,7 @@
#include "projects.h"
-PROJ_HEAD(igh, "Interrupted Goode Homolosine") "\n\tPCyl, Sph.";
+PROJ_HEAD(igh, "Interrupted Goode Homolosine") "\n\tPCyl, Sph";
C_NAMESPACE PJ *pj_sinu(PJ *), *pj_moll(PJ *);
diff --git a/src/PJ_krovak.c b/src/PJ_krovak.c
index afb7847b..5ca21214 100644
--- a/src/PJ_krovak.c
+++ b/src/PJ_krovak.c
@@ -82,7 +82,7 @@
#include "projects.h"
-PROJ_HEAD(krovak, "Krovak") "\n\tPCyl., Ellps.";
+PROJ_HEAD(krovak, "Krovak") "\n\tPCyl, Ell";
#define EPS 1e-15
#define UQ 1.04216856380474 /* DU(2, 59, 42, 42.69689) */
diff --git a/src/PJ_larr.c b/src/PJ_larr.c
index e4e39dc9..e4d5d240 100644
--- a/src/PJ_larr.c
+++ b/src/PJ_larr.c
@@ -4,7 +4,7 @@
#include "projects.h"
-PROJ_HEAD(larr, "Larrivee") "\n\tMisc Sph, no inv.";
+PROJ_HEAD(larr, "Larrivee") "\n\tMisc Sph, no inv";
#define SIXTH .16666666666666666
diff --git a/src/PJ_lask.c b/src/PJ_lask.c
index 0bb3812c..46f23edb 100644
--- a/src/PJ_lask.c
+++ b/src/PJ_lask.c
@@ -1,7 +1,7 @@
#define PJ_LIB__
#include "projects.h"
-PROJ_HEAD(lask, "Laskowski") "\n\tMisc Sph, no inv.";
+PROJ_HEAD(lask, "Laskowski") "\n\tMisc Sph, no inv";
#define a10 0.975534
#define a12 -0.119161
diff --git a/src/PJ_mbt_fps.c b/src/PJ_mbt_fps.c
index b689014f..66ed9458 100644
--- a/src/PJ_mbt_fps.c
+++ b/src/PJ_mbt_fps.c
@@ -4,7 +4,7 @@
#include "projects.h"
-PROJ_HEAD(mbt_fps, "McBryde-Thomas Flat-Pole Sine (No. 2)") "\n\tCyl., Sph.";
+PROJ_HEAD(mbt_fps, "McBryde-Thomas Flat-Pole Sine (No. 2)") "\n\tCyl, Sph";
#define MAX_ITER 10
#define LOOP_TOL 1e-7
diff --git a/src/PJ_mbtfpp.c b/src/PJ_mbtfpp.c
index 5e5b2d50..276a43eb 100644
--- a/src/PJ_mbtfpp.c
+++ b/src/PJ_mbtfpp.c
@@ -5,7 +5,7 @@
#include "proj.h"
#include "projects.h"
-PROJ_HEAD(mbtfpp, "McBride-Thomas Flat-Polar Parabolic") "\n\tCyl., Sph.";
+PROJ_HEAD(mbtfpp, "McBride-Thomas Flat-Polar Parabolic") "\n\tCyl, Sph";
#define CS .95257934441568037152
#define FXC .92582009977255146156
diff --git a/src/PJ_mbtfpq.c b/src/PJ_mbtfpq.c
index 75c71708..b7c0eb16 100644
--- a/src/PJ_mbtfpq.c
+++ b/src/PJ_mbtfpq.c
@@ -5,7 +5,7 @@
#include "proj.h"
#include "projects.h"
-PROJ_HEAD(mbtfpq, "McBryde-Thomas Flat-Polar Quartic") "\n\tCyl., Sph.";
+PROJ_HEAD(mbtfpq, "McBryde-Thomas Flat-Polar Quartic") "\n\tCyl, Sph";
#define NITER 20
#define EPS 1e-7
diff --git a/src/PJ_moll.c b/src/PJ_moll.c
index 7c0e6f85..4ac73841 100644
--- a/src/PJ_moll.c
+++ b/src/PJ_moll.c
@@ -5,9 +5,9 @@
#include "projects.h"
-PROJ_HEAD(moll, "Mollweide") "\n\tPCyl., Sph.";
-PROJ_HEAD(wag4, "Wagner IV") "\n\tPCyl., Sph.";
-PROJ_HEAD(wag5, "Wagner V") "\n\tPCyl., Sph.";
+PROJ_HEAD(moll, "Mollweide") "\n\tPCyl, Sph";
+PROJ_HEAD(wag4, "Wagner IV") "\n\tPCyl, Sph";
+PROJ_HEAD(wag5, "Wagner V") "\n\tPCyl, Sph";
#define MAX_ITER 10
#define LOOP_TOL 1e-7
diff --git a/src/PJ_natearth.c b/src/PJ_natearth.c
index df015222..27a6b137 100644
--- a/src/PJ_natearth.c
+++ b/src/PJ_natearth.c
@@ -18,7 +18,7 @@ Port to PROJ.4 by Bernhard Jenny, 6 June 2011
#include "projects.h"
-PROJ_HEAD(natearth, "Natural Earth") "\n\tPCyl., Sph.";
+PROJ_HEAD(natearth, "Natural Earth") "\n\tPCyl, Sph";
#define A0 0.8707
#define A1 -0.131979
diff --git a/src/PJ_natearth2.c b/src/PJ_natearth2.c
index 0498f186..f6aba671 100644
--- a/src/PJ_natearth2.c
+++ b/src/PJ_natearth2.c
@@ -11,7 +11,7 @@ Port to PROJ.4 by Bojan Savric, 4 April 2016
#include "projects.h"
-PROJ_HEAD(natearth2, "Natural Earth 2") "\n\tPCyl., Sph.";
+PROJ_HEAD(natearth2, "Natural Earth 2") "\n\tPCyl, Sph";
#define A0 0.84719
#define A1 -0.13063
diff --git a/src/PJ_nell.c b/src/PJ_nell.c
index 751c01c8..2a7ea32c 100644
--- a/src/PJ_nell.c
+++ b/src/PJ_nell.c
@@ -4,7 +4,7 @@
#include "projects.h"
-PROJ_HEAD(nell, "Nell") "\n\tPCyl., Sph.";
+PROJ_HEAD(nell, "Nell") "\n\tPCyl, Sph";
#define MAX_ITER 10
#define LOOP_TOL 1e-7
diff --git a/src/PJ_nell_h.c b/src/PJ_nell_h.c
index db9e9de0..28c3ace7 100644
--- a/src/PJ_nell_h.c
+++ b/src/PJ_nell_h.c
@@ -4,7 +4,7 @@
#include "projects.h"
-PROJ_HEAD(nell_h, "Nell-Hammer") "\n\tPCyl., Sph.";
+PROJ_HEAD(nell_h, "Nell-Hammer") "\n\tPCyl, Sph";
#define NITER 9
#define EPS 1e-7
diff --git a/src/PJ_nocol.c b/src/PJ_nocol.c
index 93e128ea..541d08b2 100644
--- a/src/PJ_nocol.c
+++ b/src/PJ_nocol.c
@@ -4,7 +4,7 @@
#include "projects.h"
-PROJ_HEAD(nicol, "Nicolosi Globular") "\n\tMisc Sph, no inv.";
+PROJ_HEAD(nicol, "Nicolosi Globular") "\n\tMisc Sph, no inv";
#define EPS 1e-10
diff --git a/src/PJ_ortho.c b/src/PJ_ortho.c
index 2b037819..d442aa8a 100644
--- a/src/PJ_ortho.c
+++ b/src/PJ_ortho.c
@@ -5,7 +5,7 @@
#include "proj_math.h"
#include "projects.h"
-PROJ_HEAD(ortho, "Orthographic") "\n\tAzi, Sph.";
+PROJ_HEAD(ortho, "Orthographic") "\n\tAzi, Sph";
enum Mode {
N_POLE = 0,
diff --git a/src/PJ_patterson.c b/src/PJ_patterson.c
index b54847f2..0d19414e 100644
--- a/src/PJ_patterson.c
+++ b/src/PJ_patterson.c
@@ -44,7 +44,7 @@
#include "projects.h"
-PROJ_HEAD(patterson, "Patterson Cylindrical") "\n\tCyl.";
+PROJ_HEAD(patterson, "Patterson Cylindrical") "\n\tCyl";
#define K1 1.0148
#define K2 0.23185
diff --git a/src/PJ_putp2.c b/src/PJ_putp2.c
index 0b4397e5..d7a847c8 100644
--- a/src/PJ_putp2.c
+++ b/src/PJ_putp2.c
@@ -4,7 +4,7 @@
#include "projects.h"
-PROJ_HEAD(putp2, "Putnins P2") "\n\tPCyl., Sph.";
+PROJ_HEAD(putp2, "Putnins P2") "\n\tPCyl, Sph";
#define C_x 1.89490
#define C_y 1.71848
diff --git a/src/PJ_putp3.c b/src/PJ_putp3.c
index d0db876e..695ea877 100644
--- a/src/PJ_putp3.c
+++ b/src/PJ_putp3.c
@@ -6,8 +6,8 @@ struct pj_opaque {
double A;
};
-PROJ_HEAD(putp3, "Putnins P3") "\n\tPCyl., Sph.";
-PROJ_HEAD(putp3p, "Putnins P3'") "\n\tPCyl., Sph.";
+PROJ_HEAD(putp3, "Putnins P3") "\n\tPCyl, Sph";
+PROJ_HEAD(putp3p, "Putnins P3'") "\n\tPCyl, Sph";
#define C 0.79788456
#define RPISQ 0.1013211836
diff --git a/src/PJ_putp4p.c b/src/PJ_putp4p.c
index b716060a..6448dc19 100644
--- a/src/PJ_putp4p.c
+++ b/src/PJ_putp4p.c
@@ -9,8 +9,8 @@ struct pj_opaque {
double C_x, C_y;
};
-PROJ_HEAD(putp4p, "Putnins P4'") "\n\tPCyl., Sph.";
-PROJ_HEAD(weren, "Werenskiold I") "\n\tPCyl., Sph.";
+PROJ_HEAD(putp4p, "Putnins P4'") "\n\tPCyl, Sph";
+PROJ_HEAD(weren, "Werenskiold I") "\n\tPCyl, Sph";
static XY s_forward (LP lp, PJ *P) { /* Spheroidal, forward */
diff --git a/src/PJ_putp5.c b/src/PJ_putp5.c
index 6836f71d..96b0670d 100644
--- a/src/PJ_putp5.c
+++ b/src/PJ_putp5.c
@@ -9,8 +9,8 @@ struct pj_opaque {
double A, B;
};
-PROJ_HEAD(putp5, "Putnins P5") "\n\tPCyl., Sph.";
-PROJ_HEAD(putp5p, "Putnins P5'") "\n\tPCyl., Sph.";
+PROJ_HEAD(putp5, "Putnins P5") "\n\tPCyl, Sph";
+PROJ_HEAD(putp5p, "Putnins P5'") "\n\tPCyl, Sph";
#define C 1.01346
#define D 1.2158542
diff --git a/src/PJ_putp6.c b/src/PJ_putp6.c
index 68c10701..fa9290b4 100644
--- a/src/PJ_putp6.c
+++ b/src/PJ_putp6.c
@@ -9,8 +9,8 @@ struct pj_opaque {
double C_x, C_y, A, B, D;
};
-PROJ_HEAD(putp6, "Putnins P6") "\n\tPCyl., Sph.";
-PROJ_HEAD(putp6p, "Putnins P6'") "\n\tPCyl., Sph.";
+PROJ_HEAD(putp6, "Putnins P6") "\n\tPCyl, Sph";
+PROJ_HEAD(putp6p, "Putnins P6'") "\n\tPCyl, Sph";
#define EPS 1e-10
#define NITER 10
diff --git a/src/PJ_qsc.c b/src/PJ_qsc.c
index 4b463b46..3b8b7fe2 100644
--- a/src/PJ_qsc.c
+++ b/src/PJ_qsc.c
@@ -62,7 +62,7 @@ struct pj_opaque {
double one_minus_f;
double one_minus_f_squared;
};
-PROJ_HEAD(qsc, "Quadrilateralized Spherical Cube") "\n\tAzi, Sph.";
+PROJ_HEAD(qsc, "Quadrilateralized Spherical Cube") "\n\tAzi, Sph";
#define EPS10 1.e-10
diff --git a/src/PJ_robin.c b/src/PJ_robin.c
index ca9e5fc7..19bdc2dc 100644
--- a/src/PJ_robin.c
+++ b/src/PJ_robin.c
@@ -4,7 +4,7 @@
#include "proj.h"
#include "projects.h"
-PROJ_HEAD(robin, "Robinson") "\n\tPCyl., Sph.";
+PROJ_HEAD(robin, "Robinson") "\n\tPCyl, Sph";
#define V(C,z) (C.c0 + z * (C.c1 + z * (C.c2 + z * C.c3)))
#define DV(C,z) (C.c1 + z * (C.c2 + C.c2 + z * 3. * C.c3))
diff --git a/src/PJ_rpoly.c b/src/PJ_rpoly.c
index 57c4fc92..03c2b161 100644
--- a/src/PJ_rpoly.c
+++ b/src/PJ_rpoly.c
@@ -13,7 +13,7 @@ struct pj_opaque {
};
PROJ_HEAD(rpoly, "Rectangular Polyconic")
- "\n\tConic, Sph., no inv.\n\tlat_ts=";
+ "\n\tConic, Sph, no inv\n\tlat_ts=";
#define EPS 1e-9
diff --git a/src/PJ_sts.c b/src/PJ_sts.c
index 8409d86a..66094178 100644
--- a/src/PJ_sts.c
+++ b/src/PJ_sts.c
@@ -5,10 +5,10 @@
#include "projects.h"
-PROJ_HEAD(kav5, "Kavraisky V") "\n\tPCyl., Sph.";
-PROJ_HEAD(qua_aut, "Quartic Authalic") "\n\tPCyl., Sph.";
-PROJ_HEAD(fouc, "Foucaut") "\n\tPCyl., Sph.";
-PROJ_HEAD(mbt_s, "McBryde-Thomas Flat-Polar Sine (No. 1)") "\n\tPCyl., Sph.";
+PROJ_HEAD(kav5, "Kavraisky V") "\n\tPCyl, Sph";
+PROJ_HEAD(qua_aut, "Quartic Authalic") "\n\tPCyl, Sph";
+PROJ_HEAD(fouc, "Foucaut") "\n\tPCyl, Sph";
+PROJ_HEAD(mbt_s, "McBryde-Thomas Flat-Polar Sine (No. 1)") "\n\tPCyl, Sph";
struct pj_opaque {
diff --git a/src/PJ_tcc.c b/src/PJ_tcc.c
index 14255325..60ded63e 100644
--- a/src/PJ_tcc.c
+++ b/src/PJ_tcc.c
@@ -5,7 +5,7 @@
#include "proj.h"
#include "projects.h"
-PROJ_HEAD(tcc, "Transverse Central Cylindrical") "\n\tCyl, Sph, no inv.";
+PROJ_HEAD(tcc, "Transverse Central Cylindrical") "\n\tCyl, Sph, no inv";
#define EPS10 1.e-10
diff --git a/src/PJ_urm5.c b/src/PJ_urm5.c
index 416cb866..293de8cf 100644
--- a/src/PJ_urm5.c
+++ b/src/PJ_urm5.c
@@ -6,7 +6,7 @@
#include "proj.h"
#include "projects.h"
-PROJ_HEAD(urm5, "Urmaev V") "\n\tPCyl., Sph., no inv.\n\tn= q= alpha=";
+PROJ_HEAD(urm5, "Urmaev V") "\n\tPCyl, Sph, no inv\n\tn= q= alpha=";
struct pj_opaque {
double m, rmn, q3, n;
diff --git a/src/PJ_urmfps.c b/src/PJ_urmfps.c
index 5749059b..467fc9bc 100644
--- a/src/PJ_urmfps.c
+++ b/src/PJ_urmfps.c
@@ -6,8 +6,8 @@
#include "proj.h"
#include "projects.h"
-PROJ_HEAD(urmfps, "Urmaev Flat-Polar Sinusoidal") "\n\tPCyl, Sph.\n\tn=";
-PROJ_HEAD(wag1, "Wagner I (Kavraisky VI)") "\n\tPCyl, Sph.";
+PROJ_HEAD(urmfps, "Urmaev Flat-Polar Sinusoidal") "\n\tPCyl, Sph\n\tn=";
+PROJ_HEAD(wag1, "Wagner I (Kavraisky VI)") "\n\tPCyl, Sph";
struct pj_opaque {
double n, C_y;
diff --git a/src/PJ_vandg2.c b/src/PJ_vandg2.c
index 20b7601a..447cb782 100644
--- a/src/PJ_vandg2.c
+++ b/src/PJ_vandg2.c
@@ -9,8 +9,8 @@ struct pj_opaque {
int vdg3;
};
-PROJ_HEAD(vandg2, "van der Grinten II") "\n\tMisc Sph, no inv.";
-PROJ_HEAD(vandg3, "van der Grinten III") "\n\tMisc Sph, no inv.";
+PROJ_HEAD(vandg2, "van der Grinten II") "\n\tMisc Sph, no inv";
+PROJ_HEAD(vandg3, "van der Grinten III") "\n\tMisc Sph, no inv";
#define TOL 1e-10
diff --git a/src/PJ_vandg4.c b/src/PJ_vandg4.c
index 770594f1..d9a53c87 100644
--- a/src/PJ_vandg4.c
+++ b/src/PJ_vandg4.c
@@ -4,7 +4,7 @@
#include "projects.h"
-PROJ_HEAD(vandg4, "van der Grinten IV") "\n\tMisc Sph, no inv.";
+PROJ_HEAD(vandg4, "van der Grinten IV") "\n\tMisc Sph, no inv";
#define TOL 1e-10
diff --git a/src/PJ_vgridshift.c b/src/PJ_vgridshift.c
index f88527f7..ac5d26ef 100644
--- a/src/PJ_vgridshift.c
+++ b/src/PJ_vgridshift.c
@@ -113,7 +113,7 @@ PJ *TRANSFORMATION(vgridshift,0) {
if (pj_param(P->ctx, P->params, "tt_epoch").i)
Q->t_epoch = pj_param (P->ctx, P->params, "dt_epoch").f;
- /* historical: the forward direction substracts the grid offset. */
+ /* historical: the forward direction subtracts the grid offset. */
Q->forward_multiplier = -1.0;
if (pj_param(P->ctx, P->params, "tmultiplier").i) {
Q->forward_multiplier = pj_param(P->ctx, P->params, "dmultiplier").f;
diff --git a/src/PJ_wag2.c b/src/PJ_wag2.c
index d12cade1..1bee737a 100644
--- a/src/PJ_wag2.c
+++ b/src/PJ_wag2.c
@@ -4,7 +4,7 @@
#include "projects.h"
-PROJ_HEAD(wag2, "Wagner II") "\n\tPCyl., Sph.";
+PROJ_HEAD(wag2, "Wagner II") "\n\tPCyl, Sph";
#define C_x 0.92483
#define C_y 1.38725
diff --git a/src/PJ_wag3.c b/src/PJ_wag3.c
index 6ae9ad28..ccd19d4d 100644
--- a/src/PJ_wag3.c
+++ b/src/PJ_wag3.c
@@ -5,7 +5,7 @@
#include "projects.h"
-PROJ_HEAD(wag3, "Wagner III") "\n\tPCyl., Sph.\n\tlat_ts=";
+PROJ_HEAD(wag3, "Wagner III") "\n\tPCyl, Sph\n\tlat_ts=";
#define TWOTHIRD 0.6666666666666666666667
diff --git a/src/PJ_wag7.c b/src/PJ_wag7.c
index 3cd332ad..2009e672 100644
--- a/src/PJ_wag7.c
+++ b/src/PJ_wag7.c
@@ -4,7 +4,7 @@
#include "projects.h"
-PROJ_HEAD(wag7, "Wagner VII") "\n\tMisc Sph, no inv.";
+PROJ_HEAD(wag7, "Wagner VII") "\n\tMisc Sph, no inv";
diff --git a/src/PJ_wink1.c b/src/PJ_wink1.c
index 10392fe9..865cc6ac 100644
--- a/src/PJ_wink1.c
+++ b/src/PJ_wink1.c
@@ -5,7 +5,7 @@
#include "projects.h"
-PROJ_HEAD(wink1, "Winkel I") "\n\tPCyl., Sph.\n\tlat_ts=";
+PROJ_HEAD(wink1, "Winkel I") "\n\tPCyl, Sph\n\tlat_ts=";
struct pj_opaque {
double cosphi1;
diff --git a/src/PJ_wink2.c b/src/PJ_wink2.c
index d02ca567..f8e9af09 100644
--- a/src/PJ_wink2.c
+++ b/src/PJ_wink2.c
@@ -5,7 +5,7 @@
#include "projects.h"
-PROJ_HEAD(wink2, "Winkel II") "\n\tPCyl., Sph., no inv.\n\tlat_1=";
+PROJ_HEAD(wink2, "Winkel II") "\n\tPCyl, Sph, no inv\n\tlat_1=";
struct pj_opaque { double cosphi1; };
diff --git a/src/cct.c b/src/cct.c
index 7d02eaac..54734b98 100644
--- a/src/cct.c
+++ b/src/cct.c
@@ -280,7 +280,7 @@ int main(int argc, char **argv) {
if (opt_given (o, "c")) {
int ncols;
- /* reset colum numbers to ease comment output later on */
+ /* reset column numbers to ease comment output later on */
for (i=0; i<4; i++)
columns_xyzt[i] = 0;
diff --git a/src/lib_proj.cmake b/src/lib_proj.cmake
index 29f3e94f..3e1a17ad 100644
--- a/src/lib_proj.cmake
+++ b/src/lib_proj.cmake
@@ -40,6 +40,7 @@ SET(SRC_LIBPROJ_PJ
nad_init.c
PJ_aea.c
PJ_aeqd.c
+ PJ_affine.c
PJ_airy.c
PJ_aitoff.c
PJ_august.c
diff --git a/src/makefile.vc b/src/makefile.vc
deleted file mode 100644
index fc6a6861..00000000
--- a/src/makefile.vc
+++ /dev/null
@@ -1,171 +0,0 @@
-#
-# makefile.vc - builds PROJ.4 library with Visual C++
-#
-!INCLUDE ..\nmake.opt
-
-azimuthal = \
- PJ_aeqd.obj PJ_gnom.obj PJ_laea.obj PJ_mod_ster.obj \
- PJ_nsper.obj PJ_nzmg.obj PJ_ortho.obj PJ_stere.obj PJ_sterea.obj \
- proj_rouss.obj
-
-conic = \
- PJ_aea.obj PJ_bipc.obj PJ_bonne.obj PJ_eqdc.obj \
- PJ_imw_p.obj PJ_lcc.obj PJ_poly.obj \
- PJ_rpoly.obj PJ_sconics.obj PJ_lcca.obj PJ_ccon.obj
-
-cylinder = \
- PJ_cass.obj PJ_cc.obj PJ_cea.obj PJ_eqc.obj \
- PJ_gall.obj PJ_labrd.obj PJ_lsat.obj PJ_misrsom.obj PJ_merc.obj \
- PJ_mill.obj PJ_ocea.obj PJ_omerc.obj PJ_patterson.obj PJ_somerc.obj \
- PJ_tcc.obj PJ_tcea.obj PJ_tmerc.obj PJ_geos.obj \
- PJ_gstmerc.obj proj_etmerc.obj PJ_comill.obj
-
-misc = \
- PJ_airy.obj PJ_aitoff.obj PJ_august.obj PJ_bacon.obj PJ_bertin1953.obj \
- PJ_chamb.obj PJ_hammer.obj PJ_lagrng.obj PJ_larr.obj \
- PJ_lask.obj PJ_nocol.obj PJ_ob_tran.obj PJ_oea.obj \
- PJ_sch.obj PJ_tpeqd.obj PJ_vandg.obj PJ_vandg2.obj \
- PJ_vandg4.obj PJ_wag7.obj PJ_latlong.obj PJ_krovak.obj \
- PJ_geoc.obj pj_geocent.obj PJ_healpix.obj PJ_qsc.obj
-
-pseudo = \
- PJ_boggs.obj PJ_collg.obj PJ_crast.obj PJ_denoy.obj \
- PJ_eck1.obj PJ_eck2.obj PJ_eck3.obj PJ_eck4.obj \
- PJ_eck5.obj PJ_fahey.obj PJ_fouc_s.obj PJ_gins8.obj \
- PJ_gn_sinu.obj PJ_goode.obj PJ_igh.obj PJ_hatano.obj PJ_loxim.obj \
- PJ_mbt_fps.obj PJ_mbtfpp.obj PJ_mbtfpq.obj PJ_moll.obj \
- PJ_nell.obj PJ_nell_h.obj PJ_putp2.obj PJ_putp3.obj \
- PJ_putp4p.obj PJ_putp5.obj PJ_putp6.obj PJ_robin.obj \
- PJ_sts.obj PJ_urm5.obj PJ_urmfps.obj PJ_wag2.obj \
- PJ_wag3.obj PJ_wink1.obj PJ_wink2.obj PJ_isea.obj \
- PJ_calcofi.obj PJ_natearth.obj PJ_natearth2.obj PJ_times.obj \
- PJ_eqearth.obj
-
-support = \
- aasincos.obj adjlon.obj bch2bps.obj bchgen.obj pj_gauss.obj \
- biveval.obj dmstor.obj mk_cheby.obj pj_auth.obj \
- pj_deriv.obj pj_ell_set.obj pj_ellps.obj pj_errno.obj \
- pj_factors.obj pj_fwd.obj pj_init.obj pj_inv.obj \
- pj_list.obj pj_malloc.obj pj_mlfn.obj pj_msfn.obj \
- pj_open_lib.obj pj_param.obj pj_phi2.obj pj_pr_list.obj \
- pj_qsfn.obj pj_strerrno.obj pj_tsfn.obj pj_units.obj \
- pj_zpoly1.obj rtodms.obj vector1.obj pj_release.obj \
- geocent.obj pj_transform.obj pj_datum_set.obj pj_datums.obj \
- pj_apply_gridshift.obj pj_gc_reader.obj pj_gridcatalog.obj \
- nad_cvt.obj nad_init.obj nad_intr.obj \
- pj_utils.obj pj_gridlist.obj pj_gridinfo.obj \
- proj_mdist.obj pj_mutex.obj pj_initcache.obj \
- pj_ctx.obj pj_fileapi.obj pj_log.obj pj_apply_vgridshift.obj \
- pj_strtod.obj pj_internal.obj pj_math.obj
-
-pipeline = \
- proj_4D_api.obj PJ_cart.obj PJ_pipeline.obj PJ_horner.obj PJ_helmert.obj \
- PJ_vgridshift.obj PJ_hgridshift.obj PJ_unitconvert.obj PJ_molodensky.obj \
- PJ_deformation.obj PJ_axisswap.obj
-
-geodesic = geodesic.obj
-
-LIBOBJ = $(support) $(pseudo) $(azimuthal) $(conic) $(cylinder) $(misc) \
- $(geodesic) $(pipeline)
-PROJEXE_OBJ = proj.obj gen_cheb.obj p_series.obj emess.obj
-CS2CSEXE_OBJ = cs2cs.obj gen_cheb.obj p_series.obj emess.obj
-GEODEXE_OBJ = geod.obj geod_set.obj geod_interface.obj emess.obj
-CCTEXE_OBJ = cct.obj proj_strtod.obj
-GIEEXE_OBJ = gie.obj proj_strtod.obj
-
-MULTISTRESSTEST_OBJ = multistresstest.obj
-PROJ_DLL = proj$(VERSION).dll
-PROJ_EXE = proj.exe
-CS2CS_EXE = cs2cs.exe
-GEOD_EXE = geod.exe
-CCT_EXE = cct.exe
-GIE_EXE = gie.exe
-NAD2BIN_EXE = nad2bin.exe
-MULTISTRESSTEST_EXE = multistresstest.exe
-
-CFLAGS = /nologo -I. -DPROJ_LIB=\"$(PROJ_LIB_DIR)\" \
- -DHAVE_STRERROR=1 -DHAVE_LOCALECONV=1 $(OPTFLAGS)
-
-default: all
-
-all: proj.lib $(PROJ_EXE) $(CS2CS_EXE) $(GEOD_EXE) $(CCT_EXE) $(GIE_EXE) $(NAD2BIN_EXE)
-
-proj.lib: $(LIBOBJ)
- if exist proj.lib del proj.lib
- lib /out:proj.lib $(LIBOBJ)
-
-$(PROJ_DLL): proj_i.lib
-
-proj_i.lib: $(LIBOBJ)
- link /debug /dll /def:proj.def /out:$(PROJ_DLL) /implib:proj_i.lib \
- $(LIBOBJ)
- if exist $(PROJ_DLL).manifest mt -manifest $(PROJ_DLL).manifest -outputresource:$(PROJ_DLL);2
-
-$(PROJ_EXE): $(PROJEXE_OBJ) $(EXE_PROJ)
- cl $(PROJEXE_OBJ) $(EXE_PROJ) /link setargv.obj
- if exist $(PROJ_EXE).manifest mt -manifest $(PROJ_EXE).manifest -outputresource:$(PROJ_EXE);1
-
-$(CS2CS_EXE): $(CS2CSEXE_OBJ) $(EXE_PROJ)
- cl $(CS2CSEXE_OBJ) $(EXE_PROJ) /link setargv.obj
- if exist $(CS2CS_EXE).manifest mt -manifest $(CS2CS_EXE).manifest -outputresource:$(CS2CS_EXE);1
-
-$(GEOD_EXE): $(GEODEXE_OBJ) $(EXE_PROJ)
- cl $(GEODEXE_OBJ) $(EXE_PROJ) /link setargv.obj
- if exist $(GEOD_EXE).manifest mt -manifest $(GEOD_EXE).manifest -outputresource:$(GEOD_EXE);1
-
-$(CCT_EXE): $(CCTEXE_OBJ) $(EXE_PROJ)
- cl $(CCTEXE_OBJ) $(EXE_PROJ) /link setargv.obj
- if exist $(CCT_EXE).manifest mt -manifest $(CCT_EXE).manifest -outputresource:$(CCT_EXE);1
-
-$(GIE_EXE): $(GIEEXE_OBJ) $(EXE_PROJ)
- cl $(GIEEXE_OBJ) $(EXE_PROJ) /link setargv.obj
- if exist $(GIE_EXE).manifest mt -manifest $(GIE_EXE).manifest -outputresource:$(GIE_EXE);1
-
-$(NAD2BIN_EXE): nad2bin.obj emess.obj $(EXE_PROJ)
- cl nad2bin.obj emess.obj $(EXE_PROJ) /link setargv.obj
-
-$(MULTISTRESSTEST_EXE): $(MULTISTRESSTEST_OBJ)
- cl $(MULTISTRESSTEST_OBJ) $(EXE_PROJ)
- if exist $(MULTISTRESSTEST_EXE).manifest mt -manifest $(MULTISTRESSTEST_EXE).manifest -outputresource:$(MULTISTRESSTEST_EXE);1
-
-nadshift: nad2bin.exe
- cd ..\data
- ..\src\nad2bin.exe < conus.lla conus
- ..\src\nad2bin.exe < MD.lla MD
- ..\src\nad2bin.exe < TN.lla TN
- ..\src\nad2bin.exe < WI.lla WI
- ..\src\nad2bin.exe < WO.lla WO
- ..\src\nad2bin.exe < alaska.lla alaska
- ..\src\nad2bin.exe < hawaii.lla hawaii
- ..\src\nad2bin.exe < prvi.lla prvi
- ..\src\nad2bin.exe < stgeorge.lla stgeorge
- ..\src\nad2bin.exe < stlrnc.lla stlrnc
- ..\src\nad2bin.exe < stpaul.lla stpaul
- ..\src\nad2bin.exe < null.lla null
- cd ..\src
-
-clean:
- del *.dll
- del *.exe
- del *.exp
- del *.manifest
- del *.lib
- del *.obj
- del *.pdb
-
-install: all
- -mkdir $(INSTDIR)
- -mkdir $(INSTDIR)\bin
- -mkdir $(INSTDIR)\share
- -mkdir $(INSTDIR)\lib
- -mkdir $(INSTDIR)\include
- -mkdir $(INSTDIR)\test
- -mkdir $(INSTDIR)\test\gie
- copy *.exe $(INSTDIR)\bin
- copy *.dll $(INSTDIR)\bin
- copy *.lib $(INSTDIR)\lib
- copy proj.h $(INSTDIR)\include
- copy proj_api.h $(INSTDIR)\include
- copy projects.h $(INSTDIR)\include
- copy geodesic.h $(INSTDIR)\include
- copy ..\test\gie\*.gie $(INSTDIR)\test\gie
diff --git a/src/pj_list.h b/src/pj_list.h
index b4fc2306..cd19d300 100644
--- a/src/pj_list.h
+++ b/src/pj_list.h
@@ -7,6 +7,7 @@ static const char PJ_LIST_H_ID[] = "@(#)pj_list.h 4.5 95/08/09 GIE REL";
*/
PROJ_HEAD(aea, "Albers Equal Area")
PROJ_HEAD(aeqd, "Azimuthal Equidistant")
+PROJ_HEAD(affine, "Affine transformation")
PROJ_HEAD(airy, "Airy")
PROJ_HEAD(aitoff, "Aitoff")
PROJ_HEAD(alsk, "Mod. Stererographics of Alaska")
@@ -37,7 +38,7 @@ PROJ_HEAD(eck4, "Eckert IV")
PROJ_HEAD(eck5, "Eckert V")
PROJ_HEAD(eck6, "Eckert VI")
PROJ_HEAD(eqearth, "Equal Earth")
-PROJ_HEAD(eqc, "Equidistant Cylindrical (Plate Caree)")
+PROJ_HEAD(eqc, "Equidistant Cylindrical (Plate Carree)")
PROJ_HEAD(eqdc, "Equidistant Conic")
PROJ_HEAD(euler, "Euler")
PROJ_HEAD(etmerc, "Extended Transverse Mercator" )
@@ -47,6 +48,7 @@ PROJ_HEAD(fouc_s, "Foucaut Sinusoidal")
PROJ_HEAD(gall, "Gall (Gall Stereographic)")
PROJ_HEAD(geoc, "Geocentric Latitude")
PROJ_HEAD(geocent, "Geocentric")
+PROJ_HEAD(geogoffset, "Geographic Offset")
PROJ_HEAD(geos, "Geostationary Satellite View")
PROJ_HEAD(gins8, "Ginsburg VIII (TsNIIGAiK)")
PROJ_HEAD(gn_sinu, "General Sinusoidal Series")
diff --git a/src/pj_transform.c b/src/pj_transform.c
index a2c9950e..f6210822 100644
--- a/src/pj_transform.c
+++ b/src/pj_transform.c
@@ -128,8 +128,8 @@ static int adjust_axes (PJ *P, PJ_DIRECTION dir, long n, int dist, double *x, do
/* ----------------------------------------------------------------------- */
-/* Transform cartesian ("geocentric") source coordinates to lat/long, */
-/* if needed */
+/* Transform geographic (lat/long) source coordinates to */
+/* cartesian ("geocentric"), if needed */
/* ----------------------------------------------------------------------- */
static int geographic_to_cartesian (PJ *P, PJ_DIRECTION dir, long n, int dist, double *x, double *y, double *z) {
int res;
@@ -632,7 +632,7 @@ int pj_geodetic_to_geocentric( double a, double es,
}
/************************************************************************/
-/* pj_geodetic_to_geocentric() */
+/* pj_geocentric_to_geodetic() */
/************************************************************************/
int pj_geocentric_to_geodetic( double a, double es,
diff --git a/src/pj_utils.c b/src/pj_utils.c
index 3f18cc7e..81a80b45 100644
--- a/src/pj_utils.c
+++ b/src/pj_utils.c
@@ -105,6 +105,8 @@ PJ *pj_latlong_from_proj( PJ *pj_in )
{
char* ptr = defn+strlen(defn);
sprintf( ptr, " +es=%.16g", pj_in->es );
+ /* TODO later: use C++ ostringstream with imbue(std::locale::classic()) */
+ /* to be locale unaware */
for(; *ptr; ptr++)
{
if( *ptr == ',' )
diff --git a/src/proj.c b/src/proj.c
index 6fe579ee..009ce9d6 100644
--- a/src/proj.c
+++ b/src/proj.c
@@ -39,7 +39,6 @@ static int
inverse = 0, /* != 0 then inverse projection */
prescale = 0, /* != 0 apply cartesian scale factor */
dofactors = 0, /* determine scale factors */
- facs_bad = 0, /* return condition from pj_factors */
very_verby = 0, /* very verbose mode */
postscale = 0;
@@ -52,7 +51,7 @@ static const char
*oterr = "*\t*", /* output line for unprojectable input */
*usage = "%s\nusage: %s [ -bdeEfiIlmorsStTvVwW [args] ] [ +opts[=arg] ] [ files ]\n";
-static struct FACTORS facs;
+static PJ_FACTORS facs;
static double (*informat)(const char *, char **), /* input data deformatter function */
fscale = 0.; /* cartesian scale factor */
@@ -79,6 +78,7 @@ static void process(FILE *fid) {
PJ_COORD data;
for (;;) {
+ int facs_bad = 0;
++emess_dat.File_line;
if (bin_in) { /* binary input */
@@ -124,13 +124,20 @@ static void process(FILE *fid) {
}
if (data.uv.u != HUGE_VAL) {
+ PJ_COORD coord;
+ coord.lp = data.lp;
if (prescale) { data.uv.u *= fscale; data.uv.v *= fscale; }
- if (dofactors && !inverse)
- facs_bad = pj_factors(data.lp, Proj, 0., &facs);
+ if (dofactors && !inverse) {
+ facs = proj_factors(Proj, coord);
+ facs_bad = proj_errno(Proj);
+ }
+
data.xy = (*proj.fwd)(data.lp, Proj);
- if (dofactors && inverse)
- facs_bad = pj_factors(data.lp, Proj, 0., &facs);
+ if (dofactors && inverse) {
+ facs = proj_factors(Proj, coord);
+ facs_bad = proj_errno(Proj);
+ }
if (postscale && data.uv.u != HUGE_VAL)
{ data.uv.u *= fscale; data.uv.v *= fscale; }
@@ -177,8 +184,8 @@ static void process(FILE *fid) {
if (dofactors) {
if (!facs_bad)
(void)printf("\t<%g %g %g %g %g %g>",
- facs.h, facs.k, facs.s,
- facs.omega * RAD_TO_DEG, facs.a, facs.b);
+ facs.meridional_scale, facs.parallel_scale, facs.areal_scale,
+ facs.angular_distortion * RAD_TO_DEG, facs.tissot_semimajor, facs.tissot_semiminor);
else
(void)fputs("\t<* * * * * *>", stdout);
}
@@ -192,6 +199,7 @@ static void vprocess(FILE *fid) {
LP dat_ll;
projXY dat_xy;
int linvers;
+ PJ_COORD coord;
if (!oform)
@@ -245,8 +253,8 @@ static void vprocess(FILE *fid) {
}
dat_ll = pj_inv(dat_xy, Proj);
} else {
- dat_ll.lam = dmstor(s, &s);
- dat_ll.phi = dmstor(s, &s);
+ dat_ll.lam = proj_dmstor(s, &s);
+ dat_ll.phi = proj_dmstor(s, &s);
if (dat_ll.lam == HUGE_VAL || dat_ll.phi == HUGE_VAL) {
emess(-1,"lon-lat input conversion failure\n");
continue;
@@ -274,7 +282,9 @@ static void vprocess(FILE *fid) {
}
if (!*s && (s > line)) --s; /* assumed we gobbled \n */
- if (pj_factors(dat_ll, Proj, 0., &facs)) {
+ coord.lp = dat_ll;
+ facs = proj_factors(Proj, coord);
+ if (proj_errno(Proj)) {
emess(-1,"failed to compute factors\n\n");
continue;
}
@@ -283,24 +293,24 @@ static void vprocess(FILE *fid) {
(void)fputs(s, stdout);
(void)fputs("Longitude: ", stdout);
- (void)fputs(rtodms(pline, dat_ll.lam, 'E', 'W'), stdout);
+ (void)fputs(proj_rtodms(pline, dat_ll.lam, 'E', 'W'), stdout);
(void)printf(" [ %.11g ]\n", dat_ll.lam * RAD_TO_DEG);
(void)fputs("Latitude: ", stdout);
- (void)fputs(rtodms(pline, dat_ll.phi, 'N', 'S'), stdout);
+ (void)fputs(proj_rtodms(pline, dat_ll.phi, 'N', 'S'), stdout);
(void)printf(" [ %.11g ]\n", dat_ll.phi * RAD_TO_DEG);
(void)fputs("Easting (x): ", stdout);
(void)printf(oform, dat_xy.x); putchar('\n');
(void)fputs("Northing (y): ", stdout);
(void)printf(oform, dat_xy.y); putchar('\n');
- (void)printf("Meridian scale (h) : %.8f ( %.4g %% error )\n", facs.h, (facs.h-1.)*100.);
- (void)printf("Parallel scale (k) : %.8f ( %.4g %% error )\n", facs.k, (facs.k-1.)*100.);
- (void)printf("Areal scale (s): %.8f ( %.4g %% error )\n", facs.s, (facs.s-1.)*100.);
- (void)printf("Angular distortion (w): %.3f\n", facs.omega * RAD_TO_DEG);
- (void)printf("Meridian/Parallel angle: %.5f\n", facs.thetap * RAD_TO_DEG);
+ (void)printf("Meridian scale (h) : %.8f ( %.4g %% error )\n", facs.meridional_scale, (facs.meridional_scale-1.)*100.);
+ (void)printf("Parallel scale (k) : %.8f ( %.4g %% error )\n", facs.parallel_scale, (facs.parallel_scale-1.)*100.);
+ (void)printf("Areal scale (s): %.8f ( %.4g %% error )\n", facs.areal_scale, (facs.areal_scale-1.)*100.);
+ (void)printf("Angular distortion (w): %.3f\n", facs.angular_distortion * RAD_TO_DEG);
+ (void)printf("Meridian/Parallel angle: %.5f\n", facs.meridian_parallel_angle * RAD_TO_DEG);
(void)printf("Convergence : ");
- (void)fputs(rtodms(pline, facs.conv, 0, 0), stdout);
- (void)printf(" [ %.8f ]\n", facs.conv * RAD_TO_DEG);
- (void)printf("Max-min (Tissot axis a-b) scale error: %.5f %.5f\n\n", facs.a, facs.b);
+ (void)fputs(proj_rtodms(pline, facs.meridian_convergence, 0, 0), stdout);
+ (void)printf(" [ %.8f ]\n", facs.meridian_convergence * RAD_TO_DEG);
+ (void)printf("Max-min (Tissot axis a-b) scale error: %.5f %.5f\n\n", facs.tissot_semimajor, facs.tissot_semiminor);
}
}
@@ -530,7 +540,7 @@ int main(int argc, char **argv) {
if (inverse)
informat = strtod;
else {
- informat = dmstor;
+ informat = proj_dmstor;
if (!oform)
oform = "%.2f";
}
diff --git a/src/proj_4D_api.c b/src/proj_4D_api.c
index 74cf45d6..81967a1d 100644
--- a/src/proj_4D_api.c
+++ b/src/proj_4D_api.c
@@ -519,6 +519,17 @@ Returns 1 on success, 0 on failure
if (P->is_geocent || P->helmert || do_cart) {
char def[150];
sprintf (def, "break_cs2cs_recursion proj=cart a=%40.20g es=%40.20g", P->a_orig, P->es_orig);
+ {
+ /* In case the current locale does not use dot but comma as decimal */
+ /* separator, replace it with dot, so that proj_atof() behaves */
+ /* correctly. */
+ /* TODO later: use C++ ostringstream with imbue(std::locale::classic()) */
+ /* to be locale unaware */
+ char* next_pos;
+ for (next_pos = def; (next_pos = strchr (next_pos, ',')) != NULL; next_pos++) {
+ *next_pos = '.';
+ }
+ }
Q = proj_create (P->ctx, def);
if (0==Q)
return 0;
diff --git a/src/proj_rouss.c b/src/proj_rouss.c
index ca4476bb..0e0f9982 100644
--- a/src/proj_rouss.c
+++ b/src/proj_rouss.c
@@ -39,7 +39,7 @@ struct pj_opaque {
double D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11;
void *en;
};
-PROJ_HEAD(rouss, "Roussilhe Stereographic") "\n\tAzi., Ellps.";
+PROJ_HEAD(rouss, "Roussilhe Stereographic") "\n\tAzi, Ell";
static XY e_forward (LP lp, PJ *P) { /* Ellipsoidal, forward */
diff --git a/src/projects.h b/src/projects.h
index c4f09a8d..39540fe2 100644
--- a/src/projects.h
+++ b/src/projects.h
@@ -540,7 +540,6 @@ enum deprecated_constants_for_now_dropped_analytical_factors {
#define PJD_ERR_PROJ_NOT_NAMED -4
#define PJD_ERR_UNKNOWN_PROJECTION_ID -5
#define PJD_ERR_ECCENTRICITY_IS_ONE -6
-#define PJD_ERR_UNKNOW_UNIT_ID -7 /* deprecated: typo */
#define PJD_ERR_UNKNOWN_UNIT_ID -7
#define PJD_ERR_INVALID_BOOLEAN_PARAM -8
#define PJD_ERR_UNKNOWN_ELLP_PARAM -9