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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "proj4",
3
- "version": "2.7.0",
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "proj4",
3
- "version": "2.7.0",
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
  "repo": "proj4js/proj4js",
6
6
  "keywords": [
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
- var descriptor = axis[0].toLowerCase();
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 (descriptor.indexOf('south') !== -1) {
539
+ } else if (axis[0].indexOf('south') !== -1 || ((axis[0] === 'y' || axis[0] === 'lat') && axis[1] === 'south')) {
538
540
  axisOrder += 's';
539
- } else if (descriptor.indexOf('east') !== -1) {
541
+ } else if (axis[0].indexOf('east') !== -1 || ((axis[0] === 'x' || axis[0] === 'lon') && axis[1] === 'east')) {
540
542
  axisOrder += 'e';
541
- } else if (descriptor.indexOf('west') !== -1) {
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: "606.0,23.0,413.0",
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: "653.0,-212.0,449.0",
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
- this.no_off = this.no_off || false;
3995
- this.no_rot = this.no_rot || false;
3996
-
3997
- if (isNaN(this.k0)) {
3998
- this.k0 = 1;
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
- this.bl = Math.sqrt(1 + this.es / (1 - this.es) * Math.pow(coslat, 4));
4005
- this.al = this.a * this.bl * this.k0 * Math.sqrt(1 - this.es) / (1 - con * con);
4006
- var t0 = tsfnz(this.e, this.lat0, sinlat);
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
- if (this.lat0 >= 0) {
4017
- fl = dl + Math.sqrt(dl * dl - 1);
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
- else {
4020
- fl = dl - Math.sqrt(dl * dl - 1);
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
- this.el = fl * Math.pow(t0, this.bl);
4023
- gl = 0.5 * (fl - 1 / fl);
4024
- this.gamma0 = Math.asin(Math.sin(this.alpha) / dl);
4025
- this.long0 = this.longc - Math.asin(gl * Math.tan(this.gamma0)) / this.bl;
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
- else {
4029
- //2 points method
4030
- var t1 = tsfnz(this.e, this.lat1, Math.sin(this.lat1));
4031
- var t2 = tsfnz(this.e, this.lat2, Math.sin(this.lat2));
4032
- if (this.lat0 >= 0) {
4033
- this.el = (dl + Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl);
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
- else {
4036
- this.el = (dl - Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl);
4037
- }
4038
- var hl = Math.pow(t1, this.bl);
4039
- var ll = Math.pow(t2, this.bl);
4040
- fl = this.el / hl;
4041
- gl = 0.5 * (fl - 1 / fl);
4042
- var jl = (this.el * this.el - ll * hl) / (this.el * this.el + ll * hl);
4043
- var pl = (ll - hl) / (ll + hl);
4044
- var dlon12 = adjust_lon(this.long1 - this.long2);
4045
- this.long0 = 0.5 * (this.long1 + this.long2) - Math.atan(jl * Math.tan(0.5 * this.bl * (dlon12)) / pl) / this.bl;
4046
- this.long0 = adjust_lon(this.long0);
4047
- var dlon10 = adjust_lon(this.long1 - this.long0);
4048
- this.gamma0 = Math.atan(Math.sin(this.bl * (dlon10)) / gl);
4049
- this.alpha = Math.asin(dl * Math.sin(this.gamma0));
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.uc = 0;
4054
- }
4055
- else {
4056
- if (this.lat0 >= 0) {
4057
- this.uc = this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha));
4058
- }
4059
- else {
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 lon = p.x;
4070
- var lat = p.y;
4071
- var dlon = adjust_lon(lon - this.long0);
4072
- var us, vs;
4073
- var con;
4074
- if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {
4075
- if (lat > 0) {
4076
- con = -1;
4077
- }
4078
- else {
4079
- con = 1;
4080
- }
4081
- vs = this.al / this.bl * Math.log(Math.tan(FORTPI + con * this.gamma0 * 0.5));
4082
- us = -1 * con * HALF_PI * this.al / this.bl;
4083
- }
4084
- else {
4085
- var t = tsfnz(this.e, lat, Math.sin(lat));
4086
- var ql = this.el / Math.pow(t, this.bl);
4087
- var sl = 0.5 * (ql - 1 / ql);
4088
- var tl = 0.5 * (ql + 1 / ql);
4089
- var vl = Math.sin(this.bl * (dlon));
4090
- var ul = (sl * Math.sin(this.gamma0) - vl * Math.cos(this.gamma0)) / tl;
4091
- if (Math.abs(Math.abs(ul) - 1) <= EPSLN) {
4092
- vs = Number.POSITIVE_INFINITY;
4093
- }
4094
- else {
4095
- vs = 0.5 * this.al * Math.log((1 - ul) / (1 + ul)) / this.bl;
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
- p.x = this.x0 + us;
4107
- p.y = this.y0 + vs;
4108
- }
4109
- else {
4110
-
4111
- us -= this.uc;
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
- return p;
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 us, vs;
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
- vs = p.y - this.y0;
4122
- us = p.x - this.x0;
4123
- }
4124
- else {
4125
- vs = (p.x - this.x0) * Math.cos(this.alpha) - (p.y - this.y0) * Math.sin(this.alpha);
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
- else {
4144
- p.y = phi2z(this.e, ts);
4145
- p.x = adjust_lon(this.long0 - Math.atan2(sp * Math.cos(this.gamma0) - vp * Math.sin(this.gamma0), Math.cos(this.bl * us / this.al)) / this.bl);
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
- return p;
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
- // array of: r_maj,r_min,lat1,lat2,c_lon,c_lat,false_east,false_north
4161
- //double c_lat; /* center latitude */
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 = ["Lambert Tangential Conformal Conic Projection", "Lambert_Conformal_Conic", "Lambert_Conformal_Conic_2SP", "lcc"];
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.0';
7169
+ proj4$1.version = '2.7.4';
7079
7170
  includedProjections(proj4$1);
7080
7171
 
7081
7172
  return proj4$1;