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
0
A
Antwort
0
Sie werden höchstwahrscheinlich keinen schnellen Code für diese Aufgabe finden.
Aber Sie können C-Bibliotheken von Swift aufrufen.
Es gibt einige universelle geografische Umwandlung Libs, geschrieben in C.
statisch gelinkte C-Bibliotheken aufrufen, lesen Sie hier weiter: https://tetontech.wordpress.com/2014/07/03/swift-and-statically-linking-c-libraries/
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)
}