2010-04-25 6 views
3

Как рассчитать из этих чисел:Как преобразовать широту и долготу?

51.501690392607,-0.1263427734375 

широты и долготы?

Это должно быть

 
London, England 51° 32' N 0° 5' W 
+0

В какой платформе/среде вы работаете? –

+2

@mmsmatt: это имеет значение?Это скорее похоже на вопрос о алгоритме/математической формуле. Как вы можете перейти от десятичных координат к часам-минутах-секундам N/S и E/W-нотации. –

+0

@GregS: Правильно, десятичное преобразование -> hms является вопросом формулы. Но добавление названия города выглядит так, будто есть что-то еще. –

ответ

2

Чтобы преобразовать 51.501690392607, сначала возьмите целочисленную часть для 51 градуса. Положительные значения - север; негативы - юг.

Затем возьмите дробную часть: 0.501690392607

Multiply на 60: 60 * 0.501690392607 = 30.10142355642

Возьмите целую часть в течение 30 минут.

Затем возьмите дробную часть: 0.10142355642

Multiply на 60: 6.0854133852

округление до ближайшего 1 за секунды.

Вы получаете: 51 градус северного 30 минут 6 секунд.

Для направления Восток/Запад, повторите с восточным положительным и западным отрицательным.

Чтобы найти город, вам придется использовать некоторые базы данных или что-то ...

Я не знаю, почему ваша конверсия, кажется, не совпадают.

2

Основное преобразование между двумя представления можно сделать так:

// to decimal 
decimal = degree + minutes/60 + seconds/3600; 

// from decimal 
degree = int(decimal) 
remaining = decimal - degree 
minutes = int(remaining*60) 
remaining = remaining - minutes/60 
seconds = remaining*3600 
1

Чтобы преобразовать дробное число степеней в градусах и минутах, в псевдокоде:

degrees = int(frac) 
minutes = int((frac - degrees) * 60) 

преобразовать «негативный «числа в« S »и« W »(соответственно« N »и« E »), используйте« if ».

Просто сделать псевдокод исполняемый файл, мы могли бы использовать Python ...:

def translate(frac, islatitude): 
    if islatitude: decorate = "NS" 
    else: decorate = "EW" 
    if frac < 0: 
     dec = decorate[1] 
     frac = abs(frac) 
    else: 
     dec = decorate[0] 
    degrees = int(frac) 
    minutes = int((frac - degrees) * 60) 
    return "%d %d %s" % (degrees, minutes, dec) 

Так, например:

print translate(51.501690392607, True), 
print translate(-0.126342773437, False) 

будет испускать

51 30 N 0 7 W 

Наряжание (градусов и минуты) зависит от поддержки набора символов вашего устройства вывода - и 7 против 5 минут дуги для W coor по-видимому, правильный результат для вводимых вами номеров.

Смежные вопросы