2016-04-11 48 views
0

我無法弄清楚如何使用Swift 2和MapKit將GPS座標轉換爲荷蘭語RD座標。 我在網上搜索我可以在Swift中編寫的公式來進行轉換,但沒有成功。 有沒有人解決過這個問題,如果有人能幫到,我會很高興。 謝謝。將GPS轉換爲RD(荷蘭語)座標

回答

0

這裏是我的解決方案,希望將是有用的人。可以在這裏測試 http://www.gpscoordinates.eu/convert-rd-coordinates.php

extension CollectionType { 
    subscript (safe index: Index) -> Generator.Element? { 
    return indices.contains(index) ? self[index] : nil 
} 


func gpsToRd(lat: Double, lon: Double) -> (lat: Double, lng: Double) { 
    let referenceRdX = 155000.0 
    let referenceRdY = 463000.0 
    let referenceWgs84X = 52.15517440 
    let referenceWgs84Y = 5.38720621 

    let Rpq: [[Double]] = [[0.0, 190094.945, -0.008, -32.391, 0.0], [-0.705, -11832.228, 0.0, -0.608, 0.0], [0.0, -114.221, 0.0, 0.148, 0.0], [0.0, -2.340, 0.0, 0.0, 0.0]] 

    let Spq: [[Double]] = [[0.0, 0.433, 3638.893, 0.0, 0.092], [309056.544, -0.032, -157.984, 0.0, -0.054], [73.077, 0.0, -6.439, 0.0, 0.0], [59.788, 0.0, 0.0, 0.0, 0.0]] 


    let d_lattitude = (0.36 * (lat - referenceWgs84X)) 
    let d_longitude = (0.36 * (lon - referenceWgs84Y)) 

    var calc_latt = 0.0 
    var calc_long = 0.0 

    for p in 0...3 { 
     for q in 0...4 { 
      if let _Rpq = Rpq[p][safe: q] { 
       calc_latt += _Rpq * pow(d_lattitude, Double(p)) * pow(d_longitude, Double(q)) 
      } 
      if let _Spq = Spq[p][safe: q] { 
       calc_long += _Spq * pow(d_lattitude, Double(p)) * pow(d_longitude, Double(q)); 
      } 
     } 
    } 

    let rd_x_coordinate = referenceRdX + calc_latt 
    let rd_y_coordinate = referenceRdY + calc_long 

    return (rd_x_coordinate, rd_y_coordinate) 
}