18

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

4

3 回答 3

23

“十进制坐标”是指纬度和经度(也称为十进制度)?如果是这样,你想要做的很容易:

给定一个 DMS(度、分、秒)坐标,例如 W87°43'41",使用以下方法将其转换为十进制度数很简单:计算总秒数,43′41″ = (43*60 + 41) = 2621秒。小数部分是总秒数除以 3600。2621 / 3600 = ~0.728056 将小数度数与整数度数相加得到最终结果:87 + 0.728056 = 87.728056

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

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

于 2011-11-25T01:20:57.787 回答
23

这取决于您的源格式。如果它已经分为度 (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;
于 2011-11-25T01:23:24.467 回答
10
**begin  23°26’49”**
degrees = 23
minutes = 26
seconds = 49
decimal = ((minutes * 60)+seconds) / (60*60))
answer = degrees + decimal
**finish  23.44694444**
于 2013-04-20T08:34:04.417 回答