From b55e4ba6756d8384713ef4c23ea3e64f1ad30a67 Mon Sep 17 00:00:00 2001 From: Didier Richard Date: Mon, 28 Jul 2008 19:33:57 +0000 Subject: Switching stmerc (simplified transverse mercator) to gstmerc (Gauss-Schreiber transverse mercator) git-svn-id: http://svn.osgeo.org/metacrs/proj/trunk@1466 4e78687f-474d-0410-85f9-8d5e500ac6b2 --- src/Makefile.am | 2 +- src/Makefile.in | 6 +++--- src/PJ_gstmerc.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ src/PJ_stmerc.c | 47 ----------------------------------------------- src/makefile.vc | 2 +- src/pj_list.h | 2 +- 6 files changed, 53 insertions(+), 53 deletions(-) create mode 100644 src/PJ_gstmerc.c delete mode 100644 src/PJ_stmerc.c (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index a6a43462..3e7df58a 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -40,7 +40,7 @@ libproj_la_SOURCES = \ PJ_wag7.c PJ_lcca.c PJ_geos.c \ PJ_boggs.c PJ_collg.c PJ_crast.c PJ_denoy.c \ PJ_eck1.c PJ_eck2.c PJ_eck3.c PJ_eck4.c \ - PJ_eck5.c PJ_fahey.c PJ_fouc_s.c PJ_gins8.c PJ_stmerc.c \ + PJ_eck5.c PJ_fahey.c PJ_fouc_s.c PJ_gins8.c PJ_gstmerc.c \ PJ_gn_sinu.c PJ_goode.c PJ_hatano.c PJ_loxim.c \ PJ_mbt_fps.c PJ_mbtfpp.c PJ_mbtfpq.c PJ_moll.c \ PJ_nell.c PJ_nell_h.c PJ_putp2.c PJ_putp3.c \ diff --git a/src/Makefile.in b/src/Makefile.in index fc56997d..1c26b993 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -70,7 +70,7 @@ am_libproj_la_OBJECTS = PJ_aeqd.lo PJ_gnom.lo PJ_laea.lo \ PJ_vandg.lo PJ_vandg2.lo PJ_vandg4.lo PJ_wag7.lo PJ_lcca.lo \ PJ_geos.lo PJ_boggs.lo PJ_collg.lo PJ_crast.lo PJ_denoy.lo \ PJ_eck1.lo PJ_eck2.lo PJ_eck3.lo PJ_eck4.lo PJ_eck5.lo \ - PJ_fahey.lo PJ_fouc_s.lo PJ_gins8.lo PJ_stmerc.lo \ + PJ_fahey.lo PJ_fouc_s.lo PJ_gins8.lo PJ_gstmerc.lo \ PJ_gn_sinu.lo PJ_goode.lo PJ_hatano.lo PJ_loxim.lo \ PJ_mbt_fps.lo PJ_mbtfpp.lo PJ_mbtfpq.lo PJ_moll.lo PJ_nell.lo \ PJ_nell_h.lo PJ_putp2.lo PJ_putp3.lo PJ_putp4p.lo PJ_putp5.lo \ @@ -272,7 +272,7 @@ libproj_la_SOURCES = \ PJ_wag7.c PJ_lcca.c PJ_geos.c \ PJ_boggs.c PJ_collg.c PJ_crast.c PJ_denoy.c \ PJ_eck1.c PJ_eck2.c PJ_eck3.c PJ_eck4.c \ - PJ_eck5.c PJ_fahey.c PJ_fouc_s.c PJ_gins8.c PJ_stmerc.c \ + PJ_eck5.c PJ_fahey.c PJ_fouc_s.c PJ_gins8.c PJ_gstmerc.c \ PJ_gn_sinu.c PJ_goode.c PJ_hatano.c PJ_loxim.c \ PJ_mbt_fps.c PJ_mbtfpp.c PJ_mbtfpq.c PJ_moll.c \ PJ_nell.c PJ_nell_h.c PJ_putp2.c PJ_putp3.c \ @@ -451,7 +451,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PJ_gall.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PJ_geos.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PJ_gins8.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PJ_stmerc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PJ_gstmerc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PJ_gn_sinu.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PJ_gnom.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PJ_goode.Plo@am__quote@ diff --git a/src/PJ_gstmerc.c b/src/PJ_gstmerc.c new file mode 100644 index 00000000..69da061d --- /dev/null +++ b/src/PJ_gstmerc.c @@ -0,0 +1,47 @@ +#ifndef lint +static const char SCCSID[]="@(#)PJ_gstmerc.c 4.6 08/07/28 DGR IGN"; +#endif +#define PROJ_PARMS__ \ + double lamc;\ + double phic;\ + double c;\ + double n1;\ + double n2;\ + double XS;\ + double YS; + +#define PJ_LIB__ +# include +PROJ_HEAD(gstmerc, "Gauss-Schreiber Transverse Mercator (aka Gauss-Laborde Reunion)") + "\n\tCyl, Sph&Ell\n\tlat_0= lon_0= k_0="; +FORWARD(s_forward); /* spheroid */ + double L, Ls, sinLs1, Ls1; + L= P->n1*lp.lam; + Ls= P->c+P->n1*log(pj_tsfn(-1.0*lp.phi,-1.0*sin(lp.phi),P->e)); + sinLs1= sin(L)/cosh(Ls); + Ls1= log(pj_tsfn(-1.0*asin(sinLs1),0.0,0.0)); + xy.x= (P->XS + P->n2*Ls1)*P->ra; + xy.y= (P->YS + P->n2*atan(sinh(Ls)/cos(L)))*P->ra; + return (xy); +} +INVERSE(s_inverse); /* spheroid */ + double L, LC, sinC; + L= atan(sinh((xy.x - P->XS)*P->a/P->n2)/cos((xy.y - P->YS)*P->a/P->n2)); + sinC= sin((xy.y - P->YS)*P->a/P->n2)/cosh((xy.x - P->XS)*P->a/P->n2); + LC= log(pj_tsfn(-1.0*asin(sinC),0.0,0.0)); + lp.lam= L/P->n1; + lp.phi= -1.0*pj_phi2(exp((LC-P->c)/P->n1),P->e); + return (lp); +} +FREEUP; if (P) pj_dalloc(P); } +ENTRY0(gstmerc) + P->n1= sqrt(1.0+P->es*pow(cos(P->phi0),4.0)/(1.0-P->es)); + P->phic= asin(sin(P->phi0)/P->n1); + P->c= log(pj_tsfn(-1.0*P->phic,0.0,0.0)) + -P->n1*log(pj_tsfn(-1.0*P->phi0,-1.0*sin(P->phi0),P->e)); + P->n2= P->k0*P->a*sqrt(1.0-P->es)/(1.0-P->es*sin(P->phi0)*sin(P->phi0)); + P->XS= 0; + P->YS= -1.0*P->n2*P->phic; + P->inv= s_inverse; + P->fwd= s_forward; +ENDENTRY(P) diff --git a/src/PJ_stmerc.c b/src/PJ_stmerc.c deleted file mode 100644 index cd1c873f..00000000 --- a/src/PJ_stmerc.c +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef lint -static const char SCCSID[]="@(#)PJ_stmerc.c 4.5 07/09/24 ??? ???"; -#endif -#define PROJ_PARMS__ \ - double lamc;\ - double phic;\ - double c;\ - double n1;\ - double n2;\ - double XS;\ - double YS; - -#define PJ_LIB__ -# include -PROJ_HEAD(stmerc, "Simplified Transverse Mercator (Schreiber, Gauss-Laborde)") - "\n\tCyl, Sph&Ell\n\tlat_0= lon_0= k_0="; -FORWARD(s_forward); /* spheroid */ - double L, Ls, sinLs1, Ls1; - L= P->n1*lp.lam; - Ls= P->c+P->n1*log(pj_tsfn(-1.0*lp.phi,-1.0*sin(lp.phi),P->e)); - sinLs1= sin(L)/cosh(Ls); - Ls1= log(pj_tsfn(-1.0*asin(sinLs1),0.0,0.0)); - xy.x= (P->XS + P->n2*Ls1)*P->ra; - xy.y= (P->YS + P->n2*atan(sinh(Ls)/cos(L)))*P->ra; - return (xy); -} -INVERSE(s_inverse); /* spheroid */ - double L, LC, sinC; - L= atan(sinh((xy.x - P->XS)*P->a/P->n2)/cos((xy.y - P->YS)*P->a/P->n2)); - sinC= sin((xy.y - P->YS)*P->a/P->n2)/cosh((xy.x - P->XS)*P->a/P->n2); - LC= log(pj_tsfn(-1.0*asin(sinC),0.0,0.0)); - lp.lam= L/P->n1; - lp.phi= -1.0*pj_phi2(exp((LC-P->c)/P->n1),P->e); - return (lp); -} -FREEUP; if (P) pj_dalloc(P); } -ENTRY0(stmerc) - P->n1= sqrt(1.0+P->es*pow(cos(P->phi0),4.0)/(1.0-P->es)); - P->phic= asin(sin(P->phi0)/P->n1); - P->c= log(pj_tsfn(-1.0*P->phic,0.0,0.0)) - -P->n1*log(pj_tsfn(-1.0*P->phi0,-1.0*sin(P->phi0),P->e)); - P->n2= P->k0*P->a*sqrt(1.0-P->es)/(1.0-P->es*sin(P->phi0)*sin(P->phi0)); - P->XS= 0; - P->YS= -1.0*P->n2*P->phic; - P->inv= s_inverse; - P->fwd= s_forward; -ENDENTRY(P) diff --git a/src/makefile.vc b/src/makefile.vc index 9bc8b92e..3c2c3d43 100644 --- a/src/makefile.vc +++ b/src/makefile.vc @@ -18,7 +18,7 @@ cylinder = \ PJ_cass.obj PJ_cc.obj PJ_cea.obj PJ_eqc.obj \ PJ_gall.obj PJ_labrd.obj PJ_lsat.obj PJ_merc.obj \ PJ_mill.obj PJ_ocea.obj PJ_omerc.obj PJ_somerc.obj \ - PJ_tcc.obj PJ_tcea.obj PJ_tmerc.obj PJ_geos.obj PJ_stmerc.obj + PJ_tcc.obj PJ_tcea.obj PJ_tmerc.obj PJ_geos.obj PJ_gstmerc.obj misc = \ PJ_airy.obj PJ_aitoff.obj PJ_august.obj PJ_bacon.obj \ diff --git a/src/pj_list.h b/src/pj_list.h index acd08510..b965cc71 100644 --- a/src/pj_list.h +++ b/src/pj_list.h @@ -107,7 +107,7 @@ PROJ_HEAD(sinu, "Sinusoidal (Sanson-Flamsteed)") PROJ_HEAD(somerc, "Swiss. Obl. Mercator") PROJ_HEAD(stere, "Stereographic") PROJ_HEAD(sterea, "Oblique Stereographic Alternative") -PROJ_HEAD(stmerc, "Simplified Transverse Mercator (Schreiber, Gauss-Laborde)") +PROJ_HEAD(gstmerc, "Gauss-Schreiber Transverse Mercator (aka Gauss-Laborde Reunion)") PROJ_HEAD(tcc, "Transverse Central Cylindrical") PROJ_HEAD(tcea, "Transverse Cylindrical Equal Area") PROJ_HEAD(tissot, "Tissot Conic") -- cgit v1.2.3