Spaces:
Runtime error
Runtime error
| import os | |
| import xarray as xr | |
| import matplotlib.pyplot as plt | |
| import imageio.v2 as imageio | |
| import cartopy.crs as ccrs | |
| import cartopy.feature as cfeature | |
| import geopandas as gpd | |
| def salvar_figura_por_step(arquivos_nc, output_dir, shape=None): | |
| os.makedirs(output_dir, exist_ok=True) | |
| for arq in arquivos_nc: | |
| try: | |
| ds = xr.open_dataset(arq) | |
| var = list(ds.data_vars)[0] | |
| da = ds[var] | |
| if shape is not None: | |
| da = da.rio.write_crs("epsg:4326") | |
| da = da.rio.clip(shape.geometry, shape.crs, drop=True) | |
| timestamp = str(da.time.values)[:13].replace(":", "").replace("T", "_") if "time" in da.coords else "step" | |
| fig, ax = plt.subplots(figsize=(8, 6), subplot_kw={"projection": ccrs.PlateCarree()}) | |
| da.plot(ax=ax, transform=ccrs.PlateCarree(), cmap="Blues", cbar_kwargs={'label': 'mm'}) | |
| ax.add_feature(cfeature.COASTLINE) | |
| ax.set_title(f"Precipitação prevista - {timestamp}") | |
| plt.savefig(f"{output_dir}/{timestamp}.png", bbox_inches="tight") | |
| plt.close() | |
| except Exception as e: | |
| print(f"Erro em {arq}: {e}") | |
| def gerar_gif_a_partir_das_imagens(input_dir, output_path, tempo_inicial=None, tempo_final=None, duracao=0.8): | |
| imagens = [] | |
| arquivos = sorted(f for f in os.listdir(input_dir) if f.endswith(".png")) | |
| for f in arquivos: | |
| nome = f.split(".")[0] | |
| if tempo_inicial and nome < tempo_inicial: | |
| continue | |
| if tempo_final and nome > tempo_final: | |
| continue | |
| imagens.append(imageio.imread(os.path.join(input_dir, f))) | |
| if imagens: | |
| imageio.mimsave(output_path, imagens, duration=duracao) | |
| return output_path | |
| else: | |
| raise ValueError("Nenhuma imagem encontrada no intervalo especificado.") | |
| def carregar_shape_efc(shp_path): | |
| return gpd.read_file(shp_path) | |