【问题标题】:How to transform latitude and longitude?如何转换经纬度?
【发布时间】:2010-04-25 19:15:56
【问题描述】:

如何根据这些数字计算:

51.501690392607,-0.1263427734375

要经纬度吗?

应该是

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

【问题讨论】:

  • 您在什么平台/环境下工作?
  • @mmsmatt:有关系吗?看起来更像是一个算法/数学公式问题。你怎么能从十进制坐标到小时-分钟-秒 N/S 和 E/W 表示法。
  • @GregS:对,小数-> hms 转换是一个公式问题。但是附加一个城市名称似乎涉及其他内容。
  • 啊,这座城市。你可能是对的。
  • "51.501690392607,-0.1263427734375" 纬度/经度,只是不是度/分格式。

标签: geocoding latitude-longitude coordinate-systems


【解决方案1】:

【讨论】:

    【解决方案2】:

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

    然后取小数部分:0.501690392607

    乘以 60:60 * 0.501690392607 = 30.10142355642

    取整数部分 30 分钟。

    然后取小数部分:0.10142355642

    乘以 60:6.0854133852

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

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

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

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

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

    【讨论】:

      【解决方案3】:

      两种表示之间的基本转换可以这样完成:

      // 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
      

      【讨论】:

        【解决方案4】:

        用伪代码将小数度数转换为度数和分钟数:

        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 分钟弧似乎是您提供的输入数字的正确结果。

        【讨论】:

          猜你喜欢
          • 2012-12-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-11
          • 2010-10-12
          • 1970-01-01
          • 2012-04-25
          相关资源
          最近更新 更多