Python绘制地磁场

news2024/12/24 22:13:01

文章目录

    • 简介
    • 磁场绘制

简介

为国际参考磁场对Python的封装,可通过经纬高度以及时间来计算地磁场强度,使用方法简单粗暴,如下

import pyIGRF
pyIGRF.igrf_value(lat, lon, alt, date)

参数含义为

  • lat 纬度
  • lon 经度
  • alt 海拔
  • date 日期,输入四位十进制整数表示年份

其返回值有七个,若写成

D, I, H, X, Y, Z, F = pyIGRF.igrf_value(lat, lon, alt, date)

各返回值含义为

  • D 偏角,以东向为正
  • I 倾角,以竖直向下为正
  • H 水平强度
  • X 北向分量
  • Y 东向分量
  • Z 垂直分量,以下方为正
  • F 总磁场强度

角度采取角度制, 磁场强度单位为nT

通过函数pyIGRF.igrf_variation可以获取磁场的变化情况,其输入与igrf_value相同,输出量的物理量也相同,但代表的是年变化量。

磁场绘制

接下来绘制一下某片区域的磁场分布,令经度范围在126附近,纬度范围在46附近,海拔由0到3000米。

地球建模采取WGS84,其长半轴为6378137km,扁率 e = 1 298.257223563 e=\frac{1}{298.257223563} e=298.2572235631,则短半轴为b = 6356752.314m。

import numpy as np
import matplotlib.pyplot as plt
xs, ys, zs = np.indices([5,5,5])
xs = (xs/500 + 125).flatten()
ys = (ys/500 + 45).flatten()
zs = (zs*600).flatten()
vals = [pyIGRF.igrf_value(y, x, z, 2022) 
    for x,y,z in zip(xs,ys,zs)]
vals = np.array(vals)
Hx, Hy, Hz, H = vals[:,3:].T

LAT = 6356752.314*np.pi/180
xs = (xs-np.min(xs))*np.sin(np.deg2rad(ys))*LAT
ys = (ys-np.min(ys))*LAT

ax = plt.subplot(projection='3d')
ax.quiver(xs, ys, zs, Hx/300, Hy/300, Hz/300)
plt.show()

最终效果如图所示,可见随着高度的增加,地磁场是逐渐减弱的。

在这里插入图片描述

接下来可以查看某地随着高度变化,其地磁场分量的变化

hs = np.arange(10000)
vals = [pyIGRF.igrf_value(46, 125, h, 2022) 
    for h in hs]
vals = np.array(vals).T
labels = ["North", "East", "up"]
for i in range(3):
    plt.plot(hs, vals[i+3], label=labels[i])

plt.legend()
plt.show()

结果为

在这里插入图片描述

当然,这一局部地磁场分布其实看不出什么,接下来绘制一下全球的磁场分布情况

Ls, Bs = np.indices([180,90])
Ls = (Ls*2 - 180).flatten()
Bs = (Bs*2 - 90).flatten()
vals = [pyIGRF.igrf_value(y, x, 100, 2022) 
    for x,y in zip(Ls,Bs)]
vals = np.array(vals).T
H = vals[-1]

r = 6356752.314/2
Bs, Ls = np.deg2rad(Bs), np.deg2rad(Ls)
xs = r*np.cos(Bs)*np.cos(Ls)
ys = r*np.cos(Bs)*np.sin(Ls)
zs = r*np.sin(Bs)

ax = plt.subplot(projection='3d')
cax = ax.scatter(xs, ys, zs, c=H, cmap='plasma')
plt.show()

效果如图所示

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/115044.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vuejs中组件的两种不同的编写风格-选项式API及组合式API

前言随着vue3的逐渐稳定,以及周边生态的完善,现在vue3已经成为默认的使用方式了的所以,对于一个前端开发者,Vue2与Vue3都得要会,在vue3中新增很多东西,比如:Fragment,Teleport,Suspense,也去掉了vue2中一些特性,比如:移除keyCode支持作为v-on的修饰符等在编程风格上也有一些区别…

Java项目:springBoot+Vue汽车销售管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目基于spring boot以及Vue开发,为前后端分离的项目。针对汽车销售提供客户信息、车辆信息、订单信息、销售人员管理、财务报表等…

【Python百日进阶-数据分析】Day138 - plotly甘特图:px.timeline()

文章目录一、语法二、参数三、返回值四、实例4.1 带有 plotly.express 的甘特图和时间表4.1.1 普通甘特图4.1.2 px.timeline 的离散颜色4.1.3 px.timeline 的连续颜色4.1.4 同一水平线上有多个条4.1.5 Dash中使用甘特图一、语法 甘特图是一种条形图,用于说明项目进…

【C++高阶数据结构】并查集

🏆个人主页:企鹅不叫的博客 ​ 🌈专栏 C语言初阶和进阶C项目Leetcode刷题初阶数据结构与算法C初阶和进阶《深入理解计算机操作系统》《高质量C/C编程》Linux ⭐️ 博主码云gitee链接:代码仓库地址 ⚡若有帮助可以【关注点赞收藏】…

Linux之top命令详解

Linux之top命令详解 一、简单介绍 top是Linux性能分析工具,显示系统占用资源情况,和windows的任务管理器一样。top动态显示进程暂用资源情况,top对系统处理器的状态监视,它将显示CPU任务列表,按照CPU使用、内存使用和…

You are not allowed to create a user with GRANT

8.0之后的mysql不支持授权的时候就进行用户创建,所以创建之后才能授权; USE mysqlSELECT USER, PASSWORD, HOST FROM USER;SELECT USER ,grant_priv FROM USERCREATE USER zjy IDENTIFIED BY 123456; #host默认是%GRANT ALL PRIVILEGES ON *.* TO zjy% MySql-Ser…

【正点原子I.MX6U-MINI移植篇】rootfs移植过程详解(三)

Linux三巨头己经完成了2个了,就剩最后一个rootfs(根文件系统)了,根文件系统的组成以及如何构建根文件系统是Liux移植的最后一步,根文件系统构建好以后就意味着我们己经拥有了一个完整的、可以运行的最小系统。以后我们…

智慧工地车辆未冲洗抓拍系统 opencv+yolo

智慧工地车辆未冲洗抓拍系统利用opencvyolo网络深度学习架构模型对现场画面中车辆的冲洗情况实现智能识别。OpenCV基于C实现,同时提供python, Ruby, Matlab等语言的接口。OpenCV-Python是OpenCV的Python API,结合了OpenCV CAPI和Python语言的最佳特性。O…

微信防撤回功能修改

今天无意之中看到了一个帖子,谈到了有关微信消息撤回的。突发奇想实现一下,以后就不怕错过朋友的消息了。 首先介绍一下基本思路,由于微信采用的是CS端原理,所有的数据请求均通过服务器,客户端只是响应指令而已。 A向…

实验三:自主存取控制实验

【实验目的】 掌握自主存取控制权限的定义和维护方法。掌握在ORACLE数据库中定义用户、角色,分配权限给用户、角色,回收权限,以相应用户登录数据库验证权限分配是否正确的方法。 【实验内容】 设有一个企业,由总裁负责管理采购、…

【Pandas指南】Series

Pandas数据结构简介 - Series 来源:Pandas官网:https://pandas.pydata.org/docs/getting_started/intro_tutorials/index.html 笔记托管:https://gitee.com/DingJiaxiong/machine-learning-study 下面将从对 pandas 中的基本数据结构进行快速…

Git Bash Here和RStudio软件的问题解决

Git Bash Here和RStudio软件的问题解决 文章目录Git Bash Here和RStudio软件的问题解决0、 写在前面1、Git软件在任务栏图标空白2、RStudio软件2.1 警告信息InormalizePath(path.expand(path),winslash,mustWork)2.2 incomplete final line found by readTableHeader on报错3、…

推荐两个go语言的websocket库

最近在写一个需要前后端保持通信的服务。前端要能及时感知后端数据的变化,后端要及时处理前端发过来的指令。这种服务就需要用到websocket了。 以前在写websocket相关的程序时,一直在用gorilla/websocket这个库,这个库事实上已经成为了go语言…

后端面试之系统设计 - 用户密码如何储存在DB里

原文地址:码农在新加坡的个人博客 背景 现在很多网站都因为爆库导致密码泄漏,要设计怎么样的密码储存机制,才能保证最大限度的不被盗取,即使数据泄漏,黑客也无法在短时间内获取对应的密码来登录用户的账号&#xff0c…

LeanCloud: 数据存储实现小程序云开发

1. LeanCloud 官网传送 2. LeanCloud选择原因 微信小程序的开发包括上线需要一个备案过的域名,而域名备案又需要一个服务器(仅腾讯云而言)。而微信云开发作为个人开发者受限于费用也不做考虑。 此时不考虑复杂的业务逻辑数据库读取是后端服…

A股、港股上市公司碳排放、碳强度和碳披露数据(2018-2021年)

随着中国碳强度减排任务的不断加重,当前政策的就业红利将不复存在,同时政策机制蕴含的资源错配、各行业边际减排成本不相等的问题则愈加严重,实施碳交易减排政策的时机逐渐成熟,政府应如何根据二氧化碳排放量、碳强度和碳披露等数…

带你走进Java字符串的小世界

目录 一. String 1. 什么是String 2. String常用构造器 3. 字符串的判断 4. 字符串的获取 5. 字符串的转换 6. 字符串比较和替换 7. 字符串的切割 二. StringBuffer与StringBuilder 2.1 关于StringBuffer 2.1.1 定义 2.1.2 构造方法 2.2 关于StringBuffer 三. StringJoiner的使…

分布式缓存的四大痛点

目前开发中经常用到的缓存,是我们必不可缺的,他大大的提高了我们整个项目的响应速度和并发量。但是带来好处的同时,也给我们带了了新的问题:缓存穿透、缓存击穿、缓存雪崩以及缓存一致性这么四个问题,也是分布式缓存的…

LeetCode算法之----动态规划

点赞收藏,以防遗忘 本文【程序大视界】已收录,关注免费领取互联网大厂学习资料,添加博主好友进群学习交流,欢迎留言和评论,一起交流共同进步。 目录 【一】前言 【二】打家劫舍 【三】不同路径 【四】最小路径和 …

【数据预处理】基于Kettle的字符串数据清洗、Kettle的字段清洗、Kettle的使用参照表集成数据

文章目录一.前言1.1 实验内容二.实验过程2.1 实验内容一:掌握基于Kettle的字符串数据清洗2.2 实验内容二:掌握基于Kettle的字段清洗2.3 实验内容三:掌握基于Kettle的使用参照表集成数据2.4 实验心得:一.前言 需要本文章的源文件下…