如何从这些数字计算:
51.501690392607,-0.1263427734375
纬度和经度?
它应该是
英国伦敦 51° 32' N 0° 5' W
如何从这些数字计算:
51.501690392607,-0.1263427734375
纬度和经度?
它应该是
英国伦敦 51° 32' N 0° 5' W
要转换 51.501690392607,首先取整数部分为 51 度。正值是北;底片是南方。
然后取小数部分:0.501690392607
乘以 60:60 * 0.501690392607 = 30.10142355642
取整数部分 30 分钟。
然后取小数部分:0.10142355642
乘以 60:6.0854133852
秒数四舍五入到最接近的 1。
你得出:北纬 51 度 30 分 6 秒。
对于东/西方向,重复东正西负。
要找到城市,您必须使用一些数据库或其他东西......
我不知道为什么您的转换似乎不匹配。
两种表示之间的基本转换可以这样完成:
// 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
要将小数度数转换为度数和分钟数,请使用伪代码:
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 分钟弧似乎是您给出的输入数字的正确结果。