2011-09-17 2 views
0

DDD MM.MMM(文字列)からJavaを使用してGPSポイントを10進数(2つの値:緯度&経度)に変換する必要があります。例えば、私は、この文字列をGPSポイントをDDD MM.MMM(文字列)から10進数(緯度と経度)に変換するにはどうすればよいですか?

を持っている:

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

私はこれらの2つの値にその文字列を変換する必要があります。

double lat= 39.48235 
double lon= -0.38792 

私はJavaコードでそれを行うことができますどのように?

+0

がhttp://en.wikipedia.org/wiki/Geographic_coordinate_conversion#Conversion_from_Decimal_Degree_to_DMS –

答えて

2

解析これらの6つの値の文字列:緯度(プラスまたはマイナス)のの符号を決定する

  • N又はS
  • 度(39 - ドットの前の部分)
  • double値(28.941 - ドットの後の部分)

...経度

QUICで同じKそうするハック:

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; 
    } 
} 
+0

こんにちはメイト、機能「convertFromDegreesToDecimal」が使用されることはありませんを参照してください私はそれを必要とする何のために? – NullPointerException

+0

'double lat = getSign(latSign)*(Integer.valueOf(latDegrees)+ convertFromDegreesToDecimal(Double.valueOf(latSubdegrees)));'行はその関数を使用します。 私はちょうどあなたがwikiページに言及したことを見てきました。私がコード内で正しいことをしたことをうれしく思います。しかし、あなたがそのページを読むとき、その機能が本当に必要なのは明らかになるはずです。 – Christopher

+0

素晴らしい、あなたの仕事はwonderfullです、ありがとう! – NullPointerException

関連する問題