如何在度,分,秒之间转换为十进制坐标
2022-09-02 11:26:33
寻找一个java实用程序。如果你能告诉我如何使用geotools库做到这一点,那就更好了。
寻找一个java实用程序。如果你能告诉我如何使用geotools库做到这一点,那就更好了。
“十进制坐标”是指纬度和经度(也称为十进制度)吗?如果是这样,你试图做的事情就很容易了:
给定一个 DMS(度、分、秒)坐标(如 W87°43′41“),使用以下方法将其转换为十进制度数是微不足道的:计算总秒数,秒。小数部分是总秒数除以 3600。2621 / 3600 = ~0.728056 将小数度数加到整数度以产生最终结果:87 + 0.728056 = 87.728056
43′41″ = (43*60 + 41) = 2621
由于它是西经坐标,因此否定结果。最终结果是 -87.728056。
来自维基百科。这是一个Javascript小部件,可以做同样的事情。
这取决于您的源格式。如果已经分为度 (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;