寻找一个Java工具。如果您能告诉我如何使用GeoTools库来完成它,那就更好了。
寻找一个Java工具。如果您能告诉我如何使用GeoTools库来完成它,那就更好了。
43′41″ = (43*60 + 41) = 2621
秒。分数部分是总秒数除以3600。2621 / 3600 = ~0.728056 将小数度添加到整数度以生成最终结果:87 + 0.728056 = 87.728056
由于它是一个西经坐标,所以取反结果。最终结果是-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;
**begin 23°26’49”**
degrees = 23
minutes = 26
seconds = 49
decimal = ((minutes * 60)+seconds) / (60*60))
answer = degrees + decimal
**finish 23.44694444**
简而言之
fun getNormal(value: String): Double {
val degree = value.substringBefore("°").toDouble()
val minute = value.substringAfter("°").substringBefore("'").toDouble()
val second = value.substringAfter("'").trim().toDouble()
return sign(degree) * (abs(degree) + (minute / 60.0) + (second / 3600.0))
}
getNormal("34° 31' 24.924") 返回 34.52359