Мне нужно было рассчитать много расстояний между точками для моего проекта, поэтому я пошел дальше и попытался оптимизировать код, который я нашел здесь. В среднем в разных браузерах моя новая реализация работает в 2 раза быстрее , чем ответ с наибольшим количеством голосов.
function distance(lat1, lon1, lat2, lon2) {
var p = 0.017453292519943295; // Math.PI / 180
var c = Math.cos;
var a = 0.5 - c((lat2 - lat1) * p)/2 +
c(lat1 * p) * c(lat2 * p) *
(1 - c((lon2 - lon1) * p))/2;
return 12742 * Math.asin(Math.sqrt(a)); // 2 * R; R = 6371 km
}
Вы можете поиграть с моим jsPerf и посмотреть результаты здесь .
Недавно мне нужно было сделать то же самое в python, так что вот реализация python :
from math import cos, asin, sqrt
def distance(lat1, lon1, lat2, lon2):
p = 0.017453292519943295 #Pi/180
a = 0.5 - cos((lat2 - lat1) * p)/2 + cos(lat1 * p) * cos(lat2 * p) * (1 - cos((lon2 - lon1) * p)) / 2
return 12742 * asin(sqrt(a)) #2*R*asin...
И для полноты: Haversine on вики.
Вы не можете сделать этого с GUI, но это действительно просто с командной строкой:
я предположу ради моего объяснения, что Вы хотите создать репозиторий для своих частных данных и один для Ваших данных работы.
1) Открывают новый Терминал с CTRL + ALT + T .
2) Создают новый каталог с mkdir private_drive
.
3) Вводят Ваш каталог с cd private_drive
.
4) Инициализируют grive репозиторий с командой grive -a
.
5), терминал показывает Вам ссылку. Откройте его со своим браузером и подключением с помощью Вашей частной учетной записи Google. Вставьте маркерный код в своем терминале (щелчком правой кнопкой, CTRL+V не работает), и нажмите Enter.
6) Возвращаются к родительскому каталогу с cd ..
.
7) Повторение ступает 2) через 5) с каталогом work_drive
и Вашей учетной записью Google работы.
Примечания:
grive
. grive -h
.