我从 GPS 接收到的纬度和经度格式如下:
纬度:3328.21103S 经度:07043.64734W
我需要将此数据转换为:
纬度:-33.4701838 经度:-70.7274557
如何在java中转换这些数据?
谢谢。
最诚挚的问候。
最佳答案
我是这样解决的:
1- 以度、分、秒、方向(N、S、W、E)表示的独立纬度和经度
2- 将度、分、秒、方向发送到方法 DMSaDecimal,返回:十进制的纬度或经度
public double DMSaDecimal(int grados, int minutos, double segundos, String direccion) {
double decimal = Math.signum(grados) * (Math.abs(grados) + (minutos / 60.0) + (segundos / 3600.0));
//reverse for south or west coordinates; north is assumed
if (direccion.equals("S") || direccion.equals("W")) {
decimal *= -1;
}
return decimal;
}
public String[] SeparararDMS(String coordenada, int type) {
String grados = null;
String minutos = null;
String segundos = null;
String direccion = null;
switch (type) {
case 1: // latitude
grados = coordenada.substring(0, 2);
minutos = coordenada.substring(2, 4);
segundos = coordenada.substring(5, coordenada.length() - 1);
break;
case 2: // longitude
grados = coordenada.substring(0, 3);
minutos = coordenada.substring(3, 5);
segundos = coordenada.substring(6, coordenada.length() - 1);
break;
default:
}
double sec = 0;
try {
sec = Double.parseDouble("0."+segundos);
}catch(Exception e) {
}
sec = (sec * 60);
direccion = coordenada.substring(coordenada.length() - 1);
String[] data = {grados, minutos, sec + "", direccion};
return data;
}
关于java - 如何在java中将纬度和经度从十进制dms转换为度数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22902803/