【问题标题】:how to convert between degrees, minutes, seconds to Decimal coordinates如何在度、分、秒之间转换为十进制坐标
【发布时间】:2012-01-06 00:43:19
【问题描述】:

寻找 java 实用程序。如果你能告诉我如何使用geotools库来做就更好了。

【问题讨论】:

标签: java geolocation geospatial geotools


【解决方案1】:

您所说的“十进制坐标”是指纬度和经度(也称为十进制度)吗?如果是这样,那么您要做的事情就很简单了:

给定一个 DMS(度、分、秒)坐标,例如 W87°43′41″, 使用 以下方法: 计算总秒数,43′41″ = (43*60 + 41) = 2621 秒。小数部分是总秒数 乘以 3600。2621 / 3600 = ~0.728056 将分数度数加到整数上 产生最终结果的度数:87 + 0.728056 = 87.728056

因为是西经坐标,所以否定结果。 最终结果是-87.728056。

来自Wikipedia。这是一个 Javascript widget 做同样的事情。

【讨论】:

    【解决方案2】:
    **begin  23°26’49”**
    degrees = 23
    minutes = 26
    seconds = 49
    decimal = ((minutes * 60)+seconds) / (60*60))
    answer = degrees + decimal
    **finish  23.44694444**
    

    【讨论】:

    【解决方案3】:

    这取决于您的源格式。如果它已经分为度 (d)、分钟 (m) 和秒 (s),您的算法是:

    (假设 d 可以是正数或负数)

    dd = Math.signum(d) * (Math.abs(d) + (m / 60.0) + (s / 3600.0));
    

    如果将其组合成一个字符串,通常的格式是:

    “ddd.mmss”

    所以用正则表达式或者String.substring()解析出来得到m和s。

    转换回来是:

    d = (int)dd;  // Truncate the decimals
    t1 = (dd - d) * 60;
    m = (int)t1;
    s = (t1 - m) * 60;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-10
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      • 2018-10-16
      相关资源
      最近更新 更多