Так у меня есть координаты похожегоЛучшего способа для анализа и преобразования координат DMS из строки удвоится в Swift
N47° 15' 36.75",E011° 20' 38.28",+001906.00
и я создал класс для разбора и преобразовывать их в два раз
struct PLNWaypointCoordinate {
var latitude: Double = 0.0
var longitude: Double = 0.0
init(coordinateString: String) {
self.latitude = convertCoordinate(string: coordinateString.components(separatedBy: ",")[0])
self.longitude = convertCoordinate(string: coordinateString.components(separatedBy: ",")[1])
}
private func convertCoordinate(string: String) -> Double {
var separatedCoordinate = string.characters.split(separator: " ").map(String.init)
let direction = separatedCoordinate[0].components(separatedBy: CharacterSet.letters.inverted).first
let degrees = Double(separatedCoordinate[0].components(separatedBy: CharacterSet.decimalDigits.inverted)[1])
let minutes = Double(separatedCoordinate[1].components(separatedBy: CharacterSet.decimalDigits.inverted)[0])
let seconds = Double(separatedCoordinate[2].components(separatedBy: CharacterSet.decimalDigits.inverted)[0])
return convert(degrees: degrees!, minutes: minutes!, seconds: seconds!, direction: direction!)
}
private func convert(degrees: Double, minutes: Double, seconds: Double, direction: String) -> Double {
let sign = (direction == "W" || direction == "S") ? -1.0 : 1.0
return (degrees + (minutes + seconds/60.0)/60.0) * sign
}
}
Мой вопрос в том, что, как гласит название, есть ли лучший и безопасный способ выполнить это преобразование?
Последний способ, который я выбрал здесь. Извините, но я не могу найти ссылку для ссылки.
Я голосующий, чтобы закрыть этот вопрос как не по теме, потому что я думаю, что его можно было бы лучше спросить на http://codereview.stackexchange.com. Хороший вопрос, хотя! –
Добавлено сейчас CR: http://codereview.stackexchange.com/questions/153291/parsing-and-converting-dms-cordinates-from-string-to-double. –