现在和将来是否有 CSV 文件或查找 table 来校正真正的北方?

Are there CSV files or lookup table to correct for real north now and in the future?

我目前正致力于在我正在开发的嵌入式微芯片 PIC32 系列设备上放置一个罗盘。

指南针是在世界的另一个地方制造的,一旦组装好,我希望能够在世界的其他地方使用它,而不必在我去的每个地方都重新校准它。

嵌入式设备上还有一个 GPS 单元,所以我想我应该能够针对实际北极和磁北极之间的局部差异进行调整。如果我有查找 table 当前 GPS 位置可用于计算角度偏移并调整罗盘读数。

有谁知道我在哪里可以买到这些东西?

(不幸的是 google 相关搜索现在被 9-11 飞机被调整的阴谋论堵塞了)

有一个 python 模块,geomag 值得一看。

magnetic_declination_degrees = geomag.declination(latitude, longitude)

>>> import geomag
>>> geomag.declination(-33, 151)
12.156567323514675
>>>

不是 csv,而是简单的。

阅读文档,您可以调整日期模型。

编辑: 如果嵌入式系统运行 gpsd, this gps3 client 可以自动获取 lat/lon。

import time
import gps3
import geomag

the_connection = gps3.GPSDSocket() 
the_fix = gps3.Fix()

try:
    for new_data in the_connection:
        if new_data:
            the_fix.refresh(new_data)
        if not isinstance(the_fix.TPV['lat'], str):  # non-string lat is a determinate of when data is 'valid'
            latitude = the_fix.TPV['lat']
            longitude = the_fix.TPV['lon']  
            magnetic_declination_degrees = geomag.declination(latitude, longitude)
            print(magnetic_declination_degrees)
        time.sleep(5)
except Exception as error:
    print('Magnetic Declination is sick: ', error)

编辑:这是一个 csv;-) 根据您想要的粒度更改范围内的数字。

import geomag

for latitude in range(-60, 60, 10):
    for longitude in range(-180, 170, 10):
        magnetic_declination_degrees = geomag.declination(latitude, longitude)
        print(latitude, ',', longitude, ',', magnetic_declination_degrees) 

NGDC(国家地球物理数据中心)发布了给定位置和日期 returns 场强和方向矢量的世界磁模型(C 代码和数据)。 http://www.ngdc.noaa.gov/geomag/WMM/soft.shtml

WMM 数据每五年重新发布一次。在 2020 年后使用当前的 WMM2015 数据将 return 有效但结果不准确。