如何转换经纬度?
问题描述:
答
要转换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 coor的7 vs 5弧分dinate似乎是您输入数字的正确结果。
你在哪个平台/环境中工作? – 2010-04-25 19:17:53
@mmsmatt:这很重要吗?看起来更像是一个算法/数学公式问题。你怎么能从十进制坐标到小时 - 分钟秒N/S和E/W表示法。 – 2010-04-25 19:20:17
@GregS:对,十进制 - > hms转换是一个公式问题。但是附加一个城市名称看起来好像还有其他内容。 – 2010-04-25 19:23:15