diff options
| author | Didier Richard <didier.richard@ign.fr> | 2008-07-26 10:38:45 +0000 |
|---|---|---|
| committer | Didier Richard <didier.richard@ign.fr> | 2008-07-26 10:38:45 +0000 |
| commit | be6cf1ebc8c18bb3ab9b6ae827092d6e5acb908d (patch) | |
| tree | 1142131c8dce4700d08cabde9a8913f8d2b826c4 | |
| parent | 647d56dbf928a741a46cffcf202eed33d9c15826 (diff) | |
| download | PROJ-be6cf1ebc8c18bb3ab9b6ae827092d6e5acb908d.tar.gz PROJ-be6cf1ebc8c18bb3ab9b6ae827092d6e5acb908d.zip | |
Gauss-Laborde Projection changed into Simplified Transverse Mercator (Schreiber, Gauss-Laborde).
git-svn-id: http://svn.osgeo.org/metacrs/proj/trunk@1463 4e78687f-474d-0410-85f9-8d5e500ac6b2
| -rw-r--r-- | src/Makefile.am | 2 | ||||
| -rw-r--r-- | src/Makefile.in | 6 | ||||
| -rw-r--r-- | src/PJ_glabsgm.c | 44 | ||||
| -rw-r--r-- | src/PJ_stmerc.c | 47 | ||||
| -rw-r--r-- | src/makefile.vc | 2 | ||||
| -rw-r--r-- | src/pj_list.h | 2 |
6 files changed, 53 insertions, 50 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index efa224f0..a6a43462 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_glabsgm.c \ + PJ_eck5.c PJ_fahey.c PJ_fouc_s.c PJ_gins8.c PJ_stmerc.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 4f664a8b..fc56997d 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_glabsgm.lo \ + PJ_fahey.lo PJ_fouc_s.lo PJ_gins8.lo PJ_stmerc.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_glabsgm.c \ + PJ_eck5.c PJ_fahey.c PJ_fouc_s.c PJ_gins8.c PJ_stmerc.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_glabsgm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PJ_stmerc.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_glabsgm.c b/src/PJ_glabsgm.c deleted file mode 100644 index d094239c..00000000 --- a/src/PJ_glabsgm.c +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef lint -static const char SCCSID[]="@(#)PJ_glabsgm.c 4.5 07/09/24 ??? ???"; -#endif -#define PROJ_PARMS__ \ - double lamc;\ - double phic;\ - double c;\ - double n1;\ - double n2; - -#define PJ_LIB__ -# include <projects.h> -PROJ_HEAD(glabsgm, "Gauss Laborde (Sphere Geometric Mean)") - "\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->n2*P->ra*Ls1; - xy.y= P->n2*P->ra*atan(sinh(Ls)/cos(L)); - return (xy); -} -INVERSE(s_inverse); /* spheroid */ - double L, LC, sinC; - L= atan(sinh(xy.x*P->a/P->n2)/cos(xy.y*P->a/P->n2)); - sinC= sin(xy.y*P->a/P->n2)/cosh(xy.x*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(glabsgm) - 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->y0-= 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 new file mode 100644 index 00000000..cd1c873f --- /dev/null +++ b/src/PJ_stmerc.c @@ -0,0 +1,47 @@ +#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 <projects.h> +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 0b0ab354..9bc8b92e 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_glabsgm.obj + PJ_tcc.obj PJ_tcea.obj PJ_tmerc.obj PJ_geos.obj PJ_stmerc.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 f10aca25..acd08510 100644 --- a/src/pj_list.h +++ b/src/pj_list.h @@ -39,7 +39,6 @@ PROJ_HEAD(gall, "Gall (Gall Stereographic)") PROJ_HEAD(geocent, "Geocentric") PROJ_HEAD(geos, "Geostationary Satellite View") PROJ_HEAD(gins8, "Ginsburg VIII (TsNIIGAiK)") -PROJ_HEAD(glabsgm, "Gauss Laborde (Sphere Geometric Mean)") PROJ_HEAD(gn_sinu, "General Sinusoidal Series") PROJ_HEAD(gnom, "Gnomonic") PROJ_HEAD(goode, "Goode Homolosine") @@ -108,6 +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(tcc, "Transverse Central Cylindrical") PROJ_HEAD(tcea, "Transverse Cylindrical Equal Area") PROJ_HEAD(tissot, "Tissot Conic") |
