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

2022-09-02 11:26:33

寻找一个java实用程序。如果你能告诉我如何使用geotools库做到这一点,那就更好了。


答案 1

“十进制坐标”是指纬度和经度(也称为十进制度)吗?如果是这样,你试图做的事情就很容易了:

给定一个 DMS(度、分、秒)坐标(如 W87°43′41“),使用以下方法将其转换为十进制度数是微不足道的:计算总秒数,秒。小数部分是总秒数除以 3600。2621 / 3600 = ~0.728056 将小数度数加到整数度以产生最终结果:87 + 0.728056 = 87.72805643′41″ = (43*60 + 41) = 2621

由于它是西经坐标,因此否定结果。最终结果是 -87.728056。

来自维基百科。这是一个Javascript小部件,可以做同样的事情。


答案 2

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

推荐