Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
906
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Расчет Расстояния Между 2 Городами
Как вы рассчитываете расстояние между 2 городами?
Если вам нужно принять во внимание кривизну Земли, то расстояние Большого Круга-это то, что вы ищете. Статья в Википедии , вероятно, лучше объясняет, как работает формула, чем я, и есть также эта страница авиационного формуляра , которая охватывает это более подробно.
Формулы - это только первая часть головоломки, хотя, если вам нужно сделать эту работу для произвольных городов, вам понадобится база данных местоположения, чтобы получить lat/long. К счастью, вы можете получить это бесплатно от Geonames.org, хотя есть коммерческие базы данных, доступные (спросите google). Итак, в общем случае, найдите два города, которые вы хотите, получите lat/long co-orinates и подключите их к формуле, как в Примере Википедии .
Другие советы:
- Для полного коммерческого решения, есть ПК Милер который используется многими автотранспортными компаниями в рассчитайте стоимость доставки.
- Совершайте звонки на Google Maps (или другие) api. Если вам нужно сделать много запросов в день, рассмотрите возможность кэширования результатов на сервере.
- Также очень важно рассмотреть возможность создания базы данных эквивалентности для городов, пригородов, городов и т.д. если вы думаете, что вам когда-нибудь понадобится группировать свои данные. Это становится действительно сложным, хотя, и вы не можете найти one-size-fits-all решение для вашей проблемы.
И последнее, но не менее важное: Джоэл написал статью об этой проблеме некоторое время назад, так что вот вам: новая функция: поиск работы
Если вы работаете в самолете и вам нужно Евклидово расстояние "как летит ворона":
// Cities are points x0,y0 and x1,y1 in kilometers or miles or Smoots[1]
dx = x1 - x0;
dy = y1 - y0;
dist = sqrt(dx*dx + dy*y);
Никакой тригонометрии не нужно! Просто теорема Пифагора и тот факт, что квадраты всегда положительны, поэтому вам не нужно dx = abs(x1 - x0) и т. д. чтобы получить положительное число, нужно перейти к sqrt().
Обратите внимание, что вы, вероятно, могли бы сделать это в одной строке, и компилятор, вероятно, уменьшил бы его эквивалентный выше код:
dist = sqrt((x1-x0)*(x1-x0) + (y1-y0)*(y1-y0));
[1] http://en.wikipedia.org/wiki/Smoot
Если вы говорите о самом коротком расстоянии между двумя реальными городами на реальной сферической планете, такой как Земля, то вам нужно расстояние большого круга .
Расстояние между двумя городами можно узнать из google map api. Вот его реализация в Python
#!/usr/bin/python
import requests
from sys import argv
def get_distance(origin,destination):
gmap='http://maps.googleapis.com/maps/api/distancematrix/json'
payload={"origins":origin,"destinations":destination,"sensor":'false' }
try:
a=requests.get(gmap,params=payload)
data = a.json()
origin = str(data['origin_addresses'][0])
destination= str(data['destination_addresses'][0])
distance = data['rows'][0]['elements'][0]['distance']['text']
return distance,origin,destination
except Exception,e:
print "The %s or %destination does not exists :(" %(origin,destination)
exit()
if __name__=="__main__":
if len(argv)<3:
print "sorry Check the format"
else:
origin=argv[1]
destination=argv[2]
distance,origin,destination=get_distance(origin,destination)
print "%s ---> %s : %s" %(origin,destination,distance)
Пример ссылки: https://gist.github.com/sarathsp06/cf063e47bcc515b51c84
Я согласен, что как только у вас есть информация, если она не изменится, сохраните ее как-нибудь. @Marko Тинто благодарит за образец Т-SQL. Для тех, кто не имеет доступа к серверу SQL или предпочитает другой метод: Если вам нужна высокая точность, проверьте запись Википедии об алгоритме Винсенти для получения дополнительной информации. Я считаю, что существует реализация js, которая была бы (если уже не была) легко портирована на другие языки. Кроме того , в нижней части этой страницы находится ссылка на geographicLib, которая якобы в 1000 раз точнее алгоритма Винсенти (если у вас есть такие хорошие данные, это может иметь значение).
Зачем вам использовать что-то вроде метода Винсенти? Потому что Земля не является совершенной сферой, и подобные методы позволяют вводить более точную большую и меньшую оси для моделирования земли.
Для получения расстояния между двумя городами лучше использовать таблицу поиска.
Это имеет смысл, потому что * Формула для расчета расстояния АИС достаточно вычислительно интенсивна.. * Расстояние между городами вряд ли изменится.
Поэтому, если вам не нужны очень конкретные данные (например, карта местности со спутника или какой-то другой алгоритм топографии или что-то еще), вы должны просто сохранить список городов и расстояний между ними в таблицу и искать его по мере необходимости.
В последнее время я много работаю с этим. Я нахожу, что новые функции SQL2008 действительно облегчают эту задачу. Я могу найти все точки, которые находятся в пределах Xkm таблицы рекордов 100k в sub-second time...not too shabby.
Метод большого круга (сферическое предположение) в моем тестировании был примерно в 28 милях от формулы Винсенти (элипсоидальное предположение, которое и есть земля).
Настоящая хитрость заключается в том, чтобы получить lat и long..for, которые я использую в Google.