Loading lib/proj4js-combined.js +17 −284 Original line number Diff line number Diff line Loading @@ -780,9 +780,11 @@ Proj4js.defs = { 'WGS84': "+title=long/lat:WGS84 +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees", 'EPSG:4326': "+title=long/lat:WGS84 +proj=longlat +a=6378137.0 +b=6356752.31424518 +ellps=WGS84 +datum=WGS84 +units=degrees", 'EPSG:4269': "+title=long/lat:NAD83 +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees", 'EPSG:900913': "+title= Google Mercator EPSG:900913 +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs" 'EPSG:3785': "+title= Google Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs" }; Proj4js.defs['GOOGLE'] = Proj4js.defs['EPSG:900913']; Proj4js.defs['GOOGLE'] = Proj4js.defs['EPSG:3785']; Proj4js.defs['EPSG:900913'] = Proj4js.defs['EPSG:3785']; Proj4js.defs['EPSG:102113'] = Proj4js.defs['EPSG:3785']; Proj4js.common = { PI : 3.141592653589793238, //Math.PI, Loading Loading @@ -1558,7 +1560,7 @@ Proj4js.Proj.aea = { this.sin_po=Math.sin(this.lat1); this.cos_po=Math.cos(this.lat1); this.t1=this.sin_po this.t1=this.sin_po; this.con = this.sin_po; this.ms1 = Proj4js.common.msfnz(this.e3,this.sin_po,this.cos_po); this.qs1 = Proj4js.common.qsfnz(this.e3,this.sin_po,this.cos_po); Loading Loading @@ -2387,7 +2389,7 @@ Proj4js.Proj.tmerc = { con = (this.ml0 + y / this.k0) / this.a; phi = con; for (i=0;;i++) { for (i=0;true;i++) { delta_phi=((con + this.e1 * Math.sin(2.0*phi) - this.e2 * Math.sin(4.0*phi) + this.e3 * Math.sin(6.0*phi)) / this.e0) - phi; phi += delta_phi; if (Math.abs(delta_phi) <= Proj4js.common.EPSLN) break; Loading Loading @@ -2794,7 +2796,7 @@ Proj4js.Proj.stere = { var lon = p.x; lon = Proj4js.common.adjust_lon(lon - this.long0); var lat = p.y; var x, y var x, y; if (this.sphere) { var sinphi, cosphi, coslam, sinlam; Loading Loading @@ -2830,7 +2832,7 @@ Proj4js.Proj.stere = { if (Math.abs(lat - Proj4js.common.HALF_PI) < this.TOL) { F_ERROR; } y = this.akm1 * Math.tan(Proj4js.common.FORTPI + .5 * lat) y = this.akm1 * Math.tan(Proj4js.common.FORTPI + .5 * lat); x = sinlam * y; y *= coslam; break; Loading Loading @@ -2876,7 +2878,7 @@ Proj4js.Proj.stere = { inverse: function(p) { var x = (p.x - this.x0)/this.a; /* descale and de-offset */ var y = (p.y - this.y0)/this.a; var lon, lat var lon, lat; var cosphi, sinphi, tp=0.0, phi_l=0.0, rho, halfe=0.0, pi2=0.0; var i; Loading Loading @@ -2943,7 +2945,7 @@ Proj4js.Proj.stere = { case this.N_POLE: y = -y; case this.S_POLE: tp = - rho / this.akm1 tp = - rho / this.akm1; phi_l = Proj4js.common.HALF_PI - 2. * Math.atan(tp); pi2 = -Proj4js.common.HALF_PI; halfe = -.5 * this.e; Loading @@ -2956,7 +2958,7 @@ Proj4js.Proj.stere = { if (this.mode == this.S_POLE) lat = -lat; lon = (x == 0. && y == 0.) ? 0. : Math.atan2(x, y); p.x = Proj4js.common.adjust_lon(lon + this.long0); p.y = lat p.y = lat; return p; } } Loading Loading @@ -3408,275 +3410,6 @@ Proj4js.Proj.sinu = { }; /* ====================================================================== projCode/geocent.js ====================================================================== */ /* Author: Richard Greenwood rich@greenwoodmap.com License: LGPL as per: http://www.gnu.org/copyleft/lesser.html */ /** * convert between geodetic coordinates (longitude, latitude, height) * and gecentric coordinates (X, Y, Z) * ported from Proj 4.9.9 geocent.c */ // following constants #define'd in geocent.h // var GEOCENT_NO_ERROR = 0x0000; // var GEOCENT_LAT_ERROR = 0x0001; /* DGR, 2008-09-04 : not necessary to have a global variable */ // var GEOCENT_LON_ERROR = 0x0002; // var cs.a_ERROR = 0x0004; // var cs.b_ERROR = 0x0008; // var cs.a_LESS_B_ERROR = 0x0010; // following constants from geocent.c // var COS_67P5 = 0.38268343236508977; /* cosine of 67.5 degrees */ /* DGR, 2008-09-04 : defined in proj4js.js */ // var AD_C = 1.0026000; /* Toms region 1 constant */ /* DGR, 2008-09-04 : defined in proj4js.js */ function cs_geodetic_to_geocentric (cs, p) { /* * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z), * according to the current ellipsoid parameters. * * Latitude : Geodetic latitude in radians (input) * Longitude : Geodetic longitude in radians (input) * Height : Geodetic height, in meters (input) * X : Calculated Geocentric X coordinate, in meters (output) * Y : Calculated Geocentric Y coordinate, in meters (output) * Z : Calculated Geocentric Z coordinate, in meters (output) * */ var GEOCENT_LAT_ERROR = 0x0001; var Longitude = p.x; var Latitude = p.y; var Height = p.z; var X; // output var Y; var Z; var Error_Code=0; // GEOCENT_NO_ERROR; var Rn; /* Earth radius at location */ var Sin_Lat; /* Math.sin(Latitude) */ var Sin2_Lat; /* Square of Math.sin(Latitude) */ var Cos_Lat; /* Math.cos(Latitude) */ /* ** Don't blow up if Latitude is just a little out of the value ** range as it may just be a rounding issue. Also removed longitude ** test, it should be wrapped by Math.cos() and Math.sin(). NFW for PROJ.4, Sep/2001. */ if( Latitude < -Proj4js.common.HALF_PI && Latitude > -1.001 * Proj4js.common.HALF_PI ) Latitude = -Proj4js.common.HALF_PI; else if( Latitude > Proj4js.common.HALF_PI && Latitude < 1.001 * Proj4js.common.HALF_PI ) Latitude = Proj4js.common.HALF_PI; else if ((Latitude < -Proj4js.common.HALF_PI) || (Latitude > Proj4js.common.HALF_PI)) { /* Latitude out of range */ Error_Code |= GEOCENT_LAT_ERROR; } if (!Error_Code) { /* no errors */ if (Longitude > PI) Longitude -= (2*PI); Sin_Lat = Math.sin(Latitude); Cos_Lat = Math.cos(Latitude); Sin2_Lat = Sin_Lat * Sin_Lat; Rn = cs.a / (Math.sqrt(1.0e0 - cs.es * Sin2_Lat)); X = (Rn + Height) * Cos_Lat * Math.cos(Longitude); Y = (Rn + Height) * Cos_Lat * Math.sin(Longitude); Z = ((Rn * (1 - cs.es)) + Height) * Sin_Lat; } p.x = X; p.y = Y; p.z = Z; return Error_Code; } // cs_geodetic_to_geocentric() /** Convert_Geocentric_To_Geodetic * The method used here is derived from 'An Improved Algorithm for * Geocentric to Geodetic Coordinate Conversion', by Ralph Toms, Feb 1996 */ function cs_geocentric_to_geodetic (cs, p) { var X = p.x; var Y = p.y; var Z = p.z; var Longitude; var Latitude; var Height; var W; /* distance from Z axis */ var W2; /* square of distance from Z axis */ var T0; /* initial estimate of vertical component */ var T1; /* corrected estimate of vertical component */ var S0; /* initial estimate of horizontal component */ var S1; /* corrected estimate of horizontal component */ var Sin_B0; /* Math.sin(B0), B0 is estimate of Bowring aux variable */ var Sin3_B0; /* cube of Math.sin(B0) */ var Cos_B0; /* Math.cos(B0) */ var Sin_p1; /* Math.sin(phi1), phi1 is estimated latitude */ var Cos_p1; /* Math.cos(phi1) */ var Rn; /* Earth radius at location */ var Sum; /* numerator of Math.cos(phi1) */ var At_Pole; /* indicates location is in polar region */ X = parseFloat(X); // cast from string to float Y = parseFloat(Y); Z = parseFloat(Z); At_Pole = false; if (X != 0.0) { Longitude = Math.atan2(Y,X); } else { if (Y > 0) { Longitude = Proj4js.common.HALF_PI; } else if (Y < 0) { Longitude = -Proj4js.common.HALF_PI; } else { At_Pole = true; Longitude = 0.0; if (Z > 0.0) { /* north pole */ Latitude = Proj4js.common.HALF_PI; } else if (Z < 0.0) { /* south pole */ Latitude = -Proj4js.common.HALF_PI; } else { /* center of earth */ Latitude = Proj4js.common.HALF_PI; Height = -cs.b; return; } } } W2 = X*X + Y*Y; W = Math.sqrt(W2); T0 = Z * Proj4js.common.AD_C; S0 = Math.sqrt(T0 * T0 + W2); Sin_B0 = T0 / S0; Cos_B0 = W / S0; Sin3_B0 = Sin_B0 * Sin_B0 * Sin_B0; T1 = Z + cs.b * cs.ep2 * Sin3_B0; Sum = W - cs.a * cs.es * Cos_B0 * Cos_B0 * Cos_B0; S1 = Math.sqrt(T1*T1 + Sum * Sum); Sin_p1 = T1 / S1; Cos_p1 = Sum / S1; Rn = cs.a / Math.sqrt(1.0 - cs.es * Sin_p1 * Sin_p1); if (Cos_p1 >= Proj4js.common.COS_67P5) { Height = W / Cos_p1 - Rn; } else if (Cos_p1 <= -Proj4js.common.COS_67P5) { Height = W / -Cos_p1 - Rn; } else { Height = Z / Sin_p1 + Rn * (cs.es - 1.0); } if (At_Pole == false) { Latitude = Math.atan(Sin_p1 / Cos_p1); } p.x = Longitude; p.y =Latitude; p.z = Height; return 0; } // cs_geocentric_to_geodetic() /****************************************************************/ // pj_geocentic_to_wgs84(defn, p ) // defn = coordinate system definition, // p = point to transform in geocentric coordinates (x,y,z) function cs_geocentric_to_wgs84( defn, p ) { if( defn.datum_type == Proj4js.common.PJD_3PARAM ) { // if( x[io] == HUGE_VAL ) // continue; p.x += defn.datum_params[0]; p.y += defn.datum_params[1]; p.z += defn.datum_params[2]; } else // if( defn.datum_type == Proj4js.common.PJD_7PARAM ) { var Dx_BF =defn.datum_params[0]; var Dy_BF =defn.datum_params[1]; var Dz_BF =defn.datum_params[2]; var Rx_BF =defn.datum_params[3]; var Ry_BF =defn.datum_params[4]; var Rz_BF =defn.datum_params[5]; var M_BF =defn.datum_params[6]; // if( x[io] == HUGE_VAL ) // continue; var x_out = M_BF*( p.x - Rz_BF*p.y + Ry_BF*p.z) + Dx_BF; var y_out = M_BF*( Rz_BF*p.x + p.y - Rx_BF*p.z) + Dy_BF; var z_out = M_BF*(-Ry_BF*p.x + Rx_BF*p.y + p.z) + Dz_BF; p.x = x_out; p.y = y_out; p.z = z_out; } } // cs_geocentric_to_wgs84 /****************************************************************/ // pj_geocentic_from_wgs84() // coordinate system definition, // point to transform in geocentric coordinates (x,y,z) function cs_geocentric_from_wgs84( defn, p ) { if( defn.datum_type == Proj4js.common.PJD_3PARAM ) { //if( x[io] == HUGE_VAL ) // continue; p.x -= defn.datum_params[0]; p.y -= defn.datum_params[1]; p.z -= defn.datum_params[2]; } else // if( defn.datum_type == Proj4js.common.PJD_7PARAM ) { var Dx_BF =defn.datum_params[0]; var Dy_BF =defn.datum_params[1]; var Dz_BF =defn.datum_params[2]; var Rx_BF =defn.datum_params[3]; var Ry_BF =defn.datum_params[4]; var Rz_BF =defn.datum_params[5]; var M_BF =defn.datum_params[6]; var x_tmp = (p.x - Dx_BF) / M_BF; var y_tmp = (p.y - Dy_BF) / M_BF; var z_tmp = (p.z - Dz_BF) / M_BF; //if( x[io] == HUGE_VAL ) // continue; p.x = x_tmp + Rz_BF*y_tmp - Ry_BF*z_tmp; p.y = -Rz_BF*x_tmp + y_tmp + Rx_BF*z_tmp; p.z = Ry_BF*x_tmp - Rx_BF*y_tmp + z_tmp; } } //cs_geocentric_from_wgs84() /* ====================================================================== projCode/vandg.js ====================================================================== */ Loading Loading @@ -4393,7 +4126,7 @@ Proj4js.Proj.laea = { var x = ksp * cos_lat * sin_delta_lon + this.x0; var y = ksp * (this.cos_lat_o * sin_lat - this.sin_lat_o * cos_lat * cos_delta_lon) + this.y0; p.x = x; p.y = y p.y = y; return p; },//lamazFwd() Loading Loading @@ -4446,8 +4179,8 @@ Proj4js.Proj.laea = { Proj4js.Proj.aeqd = { init : function() { this.sin_p12=Math.sin(this.lat0) this.cos_p12=Math.cos(this.lat0) this.sin_p12=Math.sin(this.lat0); this.cos_p12=Math.cos(this.lat0); }, forward: function(p) { Loading Loading @@ -4486,8 +4219,8 @@ Proj4js.Proj.aeqd = { } var z = rh / this.a; var sinz=Math.sin(z) var cosz=Math.cos(z) var sinz=Math.sin(z); var cosz=Math.cos(z); var lon = this.long0; var lat; Loading Loading @@ -4570,7 +4303,7 @@ Proj4js.Proj.moll = { /* Iterate using the Newton-Raphson method to find theta -----------------------------------------------------*/ for (var i=0;;i++) { for (var i=0;true;i++) { var delta_theta = -(theta + Math.sin(theta) - con)/ (1.0 + Math.cos(theta)); theta += delta_theta; if (Math.abs(delta_theta) < Proj4js.common.EPSLN) break; Loading lib/proj4js-compressed.js +13 −62 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
lib/proj4js-combined.js +17 −284 Original line number Diff line number Diff line Loading @@ -780,9 +780,11 @@ Proj4js.defs = { 'WGS84': "+title=long/lat:WGS84 +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees", 'EPSG:4326': "+title=long/lat:WGS84 +proj=longlat +a=6378137.0 +b=6356752.31424518 +ellps=WGS84 +datum=WGS84 +units=degrees", 'EPSG:4269': "+title=long/lat:NAD83 +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees", 'EPSG:900913': "+title= Google Mercator EPSG:900913 +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs" 'EPSG:3785': "+title= Google Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs" }; Proj4js.defs['GOOGLE'] = Proj4js.defs['EPSG:900913']; Proj4js.defs['GOOGLE'] = Proj4js.defs['EPSG:3785']; Proj4js.defs['EPSG:900913'] = Proj4js.defs['EPSG:3785']; Proj4js.defs['EPSG:102113'] = Proj4js.defs['EPSG:3785']; Proj4js.common = { PI : 3.141592653589793238, //Math.PI, Loading Loading @@ -1558,7 +1560,7 @@ Proj4js.Proj.aea = { this.sin_po=Math.sin(this.lat1); this.cos_po=Math.cos(this.lat1); this.t1=this.sin_po this.t1=this.sin_po; this.con = this.sin_po; this.ms1 = Proj4js.common.msfnz(this.e3,this.sin_po,this.cos_po); this.qs1 = Proj4js.common.qsfnz(this.e3,this.sin_po,this.cos_po); Loading Loading @@ -2387,7 +2389,7 @@ Proj4js.Proj.tmerc = { con = (this.ml0 + y / this.k0) / this.a; phi = con; for (i=0;;i++) { for (i=0;true;i++) { delta_phi=((con + this.e1 * Math.sin(2.0*phi) - this.e2 * Math.sin(4.0*phi) + this.e3 * Math.sin(6.0*phi)) / this.e0) - phi; phi += delta_phi; if (Math.abs(delta_phi) <= Proj4js.common.EPSLN) break; Loading Loading @@ -2794,7 +2796,7 @@ Proj4js.Proj.stere = { var lon = p.x; lon = Proj4js.common.adjust_lon(lon - this.long0); var lat = p.y; var x, y var x, y; if (this.sphere) { var sinphi, cosphi, coslam, sinlam; Loading Loading @@ -2830,7 +2832,7 @@ Proj4js.Proj.stere = { if (Math.abs(lat - Proj4js.common.HALF_PI) < this.TOL) { F_ERROR; } y = this.akm1 * Math.tan(Proj4js.common.FORTPI + .5 * lat) y = this.akm1 * Math.tan(Proj4js.common.FORTPI + .5 * lat); x = sinlam * y; y *= coslam; break; Loading Loading @@ -2876,7 +2878,7 @@ Proj4js.Proj.stere = { inverse: function(p) { var x = (p.x - this.x0)/this.a; /* descale and de-offset */ var y = (p.y - this.y0)/this.a; var lon, lat var lon, lat; var cosphi, sinphi, tp=0.0, phi_l=0.0, rho, halfe=0.0, pi2=0.0; var i; Loading Loading @@ -2943,7 +2945,7 @@ Proj4js.Proj.stere = { case this.N_POLE: y = -y; case this.S_POLE: tp = - rho / this.akm1 tp = - rho / this.akm1; phi_l = Proj4js.common.HALF_PI - 2. * Math.atan(tp); pi2 = -Proj4js.common.HALF_PI; halfe = -.5 * this.e; Loading @@ -2956,7 +2958,7 @@ Proj4js.Proj.stere = { if (this.mode == this.S_POLE) lat = -lat; lon = (x == 0. && y == 0.) ? 0. : Math.atan2(x, y); p.x = Proj4js.common.adjust_lon(lon + this.long0); p.y = lat p.y = lat; return p; } } Loading Loading @@ -3408,275 +3410,6 @@ Proj4js.Proj.sinu = { }; /* ====================================================================== projCode/geocent.js ====================================================================== */ /* Author: Richard Greenwood rich@greenwoodmap.com License: LGPL as per: http://www.gnu.org/copyleft/lesser.html */ /** * convert between geodetic coordinates (longitude, latitude, height) * and gecentric coordinates (X, Y, Z) * ported from Proj 4.9.9 geocent.c */ // following constants #define'd in geocent.h // var GEOCENT_NO_ERROR = 0x0000; // var GEOCENT_LAT_ERROR = 0x0001; /* DGR, 2008-09-04 : not necessary to have a global variable */ // var GEOCENT_LON_ERROR = 0x0002; // var cs.a_ERROR = 0x0004; // var cs.b_ERROR = 0x0008; // var cs.a_LESS_B_ERROR = 0x0010; // following constants from geocent.c // var COS_67P5 = 0.38268343236508977; /* cosine of 67.5 degrees */ /* DGR, 2008-09-04 : defined in proj4js.js */ // var AD_C = 1.0026000; /* Toms region 1 constant */ /* DGR, 2008-09-04 : defined in proj4js.js */ function cs_geodetic_to_geocentric (cs, p) { /* * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z), * according to the current ellipsoid parameters. * * Latitude : Geodetic latitude in radians (input) * Longitude : Geodetic longitude in radians (input) * Height : Geodetic height, in meters (input) * X : Calculated Geocentric X coordinate, in meters (output) * Y : Calculated Geocentric Y coordinate, in meters (output) * Z : Calculated Geocentric Z coordinate, in meters (output) * */ var GEOCENT_LAT_ERROR = 0x0001; var Longitude = p.x; var Latitude = p.y; var Height = p.z; var X; // output var Y; var Z; var Error_Code=0; // GEOCENT_NO_ERROR; var Rn; /* Earth radius at location */ var Sin_Lat; /* Math.sin(Latitude) */ var Sin2_Lat; /* Square of Math.sin(Latitude) */ var Cos_Lat; /* Math.cos(Latitude) */ /* ** Don't blow up if Latitude is just a little out of the value ** range as it may just be a rounding issue. Also removed longitude ** test, it should be wrapped by Math.cos() and Math.sin(). NFW for PROJ.4, Sep/2001. */ if( Latitude < -Proj4js.common.HALF_PI && Latitude > -1.001 * Proj4js.common.HALF_PI ) Latitude = -Proj4js.common.HALF_PI; else if( Latitude > Proj4js.common.HALF_PI && Latitude < 1.001 * Proj4js.common.HALF_PI ) Latitude = Proj4js.common.HALF_PI; else if ((Latitude < -Proj4js.common.HALF_PI) || (Latitude > Proj4js.common.HALF_PI)) { /* Latitude out of range */ Error_Code |= GEOCENT_LAT_ERROR; } if (!Error_Code) { /* no errors */ if (Longitude > PI) Longitude -= (2*PI); Sin_Lat = Math.sin(Latitude); Cos_Lat = Math.cos(Latitude); Sin2_Lat = Sin_Lat * Sin_Lat; Rn = cs.a / (Math.sqrt(1.0e0 - cs.es * Sin2_Lat)); X = (Rn + Height) * Cos_Lat * Math.cos(Longitude); Y = (Rn + Height) * Cos_Lat * Math.sin(Longitude); Z = ((Rn * (1 - cs.es)) + Height) * Sin_Lat; } p.x = X; p.y = Y; p.z = Z; return Error_Code; } // cs_geodetic_to_geocentric() /** Convert_Geocentric_To_Geodetic * The method used here is derived from 'An Improved Algorithm for * Geocentric to Geodetic Coordinate Conversion', by Ralph Toms, Feb 1996 */ function cs_geocentric_to_geodetic (cs, p) { var X = p.x; var Y = p.y; var Z = p.z; var Longitude; var Latitude; var Height; var W; /* distance from Z axis */ var W2; /* square of distance from Z axis */ var T0; /* initial estimate of vertical component */ var T1; /* corrected estimate of vertical component */ var S0; /* initial estimate of horizontal component */ var S1; /* corrected estimate of horizontal component */ var Sin_B0; /* Math.sin(B0), B0 is estimate of Bowring aux variable */ var Sin3_B0; /* cube of Math.sin(B0) */ var Cos_B0; /* Math.cos(B0) */ var Sin_p1; /* Math.sin(phi1), phi1 is estimated latitude */ var Cos_p1; /* Math.cos(phi1) */ var Rn; /* Earth radius at location */ var Sum; /* numerator of Math.cos(phi1) */ var At_Pole; /* indicates location is in polar region */ X = parseFloat(X); // cast from string to float Y = parseFloat(Y); Z = parseFloat(Z); At_Pole = false; if (X != 0.0) { Longitude = Math.atan2(Y,X); } else { if (Y > 0) { Longitude = Proj4js.common.HALF_PI; } else if (Y < 0) { Longitude = -Proj4js.common.HALF_PI; } else { At_Pole = true; Longitude = 0.0; if (Z > 0.0) { /* north pole */ Latitude = Proj4js.common.HALF_PI; } else if (Z < 0.0) { /* south pole */ Latitude = -Proj4js.common.HALF_PI; } else { /* center of earth */ Latitude = Proj4js.common.HALF_PI; Height = -cs.b; return; } } } W2 = X*X + Y*Y; W = Math.sqrt(W2); T0 = Z * Proj4js.common.AD_C; S0 = Math.sqrt(T0 * T0 + W2); Sin_B0 = T0 / S0; Cos_B0 = W / S0; Sin3_B0 = Sin_B0 * Sin_B0 * Sin_B0; T1 = Z + cs.b * cs.ep2 * Sin3_B0; Sum = W - cs.a * cs.es * Cos_B0 * Cos_B0 * Cos_B0; S1 = Math.sqrt(T1*T1 + Sum * Sum); Sin_p1 = T1 / S1; Cos_p1 = Sum / S1; Rn = cs.a / Math.sqrt(1.0 - cs.es * Sin_p1 * Sin_p1); if (Cos_p1 >= Proj4js.common.COS_67P5) { Height = W / Cos_p1 - Rn; } else if (Cos_p1 <= -Proj4js.common.COS_67P5) { Height = W / -Cos_p1 - Rn; } else { Height = Z / Sin_p1 + Rn * (cs.es - 1.0); } if (At_Pole == false) { Latitude = Math.atan(Sin_p1 / Cos_p1); } p.x = Longitude; p.y =Latitude; p.z = Height; return 0; } // cs_geocentric_to_geodetic() /****************************************************************/ // pj_geocentic_to_wgs84(defn, p ) // defn = coordinate system definition, // p = point to transform in geocentric coordinates (x,y,z) function cs_geocentric_to_wgs84( defn, p ) { if( defn.datum_type == Proj4js.common.PJD_3PARAM ) { // if( x[io] == HUGE_VAL ) // continue; p.x += defn.datum_params[0]; p.y += defn.datum_params[1]; p.z += defn.datum_params[2]; } else // if( defn.datum_type == Proj4js.common.PJD_7PARAM ) { var Dx_BF =defn.datum_params[0]; var Dy_BF =defn.datum_params[1]; var Dz_BF =defn.datum_params[2]; var Rx_BF =defn.datum_params[3]; var Ry_BF =defn.datum_params[4]; var Rz_BF =defn.datum_params[5]; var M_BF =defn.datum_params[6]; // if( x[io] == HUGE_VAL ) // continue; var x_out = M_BF*( p.x - Rz_BF*p.y + Ry_BF*p.z) + Dx_BF; var y_out = M_BF*( Rz_BF*p.x + p.y - Rx_BF*p.z) + Dy_BF; var z_out = M_BF*(-Ry_BF*p.x + Rx_BF*p.y + p.z) + Dz_BF; p.x = x_out; p.y = y_out; p.z = z_out; } } // cs_geocentric_to_wgs84 /****************************************************************/ // pj_geocentic_from_wgs84() // coordinate system definition, // point to transform in geocentric coordinates (x,y,z) function cs_geocentric_from_wgs84( defn, p ) { if( defn.datum_type == Proj4js.common.PJD_3PARAM ) { //if( x[io] == HUGE_VAL ) // continue; p.x -= defn.datum_params[0]; p.y -= defn.datum_params[1]; p.z -= defn.datum_params[2]; } else // if( defn.datum_type == Proj4js.common.PJD_7PARAM ) { var Dx_BF =defn.datum_params[0]; var Dy_BF =defn.datum_params[1]; var Dz_BF =defn.datum_params[2]; var Rx_BF =defn.datum_params[3]; var Ry_BF =defn.datum_params[4]; var Rz_BF =defn.datum_params[5]; var M_BF =defn.datum_params[6]; var x_tmp = (p.x - Dx_BF) / M_BF; var y_tmp = (p.y - Dy_BF) / M_BF; var z_tmp = (p.z - Dz_BF) / M_BF; //if( x[io] == HUGE_VAL ) // continue; p.x = x_tmp + Rz_BF*y_tmp - Ry_BF*z_tmp; p.y = -Rz_BF*x_tmp + y_tmp + Rx_BF*z_tmp; p.z = Ry_BF*x_tmp - Rx_BF*y_tmp + z_tmp; } } //cs_geocentric_from_wgs84() /* ====================================================================== projCode/vandg.js ====================================================================== */ Loading Loading @@ -4393,7 +4126,7 @@ Proj4js.Proj.laea = { var x = ksp * cos_lat * sin_delta_lon + this.x0; var y = ksp * (this.cos_lat_o * sin_lat - this.sin_lat_o * cos_lat * cos_delta_lon) + this.y0; p.x = x; p.y = y p.y = y; return p; },//lamazFwd() Loading Loading @@ -4446,8 +4179,8 @@ Proj4js.Proj.laea = { Proj4js.Proj.aeqd = { init : function() { this.sin_p12=Math.sin(this.lat0) this.cos_p12=Math.cos(this.lat0) this.sin_p12=Math.sin(this.lat0); this.cos_p12=Math.cos(this.lat0); }, forward: function(p) { Loading Loading @@ -4486,8 +4219,8 @@ Proj4js.Proj.aeqd = { } var z = rh / this.a; var sinz=Math.sin(z) var cosz=Math.cos(z) var sinz=Math.sin(z); var cosz=Math.cos(z); var lon = this.long0; var lat; Loading Loading @@ -4570,7 +4303,7 @@ Proj4js.Proj.moll = { /* Iterate using the Newton-Raphson method to find theta -----------------------------------------------------*/ for (var i=0;;i++) { for (var i=0;true;i++) { var delta_theta = -(theta + Math.sin(theta) - con)/ (1.0 + Math.cos(theta)); theta += delta_theta; if (Math.abs(delta_theta) < Proj4js.common.EPSLN) break; Loading
lib/proj4js-compressed.js +13 −62 File changed.Preview size limit exceeded, changes collapsed. Show changes