python 如何通过海表面高度数据计算海表地转流速、并绘制流线图

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 最近,学习海气相互作用时,老师布置了一个小作业。通过卫星高度计测得的海表面高度异常数据,计算其表层地转流速,并研究其与海表面高度异常的关系。

最近,学习海气相互作用时,老师布置了一个小作业。通过卫星高度计测得的海表面高度异常数据,计算其表层地转流速,并研究其与海表面高度异常的关系。


刚刚看到作业内容时,还是有点一头雾水的,不晓得怎么通过海表面高度数据推算出地转流速。挠头思考时,无意中看到物理海洋学,想起里面曾经有关系地转流部分的内容,索性拿出来看看找一下。惊喜大于意外,书里果然有推导的公式,直接贴在下面了:


9d15850b759448ffb132b5871c38ed1a.png



其中,δ \deltaδ为海表面高度,f为科氏力(f=2Ωsinψ)ψ纬度 ;,g为重力加速度,y x 就是经纬度。


根据公式很容易知道计算的过程,细节在于对于数据的处理,包括科氏力、经纬度转换等等。


# # 首先导入相关的库
import cartopy.feature as cfeature#陆地、河流等
from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter#经纬度
import matplotlib.pyplot as plt#绘图
import numpy as np #数组
import cartopy.crs as ccrs #投影
import  xarray as xr#读取nc文件
#  读取nc文件数据
path='D:\\sla.nc'
data=xr.open_dataset(path)
sla=data.sla[0] .data#海表面高度异常数据
x=data.longitude.data #lon
y=data.latitude.data #lat
# 计算将弧度与角度转换 、科氏力、
a=6400000 
omega=7.292e-5 
g = 9.8
coslat=np.cos(y*np.pi/180).reshape((-1,1))
coslon=np.cos(x*np.pi/180).reshape((-1,1))
sinlat = (np.sin(y*np.pi/180)).reshape((y.shape[0],1))
f=2*omega*sinlat
# np.gradient()用来求导
dx=(np.gradient(x)*np.pi/180).reshape((-1,1))*coslat*a
dy=(np.gradient(y)*np.pi/180).reshape((-1,1))*a
dslady=np.gradient(sla,axis=0)/dy
dsladx=np.gradient(sla,axis=1)/dx
#带入公式
us=-1*(g/f)*dslady
vs=(g/f)*dsladx
#==============================绘图=================================
fig = plt.figure(figsize=(10, 9))
ax=fig.add_subplot(111,projection=ccrs.PlateCarree())
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
ax.add_feature(cfeature.NaturalEarthFeature('physical', 'land', '50m', \
                                            edgecolor='white', facecolor='white',zorder=2))
# # # 设置经纬度范围、显示区域
ax.set_xticks(np.arange(143, 146, 0.5),crs=ccrs.PlateCarree())
ax.set_yticks(np.arange(33, 36, 0.5),crs=ccrs.PlateCarree())
ax.xaxis.set_major_formatter(LongitudeFormatter(zero_direction_label =False))#经度0不加标识
ax.yaxis.set_major_formatter(LatitudeFormatter())
ax.set_extent([143,145,33,35])
# # #绘制流线 、海表面高度填色图
ax.streamplot(x, y, us,vs,density=1)#python 中绘制流线的函数
cb=ax.contourf(x,y,sla)              #绘制填色图
# # # 设置轴、标签相关大小、名称
ax.tick_params(which='major', direction='out', length=10, width=0.99, pad=0.2, bottom=True, left=True, right=False, top=False)
ax.set_title('streamline plot',pad=10,fontsize=20)#标题
ax.set_xlabel('Longtitude',fontsize=20)#x轴标签
ax.set_ylabel('Latitude',fontsize=20)#y轴标签
# # #保存图片
fig.savefig('D:\\'+'oceanas.png',format='png',dpi=150)


看一下成图:


d56ee74e568c4d6197b13fa40b3d471e.png


通过选取任意一个涡旋,进行绘图,可以很明显的发现,流速的流线图与海表面高度异常数据吻合很好,可以暂定认为,流线的分布一定程度上反应了海表面高度的分布。

可能计算过程稍显粗糙,简单记录一下,感兴趣的小伙伴可以去测试一下。有问题的话欢迎评论留言交流补充,peace~~


                                一个努力学习python的海洋菜鸡
                                         水平有限,欢迎指正!!!
                                            欢迎点赞、评论、收藏。


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
2月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
305 10
|
6天前
|
数据采集 数据安全/隐私保护 Python
从零开始:用Python爬取网站的汽车品牌和价格数据
在现代化办公室中,工程师小李和产品经理小张讨论如何获取懂车帝网站的汽车品牌和价格数据。小李提出使用Python编写爬虫,并通过亿牛云爬虫代理避免被封禁。代码实现包括设置代理、请求头、解析网页内容、多线程爬取等步骤,确保高效且稳定地抓取数据。小张表示理解并准备按照指导操作。
从零开始:用Python爬取网站的汽车品牌和价格数据
|
1天前
|
算法 Serverless 数据处理
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
22 12
|
1月前
|
机器学习/深度学习 人工智能 分布式计算
我的阿里云社区年度总结报告:Python、人工智能与大数据领域的探索之旅
我的阿里云社区年度总结报告:Python、人工智能与大数据领域的探索之旅
117 35
|
1月前
|
数据采集 Web App开发 数据可视化
Python用代理IP获取抖音电商达人主播数据
在当今数字化时代,电商直播成为重要的销售模式,抖音电商汇聚了众多达人主播。了解这些主播的数据对于品牌和商家至关重要。然而,直接从平台获取数据并非易事。本文介绍如何使用Python和代理IP高效抓取抖音电商达人主播的关键数据,包括主播昵称、ID、直播间链接、观看人数、点赞数和商品列表等。通过环境准备、代码实战及数据处理与可视化,最终实现定时任务自动化抓取,为企业决策提供有力支持。
|
1月前
|
人工智能 分布式计算 大数据
MaxFrame 产品评测:大数据与AI融合的Python分布式计算框架
MaxFrame是阿里云MaxCompute推出的自研Python分布式计算框架,支持大规模数据处理与AI应用。它提供类似Pandas的API,简化开发流程,并兼容多种机器学习库,加速模型训练前的数据准备。MaxFrame融合大数据和AI,提升效率、促进协作、增强创新能力。尽管初次配置稍显复杂,但其强大的功能集、性能优化及开放性使其成为现代企业与研究机构的理想选择。未来有望进一步简化使用门槛并加强社区建设。
80 7
|
1月前
|
SQL 分布式计算 DataWorks
MaxCompute MaxFrame评测 | 分布式Python计算服务MaxFrame(完整操作版)
在当今数字化迅猛发展的时代,数据信息的保存与分析对企业决策至关重要。MaxCompute MaxFrame是阿里云自研的分布式计算框架,支持Python编程接口、兼容Pandas接口并自动进行分布式计算。通过MaxCompute的海量计算资源,企业可以进行大规模数据处理、可视化数据分析及科学计算等任务。本文将详细介绍如何开通MaxCompute和DataWorks服务,并使用MaxFrame进行数据操作。包括创建项目、绑定数据源、编写PyODPS 3节点代码以及执行SQL查询等内容。最后,针对使用过程中遇到的问题提出反馈建议,帮助用户更好地理解和使用MaxFrame。
|
2月前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
2月前
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
64 18
|
2月前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
116 2

推荐镜像

更多