Я попробовал несколько способов сделать набор данных xarray (xr) из нескольких файлов .h5. Файлы содержат данные проекта SMAP о влажности почвы и другие полезные переменные. Каждая переменная представляет двумерный массив. Количество переменных и их метки в каждом файле равны. Проблема в том, что размеры, размеры, размеры x и y не равны.
Пример набора данных загрузка через xr.open_dataset ()
<xarray.Dataset>
Dimensions: (x: 54, y: 129)
Coordinates:
EASE_column_index_3km (x, y) float32 ...
EASE_column_index_apm_3km (x, y) float32 ...
EASE_row_index_3km (x, y) float32 ...
EASE_row_index_apm_3km (x, y) float32 ...
latitude_3km (x, y) float32 ...
latitude_apm_3km (x, y) float32 ...
longitude_3km (x, y) float32 ...
longitude_apm_3km (x, y) float32 ...
Dimensions without coordinates: x, y
Data variables:
SMAP_Sentinel_overpass_timediff_hr_3km (x, y) timedelta64[ns] ...
SMAP_Sentinel_overpass_timediff_hr_apm_3km (x, y) timedelta64[ns] ...
albedo_3km (x, y) float32 ...
albedo_apm_3km (x, y) float32 ...
bare_soil_roughness_retrieved_3km (x, y) float32 ...
bare_soil_roughness_retrieved_apm_3km (x, y) float32 ...
beta_tbv_vv_3km (x, y) float32 ...
beta_tbv_vv_apm_3km (x, y) float32 ...
disagg_soil_moisture_3km (x, y) float32 ...
disagg_soil_moisture_apm_3km (x, y) float32 ...
disaggregated_tb_v_qual_flag_3km (x, y) float32 ...
disaggregated_tb_v_qual_flag_apm_3km (x, y) float32 ...
gamma_vv_xpol_3km (x, y) float32 ...
gamma_vv_xpol_apm_3km (x, y) float32 ...
landcover_class_3km (x, y) float32 ...
landcover_class_apm_3km (x, y) float32 ...
retrieval_qual_flag_3km (x, y) float32 ...
retrieval_qual_flag_apm_3km (x, y) float32 ...
sigma0_incidence_angle_3km (x, y) float32 ...
sigma0_incidence_angle_apm_3km (x, y) float32 ...
sigma0_vh_aggregated_3km (x, y) float32 ...
sigma0_vh_aggregated_apm_3km (x, y) float32 ...
sigma0_vv_aggregated_3km (x, y) float32 ...
sigma0_vv_aggregated_apm_3km (x, y) float32 ...
soil_moisture_3km (x, y) float32 ...
soil_moisture_apm_3km (x, y) float32 ...
soil_moisture_std_dev_3km (x, y) float32 ...
soil_moisture_std_dev_apm_3km (x, y) float32 ...
spacecraft_overpass_time_seconds_3km (x, y) timedelta64[ns] ...
spacecraft_overpass_time_seconds_apm_3km (x, y) timedelta64[ns] ...
surface_flag_3km (x, y) float32 ...
surface_flag_apm_3km (x, y) float32 ...
surface_temperature_3km (x, y) float32 ...
surface_temperature_apm_3km (x, y) float32 ...
tb_v_disaggregated_3km (x, y) float32 ...
tb_v_disaggregated_apm_3km (x, y) float32 ...
tb_v_disaggregated_std_3km (x, y) float32 ...
tb_v_disaggregated_std_apm_3km (x, y) float32 ...
vegetation_opacity_3km (x, y) float32 ...
vegetation_opacity_apm_3km (x, y) float32 ...
vegetation_water_content_3km (x, y) float32 ...
vegetation_water_content_apm_3km (x, y) float32 ...
water_body_fraction_3km (x, y) float32 ...
water_body_fraction_apm_3km (x, y) float32 ...
Пример переменной dataset.soil_moisture_3km
<xarray.DataArray 'soil_moisture_3km' (x: 54, y: 129)>
array([[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
...,
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan]], dtype=float32)
Coordinates:
EASE_column_index_3km (x, y) float32 ...
EASE_column_index_apm_3km (x, y) float32 ...
EASE_row_index_3km (x, y) float32 ...
EASE_row_index_apm_3km (x, y) float32 ...
latitude_3km (x, y) float32 ...
latitude_apm_3km (x, y) float32 ...
longitude_3km (x, y) float32 ...
longitude_apm_3km (x, y) float32 ...
Dimensions without coordinates: x, y
Attributes:
units: cm**3/cm**3
valid_min: 0.0
long_name: Representative soil moisture measurement for the 3 km Earth...
coordinates: /Soil_Moisture_Retrieval_Data_3km/latitude_3km /Soil_Moistu...
valid_max: 0.75
Сначала я попытался открытьфайлы с:
test = xr.open_mfdataset(list_of_paths)
возникает эта ошибка:
ValueError: arguments without labels along dimension 'x' cannot be aligned because they have different dimension sizes: {129, 132}
Затем я пытаюсь объединить по координатам
test = xr.open_mfdataset(list_of_paths, combine='by_coords')
выдает эту ошибку:
ValueError: Could not find any dimension coordinates to use to order the datasets for concatenation
попробуйте это:
test = xr.open_mfdataset(list_of_paths, coords=['latitude_3km', 'longitude_3km'], combine='by_coords')
в конечном итоге с той же ошибкой.
Затем я пытаюсь открыть каждый файл с помощью xr.open_dataset () и попробовать каждый метод, который я могу найти на страница документации для объединения данных, таких как объединение, объединение, широковещательная передача, выравнивание и объединение ... но каждый раз возникает одна и та же проблема, что размеры не равны. Каков общий подход к изменению формы, выравниванию размеров или тому, что возможно для решения этой проблемы?
ОБНОВЛЕНИЕ:
Я нашел обходной путь для своей проблемы, но сначала думаю, что забыл упомянуть, что разные файлы, которые я пытаюсь объединить по времени измерения, имеют разные координатыи размеры. Изображения, из которых я пытаюсь построить свою модель, имеют перекрывающиеся области с одинаковыми значениями долготы и широты, но также и части без перекрывающихся областей.