2016-04-11 5 views
0

Ich kann nicht herausfinden, wie man GPS-Koordinaten in niederländische RD-Koordinaten mit Swift 2 und MapKit konvertiert. Ich suche im Internet nach Formeln, die ich in Swift schreiben kann, um die Konvertierung zu machen, aber keinen Erfolg. Hat jemand dieses Problem gelöst, werde ich mich freuen, wenn jemand helfen kann. Danke.GPS in RD (niederländische) Koordinaten umrechnen

Antwort

0

Hier ist meine Lösung, wird Hoffnung für jemanden nützlich sein. Kann es hier testen 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) 
}