数据介绍:SMAP 海洋表面盐度(SSS)数据

从海面发出的能量,以开尔文为单位测量等效的“亮度”温度。为实现任务的科学目标,水瓶座探测到亮度温度的变化约为 0.1 开尔文。这是通过仔细的仪器设计(例如,热控制)、数据平均以及避免和/或减轻污染源(例如来自太阳的辐射)来实现的。下面概述的要素是使这种极具挑战性的测量成为可能的关键。

轨道设计:

Aquarius 数据条带的可视化,在 7 天重复的太阳同步轨道上,在其下降过程中于上午 6:00 穿过赤道。它不断地在昼/夜终结者的暗面采样,以最大限度地减少反射辐射和阳光闪烁(即反向散射)。
Aquarius 数据条带(左侧)在 7 天内的可视化侧重于地球某一部分的连续数据条带。三个单独的光束由一个宽椭圆表示,总光束为 390 公里(242 英里)。尽管实际的条带以连续的带状收集数据,但每个椭圆形都以 1 分钟的间隔显示足迹。

图1 SMAP卫星轨道示意图

相同的辐射计:

三个机载辐射计共用一个直径为 2.5 米(8.2 英尺)的天线反射器。三台辐射计一起连续拍摄了一条 390 公里(242 英里)的幅面,大致垂直于天文台的航向。

快速采样:

Aquarius 辐射计快速采样(即每个数据样本 10 微秒),以帮助检测和减轻射频干扰 (RFI)。具有讽刺意味的是,RFI对 Aquarius 来说是一个不应该存在的问题,因为它的辐射计工作在一个以 1.41 GHz 为中心的频段,这对射电天文学来说是“受保护的”。使用这个频率使水瓶座能够检测到从地球表面自然发出的小亮度温度信号。然而,即使是来自通信和空中交通管制雷达等人造来源的非常微弱的带外信号,也可能压倒 Aquarius 旨在测量的自然信号。

极化测量:

Aquarius 辐射计测量了地球表面自然 L 波段发射的垂直和水平极化。第三个斯托克斯参数是这两种极化之间的相关性。所述第三斯托克斯参数被用于校正法拉第旋转,在发生在电离层,波从地球表面和到达卫星仪器之前传播之后的电磁辐射的偏振方向的变化。

海洋粗糙度校正:

Aquarius 有一个机载散射计,其占地面积与其辐射计相同。散射计通过向地球表面发射微波能量脉冲并测量反射能量(称为反向散射)来工作。
一般来说,较粗糙的海洋条件会比光滑、反射性更强的镜面海洋表面散射更多的能量。因此,散射计数据可以帮助修正海洋表面粗糙度,这是水瓶座盐度测量的最大误差来源。
数据集中涵盖了从 11 年 8 月 25 日到 15 年 6 月 7 日的完整 45 个月的 Aquarius 科学数据可用性。提高水瓶座测量的准确性是确保数据对科学和社会最有用的一项关键活动。科学家和工程师共同测试和改进算法——或计算的分步程序——用于处理宝瓶座的海洋表面盐度数据。V5 数据代表了盐度遥感方面的最新技术,虽然 Aquarius 项目已经结束,但原始数据可用,并且计划继续进行改进。

处理步骤:

图2 SMAP数据反演SSS处理流程

改进的地理校正:

V4.0 中的地表以 1/8° 分辨率导出。在 V3.0 中,地表分辨率的空间分辨率为 ½°。用于推导 V4.0 中地表的地表亮温 (TB) 基于 SMAP 陆地 TB 测量的月气候学。在 V3.0 中,地表 TB 基于地表排放模型。

修改后的海冰掩膜和标志:

V4.0 中的海冰掩码取自遥感系统 (RSS) AMSR-2 海冰地图。在 V3.0 中,海冰掩码来自国家环境预测中心 (NCEP)。V4.0 中的海冰排除阈值已更改为 gice >0.003。这个阈值在 V3.0 中是 gice >0.001。
对于 NASA/RSS Aquarius 盐度反演至 V4 和 RSS SMAP 盐度反演至 V3(包括 V3),来自 NCEP 的每日海冰掩膜用作辅助场。布鲁克等人。(2014) 和 Dinnat 和 Brucker (2016) 发现 NCEP 海冰面罩在一些情况下是不切实际的。因此,在 Aquarius 第 5 版任务发布结束时,实施了来自特殊传感器微波成像仪 (SSMI) 和 EOS 上的高级微波扫描辐射计 (AMSR-2) 的海冰面罩,而不是 NCEP 海冰面罩。 ## 空间分辨率和空间响应函数:
V4.0 盐度检索算法仅在 0.25°地球网格上使用 40 公里空间分辨率巴科斯吉尔伯特最佳插值 (OI) 运行。由此产生的盐度产品称为 sss_smap_40km。从这个 40 公里的产品中,使用简单的下一个邻居平均得出空间分辨率约为 70 公里的平滑产品(称为 sss_smap)。这个平滑的 70 公里 sss_smap 将被视为默认(标准)盐度产品。在 V4 中,sss_smap 和 sss_smap_40km 在同一个文件中提供。

经验不确定性估计:

3 级文件中为 sss_smap 提供了经验不确定性估计 sss_smap_uncertainty。这种不确定性基于 SMAP 和 Scripps Argo 插值场之间的比较。这还包括 Argo 数据在网格地图比例尺上的采样误差,以及制图误差。

参考文献:

  • Dennat, E. 和 Brucker, L.(2016 年)。通过水瓶座辐射计改进 L 波段观测的海冰分数表征,IEEE 地球科学和遥感汇刊,doi:10.1109/TGRS.2016.2622011。
  • Meissner, T.、Wentz, FJ 和 Le Vine, DM (2017)。Aquarius 盐度检索算法理论基础文件 (ATBD),任务版本结束;RSS技术报告120117;2017 年 12 月 1 日。在线提供。
  • Meissner, T.、Wentz, FJ 和 Le Vine, DM (2018)。NASA Aquarius 第 5 版和 SMAP 第 3 版的盐度检索算法,遥感 10, 1121, doi: 10.3390/rs10071121。
    温茨等人。(2014)。0.25 度网格上的遥感系统 GCOM-W1 AMSR2 日常环境套件,版本 8。可在线获取。

    以上资料翻译自NASA官网,具体请参考官网 简介。

    Python代码与注释详解:

    处理NASA SMAP海表盐度分析海表盐度随时间和区域变化;
    下载2020/01-2021/09 SMAP Salinity V4 data
    https://salinity.oceansciences.org/home.htm;
    制作逐月全球海表盐度图并保存;

    制作图展示海表盐度分析海表盐度随时间和区域变化代码展示

    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
    import netCDF4 as nc
    import numpy as np
    import matplotlib.pyplot as plt
    import os
    import matplotlib as mpl
    from matplotlib import cm
    from mpl_toolkits.basemap import Basemap
    from matplotlib.colors import LinearSegmentedColormap


    # np.set_printoptions(threshold=np.inf)
    def data_process(file):
    dataset = nc.Dataset(file)
    # print(dataset)
    lon = (dataset.variables['lon'][:])
    lat = (dataset.variables['lat'][:])
    sss = np.array(dataset.variables['sss_smap'][:])
    # sss[np.where(sss == -9999)] = 0
    sss[np.where(sss >= 0) and (sss < 33)] = 33
    sss[np.where(sss > 38)] = 38
    valid_values = np.where(sss > 0)
    sss_min = np.round(np.min(sss[valid_values]))
    sss_mean = np.round(np.mean(sss[valid_values]))
    sss_max = np.round(np.max(sss[valid_values]))
    print(sss[valid_values], sss_min, sss_mean, sss_max)
    # print(lon.shape, lat.shape, sss.shape)
    return lon, lat, sss


    def draw_sss_fig(file):
    lon, lat, sss = data_process(file)
    lx, ly = np.meshgrid(lon, lat)
    # sss = np.flip(sss, 1)
    map = Basemap(projection='ortho', resolution='c',
    lat_0=0, lon_0=l)
    map.drawmapboundary()
    map.fillcontinents(color='darkgray', lake_color='aqua')
    map.drawstates(linewidth=0.25)
    map.drawcoastlines(linewidth=0.25)
    map.drawmeridians(np.arange(-180., 181., 10.), labels=[0, 0, 0, 0], fontsize=12, linestyle='-.', color='k',
    linewidth=0.5)
    map.drawparallels(np.arange(-90., 91., 10.), labels=[0, 0, 0, 0], fontsize=12, linestyle='-.', color='k',
    linewidth=0.5)
    x, y = map(lx, ly)
    # plt.figure('Show SSS')
    lvls = np.linspace(33., 38., 300)
    show_sss = map.contourf(x, y, sss, alpha=1.0, cmap=plt.cm.turbo, levels=lvls)
    plt.imshow(sss)
    cbar = map.colorbar(show_sss, 'bottom', ticks=np.arange(33., 38.1, 1.0), format='%.1f', pad='10%')
    cbar.ax.tick_params(labelsize=12)
    font = {'weight': 'normal', 'size': 16}
    # plt.text('Center:(0,180)', fontsize=12, verticalalignment='bottom', horizontalalignment='center')
    plt.title('Global Sea Surface Salinity ' + j, font=font, y=1.02)
    plt.savefig(output_path + k + str(l) + '.jpg', dpi=600)
    plt.show()


    if __name__ == '__main__':
    postfix = '.nc'
    # '2020_01', '2020_02', '2020_03', '2020_04', '2020_05', '2020_06', '2020_07', '2020_08', '2020_09',
    # '2020_10', '2020_11', '2020_12', '2021_01', '2021_02',
    prefix = ['2021_03', '2021_04', '2021_05', '2021_06',
    '2021_07', '2021_08', '2021_09']
    # 'Jan.2020', 'Feb.2020', 'Mar.2020', 'Apr.2020', 'May.2020', 'Jun.2020', 'Jul.2020', 'Aug.2020',
    # 'Sept.2020', 'Oct.2020', 'Nov.2020', 'Dec.2020', 'Jan.2021', 'Feb.2021',
    title_list = ['Mar.2021', 'Apr.2021',
    'May.2021', 'Jun.2021', 'Jul.2021', 'Aug.2021', 'Sept.2021']
    input_path = '/Users/leo/Desktop/MarineTechTest8/Data/'
    output_path = '/Users/leo/Desktop/MarineTechTest8/Results/Img2/'
    if not os.path.exists(output_path):
    os.mkdir(output_path)
    file_list = os.listdir(input_path)
    for k, j in zip(prefix, title_list):
    for i in file_list:
    if i.endswith(postfix) and i[24:].startswith(k):
    file = input_path + i
    for l in range(-180, 180, 10):
    print(file, l)
    # input_file = '/Users/leo/Desktop/MarineTechTest8/Data/RSS_smap_SSS_L3_monthly_2020_01_FNL_v04.0.nc'
    draw_sss_fig(file)

    生成gif动态图代码

    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
    import imageio, os
    import moviepy.editor as mp

    def create_gif(image_list, gif_name, duration):
    frames = []
    for image_name in image_list:
    frames.append(imageio.imread(image_name))
    imageio.mimsave(gif_name, frames, 'GIF', duration=duration)
    return


    def main():
    postfix = '.jpg'
    postfix1 = 'Global_SSS_All1.gif'
    prefix = ['2020_01170', '2020_02170', '2020_03170', '2020_04170', '2020_05170', '2020_06170', '2020_07170', '2020_08170', '2020_09170', '2020_10170', '2020_11170', '2020_12170', '2021_01170', '2021_02170', '2021_03170', '2021_04170', '2021_05170', '2021_06170', '2021_07170', '2021_08170', '2021_09170',
    '2020_01160', '2020_02160', '2020_03160', '2020_04160', '2020_05160', '2020_06160', '2020_07160', '2020_08160', '2020_09160', '2020_10160', '2020_11160', '2020_12160', '2021_01160', '2021_02160', '2021_03160', '2021_04160', '2021_05160', '2021_06160', '2021_07160', '2021_08160', '2021_09160',
    '2020_01150', '2020_02150', '2020_03150', '2020_04150', '2020_05150', '2020_06150', '2020_07150', '2020_08150', '2020_09150', '2020_10150', '2020_11150', '2020_12150', '2021_01150', '2021_02150', '2021_03150', '2021_04150', '2021_05150', '2021_06150', '2021_07150', '2021_08150', '2021_09150',
    '2020_01140', '2020_02140', '2020_03140', '2020_04140', '2020_05140', '2020_06140', '2020_07140', '2020_08140', '2020_09140', '2020_10140', '2020_11140', '2020_12140', '2021_01140', '2021_02140', '2021_03140', '2021_04140', '2021_05140', '2021_06140', '2021_07140', '2021_08140', '2021_09140',
    '2020_01130', '2020_02130', '2020_03130', '2020_04130', '2020_05130', '2020_06130', '2020_07130', '2020_08130', '2020_09130', '2020_10130', '2020_11130', '2020_12130', '2021_01130', '2021_02130', '2021_03130', '2021_04130', '2021_05130', '2021_06130', '2021_07130', '2021_08130', '2021_09130',
    '2020_01120', '2020_02120', '2020_03120', '2020_04120', '2020_05120', '2020_06120', '2020_07120', '2020_08120', '2020_09120', '2020_10120', '2020_11120', '2020_12120', '2021_01120', '2021_02120', '2021_03120', '2021_04120', '2021_05120', '2021_06120', '2021_07120', '2021_08120', '2021_09120',
    '2020_01110', '2020_02110', '2020_03110', '2020_04110', '2020_05110', '2020_06110', '2020_07110', '2020_08110', '2020_09110', '2020_10110', '2020_11110', '2020_12110', '2021_01110', '2021_02110', '2021_03110', '2021_04110', '2021_05110', '2021_06110', '2021_07110', '2021_08110', '2021_09110',
    '2020_01100', '2020_02100', '2020_03100', '2020_04100', '2020_05100', '2020_06100', '2020_07100', '2020_08100', '2020_09100', '2020_10100', '2020_11100', '2020_12100', '2021_01100', '2021_02100', '2021_03100', '2021_04100', '2021_05100', '2021_06100', '2021_07100', '2021_08100', '2021_09100',
    '2020_0190', '2020_0290', '2020_0390', '2020_0490', '2020_0590', '2020_0690', '2020_0790', '2020_0890', '2020_0990', '2020_1090', '2020_1190', '2020_1290', '2021_0190', '2021_0290', '2021_0390', '2021_0490', '2021_0590', '2021_0690', '2021_0790', '2021_0890', '2021_0990',
    '2020_0180', '2020_0280', '2020_0380', '2020_0480', '2020_0580', '2020_0680', '2020_0780', '2020_0880', '2020_0980', '2020_1080', '2020_1180', '2020_1280', '2021_0180', '2021_0280', '2021_0380', '2021_0480', '2021_0580', '2021_0680', '2021_0780', '2021_0880', '2021_0980',
    '2020_0170', '2020_0270', '2020_0370', '2020_0470', '2020_0570', '2020_0670', '2020_0770', '2020_0870', '2020_0970', '2020_1070', '2020_1170', '2020_1270', '2021_0170', '2021_0270', '2021_0370', '2021_0470', '2021_0570', '2021_0670', '2021_0770', '2021_0870', '2021_0970',
    '2020_0160', '2020_0260', '2020_0360', '2020_0460', '2020_0560', '2020_0660', '2020_0760', '2020_0860', '2020_0960', '2020_1060', '2020_1160', '2020_1260', '2021_0160', '2021_0260', '2021_0360', '2021_0460', '2021_0560', '2021_0660', '2021_0760', '2021_0860', '2021_0960',
    '2020_0150', '2020_0250', '2020_0350', '2020_0450', '2020_0550', '2020_0650', '2020_0750', '2020_0850', '2020_0950', '2020_1050', '2020_1150', '2020_1250', '2021_0150', '2021_0250', '2021_0350', '2021_0450', '2021_0550', '2021_0650', '2021_0750', '2021_0850', '2021_0950',
    '2020_0140', '2020_0240', '2020_0340', '2020_0440', '2020_0540', '2020_0640', '2020_0740', '2020_0840', '2020_0940', '2020_1040', '2020_1140', '2020_1240', '2021_0140', '2021_0240', '2021_0340', '2021_0440', '2021_0540', '2021_0640', '2021_0740', '2021_0840', '2021_0940',
    '2020_0130', '2020_0230', '2020_0330', '2020_0430', '2020_0530', '2020_0630', '2020_0730', '2020_0830', '2020_0930', '2020_1030', '2020_1130', '2020_1230', '2021_0130', '2021_0230', '2021_0330', '2021_0430', '2021_0530', '2021_0630', '2021_0730', '2021_0830', '2021_0930',
    '2020_0120', '2020_0220', '2020_0320', '2020_0420', '2020_0520', '2020_0620', '2020_0720', '2020_0820', '2020_0920', '2020_1020', '2020_1120', '2020_1220', '2021_0120', '2021_0220', '2021_0320', '2021_0420', '2021_0520', '2021_0620', '2021_0720', '2021_0820', '2021_0920',
    '2020_0110.', '2020_0210.', '2020_0310.', '2020_0410.', '2020_0510.', '2020_0610.', '2020_0710.', '2020_0810.', '2020_0910.', '2020_1010.', '2020_1110.', '2020_1210.', '2021_0110.', '2021_0210.', '2021_0310.', '2021_0410.', '2021_0510.', '2021_0610.', '2021_0710.', '2021_0810.', '2021_0910.',
    '2020_010', '2020_020', '2020_030', '2020_040', '2020_050', '2020_060', '2020_070', '2020_080', '2020_090', '2020_100', '2020_110', '2020_120', '2021_010', '2021_020', '2021_030', '2021_040', '2021_050', '2021_060', '2021_070', '2021_080', '2021_090',
    '2020_01-10.', '2020_02-10.', '2020_03-10.', '2020_04-10.', '2020_05-10.', '2020_06-10.', '2020_07-10.', '2020_08-10.', '2020_09-10.', '2020_10-10.', '2020_11-10.', '2020_12-10.', '2021_01-10.', '2021_02-10.', '2021_03-10.', '2021_04-10.', '2021_05-10.', '2021_06-10.', '2021_07-10.', '2021_08-10.', '2021_09-10.',
    '2020_01-20', '2020_02-20', '2020_03-20', '2020_04-20', '2020_05-20', '2020_06-20', '2020_07-20', '2020_08-20', '2020_09-20', '2020_10-20', '2020_11-20', '2020_12-20', '2021_01-20', '2021_02-20', '2021_03-20', '2021_04-20', '2021_05-20', '2021_06-20', '2021_07-20', '2021_08-20', '2021_09-20',
    '2020_01-30', '2020_02-30', '2020_03-30', '2020_04-30', '2020_05-30', '2020_06-30', '2020_07-30', '2020_08-30', '2020_09-30', '2020_10-30', '2020_11-30', '2020_12-30', '2021_01-30', '2021_02-30', '2021_03-30', '2021_04-30', '2021_05-30', '2021_06-30', '2021_07-30', '2021_08-30', '2021_09-30',
    '2020_01-40', '2020_02-40', '2020_03-40', '2020_04-40', '2020_05-40', '2020_06-40', '2020_07-40', '2020_08-40', '2020_09-40', '2020_10-40', '2020_11-40', '2020_12-40', '2021_01-40', '2021_02-40', '2021_03-40', '2021_04-40', '2021_05-40', '2021_06-40', '2021_07-40', '2021_08-40', '2021_09-40',
    '2020_01-50', '2020_02-50', '2020_03-50', '2020_04-50', '2020_05-50', '2020_06-50', '2020_07-50', '2020_08-50', '2020_09-50', '2020_10-50', '2020_11-50', '2020_12-50', '2021_01-50', '2021_02-50', '2021_03-50', '2021_04-50', '2021_05-50', '2021_06-50', '2021_07-50', '2021_08-50', '2021_09-50',
    '2020_01-60', '2020_02-60', '2020_03-60', '2020_04-60', '2020_05-60', '2020_06-60', '2020_07-60', '2020_08-60', '2020_09-60', '2020_10-60', '2020_11-60', '2020_12-60', '2021_01-60', '2021_02-60', '2021_03-60', '2021_04-60', '2021_05-60', '2021_06-60', '2021_07-60', '2021_08-60', '2021_09-60',
    '2020_01-70', '2020_02-70', '2020_03-70', '2020_04-70', '2020_05-70', '2020_06-70', '2020_07-70', '2020_08-70', '2020_09-70', '2020_10-70', '2020_11-70', '2020_12-70', '2021_01-70', '2021_02-70', '2021_03-70', '2021_04-70', '2021_05-70', '2021_06-70', '2021_07-70', '2021_08-70', '2021_09-70',
    '2020_01-80', '2020_02-80', '2020_03-80', '2020_04-80', '2020_05-80', '2020_06-80', '2020_07-80', '2020_08-80', '2020_09-80', '2020_10-80', '2020_11-80', '2020_12-80', '2021_01-80', '2021_02-80', '2021_03-80', '2021_04-80', '2021_05-80', '2021_06-80', '2021_07-80', '2021_08-80', '2021_09-80',
    '2020_01-90', '2020_02-90', '2020_03-90', '2020_04-90', '2020_05-90', '2020_06-90', '2020_07-90', '2020_08-90', '2020_09-90', '2020_10-90', '2020_11-90', '2020_12-90', '2021_01-90', '2021_02-90', '2021_03-90', '2021_04-90', '2021_05-90', '2021_06-90', '2021_07-90', '2021_08-90', '2021_09-90',
    '2020_01-100', '2020_02-100', '2020_03-100', '2020_04-100', '2020_05-100', '2020_06-100', '2020_07-100', '2020_08-100', '2020_09-100', '2020_10-100', '2020_11-100', '2020_12-100', '2021_01-100', '2021_02-100', '2021_03-100', '2021_04-100', '2021_05-100', '2021_06-100', '2021_07-100', '2021_08-100', '2021_09-100',
    '2020_01-110', '2020_02-110', '2020_03-110', '2020_04-110', '2020_05-110', '2020_06-110', '2020_07-110', '2020_08-110', '2020_09-110', '2020_10-110', '2020_11-110', '2020_12-110', '2021_01-110', '2021_02-110', '2021_03-110', '2021_04-110', '2021_05-110', '2021_06-110', '2021_07-110', '2021_08-110', '2021_09-110',
    '2020_01-120', '2020_02-120', '2020_03-120', '2020_04-120', '2020_05-120', '2020_06-120', '2020_07-120', '2020_08-120', '2020_09-120', '2020_10-120', '2020_11-120', '2020_12-120', '2021_01-120', '2021_02-120', '2021_03-120', '2021_04-120', '2021_05-120', '2021_06-120', '2021_07-120', '2021_08-120', '2021_09-120',
    '2020_01-130', '2020_02-130', '2020_03-130', '2020_04-130', '2020_05-130', '2020_06-130', '2020_07-130', '2020_08-130', '2020_09-130', '2020_10-130', '2020_11-130', '2020_12-130', '2021_01-130', '2021_02-130', '2021_03-130', '2021_04-130', '2021_05-130', '2021_06-130', '2021_07-130', '2021_08-130', '2021_09-130',
    '2020_01-140', '2020_02-140', '2020_03-140', '2020_04-140', '2020_05-140', '2020_06-140', '2020_07-140', '2020_08-140', '2020_09-140', '2020_10-140', '2020_11-140', '2020_12-140', '2021_01-140', '2021_02-140', '2021_03-140', '2021_04-140', '2021_05-140', '2021_06-140', '2021_07-140', '2021_08-140', '2021_09-140',
    '2020_01-150', '2020_02-150', '2020_03-150', '2020_04-150', '2020_05-150', '2020_06-150', '2020_07-150', '2020_08-150', '2020_09-150', '2020_10-150', '2020_11-150', '2020_12-150', '2021_01-150', '2021_02-150', '2021_03-150', '2021_04-150', '2021_05-150', '2021_06-150', '2021_07-150', '2021_08-150', '2021_09-150',
    '2020_01-160', '2020_02-160', '2020_03-160', '2020_04-160', '2020_05-160', '2020_06-160', '2020_07-160', '2020_08-160', '2020_09-160', '2020_10-160', '2020_11-160', '2020_12-160', '2021_01-160', '2021_02-160', '2021_03-160', '2021_04-160', '2021_05-160', '2021_06-160', '2021_07-160', '2021_08-160', '2021_09-160',
    '2020_01-170', '2020_02-170', '2020_03-170', '2020_04-170', '2020_05-170', '2020_06-170', '2020_07-170', '2020_08-170', '2020_09-170', '2020_10-170', '2020_11-170', '2020_12-170', '2021_01-170', '2021_02-170', '2021_03-170', '2021_04-170', '2021_05-170', '2021_06-170', '2021_07-170', '2021_08-170', '2021_09-170',
    '2020_01-180', '2020_02-180', '2020_03-180', '2020_04-180', '2020_05-180', '2020_06-180', '2020_07-180', '2020_08-180', '2020_09-180', '2020_10-180', '2020_11-180', '2020_12-180', '2021_01-180', '2021_02-180', '2021_03-180', '2021_04-180', '2021_05-180', '2021_06-180', '2021_07-180', '2021_08-180', '2021_09-180']
    input_directory = '/Users/leo/Desktop/MarineTechTest8/Results/Img2/'
    output_directory = '/Users/leo/Desktop/'
    if not os.path.exists(output_directory):
    os.mkdir(output_directory)
    file_list = os.listdir(input_directory)
    path_list = []
    sum = 0
    for k in prefix:
    for i in file_list:
    if i.endswith(postfix) and i[0:].startswith(k):
    sum += 1
    print(sum, k, i)
    file_path = input_directory + i
    # print(file_path)
    path_list.append(file_path)

    print(path_list)

    gif_path = output_directory + postfix1
    duration = 0.02
    create_gif(path_list, gif_path, duration)


    if __name__ == '__main__':
    main()
    vfc = mp.VideoFileClip("/Users/leo/Desktop/Global_SSS_All1.gif")
    vfc.write_videofile("/Users/leo/Desktop/Global_SSS_All1.mp4")

    gif动图生成视频文件代码

    1
    2
    3
    4
    import moviepy.editor as mp

    vfc = mp.VideoFileClip("/Users/leo/Desktop/Global_SSS_All.gif")
    vfc.write_videofile("/Users/leo/Desktop/Global_SSS_All.mp4")

    (三)结果与总结:

    结果展示

20203月30日全球SMAP 每月海洋表面盐度(SSS)空间分布图

2020年1月-2021年9月全球SMAP 每月海洋表面盐度(SSS)时空动态变化图

结论与分析

在SMAP的每月海洋表面盐度(SSS)时间空间分布图中,可以看出:

  • 从空间上分析,太平洋中南部及大西洋南北半球亚热带地区盐度较大,内陆海,地中海及死海地区普遍具有高盐度区。
  • 从时间上分析,2020年1月-2021年9月的大洋中部表面盐度没有明显的周期性变化,但呈现动态平衡变化。在我国长江黄河入海口沿岸地区,河流流域进入雨季时,河流径流量大,注入海洋的淡水多,盐度降低,河流入海口的等盐度线向远离海岸的方向凸出;河流流域进入旱季时,河流径流量小,注入海洋的淡水少,盐度增加,河流入海口的等盐度线向靠近海岸的方向凸出。
  • 在极地地区,夏季时间海冰温度上升,一方面逐渐溶解为海水,对海水盐度起到了稀释的作用,因此海水盐度下降,另一方面,海洋中在夏季出现“跃层”,海盐被隔绝在海底,海表面盐度下降;冬季海水冷却,一方面凝结成海冰,海水溶液中溶剂–纯水被抽走,无机盐占比增加,海水盐度增大,另一方面海水混合度较高,不易出现分层现象,海洋底部无机盐随着海水上涌,盐度增大。