proj4 2.7.0 → 2.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bower.json +1 -1
- package/component.json +1 -1
- package/dist/proj4-src.js +237 -146
- package/dist/proj4.js +1 -1
- package/lib/Proj.js +3 -1
- package/lib/constants/Datum.js +2 -2
- package/lib/projString.js +3 -0
- package/lib/projections/lcc.js +14 -5
- package/lib/projections/omerc.js +200 -130
- package/package.json +2 -2
- package/publish.sh +1 -1
- package/test/testData.js +114 -21
package/bower.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "proj4",
|
|
3
|
-
"version": "2.7.
|
|
3
|
+
"version": "2.7.4",
|
|
4
4
|
"description": "Proj4js is a JavaScript library to transform point coordinates from one coordinate system to another, including datum transformations.",
|
|
5
5
|
"homepage": "https://github.com/proj4js/proj4js",
|
|
6
6
|
"main": "dist/proj4.js",
|
package/component.json
CHANGED
package/dist/proj4-src.js
CHANGED
|
@@ -127,6 +127,9 @@
|
|
|
127
127
|
alpha: function(v) {
|
|
128
128
|
self.alpha = parseFloat(v) * D2R;
|
|
129
129
|
},
|
|
130
|
+
gamma: function(v) {
|
|
131
|
+
self.rectified_grid_angle = parseFloat(v);
|
|
132
|
+
},
|
|
130
133
|
lonc: function(v) {
|
|
131
134
|
self.longc = v * D2R;
|
|
132
135
|
},
|
|
@@ -530,15 +533,14 @@
|
|
|
530
533
|
if (wkt.AXIS) {
|
|
531
534
|
var axisOrder = '';
|
|
532
535
|
for (var i = 0, ii = wkt.AXIS.length; i < ii; ++i) {
|
|
533
|
-
var axis = wkt.AXIS[i];
|
|
534
|
-
|
|
535
|
-
if (descriptor.indexOf('north') !== -1) {
|
|
536
|
+
var axis = [wkt.AXIS[i][0].toLowerCase(), wkt.AXIS[i][1].toLowerCase()];
|
|
537
|
+
if (axis[0].indexOf('north') !== -1 || ((axis[0] === 'y' || axis[0] === 'lat') && axis[1] === 'north')) {
|
|
536
538
|
axisOrder += 'n';
|
|
537
|
-
} else if (
|
|
539
|
+
} else if (axis[0].indexOf('south') !== -1 || ((axis[0] === 'y' || axis[0] === 'lat') && axis[1] === 'south')) {
|
|
538
540
|
axisOrder += 's';
|
|
539
|
-
} else if (
|
|
541
|
+
} else if (axis[0].indexOf('east') !== -1 || ((axis[0] === 'x' || axis[0] === 'lon') && axis[1] === 'east')) {
|
|
540
542
|
axisOrder += 'e';
|
|
541
|
-
} else if (
|
|
543
|
+
} else if (axis[0].indexOf('west') !== -1 || ((axis[0] === 'x' || axis[0] === 'lon') && axis[1] === 'west')) {
|
|
542
544
|
axisOrder += 'w';
|
|
543
545
|
}
|
|
544
546
|
}
|
|
@@ -641,12 +643,22 @@
|
|
|
641
643
|
};
|
|
642
644
|
var list = [
|
|
643
645
|
['standard_parallel_1', 'Standard_Parallel_1'],
|
|
646
|
+
['standard_parallel_1', 'Latitude of 1st standard parallel'],
|
|
644
647
|
['standard_parallel_2', 'Standard_Parallel_2'],
|
|
648
|
+
['standard_parallel_2', 'Latitude of 2nd standard parallel'],
|
|
645
649
|
['false_easting', 'False_Easting'],
|
|
650
|
+
['false_easting', 'False easting'],
|
|
651
|
+
['false-easting', 'Easting at false origin'],
|
|
646
652
|
['false_northing', 'False_Northing'],
|
|
653
|
+
['false_northing', 'False northing'],
|
|
654
|
+
['false_northing', 'Northing at false origin'],
|
|
647
655
|
['central_meridian', 'Central_Meridian'],
|
|
656
|
+
['central_meridian', 'Longitude of natural origin'],
|
|
657
|
+
['central_meridian', 'Longitude of false origin'],
|
|
648
658
|
['latitude_of_origin', 'Latitude_Of_Origin'],
|
|
649
659
|
['latitude_of_origin', 'Central_Parallel'],
|
|
660
|
+
['latitude_of_origin', 'Latitude of natural origin'],
|
|
661
|
+
['latitude_of_origin', 'Latitude of false origin'],
|
|
650
662
|
['scale_factor', 'Scale_Factor'],
|
|
651
663
|
['k0', 'scale_factor'],
|
|
652
664
|
['latitude_of_center', 'Latitude_Of_Center'],
|
|
@@ -1328,7 +1340,7 @@
|
|
|
1328
1340
|
};
|
|
1329
1341
|
|
|
1330
1342
|
exports$3.potsdam = {
|
|
1331
|
-
towgs84: "
|
|
1343
|
+
towgs84: "598.1,73.7,418.2,0.202,0.045,-2.455,6.7",
|
|
1332
1344
|
ellipse: "bessel",
|
|
1333
1345
|
datumName: "Potsdam Rauenberg 1950 DHDN"
|
|
1334
1346
|
};
|
|
@@ -1340,7 +1352,7 @@
|
|
|
1340
1352
|
};
|
|
1341
1353
|
|
|
1342
1354
|
exports$3.hermannskogel = {
|
|
1343
|
-
towgs84: "
|
|
1355
|
+
towgs84: "577.326,90.129,463.919,5.137,1.474,5.297,2.4232",
|
|
1344
1356
|
ellipse: "bessel",
|
|
1345
1357
|
datumName: "Hermannskogel"
|
|
1346
1358
|
};
|
|
@@ -1600,7 +1612,7 @@
|
|
|
1600
1612
|
if (json.datumCode && json.datumCode !== 'none') {
|
|
1601
1613
|
var datumDef = match(exports$3, json.datumCode);
|
|
1602
1614
|
if (datumDef) {
|
|
1603
|
-
json.datum_params = datumDef.towgs84 ? datumDef.towgs84.split(',') : null;
|
|
1615
|
+
json.datum_params = json.datum_params || (datumDef.towgs84 ? datumDef.towgs84.split(',') : null);
|
|
1604
1616
|
json.ellps = datumDef.ellipse;
|
|
1605
1617
|
json.datumName = datumDef.datumName ? datumDef.datumName : json.datumCode;
|
|
1606
1618
|
}
|
|
@@ -1608,6 +1620,8 @@
|
|
|
1608
1620
|
json.k0 = json.k0 || 1.0;
|
|
1609
1621
|
json.axis = json.axis || 'enu';
|
|
1610
1622
|
json.ellps = json.ellps || 'wgs84';
|
|
1623
|
+
json.lat1 = json.lat1 || json.lat0; // Lambert_Conformal_Conic_1SP, for example, needs this
|
|
1624
|
+
|
|
1611
1625
|
var sphere_ = sphere(json.a, json.b, json.rf, json.ellps, json.sphere);
|
|
1612
1626
|
var ecc = eccentricity(sphere_.a, sphere_.b, sphere_.rf, json.R_A);
|
|
1613
1627
|
var nadgrids = getNadgrids(json.nadgrids);
|
|
@@ -3988,166 +4002,234 @@
|
|
|
3988
4002
|
names: names$9
|
|
3989
4003
|
};
|
|
3990
4004
|
|
|
4005
|
+
var TOL = 1e-7;
|
|
4006
|
+
|
|
4007
|
+
function isTypeA(P) {
|
|
4008
|
+
var typeAProjections = ['Hotine_Oblique_Mercator','Hotine_Oblique_Mercator_Azimuth_Natural_Origin'];
|
|
4009
|
+
var projectionName = typeof P.PROJECTION === "object" ? Object.keys(P.PROJECTION)[0] : P.PROJECTION;
|
|
4010
|
+
|
|
4011
|
+
return 'no_uoff' in P || 'no_off' in P || typeAProjections.indexOf(projectionName) !== -1;
|
|
4012
|
+
}
|
|
4013
|
+
|
|
4014
|
+
|
|
3991
4015
|
/* Initialize the Oblique Mercator projection
|
|
3992
4016
|
------------------------------------------*/
|
|
3993
|
-
function init$9() {
|
|
3994
|
-
|
|
3995
|
-
|
|
3996
|
-
|
|
3997
|
-
|
|
3998
|
-
|
|
4017
|
+
function init$9() {
|
|
4018
|
+
var con, com, cosph0, D, F, H, L, sinph0, p, J, gamma = 0,
|
|
4019
|
+
gamma0, lamc = 0, lam1 = 0, lam2 = 0, phi1 = 0, phi2 = 0, alpha_c = 0;
|
|
4020
|
+
|
|
4021
|
+
// only Type A uses the no_off or no_uoff property
|
|
4022
|
+
// https://github.com/OSGeo/proj.4/issues/104
|
|
4023
|
+
this.no_off = isTypeA(this);
|
|
4024
|
+
this.no_rot = 'no_rot' in this;
|
|
4025
|
+
|
|
4026
|
+
var alp = false;
|
|
4027
|
+
if ("alpha" in this) {
|
|
4028
|
+
alp = true;
|
|
3999
4029
|
}
|
|
4000
|
-
var sinlat = Math.sin(this.lat0);
|
|
4001
|
-
var coslat = Math.cos(this.lat0);
|
|
4002
|
-
var con = this.e * sinlat;
|
|
4003
4030
|
|
|
4004
|
-
|
|
4005
|
-
|
|
4006
|
-
|
|
4007
|
-
var dl = this.bl / coslat * Math.sqrt((1 - this.es) / (1 - con * con));
|
|
4008
|
-
if (dl * dl < 1) {
|
|
4009
|
-
dl = 1;
|
|
4031
|
+
var gam = false;
|
|
4032
|
+
if ("rectified_grid_angle" in this) {
|
|
4033
|
+
gam = true;
|
|
4010
4034
|
}
|
|
4011
|
-
var fl;
|
|
4012
|
-
var gl;
|
|
4013
|
-
if (!isNaN(this.longc)) {
|
|
4014
|
-
//Central point and azimuth method
|
|
4015
4035
|
|
|
4016
|
-
|
|
4017
|
-
|
|
4036
|
+
if (alp) {
|
|
4037
|
+
alpha_c = this.alpha;
|
|
4038
|
+
}
|
|
4039
|
+
|
|
4040
|
+
if (gam) {
|
|
4041
|
+
gamma = (this.rectified_grid_angle * D2R);
|
|
4042
|
+
}
|
|
4043
|
+
|
|
4044
|
+
if (alp || gam) {
|
|
4045
|
+
lamc = this.longc;
|
|
4046
|
+
} else {
|
|
4047
|
+
lam1 = this.long1;
|
|
4048
|
+
phi1 = this.lat1;
|
|
4049
|
+
lam2 = this.long2;
|
|
4050
|
+
phi2 = this.lat2;
|
|
4051
|
+
|
|
4052
|
+
if (Math.abs(phi1 - phi2) <= TOL || (con = Math.abs(phi1)) <= TOL ||
|
|
4053
|
+
Math.abs(con - HALF_PI) <= TOL || Math.abs(Math.abs(this.lat0) - HALF_PI) <= TOL ||
|
|
4054
|
+
Math.abs(Math.abs(phi2) - HALF_PI) <= TOL) {
|
|
4055
|
+
throw new Error();
|
|
4018
4056
|
}
|
|
4019
|
-
|
|
4020
|
-
|
|
4057
|
+
}
|
|
4058
|
+
|
|
4059
|
+
var one_es = 1.0 - this.es;
|
|
4060
|
+
com = Math.sqrt(one_es);
|
|
4061
|
+
|
|
4062
|
+
if (Math.abs(this.lat0) > EPSLN) {
|
|
4063
|
+
sinph0 = Math.sin(this.lat0);
|
|
4064
|
+
cosph0 = Math.cos(this.lat0);
|
|
4065
|
+
con = 1 - this.es * sinph0 * sinph0;
|
|
4066
|
+
this.B = cosph0 * cosph0;
|
|
4067
|
+
this.B = Math.sqrt(1 + this.es * this.B * this.B / one_es);
|
|
4068
|
+
this.A = this.B * this.k0 * com / con;
|
|
4069
|
+
D = this.B * com / (cosph0 * Math.sqrt(con));
|
|
4070
|
+
F = D * D -1;
|
|
4071
|
+
|
|
4072
|
+
if (F <= 0) {
|
|
4073
|
+
F = 0;
|
|
4074
|
+
} else {
|
|
4075
|
+
F = Math.sqrt(F);
|
|
4076
|
+
if (this.lat0 < 0) {
|
|
4077
|
+
F = -F;
|
|
4078
|
+
}
|
|
4021
4079
|
}
|
|
4022
|
-
|
|
4023
|
-
|
|
4024
|
-
this.
|
|
4025
|
-
|
|
4026
|
-
|
|
4080
|
+
|
|
4081
|
+
this.E = F += D;
|
|
4082
|
+
this.E *= Math.pow(tsfnz(this.e, this.lat0, sinph0), this.B);
|
|
4083
|
+
} else {
|
|
4084
|
+
this.B = 1 / com;
|
|
4085
|
+
this.A = this.k0;
|
|
4086
|
+
this.E = D = F = 1;
|
|
4027
4087
|
}
|
|
4028
|
-
|
|
4029
|
-
|
|
4030
|
-
|
|
4031
|
-
|
|
4032
|
-
|
|
4033
|
-
|
|
4088
|
+
|
|
4089
|
+
if (alp || gam) {
|
|
4090
|
+
if (alp) {
|
|
4091
|
+
gamma0 = Math.asin(Math.sin(alpha_c) / D);
|
|
4092
|
+
if (!gam) {
|
|
4093
|
+
gamma = alpha_c;
|
|
4094
|
+
}
|
|
4095
|
+
} else {
|
|
4096
|
+
gamma0 = gamma;
|
|
4097
|
+
alpha_c = Math.asin(D * Math.sin(gamma0));
|
|
4034
4098
|
}
|
|
4035
|
-
|
|
4036
|
-
|
|
4037
|
-
|
|
4038
|
-
|
|
4039
|
-
|
|
4040
|
-
|
|
4041
|
-
|
|
4042
|
-
|
|
4043
|
-
|
|
4044
|
-
|
|
4045
|
-
|
|
4046
|
-
|
|
4047
|
-
|
|
4048
|
-
|
|
4049
|
-
|
|
4099
|
+
this.lam0 = lamc - Math.asin(0.5 * (F - 1 / F) * Math.tan(gamma0)) / this.B;
|
|
4100
|
+
} else {
|
|
4101
|
+
H = Math.pow(tsfnz(this.e, phi1, Math.sin(phi1)), this.B);
|
|
4102
|
+
L = Math.pow(tsfnz(this.e, phi2, Math.sin(phi2)), this.B);
|
|
4103
|
+
F = this.E / H;
|
|
4104
|
+
p = (L - H) / (L + H);
|
|
4105
|
+
J = this.E * this.E;
|
|
4106
|
+
J = (J - L * H) / (J + L * H);
|
|
4107
|
+
con = lam1 - lam2;
|
|
4108
|
+
|
|
4109
|
+
if (con < -Math.pi) {
|
|
4110
|
+
lam2 -=TWO_PI;
|
|
4111
|
+
} else if (con > Math.pi) {
|
|
4112
|
+
lam2 += TWO_PI;
|
|
4113
|
+
}
|
|
4114
|
+
|
|
4115
|
+
this.lam0 = adjust_lon(0.5 * (lam1 + lam2) - Math.atan(J * Math.tan(0.5 * this.B * (lam1 - lam2)) / p) / this.B);
|
|
4116
|
+
gamma0 = Math.atan(2 * Math.sin(this.B * adjust_lon(lam1 - this.lam0)) / (F - 1 / F));
|
|
4117
|
+
gamma = alpha_c = Math.asin(D * Math.sin(gamma0));
|
|
4050
4118
|
}
|
|
4051
|
-
|
|
4119
|
+
|
|
4120
|
+
this.singam = Math.sin(gamma0);
|
|
4121
|
+
this.cosgam = Math.cos(gamma0);
|
|
4122
|
+
this.sinrot = Math.sin(gamma);
|
|
4123
|
+
this.cosrot = Math.cos(gamma);
|
|
4124
|
+
|
|
4125
|
+
this.rB = 1 / this.B;
|
|
4126
|
+
this.ArB = this.A * this.rB;
|
|
4127
|
+
this.BrA = 1 / this.ArB;
|
|
4052
4128
|
if (this.no_off) {
|
|
4053
|
-
this.
|
|
4054
|
-
}
|
|
4055
|
-
|
|
4056
|
-
|
|
4057
|
-
|
|
4058
|
-
|
|
4059
|
-
|
|
4060
|
-
this.uc = -1 * this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha));
|
|
4061
|
-
}
|
|
4129
|
+
this.u_0 = 0;
|
|
4130
|
+
} else {
|
|
4131
|
+
this.u_0 = Math.abs(this.ArB * Math.atan(Math.sqrt(D * D - 1) / Math.cos(alpha_c)));
|
|
4132
|
+
|
|
4133
|
+
if (this.lat0 < 0) {
|
|
4134
|
+
this.u_0 = - this.u_0;
|
|
4135
|
+
}
|
|
4062
4136
|
}
|
|
4063
|
-
|
|
4137
|
+
|
|
4138
|
+
F = 0.5 * gamma0;
|
|
4139
|
+
this.v_pole_n = this.ArB * Math.log(Math.tan(FORTPI - F));
|
|
4140
|
+
this.v_pole_s = this.ArB * Math.log(Math.tan(FORTPI + F));
|
|
4064
4141
|
}
|
|
4065
4142
|
|
|
4143
|
+
|
|
4066
4144
|
/* Oblique Mercator forward equations--mapping lat,long to x,y
|
|
4067
4145
|
----------------------------------------------------------*/
|
|
4068
4146
|
function forward$8(p) {
|
|
4069
|
-
var
|
|
4070
|
-
var
|
|
4071
|
-
|
|
4072
|
-
|
|
4073
|
-
|
|
4074
|
-
|
|
4075
|
-
|
|
4076
|
-
|
|
4077
|
-
|
|
4078
|
-
|
|
4079
|
-
|
|
4080
|
-
|
|
4081
|
-
|
|
4082
|
-
|
|
4083
|
-
|
|
4084
|
-
|
|
4085
|
-
|
|
4086
|
-
|
|
4087
|
-
|
|
4088
|
-
|
|
4089
|
-
|
|
4090
|
-
|
|
4091
|
-
|
|
4092
|
-
|
|
4093
|
-
}
|
|
4094
|
-
|
|
4095
|
-
|
|
4096
|
-
|
|
4097
|
-
if (Math.abs(Math.cos(this.bl * (dlon))) <= EPSLN) {
|
|
4098
|
-
us = this.al * this.bl * (dlon);
|
|
4099
|
-
}
|
|
4100
|
-
else {
|
|
4101
|
-
us = this.al * Math.atan2(sl * Math.cos(this.gamma0) + vl * Math.sin(this.gamma0), Math.cos(this.bl * dlon)) / this.bl;
|
|
4102
|
-
}
|
|
4147
|
+
var coords = {};
|
|
4148
|
+
var S, T, U, V, W, temp, u, v;
|
|
4149
|
+
p.x = p.x - this.lam0;
|
|
4150
|
+
|
|
4151
|
+
if (Math.abs(Math.abs(p.y) - HALF_PI) > EPSLN) {
|
|
4152
|
+
W = this.E / Math.pow(tsfnz(this.e, p.y, Math.sin(p.y)), this.B);
|
|
4153
|
+
|
|
4154
|
+
temp = 1 / W;
|
|
4155
|
+
S = 0.5 * (W - temp);
|
|
4156
|
+
T = 0.5 * (W + temp);
|
|
4157
|
+
V = Math.sin(this.B * p.x);
|
|
4158
|
+
U = (S * this.singam - V * this.cosgam) / T;
|
|
4159
|
+
|
|
4160
|
+
if (Math.abs(Math.abs(U) - 1.0) < EPSLN) {
|
|
4161
|
+
throw new Error();
|
|
4162
|
+
}
|
|
4163
|
+
|
|
4164
|
+
v = 0.5 * this.ArB * Math.log((1 - U)/(1 + U));
|
|
4165
|
+
temp = Math.cos(this.B * p.x);
|
|
4166
|
+
|
|
4167
|
+
if (Math.abs(temp) < TOL) {
|
|
4168
|
+
u = this.A * p.x;
|
|
4169
|
+
} else {
|
|
4170
|
+
u = this.ArB * Math.atan2((S * this.cosgam + V * this.singam), temp);
|
|
4171
|
+
}
|
|
4172
|
+
} else {
|
|
4173
|
+
v = p.y > 0 ? this.v_pole_n : this.v_pole_s;
|
|
4174
|
+
u = this.ArB * p.y;
|
|
4103
4175
|
}
|
|
4104
|
-
|
|
4176
|
+
|
|
4105
4177
|
if (this.no_rot) {
|
|
4106
|
-
|
|
4107
|
-
|
|
4108
|
-
}
|
|
4109
|
-
|
|
4110
|
-
|
|
4111
|
-
|
|
4112
|
-
p.x = this.x0 + vs * Math.cos(this.alpha) + us * Math.sin(this.alpha);
|
|
4113
|
-
p.y = this.y0 + us * Math.cos(this.alpha) - vs * Math.sin(this.alpha);
|
|
4178
|
+
coords.x = u;
|
|
4179
|
+
coords.y = v;
|
|
4180
|
+
} else {
|
|
4181
|
+
u -= this.u_0;
|
|
4182
|
+
coords.x = v * this.cosrot + u * this.sinrot;
|
|
4183
|
+
coords.y = u * this.cosrot - v * this.sinrot;
|
|
4114
4184
|
}
|
|
4115
|
-
|
|
4185
|
+
|
|
4186
|
+
coords.x = (this.a * coords.x + this.x0);
|
|
4187
|
+
coords.y = (this.a * coords.y + this.y0);
|
|
4188
|
+
|
|
4189
|
+
return coords;
|
|
4116
4190
|
}
|
|
4117
4191
|
|
|
4118
4192
|
function inverse$8(p) {
|
|
4119
|
-
var
|
|
4193
|
+
var u, v, Qp, Sp, Tp, Vp, Up;
|
|
4194
|
+
var coords = {};
|
|
4195
|
+
|
|
4196
|
+
p.x = (p.x - this.x0) * (1.0 / this.a);
|
|
4197
|
+
p.y = (p.y - this.y0) * (1.0 / this.a);
|
|
4198
|
+
|
|
4120
4199
|
if (this.no_rot) {
|
|
4121
|
-
|
|
4122
|
-
|
|
4123
|
-
}
|
|
4124
|
-
|
|
4125
|
-
|
|
4126
|
-
us = (p.y - this.y0) * Math.cos(this.alpha) + (p.x - this.x0) * Math.sin(this.alpha);
|
|
4127
|
-
us += this.uc;
|
|
4128
|
-
}
|
|
4129
|
-
var qp = Math.exp(-1 * this.bl * vs / this.al);
|
|
4130
|
-
var sp = 0.5 * (qp - 1 / qp);
|
|
4131
|
-
var tp = 0.5 * (qp + 1 / qp);
|
|
4132
|
-
var vp = Math.sin(this.bl * us / this.al);
|
|
4133
|
-
var up = (vp * Math.cos(this.gamma0) + sp * Math.sin(this.gamma0)) / tp;
|
|
4134
|
-
var ts = Math.pow(this.el / Math.sqrt((1 + up) / (1 - up)), 1 / this.bl);
|
|
4135
|
-
if (Math.abs(up - 1) < EPSLN) {
|
|
4136
|
-
p.x = this.long0;
|
|
4137
|
-
p.y = HALF_PI;
|
|
4138
|
-
}
|
|
4139
|
-
else if (Math.abs(up + 1) < EPSLN) {
|
|
4140
|
-
p.x = this.long0;
|
|
4141
|
-
p.y = -1 * HALF_PI;
|
|
4200
|
+
v = p.y;
|
|
4201
|
+
u = p.x;
|
|
4202
|
+
} else {
|
|
4203
|
+
v = p.x * this.cosrot - p.y * this.sinrot;
|
|
4204
|
+
u = p.y * this.cosrot + p.x * this.sinrot + this.u_0;
|
|
4142
4205
|
}
|
|
4143
|
-
|
|
4144
|
-
|
|
4145
|
-
|
|
4206
|
+
|
|
4207
|
+
Qp = Math.exp(-this.BrA * v);
|
|
4208
|
+
Sp = 0.5 * (Qp - 1 / Qp);
|
|
4209
|
+
Tp = 0.5 * (Qp + 1 / Qp);
|
|
4210
|
+
Vp = Math.sin(this.BrA * u);
|
|
4211
|
+
Up = (Vp * this.cosgam + Sp * this.singam) / Tp;
|
|
4212
|
+
|
|
4213
|
+
if (Math.abs(Math.abs(Up) - 1) < EPSLN) {
|
|
4214
|
+
coords.x = 0;
|
|
4215
|
+
coords.y = Up < 0 ? -HALF_PI : HALF_PI;
|
|
4216
|
+
} else {
|
|
4217
|
+
coords.y = this.E / Math.sqrt((1 + Up) / (1 - Up));
|
|
4218
|
+
coords.y = phi2z(this.e, Math.pow(coords.y, 1 / this.B));
|
|
4219
|
+
|
|
4220
|
+
if (coords.y === Infinity) {
|
|
4221
|
+
throw new Error();
|
|
4222
|
+
}
|
|
4223
|
+
|
|
4224
|
+
coords.x = -this.rB * Math.atan2((Sp * this.cosgam - Vp * this.singam), Math.cos(this.BrA * u));
|
|
4146
4225
|
}
|
|
4147
|
-
|
|
4226
|
+
|
|
4227
|
+
coords.x += this.lam0;
|
|
4228
|
+
|
|
4229
|
+
return coords;
|
|
4148
4230
|
}
|
|
4149
4231
|
|
|
4150
|
-
var names$10 = ["Hotine_Oblique_Mercator", "Hotine Oblique Mercator", "Hotine_Oblique_Mercator_Azimuth_Natural_Origin", "Hotine_Oblique_Mercator_Azimuth_Center", "omerc"];
|
|
4232
|
+
var names$10 = ["Hotine_Oblique_Mercator", "Hotine Oblique Mercator", "Hotine_Oblique_Mercator_Azimuth_Natural_Origin", "Hotine_Oblique_Mercator_Two_Point_Natural_Origin", "Hotine_Oblique_Mercator_Azimuth_Center", "Oblique_Mercator", "omerc"];
|
|
4151
4233
|
var omerc = {
|
|
4152
4234
|
init: init$9,
|
|
4153
4235
|
forward: forward$8,
|
|
@@ -4156,16 +4238,18 @@
|
|
|
4156
4238
|
};
|
|
4157
4239
|
|
|
4158
4240
|
function init$10() {
|
|
4159
|
-
|
|
4160
|
-
//
|
|
4161
|
-
//double
|
|
4162
|
-
//double c_lon; /* center longitude */
|
|
4241
|
+
|
|
4242
|
+
//double lat0; /* the reference latitude */
|
|
4243
|
+
//double long0; /* the reference longitude */
|
|
4163
4244
|
//double lat1; /* first standard parallel */
|
|
4164
4245
|
//double lat2; /* second standard parallel */
|
|
4165
4246
|
//double r_maj; /* major axis */
|
|
4166
4247
|
//double r_min; /* minor axis */
|
|
4167
4248
|
//double false_east; /* x offset in meters */
|
|
4168
4249
|
//double false_north; /* y offset in meters */
|
|
4250
|
+
|
|
4251
|
+
//the above value can be set with proj4.defs
|
|
4252
|
+
//example: proj4.defs("EPSG:2154","+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs");
|
|
4169
4253
|
|
|
4170
4254
|
if (!this.lat2) {
|
|
4171
4255
|
this.lat2 = this.lat1;
|
|
@@ -4281,7 +4365,14 @@
|
|
|
4281
4365
|
return p;
|
|
4282
4366
|
}
|
|
4283
4367
|
|
|
4284
|
-
var names$11 = [
|
|
4368
|
+
var names$11 = [
|
|
4369
|
+
"Lambert Tangential Conformal Conic Projection",
|
|
4370
|
+
"Lambert_Conformal_Conic",
|
|
4371
|
+
"Lambert_Conformal_Conic_1SP",
|
|
4372
|
+
"Lambert_Conformal_Conic_2SP",
|
|
4373
|
+
"lcc"
|
|
4374
|
+
];
|
|
4375
|
+
|
|
4285
4376
|
var lcc = {
|
|
4286
4377
|
init: init$10,
|
|
4287
4378
|
forward: forward$9,
|
|
@@ -7075,7 +7166,7 @@
|
|
|
7075
7166
|
proj4$1.nadgrid = nadgrid;
|
|
7076
7167
|
proj4$1.transform = transform;
|
|
7077
7168
|
proj4$1.mgrs = mgrs;
|
|
7078
|
-
proj4$1.version = '2.7.
|
|
7169
|
+
proj4$1.version = '2.7.4';
|
|
7079
7170
|
includedProjections(proj4$1);
|
|
7080
7171
|
|
|
7081
7172
|
return proj4$1;
|