|
|
|
|
@ -472,20 +472,17 @@ def convert_msg_to_npz(msg_file_path, output_path=None, verbose=True, n_workers=
@@ -472,20 +472,17 @@ def convert_msg_to_npz(msg_file_path, output_path=None, verbose=True, n_workers=
|
|
|
|
|
print("=" * 70) |
|
|
|
|
print("Конвертация MSG в NPZ") |
|
|
|
|
print("=" * 70) |
|
|
|
|
|
|
|
|
|
# Извлечение блоков |
|
|
|
|
if verbose: |
|
|
|
|
print("\n[1/3] Извлечение BUFR блоков...") |
|
|
|
|
|
|
|
|
|
blocks = extract_msg_blocks(msg_file_path, verbose=verbose) |
|
|
|
|
|
|
|
|
|
# Парсинг данных (параллельно) |
|
|
|
|
if verbose: |
|
|
|
|
print(f"\n[2/3] Парсинг данных (workers: {n_workers})...") |
|
|
|
|
|
|
|
|
|
times = sorted(set(t for l, t in blocks.keys())) |
|
|
|
|
n_times = len(times) |
|
|
|
|
|
|
|
|
|
# Инициализация массивов |
|
|
|
|
|
|
|
|
|
dbz = np.full((n_times, 100, 100, 11), np.nan, dtype=np.float32) |
|
|
|
|
dbzd = np.full((n_times, 100, 100, 10), np.nan, dtype=np.float32) |
|
|
|
|
doppler = np.full((n_times, 100, 100, 10), np.nan, dtype=np.float32) |
|
|
|
|
@ -502,11 +499,9 @@ def convert_msg_to_npz(msg_file_path, output_path=None, verbose=True, n_workers=
@@ -502,11 +499,9 @@ def convert_msg_to_npz(msg_file_path, output_path=None, verbose=True, n_workers=
|
|
|
|
|
blocks_for_time[layer] = block_data |
|
|
|
|
tasks.append((time_str, blocks_for_time, time_idx)) |
|
|
|
|
|
|
|
|
|
# Параллельная обработка |
|
|
|
|
with Pool(processes=n_workers) as pool: |
|
|
|
|
results = pool.map(_process_single_time, tasks) |
|
|
|
|
|
|
|
|
|
# Сборка результатов |
|
|
|
|
if verbose: |
|
|
|
|
print(f" Сборка результатов...") |
|
|
|
|
|
|
|
|
|
@ -516,7 +511,6 @@ def convert_msg_to_npz(msg_file_path, output_path=None, verbose=True, n_workers=
@@ -516,7 +511,6 @@ def convert_msg_to_npz(msg_file_path, output_path=None, verbose=True, n_workers=
|
|
|
|
|
doppler[time_idx] = doppler_t |
|
|
|
|
meteo[time_idx] = meteo_t |
|
|
|
|
|
|
|
|
|
# Сохранение |
|
|
|
|
if verbose: |
|
|
|
|
print("\n[3/3] Сохранение в NPZ...") |
|
|
|
|
|
|
|
|
|
|