繁体   English   中英

如何使用 Xarray 处理 OCO-2/Tropomi.NETCDF4 文件的时间变量?

[英]How to process the Time variables of OCO-2/Tropomi NETCDF4 files using Xarray?

我正在处理 Tropomi.nc 文件。 当我使用 xarray 打开数据集时,它不会处理时间维度。 在 Tropomi 文件中,时间维度被命名为“sounding_dim”。 而不是解码时间,返回的 output 只是探测号码。

我也试过 OCO-2.nc 文件。 在 OCO-2 中,时间维度是“sounding_id”。 在 OCO-2 的情况下,时间返回为浮点数,而不是日期。 代码和 output 由:

import numpy as np
import xarray as xr
from datetime import datetime as dt
import pandas as pd 

tropomi = xr.open_dataset('/Users/farhanmustafa/Documents/analysis/tropomi/ESACCI-GHG-L2-CH4-CO-TROPOMI-WFMD-20190102-fv1.nc', engine = 'netcdf4')
tropomi

返回的output为:

<xarray.Dataset>
Dimensions:                 (corners_dim: 4, layer_dim: 20, level_dim: 21, sounding_dim: 374749)
Dimensions without coordinates: corners_dim, layer_dim, level_dim, sounding_dim
Data variables:
    time                    (sounding_dim) datetime64[ns] ...
    latitude                (sounding_dim) float32 ...
    longitude               (sounding_dim) float32 ...
    solar_zenith_angle      (sounding_dim) float32 ...
    sensor_zenith_angle     (sounding_dim) float32 ...
    azimuth_difference      (sounding_dim) float32 ...
    xch4                    (sounding_dim) float32 ...
    xch4_uncertainty        (sounding_dim) float32 ...
    xco                     (sounding_dim) float32 ...
    xco_uncertainty         (sounding_dim) float32 ...
    quality_flag            (sounding_dim) int32 ...
    pressure_levels         (sounding_dim, level_dim) float32 ...
    pressure_weight         (sounding_dim, layer_dim) float32 ...
    ch4_profile_apriori     (sounding_dim, layer_dim) float32 ...
    xch4_averaging_kernel   (sounding_dim, layer_dim) float32 ...
    co_profile_apriori      (sounding_dim, layer_dim) float32 ...
    xco_averaging_kernel    (sounding_dim, layer_dim) float32 ...
    orbit_number            (sounding_dim) int32 ...
    scanline                (sounding_dim) int32 ...
    ground_pixel            (sounding_dim) int32 ...
    latitude_corners        (sounding_dim, corners_dim) float32 ...
    longitude_corners       (sounding_dim, corners_dim) float32 ...
    altitude                (sounding_dim) float32 ...
    apparent_albedo         (sounding_dim) float32 ...
    land_fraction           (sounding_dim) int32 ...
    cloud_parameter         (sounding_dim) float32 ...
    h2o_column              (sounding_dim) float32 ...
    h2o_column_uncertainty  (sounding_dim) float32 ...
Attributes:
    title:                     TROPOMI/WFMD XCH4 and XCO
    institution:               University of Bremen
    source:                    TROPOMI L1B version 01.00.00
    history:                   2019 - product generated with WFMD
    tracking_id:               41f8bb71-4f43-4927-843a-4f02ed013f3b
    Conventions:               CF-1.6
    product_version:           v1.2
    summary:                   Weighting Function Modified DOAS (WFMD) was ad...
    keywords:                  satellite, Sentinel-5 Precursor, TROPOMI, atmo...
    id:                        ESACCI-GHG-L2-CH4-CO-TROPOMI-WFMD-20190102-fv1.nc
    naming_authority:          iup.uni-bremen.de
    keywords_vocabulary:       NASA Global Change Master Directory (GCMD)
    cdm_data_type:             point
    comment:                   These data were produced at the University of ...
    date_created:              20200322T232210Z
    creator_name:              University of Bremen, IUP, Oliver Schneising
    creator_email:             schneising@iup.physik.uni-bremen.de
    project:                   Climate Change Initiative - European Space Agency
    geospatial_lat_min:        -90
    geospatial_lat_max:        90
    geospatial_lat_units:      degree_north
    geospatial_lon_min:        -180
    geospatial_lon_max:        180
    geospatial_lon_units:      degree_east
    geospatial_vertical_min:   0
    geospatial_vertical_max:   100000
    time_coverage_start:       20190102T000000Z
    time_coverage_end:         20190102T235959Z
    time_coverage_duration:    P1D
    time_coverage_resolution:  P1D
    standard_name_vocabulary:  NetCDF Climate and Forecast (CF) Metadata Conv...
    license:                   ESA CCI Data Policy: free and open access
    platform:                  Sentinel-5 Precursor
    sensor:                    TROPOMI
    spatial_resolution:        7km x 7km at nadir (typically)

当我尝试检索时间维度时:

tropomi.sounding_dim

<xarray.DataArray 'sounding_dim' (sounding_dim: 374749)>
array([     0,      1,      2, ..., 374746, 374747, 374748])
Dimensions without coordinates: sounding_dim

tropomi['sounding_dim'] = dt.strptime(tropomi["sounding_dim"], "%Y%m%d%H%M%S")

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-18-a749e221323c> in <module>
----> 1 tropomi['sounding_dim'] = dt.strptime(tropomi["sounding_dim"], "%Y%m%d%H%M%S")

TypeError: strptime() argument 1 must be str, not DataArray

我已经尝试了在 inte.net 上可以找到的所有解决方案。 如果有人帮助我解决问题,我将不胜感激。 我想提一下,我已经成功处理了 GEOS-CHEM.nc 文件,并且没有遇到任何类似的错误。

看起来你有一个np.datetime64类型的time变量。 您可以使用ds.swap_dims({"sounding_dim": "time"})使time成为坐标变量。 参见https://xarray.pydata.org/en/stable/generated/xarray.Dataset.swap_dims.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM