卫星云图文件来源及准备

卫星云图nc文件来源于Nasa Worldview VIIRS/JPSS2 Imagery Resolution 6-Min L1B Swath 375m NRT作为示例(需要注册账号下载卫星云图文件)

NASA Worldview 卫星云图下载

Python 模块安装

需要使用

1. xarray 模块读取nc文件

pip install xarray

2. netCDF4 模块中Dataset读取nc文件

pip install netCDF4

3. Numpy 模块过滤数据

pip install numpy

4. Matplotlib 绘制卫星云图

pip install matplotlib

*xarray 和 netCDF4都可以读取nc文件,但nc文件可能不完全兼容xarray,所以仍然需要使用netCDF4

可视化

import xarray as xr
import matplotlib.pyplot as plt
import numpy as np
from netCDF4 import Dataset
读取.nc文件
file_path = "your nc file path" # 换成你的.nc文件路径
ds = Dataset(file_path, "r") # 使用netCDF4读取.nc文件
print(ds)

读取后终端内文件信息

<class 'netCDF4._netCDF4.Dataset'>
root group (NETCDF4 data model, file format HDF5):
    date_created: 2024-11-19T21:01:20Z
    ProductionTime: 2024-11-19T21:01:20Z
    title: VIIRS I-band Reflected Solar Band and Thermal Emissive Band Data
    instrument: VIIRS
    processing_version: v3.0.0
    Conventions: CF-1.6
    institution: NASA Goddard Space Flight Center, VIIRS L1 Processing Group
    license: http://science.nasa.gov/earth-science/earth-science-data/data-information-policy/
    naming_authority: gov.nasa.gsfc.VIIRSland
    keywords_vocabulary: NASA Global Change Master Directory (GCMD) Science Keywords
    standard_name_vocabulary: 
    creator_name: VIIRS L1 Processing Group
    creator_email: modis-ops@lists.nasa.gov
    creator_url: https://ladsweb.modaps.eosdis.nasa.gov
    project: VIIRS L1 Project
    publisher_name: LAADS
    publisher_url: https://ladsweb.modaps.eosdis.nasa.gov
    publisher_email: modis-ops@lists.nasa.gov
    processing_level: L1B
    cdm_data_type: swath
    platform: JPSS-2
    orbit_number: 10508
    history: LSIPS_calibrate_viirs.exe PGE502.1.AS5200.JP2VIIRS.2024-325T0024.NA.2024-325T020035.141809515.pcf
    source: VJ201_NRT.A2024325.0024.002.2024325014931.nc,VJ201_NRT.A2024325.0018.002.2024325014928.nc,VJ201_NRT.A2024325.0030.002.2024325014926.nc,VIIRS_J2_CAL_STATIC_LUT_80K_v3.2.3.20_20240801_vcst.nc,VIIRS_J2_CAL_RSB_DYNAMIC_LUT_20221129_20260101_v3.2.3.20_20240801_vcst.nc,VIIRS_J2_CAL_DNB_DYNAMIC_LUT_20221123_20260101_v3.2.3.20_20240801_vcst.nc,VIIRS_J2_CAL_STRAYLIGHT_DYNAMIC_LUT_20221208_20250129_v3.2.3.20_20240801_vcst.nc,VIIRS_J2_CMN_LUT_v1.1.0.0_20220930_vcst.nc,off_USNO-PolarWander-UT1-ANC_Ser7_USNO_000f_20241108_202411080000Z_20241108000101Z_ee20241115120000Z_np.ascii
    time_coverage_start: 2024-11-20T00:24:00.000Z
    time_coverage_end: 2024-11-20T00:30:00.000Z
    PGE_StartTime: 2024-11-20 00:24:00.000
    PGE_EndTime: 2024-11-20 00:30:00.000
    StartTime: 2024-11-20 00:24:00.000
    EndTime: 2024-11-20 00:30:00.000
    PGE_Name: PGE502
    VersionId: 002
    startDirection: Ascending
    endDirection: Ascending
    DayNightFlag: Day
    format_version: 2
    instrument_number: 4
    number_of_filled_scans: 201
    PGEVersion: 3.0.32
    product_name: VJ202IMG_NRT.A2024325.0024.002.2024325020107.nc
    LocalGranuleID: VJ202IMG_NRT.A2024325.0024.002.2024325020107.nc
    identifier_product_doi_authority: https://doi.org
    identifier_product_doi: 10.5067/VIIRS/VJ202IMG_NRT.002
    GRingPointLatitude: [54.4296 62.1269 41.3723 36.196 ]
    GRingPointLongitude: [ 155.645 -153.296 -154.075  171.683]
    GRingPointSequenceNo: [1 2 3 4]
    SouthBoundingCoordinate: 36.19602
    NorthBoundingCoordinate: 62.342216
    EastBoundingCoordinate: -153.29634
    WestBoundingCoordinate: 155.64508
    RangeEndingTime: 00:30:00.000000
    RangeBeginningDate: 2024-11-20
    ProcessingCenter: MODAPS-NASA
    RangeEndingDate: 2024-11-20
    AlgorithmVersion: NPP_PR02 v3.0.0
    AlgorithmType: SCI
    ProcessingEnvironment: Linux minion20327 5.4.0-1109-fips #119-Ubuntu SMP Wed Oct 16 13:54:59 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
    RangeBeginningTime: 00:24:00.000000
    SatelliteInstrument: JP2VIIRS
    InputPointer: VJ201_NRT.A2024325.0024.002.2024325014931.nc,VJ201_NRT.A2024325.0018.002.2024325014928.nc,VJ201_NRT.A2024325.0030.002.2024325014926.nc,off_USNO-PolarWander-UT1-ANC_Ser7_USNO_000f_20241108_202411080000Z_20241108000101Z_ee20241115120000Z_np.ascii,VIIRS_J2_CAL_STATIC_LUT_80K_v3.2.3.20_20240801_vcst.nc,VIIRS_J2_CMN_LUT_v1.1.0.0_20220930_vcst.nc,VIIRS_J2_CAL_RSB_DYNAMIC_LUT_20221129_20260101_v3.2.3.20_20240801_vcst.nc,VIIRS_J2_CAL_DNB_DYNAMIC_LUT_20221123_20260101_v3.2.3.20_20240801_vcst.nc,VIIRS_J2_CAL_STRAYLIGHT_DYNAMIC_LUT_20221208_20250129_v3.2.3.20_20240801_vcst.nc
    ShortName: VJ202IMG_NRT
    LongName: VIIRS/JPSS2 Imagery Resolution 6-Min L1B Swath SDR 375m NRT
    dimensions(sizes): number_of_scans(201), number_of_lines(6432), number_of_pixels(6400), number_of_LUT_values(65536)
    variables(dimensions): 
    groups: scan_line_attributes, observation_data

最后一行中的“observation_data"是需要读取的卫星云图数据

variables(dimensions): 
    groups: scan_line_attributes, observation_data

此时可以通过xarray读取“observation_data"

ds = xr.open_dataset(file_path, group = "observation_data")
print('-------------------------------------------------observation_data-------------------------------------------------')
print(ds)

运行后终端结果如下

-------------------------------------------------observation_data-------------------------------------------------
<xarray.Dataset> Size: 2GB
Dimensions:                         (number_of_lines: 6432,
                                     number_of_pixels: 6400,
                                     number_of_LUT_values: 65536)
Dimensions without coordinates: number_of_lines, number_of_pixels,
                                number_of_LUT_values
Data variables: (12/17)
    I01                             (number_of_lines, number_of_pixels) float32 165MB ...
    I01_quality_flags               (number_of_lines, number_of_pixels) uint16 82MB ...
    I01_uncert_index                (number_of_lines, number_of_pixels) float32 165MB ...
    I02                             (number_of_lines, number_of_pixels) float32 165MB ...
    I02_quality_flags               (number_of_lines, number_of_pixels) uint16 82MB ...
    I02_uncert_index                (number_of_lines, number_of_pixels) float32 165MB ...
    ...                              ...
    I04_brightness_temperature_lut  (number_of_LUT_values) float32 262kB ...
    I04_uncert_index                (number_of_lines, number_of_pixels) float32 165MB ...
    I05                             (number_of_lines, number_of_pixels) float32 165MB ...
    I05_quality_flags               (number_of_lines, number_of_pixels) uint16 82MB ...
    I05_brightness_temperature_lut  (number_of_LUT_values) float32 262kB ...
    I05_uncert_index                (number_of_lines, number_of_pixels) float32 165MB ...

选择波段

文件内容提供了5个波段(I01~I05),根据需要选择

1. I01 - 蓝光波段 (I01)

波段范围:约 0.412 µm 到 0.442 µm

用途:主要用于大气中的气溶胶和水蒸气的监测。此波段的蓝光部分对大气中的水蒸气含量、污染物、以及海洋表面反射特性非常敏感。

应用:用于大气层中的气溶胶检测、海洋表面反射率的估算等。

2. I02 - 绿光波段 (I02)

波段范围:约 0.443 µm 到 0.485 µm

用途:绿色波段对植被监测非常有效,因为绿色波段反射率与植物健康状况和植被种类密切相关。也常用于海洋浮游植物的监测。

应用:主要用于植被健康监测、海洋浮游植物浓度估算以及大气中的气溶胶探测。

3. I03 - 红光波段 (I03)

波段范围:约 0.502 µm 到 0.532 µm

用途:此波段通常用于水体的监测。红光波段反射率对水体和土地表面的监测非常敏感,可用于分析水质、农业作物的健康状况、森林火灾后的土壤变化等。

应用:水质监测、农作物健康评估、火灾监测、冰雪覆盖区域的分析等。

4. I04 - 近红外波段 (I04)

波段范围:约 0.545 µm 到 0.585 µm

用途:近红外波段常用于测量植物的生长状态和土壤湿度。此波段对植被生物量的反射很敏感,因此是研究植被覆盖和农业区域的关键波段。

应用:主要用于植被健康、森林覆盖和土壤湿度的估算。

5. I05 - 近红外波段 (I05)

波段范围:约 0.602 µm 到 0.642 µm

用途:此波段同样用于大气、植被和水体监测。I05 波段对于评估大气中水蒸气含量、土壤湿度、植被覆盖等方面具有较强的敏感性。

应用:用于水蒸气监测、植被健康评估、土壤湿度检测、以及大气成分分析。

这里选用I01波段作为演示示例

band = I01
band_data = ds[band]
过滤高质量数据

在observation_data读取内容中

I01_quality_flags

指的是在遥感数据中的质量标记(quality flag),是一组附加信息,用于描述数据的质量或有效性。它通常以整数或位(bit)的形式存储,每一位或每个值表示特定的质量信息。质量标记可以帮助用户识别哪些像素或数据点可能存在问题,比如被云遮挡、数据缺失、或数据不可靠等。

质量标志位的位数和含义可能因不同的波段、传感器或产品而不同。通常,质量标志位 band_quality_flags 是一个整数,其中每一位(bit)代表某种特定的质量标记,常见的标记可能包括:

• 0:表示该质量控制项通过,数据是好的。

• 1:表示该质量控制项未通过,数据存在问题。

这里选用0作为高质量数据

band_quality_flags = ds[band + "_quality_flags"]
good_quality_mask = (band_quality_flags == 0)
filtered_band_data = np.where(good_quality_mask, band_data, np.nan) #过滤高质量数据

 使用np.where过滤高质量数据,对于低质量数据使用np.nan将不满足质量条件的数据替换为 NaN。

使用matplotlib进行可视化
plt.figure(figsize=(20, 8)) # 设置绘图窗口大小
plt.imshow(filtered_band_data, cmap="gray") # 绘图且配色方案为灰度
plt.colorbar(label="Reflectance") # 绘制标签
plt.title(band + " Band with Quality Filter") # 绘制标题
plt.show()

运行结果如下

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐