dataset - 如何从 HDF 文件中提取新的 Xarray 数据集?
问题描述
我有一个 30 层的 hdf 文件(Modis 数据)。我用 xarray 读取了这个文件,我想用 and 和 创建一个新的 xarrayFP_latitude
数据FP_longitude
集FP_power
。在新数据集中FP_latitude
,FP_longitude
将是维度和坐标,并且FP_power
必须是数据变量。
我的数据:
import xarray as xr
ds = xr.open_dataset('~/MOD14.A2018121.0725.006.2018121153451.hdf')
ds.info
<bound method Dataset.info of <xarray.Dataset>
Dimensions: (cmg_cells_day: 7550, cmg_values: 8, number_of_active_fires: 56, number_of_scan_lines: 2030, pixels_per_scan_line: 1354)
Dimensions without coordinates: cmg_cells_day, cmg_values, number_of_active_fires, number_of_scan_lines, pixels_per_scan_line
Data variables:
fire mask (number_of_scan_lines, pixels_per_scan_line) uint8 ...
algorithm QA (number_of_scan_lines, pixels_per_scan_line) uint32 ...
FP_line (number_of_active_fires) int16 ...
FP_latitude (number_of_active_fires) float32 ...
FP_longitude (number_of_active_fires) float32 ...
FP_sample (number_of_active_fires) int16 ...
FP_MAD_T21 (number_of_active_fires) float32 ...
FP_MAD_T31 (number_of_active_fires) float32 ...
FP_MAD_DT (number_of_active_fires) float32 ...
FP_power (number_of_active_fires) float32 ...
...
Attributes:
FirePix: 56
LandFirePix: 48
WaterFirePix: 8
MissingPix: 0
LandPix: 2271109
WaterPix: 466621
LandCloudPix: 492969
WaterCloudPix: 24453
GlintPix: 236567
GlintRejectedPix: 2
...
Dataarrays 必须用于创建新的 xarray 数据集:
ds['FP_power'].values
array([13.103112 , 8.100937 , 20.465372 , 5.201196 , 26.389868 ,
26.044945 , 4.773266 , 4.217818 , 7.6388383, 7.2120876,
7.6221876, 9.314646 , 4.6933956, 4.096731 , 6.0109596,
3.7509809, 4.2455773, 8.730763 , 4.4746056, 3.4984534,
6.315592 , 6.0503035, 5.17827 , 5.016279 , 6.9908423,
24.340796 , 6.6315703, 8.113305 , 8.446644 , 13.976195 ,
23.003496 , 15.349033 , 7.1619606, 10.015424 , 19.85352 ,
9.435441 , 4.913994 , 10.5239935, 8.5827055, 24.54771 ,
6.333998 , 8.9611025, 15.0496235, 5.0109186, 45.045345 ,
6.057521 , 7.708698 , 87.54773 , 7.666769 , 12.325472 ,
10.527838 , 38.443188 , 57.51008 , 7.5452023, 9.091777 ,
14.654143 ], dtype=float32)
ds['FP_latitude'].values
array([41.755886, 40.183777, 39.71829 , 35.75638 , 35.974506, 35.978523,
33.69351 , 33.69187 , 34.273735, 33.531178, 33.529613, 32.68083 ,
32.268406, 32.266865, 31.185026, 30.899273, 30.865719, 30.491243,
30.985224, 30.722086, 30.643255, 30.64147 , 30.752913, 30.402008,
30.317663, 30.720966, 30.233835, 30.35897 , 30.357391, 30.395046,
30.39352 , 30.828293, 30.244186, 29.912764, 30.767195, 30.348738,
30.271055, 30.259432, 30.25789 , 30.684727, 29.880253, 29.819761,
30.039375, 29.204227, 28.497374, 28.495903, 28.488457, 27.036402,
27.034937, 27.014181, 25.604158, 25.601257, 25.530325, 25.428734,
25.426567, 24.116196], dtype=float32)
ds['FP_longitude'].values
array([47.823795, 52.83626 , 47.964443, 52.77716 , 43.763355, 43.757786,
52.00247 , 52.01317 , 47.59178 , 47.60115 , 47.614666, 52.03568 ,
50.979088, 50.98952 , 52.536816, 52.01254 , 51.459595, 53.593616,
50.41951 , 51.96342 , 52.39401 , 52.404938, 50.74352 , 52.403107,
52.58711 , 49.822586, 52.00671 , 51.150295, 51.160656, 50.606544,
50.6168 , 47.33145 , 51.534843, 53.297 , 47.32797 , 50.29572 ,
50.818672, 50.774105, 50.784348, 47.33438 , 52.70218 , 52.33389 ,
50.639126, 52.75078 , 49.714542, 49.724632, 49.712914, 49.55535 ,
49.5653 , 49.581978, 54.415924, 54.431797, 53.151176, 52.729736,
52.742325, 52.7592 ], dtype=float32)
我的代码:
import numpy as np
lat = ds['FP_latitude'].values
long = ds['FP_longitude'].values
power = ds['FP_power'].values
ds = xr.Dataset({'power': xr.Variable(('lon', 'lat'), power),
'longitude': xr.Variable('lon', long),
'latitude': xr.Variable('lat', lat)})
ds
错误
ValueError: dimensions ('lon', 'lat') must have the same length as the number of data dimensions, ndim=1
这是什么错误?
解决方案
推荐阅读
- logback - 在 Logback 模式中添加行分隔符 (\u2028)
- c# - Unity:玩家在没有任何此类代码的情况下向上移动
- migradoc - MigraDoc - 将 TextFrame 放在动态生成的页面/部分上
- python - Pandas MultiIndex(超过 2 个级别)DataFrame 到嵌套 Dict/JSON
- windows - 德比安。从 Windows 重新加载后 ntfs 出现问题
- java - jTextField 在java计算器中只接受一个点?
- java - 使用 Java Api 在 Hadoop 中上传文件
- wordpress - Wordpress:如何为移动 Woocommerce 页面选择菜单?
- ms-access - 尝试创建具有多个外部联接的单个报告
- jhipster - 我无法在没有注册表的情况下使用 jhipster 微服务。.yo-rc.json 文件