datum.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import {PJD_3PARAM, PJD_7PARAM, PJD_GRIDSHIFT, PJD_WGS84, PJD_NODATUM, SEC_TO_RAD} from './constants/values';
  2. function datum(datumCode, datum_params, a, b, es, ep2, nadgrids) {
  3. var out = {};
  4. if (datumCode === undefined || datumCode === 'none') {
  5. out.datum_type = PJD_NODATUM;
  6. } else {
  7. out.datum_type = PJD_WGS84;
  8. }
  9. if (datum_params) {
  10. out.datum_params = datum_params.map(parseFloat);
  11. if (out.datum_params[0] !== 0 || out.datum_params[1] !== 0 || out.datum_params[2] !== 0) {
  12. out.datum_type = PJD_3PARAM;
  13. }
  14. if (out.datum_params.length > 3) {
  15. if (out.datum_params[3] !== 0 || out.datum_params[4] !== 0 || out.datum_params[5] !== 0 || out.datum_params[6] !== 0) {
  16. out.datum_type = PJD_7PARAM;
  17. out.datum_params[3] *= SEC_TO_RAD;
  18. out.datum_params[4] *= SEC_TO_RAD;
  19. out.datum_params[5] *= SEC_TO_RAD;
  20. out.datum_params[6] = (out.datum_params[6] / 1000000.0) + 1.0;
  21. }
  22. }
  23. }
  24. if (nadgrids) {
  25. out.datum_type = PJD_GRIDSHIFT;
  26. out.grids = nadgrids;
  27. }
  28. out.a = a; //datum object also uses these values
  29. out.b = b;
  30. out.es = es;
  31. out.ep2 = ep2;
  32. return out;
  33. }
  34. export default datum;