![](/img/trans.png)
[英]How to process the Time variables of OCO-2/Tropomi NETCDF4 files using Xarray?
[英]How plot methan maps from OCO-2/Tropomi NETCDF4 files using Xarray?
这是以下问题的后续问题: How to process the Time variables of OCO-2/Tropomi.NETCDF4 files using Xarray?
我正在处理相同的数据,但在理解格式时遇到了一些问题。
我想 plot a map of 'xch4' as function of latitude and longitude for a given time.
我假设我可以为给定时间定义一个新结构:
new_ds=ds.isel(时间=0)
然后是 plot xch4 这个结构
new_ds.xch4.plot()
但这不起作用。
我对 Xarray 有点陌生,所以任何帮助将不胜感激。
代码和 output 给出如下:
import xarray as xr
ds=xr.open_dataset('ESACCI-GHG-L2-CH4-CO-TROPOMI-WFMD-20200430-fv1.nc')
ds
返回的output为:
<xarray.Dataset>
Dimensions: (corners_dim: 4, layer_dim: 20, level_dim: 21, sounding_dim: 549041)
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: 497532a4-fa32-406d-9f6e-52e87f527d47
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-20200430-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: 20201030T124301Z
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: 20200430T000000Z
time_coverage_end: 20200430T235959Z
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)
然后我尝试:
new_ds=ds.isel(time=0)
output 是:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/au159666/anaconda3/lib/python3.8/site-packages/xarray/core/dataset.py", line 1959, in isel
indexers = drop_dims_from_indexers(indexers, self.dims, missing_dims)
File "/Users/au159666/anaconda3/lib/python3.8/site-packages/xarray/core/utils.py", line 767, in drop_dims_from_indexers
raise ValueError(
ValueError: dimensions {'time'} do not exist. Expected one or more of Frozen(SortedKeysDict({'sounding_dim': 549041, 'level_dim': 21, 'layer_dim': 20, 'corners_dim': 4}))
我也尝试了1的建议:
ds.swap_dims({"sounding_dim": "time"})
new_ds=ds.isel(time=0)
但结果仍然是一样的:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/au159666/anaconda3/lib/python3.8/site-packages/xarray/core/dataset.py", line 1959, in isel
indexers = drop_dims_from_indexers(indexers, self.dims, missing_dims)
File "/Users/au159666/anaconda3/lib/python3.8/site-packages/xarray/core/utils.py", line 767, in drop_dims_from_indexers
raise ValueError(
ValueError: dimensions {'time'} do not exist. Expected one or more of Frozen(SortedKeysDict({'sounding_dim': 549041, 'level_dim': 21, 'layer_dim': 20, 'corners_dim': 4}))
事实证明,文件难以用 Xarray 打开的原因是它们包含点云而不是网格化数据。 因此,我改为使用 Nio 打开它们,并按以下方式绘制它们:
import Nio
import mpl_scatter_density
import matplotlib.pyplot as plt
file=Nio.open_file('../L2-CH4-CO-TROPOMI-WFMD-202004/ESACCI-GHG-L2-CH4-CO-TROPOMI-WFMD-20200415-fv1.nc','r')
xch4=file.variables['xch4']
latitude=file.variables['latitude']
longitude=file.variables['longitude']
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, projection='scatter_density')
ax.scatter_density(longitude, latitude, c=xch4, cmap=plt.cm.RdYlBu)
fig.savefig('methane.png')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.