0%

GEE中分析HYCOM时间序列-湾流变慢了吗?

在前一篇文章中,我们提出了一个思考题:如何利用Google Earth Engine(GEE)这一前沿的地球观测工具,来深入分析HYCOM中的时间序列数据。这不仅是一个技术问题,更在科学研究中有着不可忽视的重要性。

近期发表在《地球物理研究快报》(GRL)的研究表明,过去四十年间流经佛罗里达海峡的墨西哥湾流速度出现了约4%的下降。墨西哥湾流不仅是支撑美国东海岸生态和气候的重要海洋流体系统,其变化还可能在全球范围内产生深远的影响。因此,在本篇文章中,我们将充分发挥GEE强大的数据处理和分析能力,来探究这一现象是否具有长期和普遍的科学意义。

使用谷歌Colab和geemap Python库

在这一节中,我们将使用Google Colab,一个基于云的Python代码编辑和运行环境,来进行进一步的数据处理和分析。为了方便进行空间数据的处理和可视化,我们将使用geemap。geemap是一个Python库,专门用于与Google Earth Engine进行交互,包括地图可视化和地理空间数据分析。这个库提供了一系列简单易用的API,允许用户快速地创建交互式地图,并且支持多种地图图层的叠加和编辑。它内置了丰富的功能和工具,能够让我们更高效地进行地理信息的获取、处理和分析。

接下来,我们将通过墨西哥湾流实例来展示如何使用Google Colab和geemap库进行HYCOM数据的时间序列分析。

湾流介绍

墨西哥湾流是北美大陆东海岸附近的一股重要洋流,起源于墨西哥湾,经过佛罗里达海峡,然后顺着美国东海岸流动,一路向北加速,直至北纬36°左右(北卡罗来纳州附近)开始转向东方。在约北纬40°和西经30°的地点,墨西哥湾流分裂成两条主要分支:一条是北流的北大西洋暖流,影响着西北欧;另一条是南流的Canary洋流。

墨西哥湾流不仅影响美国从佛罗里达到弗吉尼亚的东海岸气候,还在更大范围内影响着西北欧的气候。这使得西北欧的气候比同纬度地区更为温暖,这一现象至少部分地归因于北大西洋暖流的影响。除了气候影响外,墨西哥湾流也对大气和海洋内的气旋发展、生态系统以及海洋流动等方面有重要影响。

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
# import geemap.colormaps as cm

# 创建一个geemap地图实例
Map = geemap.Map()

# 定义与数据处理
Gs = ee.Geometry.Rectangle([-85, 20, -65, 40]) # 湾流

def getAprilAverage(year):
startDate = ee.Date.fromYMD(year, 1, 1)
endDate = ee.Date.fromYMD(year, 1, 2)

collection = (ee.ImageCollection('HYCOM/sea_water_velocity')
.filterDate(startDate, endDate)
.map(lambda image: image.divide(1000)))

return collection.mean()

years = ee.List.sequence(1997, 1997)
averages = years.map(getAprilAverage)
twoDecadesAverage = ee.ImageCollection(averages).mean()

speed = twoDecadesAverage.select('velocity_u_0').hypot(twoDecadesAverage.select('velocity_v_0'))
maskedSpeed = speed.clip(Gs)

# 添加图层
vis_params = {
'min': 0,
'max': 1,
'palette': ['blue', 'yellow', 'red'],
}
Map.addLayer(maskedSpeed, vis_params, 'Southern Ocean Speed 20-Year Average')

# 添加colorbar
colors = vis_params['palette']
vmin = vis_params['min']
vmax = vis_params['max']

Map.add_colorbar_branca(
colors=colors, vmin=vmin, vmax=vmax, layer_name="Southern Ocean Speed 20-Year Average"
)

Map.centerObject(Gs, 4)
Map

首先我们选择一天的数据看一看湾流的特征。

然后,我们修改部分代码,计算长时间序列的空间均值。

1
2
3
4
5
6
7
8
9
10
11
def getAprilAverage(year):
startDate = ee.Date.fromYMD(year, 1, 1)
endDate = ee.Date.fromYMD(year, 6, 15)

collection = (ee.ImageCollection('HYCOM/sea_water_velocity')
.filterDate(startDate, endDate)
.map(lambda image: image.divide(1000)))

return collection.mean()

years = ee.List.sequence(1997, 2007)

时间序列

我们使用GEE来分析1994年到2023年之间墨西哥湾流速度的趋势。以下是一种可能的实现方法:

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
import ee
import geemap

# 1. 范围
# Gs = ee.Geometry.Rectangle([-85, 20, -65, 40]) # 湾流

# 2. 定义一个函数来获取每年4月的数据,并返回这个月的均值
def getAprilAverage(year):
startDate = ee.Date.fromYMD(year, 4, 1)
endDate = ee.Date.fromYMD(year, 4, 40)

collection = (ee.ImageCollection('HYCOM/sea_water_velocity')
.filterDate(startDate, endDate)
.map(lambda image: image.divide(1000)))

average_image = collection.mean()
speed = average_image.select('velocity_u_0').hypot(average_image.select('velocity_v_0'))

# 获取该范围内的均值速度
mean_speed = speed.reduceRegion(
reducer=ee.Reducer.mean(),
geometry=southernOceanRegion,
scale=1000, # 根据数据的分辨率选择适当的值
maxPixels=1e9
)

return mean_speed

# 3. 使用循环来获取均值时间序列
years = list(range(1994, 2023))
speed_averages = []

for year in years:
annual_avg = getAprilAverage(year).getInfo()
speed_averages.append(annual_avg['velocity_u_0']) # velocity_u_0为速度的波段
print(year)

print(speed_averages) # 打印每年的均值速度列表

这样,你就得到了一个数组,其中包含了从1994年到2023年墨西哥湾流在所选月份的平均速度。有了这些年度平均速度数据,就可以使用它们来计算任何你感兴趣的统计指标,例如趋势、标准差等。

慢了吗?

在海洋科学研究中,精确的数据分析是至关重要的。通过对HYCOM数据进行细致的清洗和预处理,我们发现墨西哥湾流在近几十年里流速有所减缓,这一发现不仅科学上具有深远意义,还可能对全球气候和社会经济产生影响。更为引人关注的是,我们还观察到数据中存在长周期性的波动,暗示着更复杂的海洋动力学机制可能在起作用。这一周期性的存在既可能影响气候模式,也可能对海洋生态和经济活动产生长期影响。因此,持续的数据验证和多角度审视成为进一步研究的必要步骤,以提高研究的整体质量和可靠性。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import matplotlib.pyplot as plt

# 剔除大于0.5的数值和None的值
filtered_data = [(year, avg) for year, avg in zip(years, speed_averages) if avg is not None and avg <= 0.5]
filtered_years, filtered_speed_averages = zip(*filtered_data)

# 使用matplotlib绘制时间序列
plt.figure(figsize=(10, 5))
plt.plot(filtered_years, filtered_speed_averages, marker='o', linestyle='-', color='b')
plt.title('Gulf Stream Speed Average (April) from 2002 to 2022')
plt.xlabel('Year')
plt.ylabel('Average Speed')
plt.grid(True)
plt.xticks(filtered_years, rotation=45)
plt.tight_layout()
plt.show()

《后天》会来吗?

气候变化和人为活动对大西洋经向翻转环流(AMOC)产生了不容忽视的影响。最新研究显示,大西洋暖流目前已经减弱到至少1600年来的最低水平,这一变化可能会对全球气候产生深远的影响。具体来说,如果墨西哥湾流发生灾难性的崩溃,西欧将面临更加极端的冬季气候,美国东海岸的海平面可能会迅速上升,同时全球范围内的重要热带降雨模式也将被扰乱。研究进一步指出,自公元400年以来,大西洋暖流已经减弱了约15%,这是一个相当显著的变化。人为造成的全球变暖被认为是导致这一趋势的重要因素之一。

虽然2004年的电影《后天》提供了一种戏剧性的设想,即AMOC的迅速关闭将导致全球性的气候灾难,但事实上,自工业革命以来,AMOC的削弱确实是一个日益严重的问题,它已经引发了一系列环境和气候变化。这些变化不仅会影响特定地区,更可能在全球范围内引发一系列复杂的生态和社会问题。

文献:Robust Weakening of the Gulf Stream During the Past Four Decades Observed in the Florida Straits.Geophysical Research Letters, 2023; 50 (18) DOI:10.1029/2023GL105170