4

如何从这些数字计算:

51.501690392607,-0.1263427734375

纬度和经度?

它应该是

英国伦敦 51° 32' N 0° 5' W
4

4 回答 4

2

http://geography.about.com/library/howto/htdegrees.htm

这似乎行得通。

于 2010-04-25T19:20:54.587 回答
2

要转换 51.501690392607,首先取整数部分为 51 度。正值是北;底片是南方。

然后取小数部分:0.501690392607

乘以 60:60 * 0.501690392607 = 30.10142355642

取整数部分 30 分钟。

然后取小数部分:0.10142355642

乘以 60:6.0854133852

秒数四舍五入到最接近的 1。

你得出:北纬 51 度 30 分 6 秒。

对于东/西方向,重复东正西负。

要找到城市,您必须使用一些数据库或其他东西......

我不知道为什么您的转换似乎不匹配。

于 2010-04-25T19:21:47.323 回答
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
于 2010-04-25T19:24:44.430 回答
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

装饰(度数和分钟符号)取决于您的输出设备的字符集支持——W 坐标的 7 对 5 分钟弧似乎是您给出的输入数字的正确结果。

于 2010-04-25T19:30:20.800 回答