Adam Ierymenko 8 years ago
parent
commit
5fc1c1de28
1 changed files with 25 additions and 0 deletions
  1. 25 0
      lat_lon_to_xyz.js

+ 25 - 0
lat_lon_to_xyz.js

@@ -0,0 +1,25 @@
+'use strict'
+
+/* This is a utility to convert latitude/longitude into X,Y,Z coordinates as used by clustering. */
+
+if (process.argv.length !== 4) {
+  console.log('Usage: node lat_lon_to_xyz.js <latitude> <longitude');
+  process.exit(1);
+}
+
+var lat = parseFloat(process.argv[2])||0.0;
+var lon = parseFloat(process.argv[3])||0.0;
+
+var latRadians = lat * 0.01745329251994; // PI / 180
+var lonRadians = lon * 0.01745329251994; // PI / 180
+var cosLat = Math.cos(latRadians);
+
+console.log({
+  lat: lat,
+  lon: lon,
+  x: Math.round((-6371.0) * cosLat * Math.cos(lonRadians)),
+  y: Math.round(6371.0 * Math.sin(latRadians)),
+  z: Math.round(6371.0 * cosLat * Math.sin(lonRadians))
+});
+
+process.exit(0);