2010 年世界地磁模型的 Objective-C iOS 封装。
ObjectiveWMM 是美国国家地理空间情报局(NGA)和英国国防部地理中心(DGC)出版的 C 语言世界地磁模型的简单重新封装。
WMM 主要用于能够确定在特定地点和日期的地磁偏角。由于地球的地磁场随时间而变化,该模型提供了一种预测地磁偏角的方法。
在将真北相对航向与磁北相对航向之间进行转换时,需要地磁偏角。在世界某些地区,这种差异可能相当大。
我怀疑 iOS 系统软件中已经内置了世界地磁模型。`CLHeading` 提供了 `magneticHeading` 和 `trueHeading` 属性,其中两者之间的差异代表地磁偏角。但是,根据苹果的文档
通常,您不会自己创建此类实例,也不会对其进行子类化。相反,您通过将 `CLLocationManager` 对象的代理分配给调用其 startUpdatingHeading 方法的对象来接收此类实例。
其结果是,通过 CoreLocation,您只能确定(设备实际位置)此处和(您检索时)现在的地磁偏角。
地图、路线寻找和天文应用程序可能希望包含用于在野外使用磁罗盘的用户的地磁航向。这些航向可能涉及除当前设备位置之外的地点和未来的(或过去的)日期。
例如,为了从真北航向获得地磁航向,ObjectiveWMM 可以提供进行校正所需的地磁偏角。
单元测试(基于 gh-unit)演示了如何使用项目中的类。
ObjectiveWMM 包含了原始 WMM2010 Linux C 语言发行版中所需源文件的副本(可在此处找到)。
提供三个额外的类,以方便 iOS Objective-C 项目使用
CCMagneticModel
- 一个单例类,用于初始化 WMM 模型CCMagneticDeclination
- 一个结果对象,用于存储给定坐标、高度和日期计算出的磁偏角NSDate+DecimalYear
- 在 NSDate 上添加的一个类别,提供 WMM 输入所需的十进制日期值CCMagneticDeclination 可以选择性地被继承和扩展,以返回从 MAGtype_GeoMagneticElements
结构中获得的额外模型结果。(目前,这些结果没有包含,因为它们比磁偏角有更专业化的应用。)
项目中的 ObjectiveWMM 目标由一个空的 iOS 应用程序组成。这可能会在将来扩展。目前,单元测试是您的最佳指南。
项目包含一系列单元测试,这些测试使用了原始模型作者提供的 WMM2010 测试值。
此外,还添加了一些测试用例,测试结果取自使用 WMM2010(而不是 IGRF 2011)配置的 DoD World Magnetic Model 单点计算器(2010 - 2015)。
最后,包含了一些测试,以验证模型边界日期。WMM 2010 旨在用于 2010-2015 年之间的日期。
本项目包含的 WMM 源代码只做了两个小的修改。在文件 GeomagnetismHeader.h 中,
#define TRUE ((int)1)
#define FALSE ((int)0)
被改为
#ifndef TRUE
#define TRUE ((int)1)
#endif
#ifndef FALSE
#define FALSE ((int)0)
#endif
以便避免关于重定义 TRUE 和 FALSE 的编译器警告。
世界磁场模型是由美国国家地理空间情报局(NGA)和英国国防测绘中心(DGC)共同的产品。WMM 是由国家地球物理数据中心(NGDC,美国科罗拉多州博尔德)和英国地质调查局(BGS,苏格兰爱丁堡)共同开发的。
由 stephentrainor 编写的 ObjectiveWMM。
ObjectiveWMM 包含了由 NGDC 分发的 WMM 源代码的一部分。
WMM 源代码属于公共领域,不受许可或版权保护。信息和软件可以由公众免费使用。根据 17 U.S.C. 403 的规定,生产由美国政府机构产生的版权作品的第三方必须在工作(们)中提供通知,指出其中包含的美国政府材料,并声明这些材料不受版权保护。
ObjectiveWMM 中剩余的源代码可在 MIT 许可证下使用。有关更多信息,请参阅 LICENSE 文件。