Как я могу преобразовать точку GPS из DDD MM.MMM (строка) в десятичную (широту и долготу)? - PullRequest
0 голосов
/ 17 сентября 2011

Мне нужно преобразовать точку GPS из DDD MM.MMM (строка) в десятичную (два значения: широта и долгота) с помощью Java.

Например, у меня есть эта строка:

String a = "N 39° 28.941 W 0° 23.275"

Мне нужно преобразовать эту строку в эти два значения:

double lat= 39.48235
double lon= -0.38792

Как я могу сделать это с помощью кода Java?

1 Ответ

2 голосов
/ 17 сентября 2011

Разобрать строку для этих шести значений:

  • N или S, чтобы определить знак широты (плюс или минус)
  • Степени (39 - часть передточка)
  • Двойное значение (28,941 - часть после точки)

... то же самое для долготы

Быстрый взлом для этого:

public class CoordTest {

    private static String  coords = "N 39° 28.941 W 0° 23.275";

    public static void main(String[] args) {
        String[] cArray = coords.split(" ");
        String latSign = cArray[0];
        String latDegrees = cArray[1].substring(0, cArray[1].length()-1);
        String latSubdegrees = cArray[2];
        String lonSign = cArray[3];
        String lonDegrees = cArray[4].substring(0, cArray[4].length()-1);
        String lonSubdegrees = cArray[5];
        double lat = getSign(latSign) * (Integer.valueOf(latDegrees) + convertFromDegreesToDecimal(Double.valueOf(latSubdegrees)));
        double lon = getSign(lonSign) * (Integer.valueOf(lonDegrees) + convertFromDegreesToDecimal(Double.valueOf(lonSubdegrees)));
    }


    private static int getSign(String c){
        if (c.equals("N") || c.equals("E")){
            return 1;
        }
        return -1;
    }

    private static double convertFromDegreesToDecimal(Double value){
        double result = value/60d;
        return result;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...