Skip to content

Instantly share code, notes, and snippets.

@pmakokluev
Created October 11, 2022 15:46
Show Gist options
  • Select an option

  • Save pmakokluev/b86b2f29ea0392d60d1a9ed1c25aa879 to your computer and use it in GitHub Desktop.

Select an option

Save pmakokluev/b86b2f29ea0392d60d1a9ed1c25aa879 to your computer and use it in GitHub Desktop.
Расстояние между двумя точками на карте, заданными с помощью географических координат
// ported 2 GAS from https://ru.stackoverflow.com/questions/289889/%D0%A0%D0%B0%D1%81%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B5-%D0%BC%D0%B5%D0%B6%D0%B4%D1%83-%D0%B4%D0%B2%D1%83%D0%BC%D1%8F-%D1%82%D0%BE%D1%87%D0%BA%D0%B0%D0%BC%D0%B8-%D0%BD%D0%B0-%D0%BA%D0%B0%D1%80%D1%82%D0%B5-%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-%D0%B3%D0%B5%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85-%D0%BA%D0%BE%D0%BE%D1%80
function test_geodesicDistance() {
var gps_calc={
"183263": [
55.752368,
37.623879
],
"177951": [
59.925328,
30.411519
]
};
var lat1 = 77.1539;
var long1 = -139.398;
var lat2 = -77.1804;
var long2 = -139.55;
var r=geodesicDistance(lat1,long1,lat2,long2); // ~ 17166029 метров
Logger.log(r.toString());
var geo_lat_sbp=59.939084;
var geo_lon_spb=30.315879;
r=geodesicDistance(geo_lat_sbp,geo_lon_spb,gps_calc["177951"][0],gps_calc["177951"][1]);
Logger.log(r.toString());
r=geodesicDistance(geo_lat_sbp,geo_lon_spb,gps_calc["183263"][0],gps_calc["183263"][1]);
Logger.log(r.toString());
}
function geodesicDistance(a_latitude, a_longitude, b_latitude, b_longitude) {
const EarthRadiusInMeters = 6372797.560856;
const DegreeesToRad = 0.017453292519943295769236907684886;
var dtheta = (a_latitude - b_latitude) * DegreeesToRad,
dlambda = (a_longitude - b_longitude) * DegreeesToRad,
mean_t = (a_latitude + b_latitude) * DegreeesToRad / 2.0,
cos_meant = Math.cos(mean_t);
return EarthRadiusInMeters * Math.sqrt(dtheta * dtheta + cos_meant * cos_meant * dlambda * dlambda);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment