- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我有一些坐标看起来像
N47° 15' 36.75",E011° 20' 38.28",+001906.00
我创建了一个类来解析并将它们转换为 double
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
}
}
我的问题是,正如标题所说,是否有更好、更安全的方式来执行此转换?
我在这里选择的最后一种方法。抱歉,我找不到引用它的链接。
最佳答案
这是一个更通用的版本,作为 CLLocationCoordinate2D
的扩展。
它用正则表达式解析字符串并考虑
E
和 O
均表示东。'′
) 和秒 ("″
) 的不同字符。extension CLLocationCoordinate2D {
init?(coordinateString: String) {
let directionIsPrefix = "NEOWS".contains(coordinateString.prefix(1))
let pattern = directionIsPrefix
? "([NOEWS])\\s?(\\d{1,2})°\\s?(\\d{1,2})['′]\\s?(\\d{1,2}\\.?(\\d+)?)[\"″]"
: "(\\d{1,2})°\\s?(\\d{1,2})['′]\\s?(\\d{1,2}\\.?(\\d+)?)[\"″]\\s?([NOEWS])"
var latlon = [Double]()
do {
let regex = try NSRegularExpression(pattern: pattern)
let matches = regex.matches(in: coordinateString, range: NSRange(coordinateString.startIndex..., in: coordinateString))
guard matches.count == 2 else { return nil }
for match in matches {
let m1 = coordinateString[Range(match.range(at:1), in: coordinateString)!]
let m2 = coordinateString[Range(match.range(at:2), in: coordinateString)!]
let m3 = coordinateString[Range(match.range(at:3), in: coordinateString)!]
let lastIndex = directionIsPrefix ? 4 : 5
let m4 = coordinateString[Range(match.range(at:lastIndex), in: coordinateString)!]
let value : Double
if directionIsPrefix {
let sign = "NEO".contains(m1) ? 1.0 : -1.0
value = sign * (Double(m2)! + Double(m3)!/60.0 + Double(m4)!/3600.0)
} else {
let sign = "NEO".contains(m4) ? 1.0 : -1.0
value = sign * (Double(m1)! + Double(m2)!/60.0 + Double(m3)!/3600.0)
}
latlon.append(value)
}
} catch {
print(error)
return nil
}
self.init(latitude: latlon[0], longitude: latlon[1])
}
}
关于swift - 在 Swift 中将 DMS 坐标从 String 解析和转换为 Double 的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41790791/
我正在尝试删除两个处于失败状态的 AWS DMS 数据库“迁移”任务。从控制台尝试超过 30 次后,它会显示一个绿色横幅并显示任务已删除 - 任务仍然存在。我还尝试使用 aws cli 删除 dms
https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MySQL.html 引用此链接在 Mysql 数据库中进行更改,以便使用 A
我正在尝试创建 DMS(数据库迁移服务)实例,但出现以下错误: SYSTEM ERROR MESSAGE:The IAM Role arn:aws:iam:::role/dms-vpc-role is
我尝试使用两种方法在登录后获取访问者的所有个人资料: 使用 Tracker.CurrentVisit获取个人资料 使用 VisitorManager.GetVisitorByExternalUser(
我正在开发一个将 PDF 文件复制到服务器的应用程序。我的 Swing 应用程序扫描并标记扫描的文档,然后复制到服务器。有两个角色doctypesA读写,doctypesB读写。我将角色存储在数据库中
我遵循了此页面上提到的所有步骤。 https://docs.aws.amazon.com/dms/latest/userguide/target.docdb.html 问题在于 “导入证书”按钮被禁用
这两天我一直在寻找适合大型企业的开源 DMS。在所有用 Java 编写的开源文档管理系统中, Nuexo , LogicalDoc 和 Alfresco 好像口碑不错。但是,我无法在它们之间找到一个公
Differentiable Model Scaling(DMS)以直接、完全可微的方式对宽度和深度进行建模,是一种高效且多功能的模型缩放方法。与先前的NAS方法相比具有三个优点:1)DMS在搜
我有一个正则表达式,我想以各种方式匹配纬度/经度对,例如 123 34 42 -123* 34' 42" 123* 34' 42" +123* 34' 42" 45* 12' 22"N 45 12'
我们正在使用 DMS 将数据从 MySQL 迁移到 Redshift(作为持续迁移)。 我们在 MySQL 中有几个大表 - 太大而无法添加任何新列。但是,我们在现有表中没有任何可靠的列来了解记录何时
我很难让它发挥作用。我尝试了许多不同的公式,但总是得到相同的结果。基于相同的数据(坐标)我可以计算距离。但不是轴承。我已经没有想法和关键字来寻找可行的公式了。 感谢大家的帮助! let fLat =
我正在产品和开发环境中进行 DMS 复制,并且我的开发 DMS 运行良好,但在 DMS 产品复制中出现以下错误。 [SOURCE_CAPTURE ]E: RetCode: SQL_ERROR SqlS
我为单向数据复制创建了 RDS “(源(Sql_server)到目标(MySql 服务器)”, 这将如何进行双向数据复制 解释:- 第 1 步:我将 AWS DMS(关系数据库服务)创建到 aws 帐
我有 prod aws Aurora DB,我想要复制更改以测试 mysql 数据库(架构相同 - Aurora 基于 mysql)为此,我正在使用 aws DMS。 当对某些表执行完全复制时,复制工
我们有一个大型 MySQL 销售表,我们希望将其复制到 Redshift,使用 AWS Database Migration Service (DMS) 流式传输数据。该表仅供插入。添加销售后,它永远
假设我有一个经纬度:38.898556,-77.037852。如何将其转换为 DMS? 预期输出是: 38 53 55 N 77 2 16 W 希望能够接受纬度和经度作为函数中的输入参数。 当前函数如
我创建了一个 CDC 任务,用于捕获源 PostgreSQL 架构中的更改并将它们以 Parquet 格式写入目标 S3 存储桶中。该任务正确捕获插入、更新和删除,但未能捕获源中的列名称和类型更改。
尝试验证 DMS 的 S3 源端点时出现以下连接错误。 Test Endpoint failed: Application-Status: 1020912, Application-Message:
我已使用 Sitecore Azure 3.0.0 将 Sitecore 部署到 Azure CD。 但是,在我手动将“analytics”连接字符串更新到 sql azure 之前,我无法获取任何分
我正在寻找一种允许访问者选择他们希望在网站上显示的内容的方法。 有没有办法以编程方式触发 Sitecore DMS 中的配置文件? 我看过SDN的相关文档(http://sdn.sitecore.ne
我是一名优秀的程序员,十分优秀!