2014-12-06 47 views
0

我正在嘗試創建這個http://www.ibm.com/developerworks/library/j-coordconvert/-軍事網格參考系統的可視網格。我有緯度/經度UTM同時也MGRS ......其中Ar無法循環播放對象

17牛逼330649 4689666

17TLG3064989666

但是從MGRS當進入北緯我得到如下: [[email protected]

public class CoordinateConversion { 
    public static void main(String args[]) { 

     CoordinateConversion test = new CoordinateConversion(); 
     CoordinateConversion test2 = new CoordinateConversion(); 
     test.latLon2UTM(35.58, 82.56); 
     System.out.println(test.latLon2UTM(42.340837, -83.055821)); 
     System.out.println(); 
     test2.latLon2UTM(35.58, 82.56); 
     System.out.println(test2.latLon2MGRUTM(42.340837, -83.055821)); 

     CoordinateConversion test3 = new CoordinateConversion(); 
     test3.latLon2UTM(35.58, 82.56); 
     //System.out.print(test3.mgrutm2LatLong(42.340837, -83.055821)); 
     //System.out.println(test3.mgrutm2LatLong("02CNR0634657742")); 


     MGRUTM2LatLon mg = new MGRUTM2LatLon(); 
     //mg.convertMGRUTMToLatLong("02CNR0634657742"); 
     String MGRUTM = "17TLG3064989666"; 
     System.out.println(mg.convertMGRUTMToLatLong(MGRUTM)); 
     //for loop to be developed 

    } 

    public double[] utm2LatLon(String UTM) { 
     UTM2LatLon c = new UTM2LatLon(); 
     return c.convertUTMToLatLong(UTM); 
    } 

    public double[] mgrutm2LatLon(String MGRUTM) { 
     MGRUTM2LatLon c = new MGRUTM2LatLon(); 
     return c.convertMGRUTMToLatLong(MGRUTM); 
    } 
} 

,並從這個類:

public double[] convertMGRUTMToLatLong(String mgrutm) { 
    double[] latlon = {0.0, 0.0}; 
    // 02CNR0634657742 
    int zone = Integer.parseInt(mgrutm.substring(0, 2)); 
    String latZone = mgrutm.substring(2, 3); 

    String digraph1 = mgrutm.substring(3, 4); 
    String digraph2 = mgrutm.substring(4, 5); 
    easting = Double.parseDouble(mgrutm.substring(5, 10)); 
    northing = Double.parseDouble(mgrutm.substring(10, 15)); 

    LatZones lz = new LatZones(); 
    double latZoneDegree = lz.getLatZoneDegree(latZone); 

    double a1 = latZoneDegree * 40000000/360.0; 
    double a2 = 2000000 * Math.floor(a1/2000000.0); 

    Digraphs digraphs = new Digraphs(); 

    double digraph2Index = digraphs.getDigraph2Index(digraph2); 

    double startindexEquator = 1; 
    if ((1 + zone % 2) == 1) { 
     startindexEquator = 6; 
    } 

    double a3 = a2 + (digraph2Index - startindexEquator) * 100000; 
    if (a3 <= 0) { 
     a3 = 10000000 + a3; 
    } 
    northing = a3 + northing; 

    zoneCM = -183 + 6 * zone; 
    double digraph1Index = digraphs.getDigraph1Index(digraph1); 
    int a5 = 1 + zone % 3; 
    double[] a6 = {16, 0, 8}; 
    double a7 = 100000 * (digraph1Index - a6[a5 - 1]); 
    easting = easting + a7; 

    setVariables(); 

    double latitude = 0; 
    latitude = 180 * (phi1 - fact1 * (fact2 + fact3 + fact4))/Math.PI; 

    if (latZoneDegree < 0) { 
     latitude = 90 - latitude; 
    } 

    double d = _a2 * 180/Math.PI; 
    double longitude = zoneCM - d; 

    if (getHemisphere(latZone).equals("S")) { 
     latitude = -latitude; 
    } 

    latlon[0] = latitude; 
    latlon[1] = longitude; 
    return latlon; 
} 

我試圖不進入一個大型圖書館,在那裏我將不得不學習可能非常耗時的事情。

所以我想循環,所以我去東(東)和北(北),不能超過我有一點 - 緯度/經度的點。

希望我已經清楚地問過我的問題,沒有太多說明。

任何幫助將不勝感激。

謝謝, -Terry

+0

重寫正在嘗試打印的類中的'toString()'。 – csmckelvey 2014-12-06 18:30:08

回答

0

在convertMGRUTMToLatLong(String s)方法中,返回一個數組latlon(即一個對象)。 它返回它可能是你不想要的哈希碼。 您想要打印數組值。所以在你的主要方法中,你可以在下面替換;

System.out.println(mg.convertMGRUTMToLatLong(MGRUTM)); 

double[] a = mg.convertMGRUTMToLatLong(MGRUTM) ; 
System.out.println(a[0]+" " + a[1]); 

希望幫助!

+1

這樣做nanosoft ...謝謝。這個鏈接http://stackoverflow.com/help/privileges/vote-up說我應該可以投票了。我沒有看到箭頭。我的聲望是15.想要這樣做,但不知道如何。 – 2014-12-06 19:15:17

+0

找到了投票的箭頭。 – 2014-12-06 19:24:09

+0

很高興知道它的工作原理:) – nanosoft 2014-12-07 16:10:15

1

convertMGRUTMToLatLong()你的結果是double秒的陣列,並且通過默認,陣列被轉換爲字符串在Java中一個相當不可讀格式。這就是[[email protected]的來源。試試System.out.println(Arrays.toString(mg.convertMGRUTMToLatLong(MGRUTM)));,你會得到一個更可讀的輸出。

+0

邁克爾,從納米軟件上面的答案工作,但爲了將來的參考,只要你的迴應,我是從字面上讀「陣列」。因爲我得到「陣列無法解決」。可能會想出來,但還沒有。 – 2014-12-06 21:25:53

+0

像大多數其他類一樣,在使用它之前需要導入'Arrays'類 - 在程序的頂部添加'import java.util.Arrays;'。 – 2014-12-07 15:44:04