如何在度,分,秒之间转换为十进制坐标

时间:2011-11-25 01:13:28

标签: java geolocation geospatial geotools

寻找java实用程序。如果您可以使用geotools库告诉我如何使用它,那就更好了。

3 个答案:

答案 0 :(得分:21)

“十进制坐标”是指纬度和经度(也称为十进制度数)?如果是这样,你要做的事情很简单:

  

给定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做同样的事情。

答案 1 :(得分:21)

这取决于您的源格式。如果已经分为度(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;

答案 2 :(得分:8)

**begin  23°26’49”**
degrees = 23
minutes = 26
seconds = 49
decimal = ((minutes * 60)+seconds) / (60*60))
answer = degrees + decimal
**finish  23.44694444**