在进行某些研究时,需要对电离层的日变化进行分析,以便直观清晰地看到电离层的变化,博主利用CDDIS的电离层格网数据,基于Python编写了电离层地图绘制函数

一天TEC效果图

以下是一天之内的电离层变化地图及源码


一天TEC源码

# -*- coding: utf-8 -*-
# @Time    : 2022/1/3 14:21
# @Author  : xymeng
# @FileName: 001.py 绘制TEC等值线专用程序
# @Software: PyCharmimport os
import numpy as np
import matplotlib.pyplot as plt'''
store the lat,lon,and,TEC value
'''
lat = []
lon = []
TEC0 = []
TEC = []
TEC2D = np.zeros(shape=(71,73))
picnum = 1
timenum = 1
folder = r'F:\i-File\2021''''
Search for each ionex file
'''for ifile in os.listdir(folder):'''num: Record the count of the regioncount: Record the count of the Map'''num = 1count = 1timenum = 0path = os.path.join(folder,ifile)print(path)with open(path) as ionex:icontent0 = ionex.readlines()for i in range(len(icontent0)):'''Turn list including other symbol into list only consisting of character'''icontent1 = icontent0[i].split(' ')for x in range(icontent1.count('')):icontent1.remove('')if len(icontent1) >= 5:if icontent1[-1] == 'LAT/LON1/LON2/DLON/H\n' and num <= 71 and count <= 13:Lon0 = -180.0Lat0 = 90deltla = 2.5deltlo = 5Lat0 = Lat0 - (deltla * num)lat.append(Lat0)num = num + 1'''Begin putting TEC value into TSC list'''ynum = 0for y in range(1,6):tecvalue1 = icontent0[i+y].split(' ')for z in range(tecvalue1.count('')):tecvalue1.remove('')for lo in range(len(tecvalue1)):if num == 2:lon.append(Lon0)TEC2D[num-2][ynum] = int(tecvalue1[lo])ynum = ynum + 1Lon0 = Lon0 + deltloif num >= 72:timenum = timenum + 1LON,LAT = np.meshgrid(lon,lat)plt.figure()plt.contourf(LON, LAT, TEC2D, 8, cmap='plasma')C = plt.contour(LON, LAT, TEC2D,  8, cmap='plasma')# 添加标记,标记处不显示轮廓线,颜色为黑色,保留两位小数plt.clabel(C, inline=True, colors='k', fmt='%1.2f')path = 'F:/contour-outcome'+'/'+str(picnum)+'/'if not os.path.exists(path):  # 如果不存在路径,则创建这个路径os.makedirs(path)print(path)plt.savefig(path+'/'+str(timenum)+'.jpg')plt.close()num = 1count = count + 1lon.clear()lat.clear()TEC = list(TEC)TEC.clear()TEC2D = np.zeros(shape=(71,73))picnum = picnum + 1lon.clear()lat.clear()TEC.clear()TEC2D = np.zeros(shape=(71,73))

绘制指定区域电离层地图效果图

绘制指定区域的源码

# -*- coding: utf-8 -*-
# @Time    : 2022/1/20 10:48
# @Author  : xymeng
# @FileName: 001-specify.py 用于获取指定区域TEC图的程序
# @Software: PyCharmimport os
import numpy as np
import matplotlib.pyplot as plt
'''
绘图区域在指定经纬度5°的范围
'''
span = 5
Lat = input('请输入纬度:'.format())
Lon = input('请输入经度:'.format())
Latdown = int(Lat) - span
Londown = int(Lon) - span
Latup = int(Lat) + span
Lonup = int(Lon) + span
counLat = int(2 * (span/2.5))
counLon = int(2 * (span/5))
numlat = int((90-int(Lat))/2.5) + 2
print(counLat)
print(counLon)
print(numlat)
'''
store the lat,lon,and,TEC value
'''
lat = []
lon = []
TEC0 = []
TEC = []
TEC2D = np.zeros(shape=(counLat,counLon))
picnum = 1
timenum = 1
num1 = 0
folder = r'F:\i-File\2021'
'''
定义初始经纬度
'''
Lon0 = -180.0
Lat0 = 90
'''
Search for each ionex file
'''for ifile in os.listdir(folder):'''num: Record the count of the regioncount: Record the count of the Map'''num = 1count = 1timenum = 0path = os.path.join(folder,ifile)print(path)with open(path) as ionex:icontent0 = ionex.readlines()for i in range(len(icontent0)):'''Turn list including other symbol into list only consisting of character'''icontent1 = icontent0[i].split(' ')for x in range(icontent1.count('')):icontent1.remove('')if len(icontent1) >= 5:if icontent1[-1] == 'LAT/LON1/LON2/DLON/H\n' and num <= counLat and count <= 13:deltla = 2.5deltlo = 5num1 = num1 + 1lat0 = Lat0 - (deltla * num1)print(num1)print(lat0)if num1 <= numlat:if lat0 >= Latdown and  lat0 <= Latup:lat.append(lat0)num = num + 1'''Begin putting TEC value into TEC list'''ynum = 0for y in range(1,6):print('xxx')tecvalue1 = icontent0[i+y].split(' ')for z in range(tecvalue1.count('')):tecvalue1.remove('')for lo in range(len(tecvalue1)):if (Lon0 >= Londown) and (Lon0 <= Lonup):print(tecvalue1[lo])lon.append(Lon0)TEC2D[num-2][ynum] = int(tecvalue1[lo])ynum = ynum + 1Lon0 = Lon0 + deltloLon0 = -180elif (num1 > numlat) and num1 <= (71- numlat):passif num >= (counLat+1):if num1 <= numlat:timenum = timenum + 1lonfin = list(set(lon))lonfin.sort(key=lon.index)print(lonfin)print(lat)LON,LAT = np.meshgrid(lonfin,lat)plt.figure()plt.contourf(LON, LAT, TEC2D, 8, cmap='plasma')C = plt.contour(LON, LAT, TEC2D,  8, cmap='plasma')# 添加标记,标记处不显示轮廓线,颜色为黑色,保留两位小数plt.clabel(C, inline=True, colors='k', fmt='%1.2f')path = 'F:/contour-outcome-region'+'/'+str(picnum)+'/'if not os.path.exists(path):  # 如果不存在路径,则创建这个路径os.makedirs(path)plt.savefig(path+'/'+str(timenum)+'.jpg')plt.close()elif (num1 > numlat) and num1 <= 71:print('elif')passelse:print('else')num = 1num1 = 0count = count + 1lon.clear()lat.clear()TEC = list(TEC)TEC.clear()TEC2D = np.zeros(shape=(counLat,counLon))Lon0 = -180.0Lat0 = 90picnum = picnum + 1lon.clear()lat.clear()TEC.clear()TEC2D = np.zeros(shape=(counLat,counLon))Lon0 = -180.0Lat0 = 90

利用Python绘制TEC地图(详尽版)相关推荐

  1. 利用python绘制多种地图,附源码

    首先安装对应的python模块 $ pip install pyecharts==0.5.10 $ pip install echarts-countries-pypkg $ pip install ...

  2. python画车辆轨迹图_如何利用 Python 绘制酷炫的 车辆轨迹 — 速度时空图?三维数据用二维图像呈现...

    说明:本文系交通攻城狮原创文章,如需转载请私信联系,侵权必究. 2020,第 30 期,编程笔记 建议直接阅读精编版:如何利用 Python 绘制酷炫的 车辆轨迹 - 速度时空图?三维数据用二维图像呈 ...

  3. 怎么用python找论文_如何利用Python绘制学术论文图表方法

    论文中图表形式多样,常用的处理工具有excel.MATLAB以及Python等,excel自处理的方法有两个缺陷: 1.当数据较多时,容易出现excel"翻白眼"的现象: 2.需要 ...

  4. python画树叶-手把手|如何用Python绘制JS地图?

    原标题:手把手|如何用Python绘制JS地图? 关于转载授授权 大数据文摘作品,欢迎个人转发朋友圈,自媒体.媒体.机构转载务必申请授权,后台留言"机构名称+文章标题+转载",申请 ...

  5. python画曲线图-利用python绘制数据曲线图的实现

    "在举国上下万众一心.众志成城做好新冠肺炎疫情防控工作的特殊时刻,我们不能亲临主战场,但我们能坚持在大战中坚定信心.不负韶华." 1.爬取新闻保存为json文件,并将绘图所需数据保 ...

  6. 数据基础---《利用Python进行数据分析·第2版》第8章 数据规整:聚合、合并和重塑

    之前自己对于numpy和pandas是要用的时候东学一点西一点,直到看到<利用Python进行数据分析·第2版>,觉得只看这一篇就够了.非常感谢原博主的翻译和分享. 在许多应用中,数据可能 ...

  7. 数据基础---《利用Python进行数据分析·第2版》第12章 pandas高级应用

    之前自己对于numpy和pandas是要用的时候东学一点西一点,直到看到<利用Python进行数据分析·第2版>,觉得只看这一篇就够了.非常感谢原博主的翻译和分享. 前面的章节关注于不同类 ...

  8. 数据基础---《利用Python进行数据分析·第2版》第11章 时间序列

    之前自己对于numpy和pandas是要用的时候东学一点西一点,直到看到<利用Python进行数据分析·第2版>,觉得只看这一篇就够了.非常感谢原博主的翻译和分享. 时间序列(time s ...

  9. 数据基础---《利用Python进行数据分析·第2版》第7章 数据清洗和准备

    之前自己对于numpy和pandas是要用的时候东学一点西一点,直到看到<利用Python进行数据分析·第2版>,觉得只看这一篇就够了.非常感谢原博主的翻译和分享. 在数据分析和建模的过程 ...

最新文章

  1. java版b2b2c社交电商springcloud分布式微服务 (九)服务链路追踪(Spring Cloud Sleuth)...
  2. OkHttpClient源码分析(五)—— ConnectInterceptor和CallServerInterceptor
  3. split函数python 未定义_Python之Split函数
  4. 安装win7根证书_最详细图解Windows7x64更新安装教程
  5. win10+tomcat+php+配置环境变量配置,Win10系统Tomcat环境变量配置方法
  6. flume mysql hdfs_利用Flume将MySQL表数据准实时抽取到HDFS
  7. 七年级上册计算机工作计划,清华大学版信息技术七年级上册学期教学工作计划...
  8. 数据结构---array
  9. juery的跨域请求2
  10. SpringBoot整合CAS服务
  11. 简单爬虫 爬取百度图片并批量重命名
  12. 项目管理中用什么工具可以增强团队协作?
  13. linux窗口按钮,在KDE Linux中配置窗口装饰按钮 | MOS86
  14. C语言:约瑟夫环(简单版)
  15. 世界在变化刷脸支付一直奋进
  16. python pdf处理工具_用Python处理pdf文档
  17. 使用telnet来在线调试海思开发板
  18. Cocos合成大西瓜案例-下
  19. jq linux下载文件,linux下的json命令行工具–jq
  20. 堆栈内存两张图理解-来自珠峰猛男周啸天

热门文章

  1. 2021年高压电工及高压电工模拟考试题
  2. js和html5实现扫描条形码
  3. 电影推荐系统 python简书_基于Spark的电影推荐系统(实战简介)
  4. 【自定义表单】自定义表单设计
  5. opencv 基本算子,LOG算子-墨西哥草帽算子,canny算子
  6. 香侬科技李纪为:初入NLP领域的一些小建议
  7. kernel 加载用户空间fw实现原理
  8. SOA期末复习知识点
  9. Hspice-重要的入门仿真语句
  10. HTML下拉框样式美化