Advertisement
Guest User

Untitled

a guest
Sep 26th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. const pino = require("pino");
  2. var pretty = pino.pretty();
  3. pretty.pipe(process.stdout);
  4. var log = pino(
  5. {
  6. name: "app",
  7. safe: true
  8. },
  9. pretty
  10. );
  11. const fs = require("fs");
  12. const _ = require("lodash");
  13. const moment = require("moment");
  14. const numeral = require("numeral");
  15. const fastXmlParser = require("fast-xml-parser");
  16. const geo = require("node-geo-distance");
  17.  
  18. let parsedGPX = fastXmlParser.parse(
  19. fs.readFileSync("./shui-yang-forest.gpx", "utf8"),
  20. {
  21. attrPrefix: "",
  22. ignoreNonTextNodeAttr: false
  23. }
  24. );
  25.  
  26. const points = parsedGPX.gpx.trk.trkseg.trkpt;
  27. let distanceHaversine = 0;
  28. let distanceVincenty = 0;
  29. for (let i = 0; i < points.length - 1; i++) {
  30. const coord1 = { latitude: +points[i].lat, longitude: +points[i].lon };
  31. const coord2 = {
  32. latitude: +points[i + 1].lat,
  33. longitude: +points[i + 1].lon
  34. };
  35. distanceHaversine += +geo.haversineSync(coord1, coord2);
  36. distanceVincenty += +geo.vincentySync(coord1, coord2);
  37. }
  38. const time = moment(_.last(points).time).diff(points[0].time);
  39.  
  40. log.info("distance (haversine): ", (distanceHaversine / 1000).toFixed(1), "km");
  41. log.info("distance (vincenty): ", (distanceVincenty / 1000).toFixed(1), "km");
  42. log.info("time: ", numeral(time / 1000).format("00:00:00"));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement