Python API for British Geological Survey magnetic field calculator.
This project magnetic field calculator. It uses is British Geological Survey (BGS) API web service for calculation.
The web service makes the World Magnetic Model (WMM), the International Geomagnetic Reference Field (IGRF) and the BGS Global Geomagnetic Model (BGGM) available as a web service. The IGRF and WMM have no restrictions on use, the BGGM is only available to subscribers. The API provides options to select which model and revision to use. Values of the magnetic field at any point around the world can be retrieved for a given date.
The project is not part of the BGS. It is just API client for it, made by community. For any information about BGS, you should use the official website.
First, you need to import the calculator class:
from magnetic_field_calculator import MagneticFieldCalculator
Then you need to init the calculator client, with default WMM model and it's latest available version:
calculator = MagneticFieldCalculator()
Model, it's revisions and custom URS can be changed with parameters:
calculator = MagneticFieldCalculator(
model='wmm',
revision='2020',
sub_revision='2',
custom_url='https://example.com'
)
You can then get the calculations for given location:
result = calculator.calculate(
latitude=-80,
longitude=140,
altitude=200,
date='2028-12-31'
)
The only required parameters are latitude and longitude, but it is reccomended to also set others for best results. Some of them are exclusive and you should not use them at same time. You can also set username and password for HTTP auth for protected models. For more details about parameters, see the official documentation.
Output is returned as dictionary:
field_value = result['field-value']
declination = field_value['declination']
inclination = field_value['inclination']
total_intensity = field_value['total-intensity']
north_intensity = field_value['north-intensity']
east_intensity = field_value['east-intensity']
vertical_intensity = field_value['vertical-intensity']
horizontal_intensity = field_value['horizontal-intensity']
Some output properties will have units
and value
sub properties. Output format will depend on used input, specially for height and date.
You can also look to example file for more examples.
This library uses SemVer for versioning. For the versions available, see the tags on this repository.
This library is licensed under the GPLv3+ license. See the LICENSE file for details.