0%

JULE GREGORY CHARNEY,1917年1日1日出生于加利福尼亚,1981年6月16日逝世于波士顿。

Charney的准地转涡度方程允许对大尺度大气和海洋环流进行简明的数学描述,从而实现数值天气预报。 在这和他对该领域的许多基本贡献中,Charney确定了“斜压不稳定性”,这种机制解释了中纬度天气系统的大小、结构和增长率,并且在像我们的海洋这样的旋转分层流体中是一种普遍存在的现象和气氛。他的创新研究为天气系统、水动力不稳定性、大气波传播、飓风、干旱、荒漠化、大气阻塞和洋流等理论提供了见解。

其主要成就有:

  • 1946年博士论文“Dynamics of long waves in a baroclinic westerly current”发表在Journal of Meteorology,当期目录只有这一篇文章,他强调了高层大气中的“长波”对整个大气行为的影响。
  • Jule在跟随罗斯贝做助教时,提出了QG( quasi-geostrophic)理论,可用于描述大尺度的大气和海洋运动;
  • 通过和诺依曼(John von Neumann)合作,他首次将计算机应用于天气预报,开创数值天气预报先驱(1950),Jule被认为是现代动力气象之父;
  • 1979年Charney提交气候变暖分析报告,预测了二氧化碳增加和气候变暖速度的趋势关系,其结果至今有效。

他是美国国家科学院院士,也是挪威和瑞典皇家科学院的外籍院士。他获得的众多奖项包括美国气象学会的迈辛格奖(1949年)和Rossby奖章(1964年)、航空科学研究所的洛西奖(1957年)、皇家气象学会的西蒙斯奖章(1961年)、史密森学会霍奇金斯奖章(1968年)和国际气象组织奖(1971年)。

虽然Jule是著名的气象学家,但在物理海洋领域也有他的重要地位。在MIT时,Stommel和Jule是同事,Stommel曾经想Jule寻求数学上的帮助,Jule在物理海洋领域深受Stommel的影响,并把气象领域的知识应用于海洋研究,如西边界湾流的理论研究。

下文选自美国国家科学院发表的Jule传记。

http://www.nasonline.org/publications/biographical-memoirs/memoir-pdfs/charney-jule-g.pdf

简介

Jule是二战后三十年大气科学领域的主要人物之一。气象学从一门艺术到一门科学的变化很大程度上是由于他的科学眼光和他对该领域的人和项目的彻底承诺。1946年,他与加州大学洛杉矶分校语言学学生Elinor结婚,他们有两个孩子,Elinor前一段婚姻所生的儿子也随了Charney的姓氏,他们的婚姻持续了将近21年。1967年,Jule与Lois Swirnoff结婚,Lois Swirnoff是一位画家和色彩理论家,曾是加州大学洛杉矶分校和哈佛大学的教授,他们的婚姻持续了近十年。Jule在生命最后的几年与摄影艺术家Patricia Peck一起渡过。他于1981年6月16日在波士顿去世,死于肺癌。

从数学到气象

Jule 1917年出生在旧金山,他的父母在本世纪初从白俄移民到美国。

他青年时代的大部分时间都在洛杉矶度过,14岁时他的父母闹矛盾,妈妈带着Jule搬回了纽约。Jule后来回忆说,他不喜欢纽约,但他也记得他是在一个亲戚家里偶然发现微积分书。美国的普通高中都不教微积分,接触这本书后激发了他对科学的兴趣。

他本科就读于加州大学洛杉矶校区,学习数学和物理。1939年,他跟着托马斯开始读研,1940年获得硕士学位后,很快完成了一篇论文《度量曲线空间》。

硕导托马斯有一天邀请了气象学小组J.Holmboe发表演讲,Jule在台下听讲,1941年春Holmboe邀请Jule担任他的助手,并参加了在陆军和海军赞助的ULCA气象培训计划。此时,欧洲战争和太平洋的紧张局势让大学生开始考虑从事更加实用的研究工作。为了寻求建议,Jule拜访了冯·卡门(钱学森导师),冯·卡门建议他在航空工业中从事气象学工作。1941年,Jule成为UCLA气象项目的助教和学生。

气象新星

1941年,美国只有少数大学将气象学作为一门学科。加州大学洛杉矶分校气象学小组的负责人是最近从挪威来的J.Bjerknes,他以描述冷暖锋而闻名。J. Holmboe是一位年轻的挪威人,对这些概念很熟悉,对流体动力学也比较熟悉。

另一方面,M. Neiburger 在MIT师从C-G Rossby。Rossby倾向于将流体动力学应用于大气和海洋的简化模型。在1939年,他顺着Bjerknes最近的观点,即科氏参数随纬度的变化在大尺度环流系统向东迁移中发挥了重要作用,使用了一个纯水平移动的均匀大气简单模型,得出理想化大气中从西向东移动的速度定量公式(Rossby波)。

在接下来的十年中,Jule为气象研究中带来了深刻的变化。他与J.von Neumann合作,展示了新开发的电子计算机如何通过流体动力学方程进行数值积分来预测天气。这种基于物理的程序的基本前提并不新鲜,Bjerknes在20世纪初曾提出过,L.Richardson在第一次世界大战期间也曾部分尝试过。但它已25年无进展。

Jule的大学社交生活很快乐。Jule和其他几个学生合租了一所房子,享受着热闹的社交生活。Jule后来学会了滑雪和打网球,这是他在生命的最后几年都喜欢的运动。Jule是一位能够每晚与船员一起玩扑克的科学家,能够持续赢得他们的钱,而且从不产生丝毫恶意。由于他的数学背景,Jule并不被Bjerknes和Holmboe使用的描述性推理所吸引。在Jule担任助理期间,Neiburger让他接触了Rossby的论文。在1957年Rossby去世前的十年中,Rossby和Charney交换了许多信件,在其中一篇文章中,Rossby描述了他自己的教学方法Perhaps I occasionally sought to give, or inadvertently gave, to the student a sense of battle on the intellectual battlefield. If all you do is to give them a faultless and complete and uninhabited architectural masterpiece, then you do not help them to become builders of their own.这种哲学也成为Rossby论文的特点,似乎对Charney的思想产生了永久性的影响。

大约在1944年或1945年,Charney开始认为自己有资格考虑气象学论文。他逐渐制定了自己的目标,即在中纬度大气中平均西向东气流的不稳定性理论。这是他的选择,没有老师的指导。当考虑到包含非均匀流时,大气扰动方程非常复杂,为了得到一个易于处理的数学问题,Jule发现在推导最终的微分方程时,有必要进行近似。这种推理在当时的任何科学领域中都不常见。在没有任何流体动力学家的帮助下,他完成了这项工作。

经过大量手工计算,Jule能够找到一条零增长率曲线,将短波的不稳定波与较长稳定波分开。尽管当时很少有气象学家达到这样的数学水平,但这篇论文很快被发表。后来的研究表明,完整的解更复杂,但他的解包含了最重要的方面。最重要的是,他的论文使他相信他有能力在气象学方面进行高水平的原创研究。他随后将气象学作为一项永久职业,这对大气科学的发展具有重大意义。

数值天气预报

在1946年博士论文答辩之前的几个月里,他获得了欧洲的国家研究委员会奖学金,并计划访问奥斯陆的H. Solberg(挪威的数学家)和英国剑桥的G. I. Taylor。幸运的是,Jule在途中拜访了芝加哥大学的Rossby,Rossby带领该部门进入了全盛时期。Rossby凭借其非凡的说服力,毫不费劲地说服Jule推迟他的奖学金,并在大学呆了近一年。Jule后来将今年视为他职业生涯中最具形成性的经历。

1946年8月,Rossby安排Jule参加冯·诺依曼在普林斯顿高等研究院举行的一次会议,主题是电子计算机在天气预报中的应用。包括Rossby在内的十几位美国领先的动力气象学家出席了会议。这次会议的唯一重要结果是让Jule Charney认识到,John von Neumann是一个对物理问题有着相当深刻理解的人。

1947年春天,Jule夫妇前往挪威。他们的第一站是卑尔根,这里是自第一次世界大战以来挪威前沿研究的家园。Jule很快就发现如何修改流体动力学方程,将与气象相关的大尺度运动与更快的声波和重力波分离开来,这是Richardson研究中的难题。Jule通过对动量、质量和熵的流体动力学方程中的每一项进行仔细的尺度分析,证明了该公式的合理性,由上述公式得出的预测方程组现在被称为准地转理论(QG理论),准地转理论可能是自第一次世界大战以来气象学和海洋学中最有价值的发现之一。

1948年初,冯·诺依曼邀请Jule领导他的电子计算机项目中的气象学小组,其财政支持来自海军研究办公室。Jule在研究所大院住了三年,这里的研究人员大都是该研究所的一年临时成员,主要是年轻的数学家和物理学家。对于Jule来说,这是一个令人振奋的地方。冯·诺依曼虽然经常离开研究所,但他是Jule的热心听众和积极参与者。Charney夫妇很快会见了奥本海默(一把手)夫妇和研究所的其他常任理事以及普林斯顿大学的教员。

最初,Jule采取了几个主要步骤,准备用计算机预测气流的类型。由于运算复杂导致计算机不可用,Charney将正压方程线性化,并将Rossby频率公式扩展为格林函数。试验表明计算机可以应用于全非线性涡度方程,预测结果很快发表在Rossby的《Tellus》杂志上。

Jule的创作兴趣继续迅速发展。他从20世纪30年代阅读Rossby的论文以及最近与H.Stommel和 Munk(H.Sverdrup也是Jule的论文委员会成员)的熟识中,对现有的海洋大尺度运动理论有所了解。Jule首先应用了Eliassen对Ekman理论的发展,以说明如何将海洋顶部的风应力效应用于海洋准地转内部运动的边界条件。更引人注目的一步是墨西哥湾流理论。在与Stommel进行了大量讨论后,Charney展示了在海洋内部缓慢向西移动的水团中的位涡守恒应如何导致海洋西海岸的狭窄边界流,并在流向速度上具有地转平衡。

Jule已在普林斯顿高等研究院工作了七年,他已三十八岁。1951年底,他被任命为研究院成员,任期五年,但没编制,无法长待。此时,Jule的导师和领导冯·诺依曼已在华盛顿负有重任,很明显计算机项目及其应用特色并不是该研究院的核心主题。一把手奥本海默无法向Jule承诺永久编制。当冯·诺依曼患上癌症时,情况变得更加紧急。这时,Jule意识到需要换工作了,并开始询问大学。1956年夏天,在奥本海默的敦促下,研究院向Jule提供了5000美元的特别个人补助金,Jule便去了MIT。

MIT

在他搬到MIT后,Jule可以卸下他在数值天气预报方面的大部分责任。他与数学系的W.Malkus一起,组织了地球物理流体动力学非正式研讨会。该研讨会每两周在周五下午举行,逐渐有来自哈佛大学和伍兹霍尔的气象学、海洋学、地球物理学和应用数学的人员参加,耶鲁大学、布朗大学和罗德岛大学也经常参加。他们每次都被选择在不同的地点开会,长途汽车旅行自然需要一个小时的社交时间来减压,研讨会持续了22年。

1957年11月,Jule提交了一份报告,强调了全球范围内观测大气的气象卫星、布局细节观测的飞机和雷达和分析数据的电子计算机的新作用。大约在这个时候,L.Berkner考虑建立一个国家大气科学研究中心。Jule在随后的组织会议中给与非常积极地协助。加上领导推动,导致1959年3月成立了大学大气研究联盟,并很快成立国家大气研究中心(NCAR)。

Jule外向的性格和开放的思想很快使他许多科学家和管理人员建立了友好的关系。1960年初,他被任命为总统科学咨询委员会大气科学小组成员。一年后,他与麻省理工学院物理系的B.Rossi进行了讨论,后者为J.Wiesner(肯尼迪总统的科学顾问)提供关于可能和平利用外层空间的建议。Jule安排了一次与其他几位气象学家的会议,会上建议卫星可以改善天气预报。随后,联合国第1721号和第1802号决议要求世界气象组织和国际科学联盟理事会为此制定行动实践和研究计划。1966年,他成为美国国家科学院全球大气研究计划(GARP)委员会的负责人,并一直担任这一要求很高的职位,直到1971年。

Jule夫妇在1972-73学年休假,第一部分在英国剑桥度过。在此期间,Jule对如何通过Rossby波之间的非线性相互作用产生更高频率的重力波运动进行了大量思考,但最终放弃了。

Charney一家随后留在特拉维夫的魏茨曼研究所,Jule在那里研究荒漠化理论。(植被的损失将增加地面反照率,并将更多的太阳辐射反射回太空。地面吸收的太阳辐射的减少将减少对流对空气的局部加热。这反过来将减少空气的向上运动,导致降雨量减少,并有进一步减少植被的趋势。)这是他第一次访问以色列,他将这次旅行描述为一次“令人感动的经历”。

QG理论和波数谱斜率问题

CHARNEY J G. Geostrophic Turbulence[J/OL]. Journal of the Atmospheric Sciences, 1971, 28(6): 1087-1095. DOI:10.1175/1520-0469(1971)028<1087:GT>2.0.CO;2.

1971年,Jule发表了一篇高度抽象的短文,但具有深刻的实际意义。这篇论文讨论了大气大尺度准地转运动的频谱。

苏联Kolmogorov和Obukhov多年前研究表明,三维均匀各向同性湍流的波数谱随-5/3幂次而变化。同时,一些理论家认为二维湍流是一种纯粹的数学抽象,并得出了一个更陡峭的波数为-3次方的定律。这样的气流在观察者看来比传统的风洞模式要平滑得多。Jule提出了一个令人信服的论点,即受准地转方程动力学控制的系统将具有与假设的二维情况类似的频谱,即使其运动是三维的。这一点的实际意义是,根据零散观测构建的天气图在-3定律下比在-5/3定律下更有意义

当前物理海洋领域的波数谱斜率分析,即主要来源于此,它本质上代表了能量的尺度特征。

全球变暖的首次评估

1979年,Charney主持了国家研究委员会的“二氧化碳和气候特设研究小组”。 由此产生的22页报告“二氧化碳与气候:科学评估”是最早对全球变暖的现代科学评估之一。 其主要结论可在第2页找到:“我们估计CO2翻倍导致的最可能的全球变暖接近3°C,误差为±1.5°C。”这种对气候敏感性的估计在过去40年里基本没有变化。

去世

1981年,Jule去世,享年64岁。
为了纪念他,美国气象学会设立了以他名字命名的奖励。

自1973年Skylab-3携带首颗试验性高度计卫星发射升空,已过50年。

50周年之际,国际知名遥感杂志《Remote Sensing》在线发表了中国、希腊等海洋遥感学者撰写的综述论文“Satellite Altimetry: Achievements and Future Trends by a Scientometrics Analysis”。

作者根据SCI数据库Web of Science中收录的近五十年卫星高度计领域的8000余篇科学论文,全面回顾了自上世纪70年代以来,卫星测高走过的发展历程。作者统计了卫星测高的文章年度数量、应用领域分布、研究单位的地理分布特征、卫星测高知识体系网络、作者合作关系、引文共现等,并就前沿领域和今后的发展进行了展望。


图1:测高卫星在轨历史

在过去的50年里,卫星测高研究以惊人的速度发展,从最初每年发表不到10篇文献,发展到现在每年发表超过600篇文献,特别是中国学者发表的文献已超过了美国,跃居世界第一位。


图2:测高卫星相关研究论文时间演变

研究表明卫星测高的研究领域在不断得到拓展,卫星测高早已不限于传统的海洋学和大地测量学,它已经普遍应用于陆地水文、冰冻圈、陆地地形,甚至森林和土壤监测。经过50年发展,测高精度已得到显著提高,空间/时间分辨率也不断缩小,测高研究的尺度不断向精细化发展。


图3:测高卫星研究领域

在全球卫星测高作者集群中,有很多来自我国或华人学者,他们和国内外科学家存在密切的合作,为我国卫星测高的各方面发展做出了突出贡献。


图4:测高卫星作者群体

50年间,卫星测高研究热点在逐渐的演变,从早期的雷达高度计理论研究,逐步进化到SAR高度计、GNSS-R,以及新一代宽幅高度计。趋势分析揭示了当前卫星测高的热点研究领域和新的测高技术密切相关。特别是预计将于2022年发射的SWOT任务,将使得卫星测高从“网格”过渡到“像素”分辨率阶段。研究还表明,和人工智能、深度学习等跨领域合作也是未来发展的重点方向之一。


图5:测高卫星研究的知识节点

文章链接:https://www.mdpi.com/2072-4292/14/14/3332

背景

前面已经提到云计算平台pangeo,很多人了解GEE、航天宏图PIE、AWS(亚马逊)、谷歌云地球科学服务等,但pangeo云还是第一听说。小编查阅网络发现,中文资料为零,说明中国的用户确实较少。然而,pangeo云在美欧已发展多年,相关分析工具和云计算已经较为成熟,在地球科学领域,特别是物理海洋领域已经取得很多研究成果。因为这是不错的小众云计算平台,所以特此介绍。今天先聊pangeo入门。

pangeo是由一群草根科学家自发组织的地学大数据云计算系统,它在2016年由美国哥伦比亚大学Ryan Abernathey 领导的一个物理海洋小组发起,最初是希望更好处理海洋科学大数据,例如MITgcm高分辨模式LLC4320的PB级别数据。通过数年时间,大批参与者通过github平台发展了一系列的大数据和云计算分析软件,搭建了pangeo云计算基础设施,形成了良好的科学生态系统(如JupyterHub、dask、xarray、intake、Zarr等)。这几年,pangeo云计算已在一定程度上改变了地球科学的研究方式,它提高了科学生产力,使研究结果可重复,也为数据密集型问题的研究打开新大门。

pangeo得到了美国NSF EarthCube计划、Anaconda、NASA、NCAR以及一些私人基金会的强力资助,使之能够持续发展。目前pangeo为全世界用户免费提供云计算服务(最大16CPU,60G内存)。

云计算和传统科研模式的区别

我们先欣赏下传统的数据下载模式,以著名的欧洲Climate Data Store (CDS) 分发ECMWF ERA5资料为例,视频是CDS数据中心的机器人插卡作业模式,如果你申请这里的数据,机器人的机械手臂会把磁带接口插入相关卡槽读取数据,完成后再提供下载服务:

Climate Data Store (CDS) @ECMWF的机器人插卡作业模式

云计算离不开云数据。pangeo将大量数据存储于商业云平台,并购买数据中心附近的计算机算力资源,由这些算力来计算靠近它的云数据,因此数据读相当快。而云计算的计算能力则和费用相关。由于pangeo为免费服务,因此算力不能和超算媲美,但通过结合dask集群,计算能力足够强大。

Pangeo云架构:

注册使用

因为是云计算,需要注册一个账号。

https://pangeo.io/cloud.html

Pangeo Cloud目前包含两个不同的计算集群:

  • us-central1-b.gcp.pangeo.io 谷歌云平台。
  • aws-uswest2.pangeo.io AWS集群。

建议根据您要访问的数据选择集群。例如,如果您的数据主要存在于AWS中,请选择aws-uswest2。经Pangeo管理员审查同意之后,加入Pangeo的Github小组,便可以使用Pangeo云。(需要有一个Github账号,并对Git有一定的了解)

Pangeo Cloud集群为用户提供不同数量的RAM和CPU,可以在登录时进行设置。请为根据工作需要选择资源最少的设施,因为更大的内存和cpu会花费更多的钱。 是的,云计算本质上是收费服务,这部分钱由美国NSF等基金支付了。

云数据初探

几十年来,地球科学领域一直采用“下载模式”分析数据,即科学家从远程FTP服务器下载数据到个人电脑。而Pangeo的理念是将计算带到云数据中,这也就是云计算。Pangeo提供靠近高性能存储的高性能计算集群,目前许多广泛使用的数据集已经存储在这些云上。

如果对分析特定的大型数据集感兴趣,应该首先确定此数据集是否已存储在现有的云端,然后,可以请求访问该特定云数据以执行计算分析。或者,如果您的实验室或小组已经维护了一个数据存储库,也可以考虑在本地计算资源上部署Pangeo环境数据服务器(可能比较费力)。

使用云数据和云计算无需掌握很多特殊知识,但需要能够熟练使用一下基础工具:

  • Jupyter Hub
  • Python
  • Xarray

当前,许多预存数据集目录都位于catalog.pangeo.io。此目录已预先配置,包含海洋、大气、气候和水文等不同类型数据。在大多数情况下,调取云数据很简单:

1
2
3
4
from intake import open_catalog

cat = open_catalog("https://raw.githubusercontent.com/pangeo-data/pangeo-datastore/master/intake-catalogs/master.yaml")
list(cat)

[‘ocean’, ‘atmosphere’, ‘climate’, ‘hydro’]

这些数据集合中包含了CESM全球气候模式、NCAR数据集、CCMP、极地数据、Landsat8数据、CMIP6、卫星测高沿轨和网格数据、MOM6/CESM、MITgcm ECCOv4、LLC4320、ESIP等资料。

此外,还可以利用fsspec打开目录之外的数据,例如,要从Google Cloud Storage打开公共文件cmpi6,您可以执行以下操作:

1
2
3
4
5
import pandas as pd
import fsspec
path = 'gs://cmip6/cmip6-zarr-consolidated-stores.csv'
with fsspec.open(path) as f:
df = pd.read_csv(f)

物理海洋数据集

物理海洋数据集是pangeo的重点,通过命令open_catalog可以很方便的打开它,该数据集合包含了多种常见的数据,比如卫星高度计的沿轨和网格数据、多种高分模式数据等,还有前面提到的MITgcm LLC4320模式数据。LLC4320数据由于存储巨大,它几乎只能在超级计算机或者Pangeo云端使用。

1
2
cat = open_catalog("https://raw.githubusercontent.com/pangeo-data/pangeo-datastore/master/intake-catalogs/ocean.yaml")
list(cat)

[‘sea_surface_height’,
‘cesm_mom6_example’,
‘ECCOv4r3’,
‘SOSE’,
‘GODAS’,
‘ECCO_layers’,
‘altimetry’,
‘LLC4320’,
‘GFDL_CM2_6’,
‘CESM_POP’,
‘channel’,
‘MEOM_NEMO’]

我们先用简单的SSH数据为例,介绍怎么读取、制图、计算和保存。
读取命令为to_dask(),这一步为lazy计算,并未真的计算:

1
2
ds  = cat["sea_surface_height"].to_dask()
ds

SSH数据中包含了sla、adt、流速等信息。

看一下sla的数据结构和大小,超过68G:

这时候数据已经是常见的xarray格式,通过isel选择一个时间:

1
ds.sla.isel(time=0)

使用xarray的.plot()函数进行绘图,这时候数据才真正的调入内存:

1
ds.sla.isel(time=0).plot(figsize=(15, 7))

1
ds.sla.sel(time="1993-01-07",latitude=slice(-60,-20),longitude=slice(0,50)).plot()

使用xarray的to_netcdf()保存nc数据格式到本地。通常我们只保存数据计算结果,原始数据和中间数据的保存没有太大意义。

1
ds.sel(time="1993-01-07",latitude=slice(-60,-20),longitude=slice(0,50)).to_netcdf("ssh.nc")

大数据并行计算

上面仅展示单独数据文件的读取、绘图和保存,数据体积小,无需大数据的相关并行运算。如果数据量较大,比如使用全部的sla数据计算全球海平面变化,则一共需要读取68G的数据,这时候可能需要集群的并行计算配置。pangeo通过融合dask可以实现集群计算。

Dask 是 Pangeo Cloud 的重要组件,可用于并行化的大型计算。pangeo用户无需太多并行计算知识即可使用它,但由于Dask能够使用许多云计算节点,大型、长时间运行、空闲的集群将会浪费Pangeo有限的云计算资金。因此请谨慎使用此力量!

要使用Dask进行可扩展计算,您需要使用Dask Gateway创建一个集群并连接到它

1
2
3
4
5
6
from dask_gateway import GatewayCluster
from dask.distributed import Client
cluster = GatewayCluster()
cluster.scale(5)
client = Client(cluster)
cluster

完成计算后,您可以显式关闭集群

1
cluster.close()
dask监控界面

海平面变化时间序列

计算全球海平面变化并不复杂,主要是均值的计算。首先沿着经纬度计算均值,并载入内存:

1
sla_timeseries = ds.sla.mean(dim=('latitude', 'longitude')).load()

该集群计算启动了5个worker,10个线程,大约1分半处理完数据,计算得到全球的平均海平面变化时间序列:

绘图:

1
2
3
4
5
6
sla_timeseries.plot(label='full data')
sla_timeseries.rolling(time=365, center=True).mean().plot(label='rolling annual mean')
plt.ylabel('Sea Level Anomaly [m]')
plt.title('Global Mean Sea Level')
plt.legend()
plt.grid()

本质上,SSH数据并不算大数据,只是比较大。这里仅展示其工作流程。

纬向变化时间特征

还可以计算纬向SLA变化,即在经度方向计算均值,耗时大约2分钟:

1
2
3
4
sla_hov = ds.sla.mean(dim='longitude').load()
fig, ax = plt.subplots(figsize=(12, 4))
sla_hov.name = 'Sea Level Anomaly [m]'
sla_hov.transpose().plot(vmax=0.2, ax=ax)

我们可以看到海平面变化的纬向特征:

空间变化特征

可以通过STD来计算全球海平面变化的空间特征:

1
2
3
4
sla_std = ds.sla.std(dim='time').load()
sla_std.name = 'Sea Level Variability [m]'
ax = sla_std.plot(figsize=(20, 12))
_ = plt.title('Sea Level Variability')

在流场较强的海域,variability是比较大的,比如西边界流、南极绕极流等:

KE计算

接下来,以南大洋绕极流为例,计算KE的长时间平均,这里的计算稍微加强一点,但也不复杂:

1
2
3
4
5
6
7
ds_SO = ds.sel(latitude=slice(-90, -30))
meanSSH = ds_SO.adt.mean('time')
meanSSH.load()
EKE = 0.5*(ds_SO.ugosa**2 + ds_SO.vgosa**2).mean('time') # KE
EKE.load()
MKE = 0.5*( (ds_SO.ugos - ds_SO.ugosa)**2 + (ds_SO.vgos - ds_SO.vgosa)**2).mean('time') # MKE (mean)
MKE.load()

绘图:

1
2
3
plt.figure(figsize=(16,5))
np.log10(EKE).plot.contourf(vmin=-3.5, vmax=-0.7, levels=10)
meanSSH.plot.contour(levels=15, linewidths=0.75)

1
2
3
plt.figure(figsize=(16,5))
np.log10(MKE).plot.contourf(vmin=-3.5, vmax=-0.7, levels=9)
meanSSH.plot.contour(levels=15, linewidths=0.5)

小结

通过注册,得到一个有效的云计算账户,然后初次尝试pangeo计算全球海平面变化,以及局部海域的动量特征,我们可以总结它的特色为:

  • 降低大数据编程的精力投入,增强宏观科学问题的思考
  • 降低集群分析门槛,无需专门的并行计算和云计算知识
  • 无需数据下载,按需调取海量云数据集
  • 开源支持,生态系统完备可持续

目前,GEE等云计算和大数据平台已经较为普及,但GEE等平台专注于图像遥感,无法接入物理海洋、大气科学等数据(模式和观测等)。pangeo云计算则在一定程度填补了这些空白,它发源于草根群体,在美国一步步发展壮大,获得NSF等机构数百万美元的资助,得到了美国政府和科学界的认可,小编认为这必然是未来海洋、大气科学的重点发展方向之一。国内在该领域暂时是空白的(大部分人无法访问pangeo和谷歌云服务),未来几年国内将可预见的在海洋、大气云计算领域快速增长。

下节预告

  • 基于云计算的LLC4320海洋模式数据谱分析

LLC4320模式简介

LLC4320是MITgcm 1/48°模式资料,其直接的诞生原因是帮助海洋学家为即将到来的SWOT任务将以前所未有的分辨率观察海洋表面。

该模拟在几个方面具有开创性,特别是其高空间分辨率(全球覆盖范围在 1 到 2 公里之间)、综合潮汐驱动和高频(每小时)输出,其海面高度信号中包含了内潮、内波、地转平衡等信号。除了在SWOT相关模拟工作取得应用之外,该模式也在海洋亚中尺度方向得到了很多应用,

该模式主要特征是:

  • 全球覆盖(包含极地)
  • 垂向90层
  • 分辨率1/48°
  • 全球海洋分成13个face。每个face的网格数为4320*4320.
  • 时间采样是小时,总计时间维度9030
  • 共14 个月(2011 年 9 月至 2012 年 11 月)
  • 数据量巨大,PB级别
  • 以MDS自定义二进制数据格式存储,为MITgcm独有
  • 模型网格复杂,为lat-lon-cap (LLC) 曲线网格 ,很难在常规地图投影中可视化。

在数据发布之初,该数据集位于高度安全的NASA超级计算机上,只有获得NASA资助的研究人员才能访问。

后来,NASA Ames研究中心创建数据共享网站(https://data.nas.nasa.gov/ecco/),开放了LLC4320数据。
任何人都可以通过该门户通过互联网访问数据。在此网站上,您可以单击以下载单个大小40GB的二进制文件。但是,除非您知道如何解码其中的内容,否则这些文件毫无用处。

xmitgcm.llcreader

xmitgcm 是一个 python 包,用于将 MITgcm 二进制 MDS 文件读入 xarray 数据结构。 通过将数据存储在 dask 数组中,xmitgcm 可以实现并行计算。

代码库: https://github.com/MITgcm/xmitgcm
文档: https://xmitgcm.readthedocs.io/en/latest/
博客: https://medium.com/pangeo/petabytes-of-ocean-data-part-1-nasa-ecco-data-portal-81e3c5e077be

为了使二进制数据方便利用,Ryan Abernathey等开发了xmitgcm的python包,其中llcreader用于读取这些二进制文件。该模块使用xarray和dask从ECCO数据门户网站在线访问数据,使模式大数据的操作变得轻而易举。

海面温度读取示例

以海面高度读取为例,展示其基本操作。用到了如下库:

  • xmitgcm: 提供llcreader
  • xarray: 基本数据结构和操作
  • dask: 大数据并行和lazy计算
  • sholoviews: 交互式的图像展示

1导入库

1
2
3
4
5
import xmitgcm.llcreader as llcreader
%matplotlib inline
import holoviews as hv
from holoviews.operation.datashader import regrid
hv.extension('bokeh')

初始化

这里我们使用LLC4320模式数据:

1
2
model = llcreader.ECCOPortalLLC4320Model()
model

更具数据分辨率和来源,llcreader 可用模块有:

  • llcreader.ECCOPortalLLC2160Model: LLC2160 accessed via ECCO data portal
  • llcreader.ECCOPortal LLC4320Model: LLC4320 accessed via ECCO data portal
  • llcreader.PleiadesLLC2160Model: LLC2160 accessed on Pleaides filesystem
  • llcreader.PleiadesLLC4320Model: LLC4320 accessed on Pleaides filesystem
  • llcreader.CRIOSPortalASTE270Model: ASTE Release 1 accessed via AWS
  • llcreader.SverdrupASTE270Model: ASTE Release 1 accessed on Sverdrup filesystem at UT Austin

海表温度

1
2
ds_sst = model.get_dataset(varnames=['Theta'], k_levels=[0], type='latlon')
ds_sst

这里的Theta是模式中固有的海表温度名称。这一行程序执行的lazy模式,数据并没有存储在本地内存,也不会进行计算。该变量的大小接近10T。

1
ds_sst.nbytes / 1e12

9.257148163328

如果想查看其他变量的名称:

1
print(model.varnames)

[‘Eta’, ‘KPPhbl’, ‘oceFWflx’, ‘oceQnet’, ‘oceQsw’, ‘oceSflux’, ‘oceTAUX’, ‘oceTAUY’, ‘PhiBot’, ‘Salt’, ‘SIarea’, ‘SIheff’, ‘SIhsalt’, ‘SIhsnow’, ‘SIuice’, ‘SIvice’, ‘Theta’, ‘U’, ‘V’, ‘W’]

比如Eta表示海面高度,U,V,W为速度,在数据操作的进行变量替换。
get_dataset模块的全部参数设置为

get_dataset(varnames=None, iter_start=None, iter_stop=None, iter_step=None, iters=None, k_levels=None, k_chunksize=1, type=’faces’, read_grid=True, grid_vars_to_coords=True)

常见操作有:

  • ds = model.get_dataset(varnames=[‘Eta’])
  • ds = model.get_dataset(varnames=[‘Salt’, ‘Theta’], k_levels=[1, 10, 40])
  • ds = model.get_dataset(varnames=[‘Theta’], k_levels=[0], type=’latlon’)

参考:https://xmitgcm.readthedocs.io/en/latest/llcreader.html#xmitgcm.llcreader.BaseLLCModel.get_dataset

动态交互可视化

1
2
3
4
5
6
dataset = hv.Dataset(ds_sst.Theta.isel(k=0).astype('f4'))
hv_im = (dataset.to(hv.Image, ['i', 'j'], dynamic=True)
.options(cmap='Magma', width=950, height=600, colorbar=True))

%output holomap='scrubber' fps=3
regrid(hv_im, precompute=True)

上图是南非南部海域的LLC4320 SST,可以看到强大的洋流和丰富的中小尺度涡旋。

上图作为对比是LLC2160的结果,和4320比较有一定差距。

涡度计算示例

下面展示LLC4320涡度计算步骤。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
model = llcreader.ECCOPortalLLC4320Model()
print(model)

# volecity
ds = model.get_dataset(varnames=['U', 'V'], k_levels=[0], type='latlon',
iter_start=model.iter_start,
iter_stop=(model.iter_start + model.iter_step),
read_grid=True)


# Normal gridding
import xgcm
grid = xgcm.Grid(ds, periodic=['X'])

# Calculate vorticity
zeta = (-grid.diff(ds.U * ds.dxC, 'Y', boundary='fill') + grid.diff(ds.V * ds.dyC, 'X'))/ds.rAz
zeta = zeta.squeeze().rename('vorticity').reset_coords(drop=True)

# load data
zeta.load()

# Show
dataset = hv.Dataset(zeta)
hv_im = (dataset.to(hv.Image, ['i_g', 'j_g'])
.options(cmap='RdBu_r', width=950, height=600, colorbar=True, symmetric=True))

regrid(hv_im, precompute=True)

扩展:云

虽然 ECCO 数据门户实现了数据自由访问,但它的带宽有限,国内用户往往正常加载。虽然它适合像交互式探索,但是如果想实际处理PB的数据,它可能无法提供必要的网络流量。

商业云存储(例如 Amazon S3 或 Google Cloud Storage)可以提供两全其美的优势。它既可公开访问,又具有极大的数据处理能力。

后面我将介绍云计算平台Pangeo,目前大量的地学大数据已经存储于云端,并可以通过Pangeo进行操作,这其中就包含LLC4320模式。

上一节,我们介绍了xmitgcm的LLCreader入门操作,总体上这个工具可以通过网络自动加载门户网站(ECCO)的模式数据,实现对大数据模式LLC4320和LLC2160的读取。但还有许多问题尚未解决:

  • 能否保存数据到本地
  • 能否按照经纬范围选取数据
  • 能否选择连续的一段时间(如70天,每小时一个)
  • 能否做较复杂计算

本节先介绍怎么通过LLCreader将数据下载本地,并使用GMT绘图。

加载llcreader

1
import xmitgcm.llcreader as llcreader

初始化模型

因为LLC4320数据体量较大,这里先以LLC2160为例。我们选择Theta进行导出测试。

1
2
3
4
5
6
7
model = llcreader.ECCOPortalLLC2160Model()

ds_sst = model.get_dataset(varnames=['Theta'], k_levels=[0], type='latlon',
iter_start=model.iter_start,
iter_stop=(model.iter_start + model.iter_step),
read_grid=True)
ds_sst.Theta

ds_sst的数据结构为Xarray的datasetds_sst.Theta的数据结构为Xarray的dataarray。可以看到Theta的数据大小是231M,这只是一个小时快照的单层全球数据,体积不算太大。

424563f1e8a8cb5512488f4924a7206b.png

上图为其coordinates,这是dataarray数据结构的一个关键术语,其中黑色粗体i,j,k,time表示维度坐标(Dimension coordinate),其他为无维度坐标(Non-dimension coordinate)。

Xarray: https://docs.xarray.dev/en/stable/user-guide/terminology.html#term-Dimension-coordinate

绘图查看

1
temp.Theta.plot()

维度坐标i,j作为其xy轴,另一维度timek(深度0)出现在标题上。

因为LLC为特殊的网格结构,这里暂时不能直接实现地理绘图。后面会对此进行单独介绍。

保存 .to_netcdf()

to_netcdf()Xarray内置的函数,可将数据保存为nc格式。注意数据保存和llcreader函数无关,llcreader的主要作用是在线获得LLC模式数据,并转化成Xarray特有的数据结构,后面所有的操作都是使用Xarray,因此有必要对Xarray做全面的学习。后面会对此介绍。

1
ds_sst.Theta.to_netcdf('myfile.nc')

上述命令可以将Theta参数保存。通过panoply可以绘图展示SST参数的全球分布:

删除不重要的坐标

但可以发现保存的文件大小是2.5G,远远超过了其自身大小,这是什么原因呢?

原来是把无维度坐标全部保存了,这些坐标其实也是数据,因此占用很大空间。一共有11个这样的2D坐标,再加上Theta,数据体积就达到2.5G了。

这些无维度坐标可以删去:

1
2
ds_sst.Theta.reset_coords() # 将无维度坐标转为变量(不删除)
ds_sst[["Theta"]].reset_coords(drop=True) # 将会删去无维度坐标

若想保留某些坐标,比如经纬度XC,YC

1
ds_sst.Theta.reset_coords()[["XC", "YC","Theta"]]

上面使用了[[ ]]做变量的筛选。

参考:https://docs.xarray.dev/en/stable/user-guide/data-structures.html#transforming-datasets

然后保存:

1
2
ds_sst[["Theta"]].reset_coords(drop=True).to_netcdf('myfile2.nc')
ds_sst.Theta.reset_coords()[["XC", "YC","Theta"]].to_netcdf('myfile3.nc')

这样,数据体积就小了,其中myfile2.nc仅包含Theta,大小213M。

GMT绘图

GMT绘图比ython自带函数更加强大,既然已经下载到本地,则看一下GMT绘图效果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
gmt begin ex02 png
gmt set MAP_ANNOT_OBLIQUE 0
gmt subplot begin 2x1 -A+JTL -Fs16c/10c -M0 -R1000/2000/2500/3500 -JX15/13c -B100 -T"Aghulhas Rings"
gmt subplot set 0,0 -Ce3c
gmt grd2cpt myfile3.nc?Theta -Cjet -Z
gmt grdimage myfile3.nc?Theta -I+a90
gmt colorbar -DJRM+o1.5c/0+mc -I0.3 -Bx2+lTheta -By+ldegree

gmt subplot set 1,0 -Ce3c
gmt grd2cpt myfile4.nc?Theta -Crainbow -Z
gmt grdimage myfile4.nc?Theta
gmt colorbar -DJRM+o1.5c/0+e+mc -Bx2+lTheta -By+ldegree
gmt subplot end
gmt end show

下节预告

  • 范围的筛选
  • 时间维度的连续导出

交流群

因为公众号留言功能未开通,为了促进交流,小编建立了一个QQ交流群,欢迎大家入群。暂时没开通微信群。

主要功能定位:

  • 交流国内外卫星遥感数据信息和现场实测数据信息
  • 对国内海洋实测数据的申请提供必要的指导
  • 物理海洋、大地测量、海洋遥感等学科交流
  • 传播有价值的科研工具、开源程序,提高科研生产力

在分析某一领域的核心贡献者时,往往使用年发文数量和年平均引用数量这两个指标,怎么将这两个指标在一个图形中展示呢?计量软件bibliometrix工具可以绘制这类图形,但是不容易被大众解读。今天推荐GMT的一个特别工具wiggle实现该目标。我们使用的例子还是卫星测高这个研究群体。

数据准备

从WoS下载卫星测高主题的元数据,1970年到2021年大约有8500多篇,作者有1,5000多位。

将数据导入bibliometrix软件。

bibliometrix是一个R语言的文献计量软件包,统计分析的功能较为强大,绘图的灵活性较弱。这里我们仅使用其统计功能。更多参考:https://bibliometrix.org/

在作者一栏,我们选择:

这里就可以看到图形了,但是不仔细看,分不清楚引用量是怎么表达的。

仔细看的话,发现圆点的大小表示论文数量,圆点的颜色深浅表示引用数量,这种展示对于量化分析并不友好。

我们选择保存为csv文件,然后让GMT来绘图:

GMT代码

由于在一个csv文件中包含了所有信息,绘图需要使用循环的脚本,这里采用pygmtPython相结合绘图。

主要代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
df = pd.read_csv(r".\author\Author_Production_Over_Time.csv")
au=df['Author']

fig = pygmt.Figure()
fig.basemap(region=[1978, 2023, -20, 200], projection="X15c/15c", frame=["Snlr", "xaf1"])

fruits = au.unique()
fruits=fruits[::-1]
k=-10
for index in range(len(fruits)):
print ('Present author : %s' % fruits[index])
z=df['freq'][df['Author']== fruits[index]]
x=df['year'][df['Author']== fruits[index]]
y=np.ones(x.values.size)+k
k=k+10

if k == 0:
fig.wiggle(
x=x.values,
y=y,
z=z.values,

# Set anomaly scale to "20c"
scale="20",
# Fill positive and negative areas red and gray, respectively
color=["red+p", "gray+n"],
# Set the outline width to "1.0p"
pen="1.0p",
# Draw a blue track with a width of 0.5 points
track="0.5p,blue",
# Plot a vertical scale bar at the right middle. The bar length is 100 in
position="jLT+w10+lpublications+o0.2/0.2",
transparency=50,
)
else:
fig.wiggle(
x=x.values,
y=y,
z=z.values,

# Set anomaly scale to "20c"
scale="20",
# Fill positive and negative areas red and gray, respectively
color=["red+p", "gray+n"],
# Set the outline width to "1.0p"
pen="1.0p",
# Draw a blue track with a width of 0.5 points
track="0.5p,blue",
transparency=50,
)



k=-10
for index in range(len(fruits)):
print ('Present author : %s' % fruits[index])
z=df['TCpY'][df['Author']== fruits[index]]
x=df['year'][df['Author']== fruits[index]]
y=np.ones(x.values.size)+k
k=k+10
if k == 0:
fig.wiggle(
x=x.values,
y=y,
z=-z.values,

# Set anomaly scale to "20c"
scale="100",
# Fill positive and negative areas red and gray, respectively
color=["red+p", "blue+n"],
# Set the outline width to "1.0p"
pen="1.0p",
# Draw a blue track with a width of 0.5 points
track="0.5p,blue",
# Plot a vertical scale bar at the right middle. The bar length is 100 in
position="jLT+w50+lcitations/year+o0.2/0.9",
transparency=50,
)
else:
fig.wiggle(
x=x.values,
y=y,
z=-z.values,

# Set anomaly scale to "20c"
scale="100",
# Fill positive and negative areas red and gray, respectively
color=["red+p", "blue+n"],
# Set the outline width to "1.0p"
pen="1.0p",
# Draw a blue track with a width of 0.5 points
track="0.5p,blue",
transparency=50,
)

k=-10
for index in range(len(fruits)):

k=k+10

fig.text(
region=[1978, 2030, -20, 200],
projection="X20c/15c",
x=2017,
y=1+k-10,
text=fruits[index],
font="Courier-Bold",
justify="BL",
offset="0.75c/0c",
)
fig.show()

结果

图上方红色区域表示作者的年度论文发表数量,下方的蓝色区域表示当年度发表论文的年均引用量。

可以看出卫星测高领域产出最大和引用最多的作者中有多位多位中国人,排名首位的是美国The Ohio State University的华人C.K. Shum。

测试数据和代码:https://www.jianguoyun.com/p/DR0zR7YQ2PCQBxiK_MwEIAA

文献计量分析的GMT案例到此结束。

交流群

因为公众号留言功能未开通,为了促进交流,小编建立了一个QQ交流群,欢迎大家入群。暂时没开通微信群。

主要功能定位:

  • 交流国内外卫星遥感数据信息和现场实测数据信息
  • 对国内海洋实测数据的申请提供必要的指导
  • 物理海洋、大地测量、海洋遥感等学科交流
  • 传播有价值的科研工具、开源程序,提高科研生产力

本期再次回到GMT绘图,介绍一种使用GMT绘制3D柱状图的方法,本例子数据采用的是卫星测高领域的研究国家和机构的文章数量。本图件可以直观的展示某一领域研究机构的空间地理分布和强度。对于综述文章或者研究生的文献调研有一定用途。

WoS数据

根据前几期文章介绍的方法,从Web of Science数据库检索相关主题,例如本次我们采用satellite altimet*,得到8000多篇研究结果。下载研究国家/地区和研究机构的文章数量数据。

机构数据:

1
2
3
4
5
6
7
8
9
10
11
Affiliations	Record Count	% of 8,505
NATIONAL AERONAUTICS SPACE ADMINISTRATION 914 10.747
CENTRE NATIONAL DE LA RECHERCHE SCIENTIFIQUE 828 9.735
INSTITUT DE RECHERCHE POUR LE DEVELOPPEMENT 707 8.313
CHINESE ACADEMY OF SCIENCES 629 7.396
UNIVERSITE DE TOULOUSE 517 6.079
UNIVERSITE TOULOUSE III PAUL SABATIER 498 5.855
NASA GODDARD SPACE FLIGHT CENTER 483 5.679
LABORATOIRE D ETUDES EN GEOPHYSIQUE ET OCEANOGRAPHIE SPATIALES 439 5.162
NASA JET PROPULSION LABORATORY 431 5.068
...

国家数据:

1
2
3
4
5
6
7
8
9
10
USA	3118
CHINA 1493
FRANCE 1385
ENGLAND 804
GERMANY 748
AUSTRALIA 421
ITALY 421
SPAIN 371
NETHERLANDS 340
CANADA 323

从地名到坐标

使用google sheet结合Geocode插件对研究机构和国家名称进行坐标解析。

参考:https://workspace.google.com/marketplace/app/geocode_by_awesome_table/904124517349

得到:

1
2
3
4
5
6
7
8
9
10
11
Affiliations	long	lati
NATIONAL AERONAUTICS SPACE ADMINISTRATION -77.016389 38.883056
CENTRE NATIONAL DE LA RECHERCHE SCIENTIFIQUE 2.2639934 48.8476037
INSTITUT DE RECHERCHE POUR LE DEVELOPPEMENT 2.3 48.9
CHINESE ACADEMY OF SCIENCES 116.3356321 39.9106327
UNIVERSITE DE TOULOUSE 1.4 43.6
UNIVERSITE TOULOUSE III PAUL SABATIER 1.4699399 43.5619586
NASA GODDARD SPACE FLIGHT CENTER -76.852344 38.99495
LABORATOIRE D ETUDES EN GEOPHYSIQUE ET OCEANOGRAPHIE SPATIALES 1.45 43.65
NASA JET PROPULSION LABORATORY -118.1713944 34.2013081
...

绘图

数据整理完毕后,使用GMT绘制3D柱状图。

1
2
3
4
5
6
7
8
9
10
11
12
REM For windows

gmt gmtset FORMAT_GEO_MAP = dddF MAP_FRAME_WIDTH=2p
gmt gmtset FONT_ANNOT_PRIMARY 7p,Helvetica,black FONT_LABEL 7p,Helvetica,black

set ps=3d.ps
gmt pscoast -JQ0/37.5/10c -R-180/180/-90/90 -Dc -A10000/0/1 -Sazure2 -Gwheat -Bxa60 -Bya30 --FONT_TITLE=10p -K --MAP_ANNOT_OBLIQUE=45 -p200/30 > %ps%
gawk "NF>1 {print $1, $2, $3}" loc | gmt psxyz -R-180/180/-90/90/0/1000 -J -JZ1.5i -So0.1c -Gred -O -K -p -Bza200+l"Publication numbers by affiliation" -BWSneZ -t20 >>%ps%

gmt pscoast -JQ0/37.5/10c -R-180/180/-90/90 -Dc -A10000/0/1 -Sazure2 -Gwheat -Bxa60 -Bya30 --FONT_TITLE=10p -K -O --MAP_ANNOT_OBLIQUE=45 -p200/30 -Y6c >> %ps%
gawk "{print $2, $3, $4}" loc_c | gmt psxyz -R-180/180/-90/90/0/3200 -J -JZ1.5i -So0.2c -Gblue -Bza500+l"Publication numbers by country/region" -BWSneZ -O -p -hi1 >>%ps%
gmt psconvert %ps% -A -P -Tf

结果

图中上部分为国家和地区的发表卫星测高相关的文章数量,下部分为机构发表的文章数量。首先,国家和地区较为集中在美国、法国、中国、英国和德国,以中国为例,相关研究机构主要分布在东部地区,最高为位于北京的中科院大学。

附赠平面图绘制代码

1
2
3
4
5
6
7
8
9
10
11
REM For windows

gmt gmtset FORMAT_GEO_MAP = dddF MAP_FRAME_WIDTH=2p
gmt gmtset FONT_ANNOT_PRIMARY 7p,Helvetica,black FONT_LABEL 7p,Helvetica,black

set ps=fig1.ps
gmt pscoast -JN4.5i -Rd -Dc -A10000/0/1 -Ba --FONT_TITLE=10p -K -W0.1p --MAP_ANNOT_OBLIQUE=45 > %ps%
gawk "{print $1, $2, log($3)/log(10)/10}" loc | gmt psxy -R -J -Sc -Gred -K -O -t55 >>%ps%
gawk "{print $2, $3, $4/2000}" loc_c | gmt psxy -R -J -Sc -Gblue -O -t75 >>%ps%

gmt psconvert %ps% -A -P -Tg

注意国家发文数量使用了对数化处理。图件缺少比例尺,有兴趣的同学可以修改代码加上。

至于哪一种表达方式效果更佳,小编也难以下结论,这或许和数据特点和个人喜好有关。

样本数据下载

https://www.jianguoyun.com/p/DSoojxEQ2PCQBxjioswEIAA

号外

因为公众号留言功能未开通,为了促进交流,小编建立了一个QQ交流群,欢迎大家入群。暂时没开通微信群。

主要功能定位:

  • 交流国内外卫星遥感数据信息和现场实测数据信息
  • 对国内海洋实测数据的申请提供必要的指导
  • 物理海洋、大地测量、海洋遥感等学科交流
  • 传播有价值的科研工具、开源程序,提高科研生产力

以卫星高度计任务为例,绘制Gantt图,以展示过去、现在和未来的卫星任务时间轴。此类图形对于综述文章或者研究生开题报告有一定帮助。

甘特图(Gantt Chart)简介:它是条状图的一种流行类型,显示项目进度以及其他与时间相关的系统进展的内在关系随着时间进展的情况,是由亨利·甘特 (Henry Laurence Gantt) 于1910年开发出。在项目管理中,甘特图显示项目的终端元素的开始和结束,概要元素或终端元素的依赖关系。

工具

我们采用Python库plotlyplotly.express模块来绘制Gantt图。其优点是高度集成,节省代码,方便学习使用。

plotly.express可以绘制许多类型的图形,包含那些常见的不常见的、常用的不常用,如散点图、线条图、PIE图、Bar图、泡泡图、桑吉图、Sunburst图、Icicle图等等。详见:https://plotly.com/python/plotly-express/

数据格式

输入的数据格式采用pandas的DataFrame,内容包含任务名称、开始时间和结束时间。

1
2
3
4
5
df = pd.DataFrame([
dict(Task="Job A", Start='2009-01-01', Finish='2009-02-28'),
dict(Task="Job B", Start='2009-03-05', Finish='2009-04-15'),
dict(Task="Job C", Start='2009-02-20', Finish='2009-05-30')
])

对于卫星任务,我们可以设置如下:

1
df = pd.DataFrame([dict(Satellite="TP", Start='1992-8-11', Finish='2005-12-31',Country="USA-FR")])

代码

Python全部绘图代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#Install Plotly
# pip install plotly

#Import required libraries
import plotly.express as px
import pandas as pd

#Create input data aggregated for each Satellite for each Country type
df = pd.DataFrame([
dict(Satellite="GEOSAT", Start='1985-3-1', Finish='1989-12-1',Country="USA"),
dict(Satellite="ERS-1", Start='1991-7-1', Finish='1995-6-1',Country="EU"),
dict(Satellite="TP", Start='1992-8-11', Finish='2005-12-31',Country="USA-FR"),
dict(Satellite="ERS-2", Start='1995-4-1', Finish='2002-6-1',Country="EU"),
dict(Satellite="GFO", Start='1998-5-1', Finish='2008-9-1',Country="USA"),
dict(Satellite="Jason-2", Start='2001-11-1', Finish='2013-7-1',Country="USA-FR"),
dict(Satellite="ENVISAT", Start='2002-3-1', Finish='2012-4-1',Country="EU"),
dict(Satellite="Icesat-1", Start='2003-1-1', Finish='2010-2-1',Country="USA"),
dict(Satellite="Jason-2", Start='2008-6-1', Finish='2019-10-1',Country="USA-FR"),
dict(Satellite="Cryosat-2", Start='2010-4-1', Finish='2024-4-1',Country="EU"),
dict(Satellite="HY-2A", Start='2011-8-1', Finish='2020-4-1',Country="CN"),
dict(Satellite="Saral", Start='2013-2-1', Finish='2022-12-31',Country="IN-FR"),
dict(Satellite="Sentinel-3A", Start='2016-2-1', Finish='2023-4-1',Country="EU"),
dict(Satellite="Jason-3", Start='2016-1-1', Finish='2022-4-1',Country="USA-FR"),
dict(Satellite="Sentinel-3B", Start='2018-4-1', Finish='2025-4-1',Country="EU"),
dict(Satellite="Sentinel-3C", Start='2024-4-1', Finish='2031-4-1',Country="EU"),
dict(Satellite="Sentinel-3D", Start='2028-4-1', Finish='2035-4-1',Country="EU"),
dict(Satellite="Icesat-2", Start='2018-9-1', Finish='2023-1-1',Country="USA"),
dict(Satellite="HY-2B", Start='2018-10-1', Finish='2023-4-1',Country="CN"),
dict(Satellite="HY-2C", Start='2020-9-1', Finish='2025-4-1',Country="CN"),
dict(Satellite="Sentinel-6 Michael Freilich", Start='2020-11-1', Finish='2027-1-1',Country="USA-FR"),
dict(Satellite="HY-2D", Start='2021-5-1', Finish='2026-4-1',Country="CN"),
dict(Satellite="HY-2E", Start='2022-5-1', Finish='2027-4-1',Country="CN"),
dict(Satellite="HY-2F", Start='2023-5-1', Finish='2028-4-1',Country="CN"),
dict(Satellite="HY-2G", Start='2024-5-1', Finish='2029-4-1',Country="CN"),
dict(Satellite="HY-2H", Start='2025-5-1', Finish='2030-4-1',Country="CN"),
dict(Satellite="SWOT", Start='2022-5-1', Finish='2026-4-1',Country="USA-FR"),
dict(Satellite="Sentinel-6B", Start='2025-1-1', Finish='2032-1-1',Country="USA-FR"),
dict(Satellite="COMPIRA", Start='2022-10-1', Finish='2026-1-1',Country="JP"),
])

#generate visualization
fig = px.timeline(df, x_start="Start", x_end="Finish", y="Satellite", color = "Country",text ="Satellite",width=1000,height=800)
fig.update_yaxes(autorange="reversed")
fig.update_layout(showlegend=True,legend_x=0.89,legend_y=0.99)
fig.update_yaxes(title_text="Satellite")
fig.update_xaxes(title_text="Time")

fig.add_vline(x='2022-7-1',line_color="black",line_dash="dot",opacity=0.5)

fig.add_vrect(x0='2022-7-1', x1='2038-1-1',line_color="green",fillcolor="red", opacity=0.2,
annotation_text="", annotation_position="bottom left",
annotation=dict(font_size=20, font_family="Times New Roman"))


fig.update_xaxes(showgrid=True, gridwidth=1, gridcolor='LightPink')
fig.update_yaxes(nticks=30)
fig.update_yaxes(showgrid=False,showticklabels=False)
fig.show()

# Save fig
fig.write_image("fig_sat.pdf")
fig.write_image("fig_sat.png")

Jupyter Notebook版本的代码见:https://github.com/yangleir/RemoteSensing_paper/blob/main/fig1_gantt/gantt.ipynb

结果

通过上面的代码,我们绘制了Gantt图,通过卫星任务的国家和地区进行分组。此外,还添加了当前时间线,以及对未来时间区间做透明填充。

调整

这里暂不探讨一些绘图的细节,有兴趣的同学可以尝试修改下方的部分代码,False改为True

1
2
fig.update_yaxes(nticks=30)
fig.update_yaxes(showgrid=False,showticklabels=False)

Zotero 为文献打标

今天为大家分享一个Zotero使用小窍门,为文献打上可爱的表情。

用途

希望对一些文献进行标星分类,表示其具有高价值。这样在日后的文献阅读中,可以在自己庞大的文献库中快速找到这些文献。

除了标星之外,我们还可以使用有意思的图标对文献进行贴标签,形成相关的文献集,方便日后查阅回顾。

Emoji表情符号

我们使用Emoji为文献打标签。

前往Emoji站点搜索自己想要的表情符号,比如最常用的喜欢 ❤️标签,可以通过下面的网站搜索Red heart,就能够找到许多类似表情,然后复制它。

推荐Emoji网站: https://emojipedia.org/

Zotero

回到Zotero,选择喜欢的论文,点击右上侧的Tags选项,add一下,把复制的❤️标签粘贴。❤️的数量可以随意设置,五星就粘贴五次。

这样完成了第一步打标签,在Zotero的左下角出现❤️标签,单击它,可以进行文献筛选。但是我们在文献的前方还是看不到标签,不利于我们快速定位文献。

接下来,右击❤️标签,选择Assign color,然后弹出对话框,选择数字和颜色,确定即可。

之后,在文献的前面就出现一个❤️的表情。

取消标记,只需要按键盘数字1。

之后,我们可以根据文献设置不同的标签。同一文献可以设置多个标签。

如果想在一个文献集合中仅显示❤️文献,点击右下角的❤️即可完成筛选。

这种打标的做法还是很方便的,特别是对于阅读大量文献的硕博士来说,常常忘记自己最欣赏的文章在哪里藏着是一个头疼事。

尽管我们可以通过新建不同的subcollection来实现初步分类,但当每一个subcollection中的文献数据增加后,通过标签还是可以快速找到最爱。

好了,今天的分享就到这了,希望有用。谢谢大家。

HARALD ULRIK SVERDRUP

简介

海洋学家和气象学家,曾任SIO所长和挪威极地研究所所长 。

  • Harald Ulrik Sverdrup于1888年11月出生于挪威大户Sverdrup家族。
  • 1911年,他在奥斯陆大学开始地球物理学生涯,然后从1913年到1917年在莱比锡大学攻读PhD学位。
  • 1926年被任命为卑尔根气象学主席,并于1931年被任命为Christian Michelsen Institute教授。
  • 1930年在华盛顿卡内基研究所工作,开始分析太平洋水文信息。
  • 1931年在Nautilus号潜艇上进行北极探险队。
  • 1936年被任命为SIO所长,并在那里工作了12年。在Sverdrup的领导下,SIO转变为现代海洋学机构,在此期间与Walter Munk合作,对二战登陆进行海浪预报。
  • 1947年,发表重要论文“斜压海洋中的风驱动洋流”。
  • 1948年,回到挪威,主持挪威极地研究所工作。
  • 1957年8月突然去世。

Sverdrup的是美国科学院和挪威科学院的成员,瑞典北极星勋章、美国国家科学院的阿加西奖章、皇家地理学会奖章和布鲁斯奖章获得者。曾担任国际物理海洋学协会和国际海洋勘探理事会主席、美国地球物理联盟副主席(兼海洋学部主席)。

家族成员:爸爸Edvard Sverdrup是挪威神学家,爷爷Harald Ulrik Sverdrup是牧师和挪威议会议员,叔公(爸爸的叔叔)Johan Sverdrup创立自由党,并曾任挪威首相,叔叔Jakob Sverdrup是挪威议会议员,叔叔Georg Sverdrup创立路德教会自由教会,任神学院院长。 妹妹Mimi Sverdrup Lunden是作家和女权活动家,兄弟Leif Sverdrup是美国陆军将军,兄弟Einar Sverdrup是挪威矿老板,死于抵抗德军入侵的保卫战。Harald Sverdrup未生育子女。

成就

  • 提出Sverdrup平衡,和Stommel、Munk前后独立发表了SSM论文。Sverdrup (1947), Stommel (1948),and Munk (1950)
  • 领导SIO成为现代化的双一流海洋科学机构。
  • 解释赤道逆流。
  • 为诺曼底登陆预报海浪。
  • 海水流量以其名字缩写Sv命名。

传记

根据Sverdrup在1948年返回挪威后为美国国家科学院撰写的自传(未出版),SIO后任所长William整理并发表这份Sverdrup传记。下面通过这篇文章回顾其一生。

[1]A. NIERENBERG W. Harald Ulrik Sverdrup[M]. National Academies Press, 1996.

挪威和德国期间

在挪威,Harald Sverdrup不仅被公认为伟大的科学家,而且还是北极探险家和古老而尊贵的大户人家一员。

Harald Sverdrup于1888年11月15日出生在挪威松恩的松达尔,他的父亲Johan Edvard Sverdrup (1866-1923)在那里的成人学校任教。Harald Sverdrup的爸爸和他的四个叔叔一样,是挪威国教(路德教会)的牧师,1908年,他爸爸成为奥斯陆的教会历史教授。

Sverdrup家族的首个史料记录出现在1620年,但在清晰的家谱中,Sverdrup只能追溯到他的曾曾爷爷(一位挪威北部的大地主)。 1813年,这位曾曾爷爷的三个儿子之一的Georg Sverdrup成为奥斯陆大学最早的古典哲学和语言教授,他还参加了挪威制宪会议,并且是最终文件的三位作者之一。三儿子中最小的一个,也就是海洋学家Harald Sverdrup的曾爷爷Jacob Liv Borch Sverdrup (1775-1841) 成为土地管理专家,并在挪威建立了第一所农业学校,他的两个儿子声名显赫,Johan Sverdrup (1816-1892)是议会成员,并成为自由党的领袖,并成功引入了议会制度。Harald Sverdrup的爷爷Harald Ulrik Sverdrup (1813-91)排行老大,也是一名牧师,还长期在议会任职,并经营了许多生意,从水果种植到银行,再到航运。

他的妈妈Maria Vollan在他还是个孩子的时候就去世了。由于爸爸多变的职业生涯,Harald少年时代的大部分时间都在挪威西部的各个地方度过,并由家庭教师教授文化课,直到他 14岁才在开始进入校园上学。在Harald的青春期,他经历了对自然科学的兴趣和家族神学专业之间的冲突。根据他自己的说法,他是丹麦先进出版物Frem的热心读者,这份杂志涵盖了整个科学领域,他很难将进化论与他的宗教信仰相协调。

以优异的成绩离开中学后,他在奥斯陆度过了一年的时间,并通过大学初试。他参加了Norwegian Academy of War的义务兵,并学习了物理和数学。他在回忆录中特别指出,他参加义务兵的一年并没有因为需要体能训练而浪费时间,体能训练对他漫长的北极考察中的生存和表现至关重要。

1908年进入大学时,Sverdrup的专业是天文学。1911年,他获得了挪威杰出气象学家和卑尔根学院创始人Vilhelm
Bjerknes教授的助教职位,并确定了他的研究兴趣。 他们的关系不是通常的导师与学生的关系。 Bjerknes的助手是他们这一代最聪明的年轻科学家,他们包括Jacob Bjerknes(Vilhelm
Bjerknes的儿子,出生于瑞典的美国籍气象学家)、Tor Bergeron(瑞典气象学家)、Olaf Devik(挪威物理学家)、Theodore Hesselberg(挪威气象学家,曾担任气象研究所所长40年)、Carl-Gustaf Rossby(对,就是那位Rossby)和Halvor Solberg(挪威科学与文学院院士)。

Sverdrup指出美国卡内基研究所的长期资助在早期在发展地球科学方面发挥的重要作用,Sverdrup本人在整个职业生涯中都得到了该机构的支持。

Sverdrup最初希望继续研究天文学,但他对气象学和海洋学越来越感兴趣,于是转了专业。1912年,Bjerknes前往莱比锡大学担任教授和新地球物理研究所所长,1913至1917年,Sverdrup陪同他在德国工作,并在那里完成了奥斯陆大学的PhD论文,于1917年6月获得了博士学位。

一个持续7年的北极航次

Sverdrup 似乎无法避免北极科考的命运。

1913年,Roald Amundsen重新开始了他的北极探险计划,Sverdrup拒绝了首席科学家助理的邀请,因为他希望完成他的大学工作。

1917年,他被提升为首席科学家,于是他接受了。Sverdrup在北极的经历塑造了他作为一个男人和一个科学家的双重性格。他在晚年向他的学生们讲述了北极的艰辛故事,并评论说:“那些年真的很有价值,因为它们让我与大自然进行了最密切的接触。”

探险队于1918年 7 月 18 日离开挪威,预计航次时间为三到四年,但却持续了七年半,其中包括1921-22年在美国的十个月的中断,这期间他第一次访问了华盛顿卡内基研究所,这也是他第一次到美国旅行。

Sverdrup直到1925 年 12 月 22 日才返回挪威。

Sverdrup 认为北极科考调查可更好的理解洋流的基本物理特性,因为在极地可以得到最好的和最简单的海洋动力学观察(那里是地球自转最大的)。他讲述了Nansen如何凭经验认识到矢量旋转作为深度函数的可能性,并向Bjerknes建议应该更正式地研究它。Bjerknes将这个问题分配给了一位年轻的数学物理学家 V. Walfrid Ekman,他解决了这个问题,被称为Ekman Spiral现象。它直接类比于电磁学中的Coq效应(skin effect)。

Sverdrup于1926年被任命为卑尔根气象学的主席(Bjerknes空出),在这个岗位上,他研究了在七年北极探险的数据,并编辑了航次报告,他个人贡献了约三分之二。然而,在担任这个职位之前,他在华盛顿的卡内基研究所花了十个月研究同一航次的电磁数据,他在这期间两次拒绝了长期职位。他还访问了几个美国实验室,包括对SIO的短暂访问。有趣的是,如果Sverdrup接受了卡内基的长期职位,他几乎肯定会成为1930年成立的伍兹霍尔海洋研究所的第一任所长。那样的话,美国海洋学的机构历史将会大不相同。

结婚

回到挪威后不久,Sverdrup与古德伦·布隆·沃蒙德结婚。他们没有孩子,但他收养了古德伦第一次婚姻的女儿。

SIO

直到1935年12月,Sverdrup的生活发生了巨大的变化。他的领导从美国回来,告诉Sverdrup,他可能会替代Thomas Wayland Vaughan(1924年,成为SIO所长,1936年退休)成为新的SIO所长。Sverdrup同意了,他接受了很快发出的邀请。Sverdrup从1936年担任SIO的负责人近12年。

1936年选择Sverdrup担任SIO所长,这是加州大学做出的最明智的决定之一。除了长期担任加州大学校长的Sproul之外,没有人能够预见到巨大的后果。Sproul与Sverdrup稳步合作,以改善该机构(SIO曾被前大学校长忽视)。Sproul是一位伟大的大学校长,当他发现杰出的人才时,他全力以赴地支持,并创造了一个让个人留下来工作的环境。

1936年,SIO是一个偏远且尘土飞扬的小型海洋站,有一艘只能进行沿海航行的研究船和大约30名工作人员,其中包括8名教职员工。它的年度运营预算约为 89,000 美元,主要来自斯克里普斯家族的捐款。

Sverdrup 1936到达拉霍亚时,一定对这里简陋的设施感到惊讶,据说他的爱人在她第一次看到一家人将长期居住的小房子时哭了。Sverdrup 带着几个近期目标开始工作,他首先需要一艘新的远洋调查船,他还想增加该机构的收入,提高员工士气,并在研究人员之间建立更紧密的联系。他的长期目标是制定SIO研究计划并改善该机构的教学。

Sverdrup于1937年从当时在拉霍亚家族Robert Paine Scripps那里得到了他需要的船只。Scripps先生对Sverdrup印象深刻,并同意不仅为该机构提供一艘远洋船 R/V EW Scripps,而且还同意增加该机构的家庭捐款。Sverdrup对Scripps家族长期支持的希望因Scripps先生第二年的英年早逝而破灭。

Sverdrup在SIO和加州大学洛杉矶分校之间建立了密切的工作联系,该校于1936年为SIO学生授予学位。他活跃于学术评议会,在加州大学洛杉矶分校教授课程,并与加州大学洛杉矶分校的管理人员和教师建立了友谊。Vilhelm Bjerknes 的另外两个助手 Jacob Bjerknes 和 Jorgen Holmboe正在加州大学洛杉矶分校建立气象系。Sverdrup还与加州大学洛杉矶分校的物理学家建立了密切的联系,以改善SIO和加州大学洛杉矶分校的研究生教学。

SIO是第一家也是长期以来唯一一家提供海洋学研究生教学的美国研究机构。Sverdrup很幸运在他到达时,SIO已经拥有了几位才华横溢的年轻老师,包括Roger Revelle。1939年,另一位年轻的物理学家Munk来到SIO与Sverdrup一起学习。

二战

Harald Sverdrup作为SIO所长的三年任期到了,但这时挪威已经被占领。当他意识到自己将无限期地留在拉霍亚时,他决定成为美国公民。其他说法表明,他在战争期间的安全许可问题也是一个推动因素。他的战时工作需要高度保密,而且由于他的大部分家人仍留在被占领的挪威,他的许可被间歇性地取消和更新。尽管当时在海军服役的Roger Revelle努力使Sverdrup的安全状态正常化,但还是发生了一些情况。

战争一开始,美国军方就对海洋学家和气象学家提出了紧急要求。反潜战成为军方的重中之重,加利福尼亚大学战争研究部(UCDWR )成立了海军无线电和声学实验室,以开展该主题的研究。SIO很快将自己转变为战时海洋学研究中心

可能是因为他的外国人身份,Sverdrup与加州大学战争研究部UCDWR的水下声学工作没有直接联系。UCDWR由物理学家Gaylord P. Harnwell指导,他后来成为宾夕法尼亚大学的杰出校长,并着有出色的电学和磁学成果。Sverdrup致力于解决与预测海滩阵地海浪条件相关的一系列问题,他的海流和海浪预测方法被用来指导盟军诺曼底登陆。这项工作为海军挽救了许多生命。

在战后,Sverdrup讨论他的二战相关工作的价值时,表现出很大的谦逊。虽然这些成就具有重要的实际意义,但他指出它们是基于非常古老的波浪定理,并取自经典流体动力学。在阅读他现有的信件时,无论在何种情况下,他的语气都非常平稳,这让人感到震惊。这种内在的平静的心态,可能是他在逆境中以及相对较短的时间内取得如此多成就的原因。 Sverdrup认为耐力是挪威人与生俱来的特质,因为他们“在一个人烟稀少的崎岖国家长大…变得自力更生、足智多谋,具备了忍受单调、寂寞和每天辛勤劳作的气质。”

战时和战后一段时间对于海洋学来说是非常重要的时期。海军各部门通过直接资助和成立海军研究办公室(Office of Naval Research)在推进该领域发挥了至关重要的作用,这为美国日后取得的巨大科学成就奠定了行政基础。有故事甚至说,海军支持实际上使SIO在战争结束后免于解散。事实上,加州大学的董事会认为战争结束后SIO不再有继续存在的理由,海军对此不以为然,并直接与学校高层接洽,承诺“只要预算可行”就在财政上支持SIO。Edward Cochrane海军上将在Roger Revelle的敦促下,写信给加州大学校长Sproul,表示将继续支持SIO的战后海洋学研究。

持续的海军资助至关重要,并发挥了重要作用。SIO和海军建立了合作关系,奠定了SIO在该领域的世界领先地位。这是一个富有成果的伙伴关系,大大加强了海军和学术界的联系。海军还做出了一项具体承诺,将无限期地支持SIO的几个教授,并提供持续的研究资金

SIO的一个教授职位让Carl Eckart(美国物理学家、物理海洋学家,UCDWR主任)留下,当时Carl Eckart在UCDWR度过了战争时期,并准备重返芝加哥大学担任教授。由于UCDWR在战争结束后解散,因此必须迅速做出选择,而Sverdrup已准备邀请他留在SIO。在那些年里,Eckart是SIO最重要的成员之一,仅次于Sverdrup。

在战后海洋学发展过程中,Sverdrup是西海岸的核心人物。Sverdrup为SIO制定的战后计划包含许多要素。他想培训更多的海洋学家,扩大SIO研究船队,并将人力和船只集中在一个共同的科学研究计划上,从而使SIO可以出海调查并解决基本的海洋学问题。

离开

Sverdrup于1948年离开SIO返回挪威。他给出的理由是,他可以在一个较小国家的国际事务中发挥更大的影响力。但可能还有其他原因,当时加州大学的工资是出了名的低。其次毫无疑问Harald Sverdrup和他的妻子Gudrun都想家了。

Sverdrup回到奥斯陆后,领导了挪威极地研究所。通过安排1949-52年的挪威-英国-瑞典探险队到南极洲,他恢复了他早期的极地探索工作。他还从1949年起担任奥斯陆大学地球物理学教授直至去世。

Sverdrup在挪威极地研究所的工作没有SIO的工作强度或深度,但他实现了在国际社会发挥作用的目标。

他于1957年8月21日突然去世。

关于Harald Sverdrup的去世,有几种不同的说法。他的一名学生说,就在医生说他身体状况良好时,他心脏病发作死亡,也有人说他在参加会议时去世了。

图:Maud在北极。
插图创造者:Baby的小肉手
算法提供:Disco Diffusion v5.2
"A beautiful painting of polar expedition to the Arctic on R/V Maud", "blue color scheme"