如何改变经纬度?

时间:2010-04-25 19:15:56

标签: geocoding latitude-longitude coordinate-systems

如何根据这些数字计算:

51.501690392607,-0.1263427734375

到纬度和经度?

应该是

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

4 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

要转换51.501690392607,请先取整数部分51度。正值是北;负面是南方。

然后取小数部分:0.501690392607

乘以60:60 * 0.501690392607 = 30.10142355642

取整数部分30分钟。

然后取小数部分:0.10142355642

乘以60:6.0854133852

将秒数舍入到最接近的1。

你出来:51度北30分6秒。

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

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

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

答案 2 :(得分: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

答案 3 :(得分:1)

要将分数度数转换为度数和分钟数,请使用伪代码:

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

分别将“否定”数字转换为“S”和“W”(vs“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分钟弧度似乎是您给出的输入数字的正确结果。