mirror of
https://github.com/proj4js/proj4js.git
synced 2026-01-25 16:26:11 +00:00
Because when inside vendor/lib or /views/lib, erica is unable to push for instance constants.js AND constants/ since they become identical prop names.
117 lines
2.8 KiB
JavaScript
117 lines
2.8 KiB
JavaScript
var common = require('./common');
|
|
var constants = require('./constants/index');
|
|
module.exports = function(defData) {
|
|
var self = {};
|
|
|
|
var paramObj = {};
|
|
defData.split("+").map(function(v) {
|
|
return v.trim();
|
|
}).filter(function(a) {
|
|
return a;
|
|
}).forEach(function(a) {
|
|
var split = a.split("=");
|
|
split.push(true);
|
|
paramObj[split[0].toLowerCase()] = split[1];
|
|
});
|
|
var paramName, paramVal, paramOutname;
|
|
var params = {
|
|
proj: 'projName',
|
|
datum: 'datumCode',
|
|
rf: function(v) {
|
|
self.rf = parseFloat(v, 10);
|
|
},
|
|
lat_0: function(v) {
|
|
self.lat0 = v * common.D2R;
|
|
},
|
|
lat_1: function(v) {
|
|
self.lat1 = v * common.D2R;
|
|
},
|
|
lat_2: function(v) {
|
|
self.lat2 = v * common.D2R;
|
|
},
|
|
lat_ts: function(v) {
|
|
self.lat_ts = v * common.D2R;
|
|
},
|
|
lon_0: function(v) {
|
|
self.long0 = v * common.D2R;
|
|
},
|
|
lon_1: function(v) {
|
|
self.long1 = v * common.D2R;
|
|
},
|
|
lon_2: function(v) {
|
|
self.long2 = v * common.D2R;
|
|
},
|
|
alpha: function(v) {
|
|
self.alpha = parseFloat(v) * common.D2R;
|
|
},
|
|
lonc: function(v) {
|
|
self.longc = v * common.D2R;
|
|
},
|
|
x_0: function(v) {
|
|
self.x0 = parseFloat(v, 10);
|
|
},
|
|
y_0: function(v) {
|
|
self.y0 = parseFloat(v, 10);
|
|
},
|
|
k_0: function(v) {
|
|
self.k0 = parseFloat(v, 10);
|
|
},
|
|
k: function(v) {
|
|
self.k0 = parseFloat(v, 10);
|
|
},
|
|
r_a: function() {
|
|
self.R_A = true;
|
|
},
|
|
zone: function(v) {
|
|
self.zone = parseInt(v, 10);
|
|
},
|
|
south: function() {
|
|
self.utmSouth = true;
|
|
},
|
|
towgs84: function(v) {
|
|
self.datum_params = v.split(",").map(function(a) {
|
|
return parseFloat(a, 10);
|
|
});
|
|
},
|
|
to_meter: function(v) {
|
|
self.to_meter = parseFloat(v, 10);
|
|
},
|
|
from_greenwich: function(v) {
|
|
self.from_greenwich = v * common.D2R;
|
|
},
|
|
pm: function(v) {
|
|
self.from_greenwich = (constants.PrimeMeridian[v] ? constants.PrimeMeridian[v] : parseFloat(v, 10)) * common.D2R;
|
|
},
|
|
nadgrids: function(v) {
|
|
if (v === '@null') {
|
|
self.datumCode = 'none';
|
|
}
|
|
else {
|
|
self.nadgrids = v;
|
|
}
|
|
},
|
|
axis: function(v) {
|
|
var legalAxis = "ewnsud";
|
|
if (v.length === 3 && legalAxis.indexOf(v.substr(0, 1)) !== -1 && legalAxis.indexOf(v.substr(1, 1)) !== -1 && legalAxis.indexOf(v.substr(2, 1)) !== -1) {
|
|
self.axis = v;
|
|
}
|
|
}
|
|
};
|
|
for (paramName in paramObj) {
|
|
paramVal = paramObj[paramName];
|
|
if (paramName in params) {
|
|
paramOutname = params[paramName];
|
|
if (typeof paramOutname === 'function') {
|
|
paramOutname(paramVal);
|
|
}
|
|
else {
|
|
self[paramOutname] = paramVal;
|
|
}
|
|
}
|
|
else {
|
|
self[paramName] = paramVal;
|
|
}
|
|
}
|
|
return self;
|
|
};
|