| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- var Datum = require('./constants/Datum');
- var Ellipsoid = require('./constants/Ellipsoid');
- var extend = require('./extend');
- var datum = require('./datum');
- var EPSLN = 1.0e-10;
- // ellipoid pj_set_ell.c
- var SIXTH = 0.1666666666666666667;
- /* 1/6 */
- var RA4 = 0.04722222222222222222;
- /* 17/360 */
- var RA6 = 0.02215608465608465608;
- module.exports = function(json) {
- // DGR 2011-03-20 : nagrids -> nadgrids
- if (json.datumCode && json.datumCode !== 'none') {
- var datumDef = Datum[json.datumCode];
- if (datumDef) {
- json.datum_params = datumDef.towgs84 ? datumDef.towgs84.split(',') : null;
- json.ellps = datumDef.ellipse;
- json.datumName = datumDef.datumName ? datumDef.datumName : json.datumCode;
- }
- }
- if (!json.a) { // do we have an ellipsoid?
- var ellipse = Ellipsoid[json.ellps] ? Ellipsoid[json.ellps] : Ellipsoid.WGS84;
- extend(json, ellipse);
- }
- if (json.rf && !json.b) {
- json.b = (1.0 - 1.0 / json.rf) * json.a;
- }
- if (json.rf === 0 || Math.abs(json.a - json.b) < EPSLN) {
- json.sphere = true;
- json.b = json.a;
- }
- json.a2 = json.a * json.a; // used in geocentric
- json.b2 = json.b * json.b; // used in geocentric
- json.es = (json.a2 - json.b2) / json.a2; // e ^ 2
- json.e = Math.sqrt(json.es); // eccentricity
- if (json.R_A) {
- json.a *= 1 - json.es * (SIXTH + json.es * (RA4 + json.es * RA6));
- json.a2 = json.a * json.a;
- json.b2 = json.b * json.b;
- json.es = 0;
- }
- json.ep2 = (json.a2 - json.b2) / json.b2; // used in geocentric
- if (!json.k0) {
- json.k0 = 1.0; //default value
- }
- //DGR 2010-11-12: axis
- if (!json.axis) {
- json.axis = "enu";
- }
- if (!json.datum) {
- json.datum = datum(json);
- }
- return json;
- };
|