clave_default = credencial.get('clave') if __name__ == "__main__": matplotlib.use('TkAgg') # DESCRIPCIÓN DEL PROBLEMA: # Problema 1: # Geolocalizar todas las estaciones meteorológicas de Argentina en un mapa. Identificar la estación Pehuajó (ID OMM # 87544) y todas las estaciones geográficamente vecinas que se encuentren dentro de un radio de 300 kilómetros. # SOLUCIÓN DEL PROBLEMA: # 1. Búsqueda de estaciones de Argentina (AR, para otros países utilizar el código ISO de 2 letras correspondiente) estaciones = consumir_servicio_JSON(url=base_url + "/estaciones/AR", usuario=usuario_default, clave=clave_default) # 2. Búsqueda de estaciones vecinas a Pehuajó (omm_id = 87544). # Se buscan estaciones dentro de un radio de 300km. omm_central_id = 87544 maxima_distancia_km = 300 url_vecinas = f"{base_url}/estaciones_vecinas/{omm_central_id}?max_distancia={maxima_distancia_km}" estaciones_vecinas = consumir_servicio_JSON(url=url_vecinas, usuario=usuario_default, clave=clave_default) # 3. Indico si la estación es Central (Pehuajó), Vecina u Otra estaciones = estaciones.assign(tipo=lambda df: df.apply( lambda x: 'Central' if x['omm_id'] == omm_central_id else 'Vecina' if x['omm_id'] in estaciones_vecinas['omm_id'].values else 'Otra',
if __name__ == "__main__": matplotlib.use('TkAgg') # DESCRIPCIÓN DEL PROBLEMA: # Problema 3: # Obtener las series temporales de SPI-3 para Pehuajó (87544) calculado mediante un ajuste paramétrico de # precipitaciones dentro del período de referencia 1971-2010, utilizando el método de máxima verosimilitud # sin remuestreo. Graficar la serie para el período 2017-2019. # SOLUCIÓN DEL PROBLEMA: # Se obtiene un listado de configuraciones de índices y se seleccionan los SPI con escala de 3 meses. configuraciones = consumir_servicio_JSON( url=f"{base_url}/indices_sequia_configuraciones", usuario=usuario_default, clave=clave_default) # Seleccionar SPI y escala de 3 meses configuraciones = configuraciones.query('indice == "SPI" and escala == 3') # Vista de las configuraciones en una tabla print(configuraciones.to_markdown(tablefmt="github", showindex=False)) # Ahora procedemos a buscar la serie temporal de SPI-3 para Pehuajó entre 2017 y 2019. omm_id = 87544 indice_configuracion_id = 43 fecha_desde = dateutil.parser.parse("2017-01-01").isoformat() fecha_hasta = dateutil.parser.parse("2019-12-31").isoformat() url_valores_indice = f"{base_url}/indices_sequia_valores/{indice_configuracion_id}/" \ f"{omm_id}/{fecha_desde}/{fecha_hasta}" serie_temporal_spi = consumir_servicio_JSON(url=url_valores_indice, usuario=usuario_default,
# Problema 2: # Buscar los valores de precipitación acumulada de 3 meses para los meses de enero a marzo de la estación Pehuajó. # Utilizar el período de referencia 1971-2010 para ajustar una distribución no paramétrica a dichos valores. # SOLUCIÓN DEL PROBLEMA: # Se buscan los valores de precipitación acumulada de enero a marzo para Pehuajó (87544) omm_id = 87544 ancho_ventana = 18 fecha_desde = dateutil.parser.parse("1971-01-01").isoformat() fecha_hasta = dateutil.parser.parse("2010-12-31").isoformat() url_estadisticas = f"{base_url}/estadisticas_moviles/{omm_id}/Suma/{ancho_ventana}/{fecha_desde}/{fecha_hasta}" estadisticas = consumir_servicio_JSON(url=url_estadisticas, usuario=usuario_default, clave=clave_default) estadisticas['fecha_desde'] = pd.to_datetime(estadisticas['fecha_desde']) estadisticas['fecha_hasta'] = pd.to_datetime(estadisticas['fecha_hasta']) estadisticas = estadisticas.query( 'fecha_hasta.dt.month == 3 and fecha_hasta.dt.day == 31') # Datos necesarios para el ajuste tamano_bin = 50 # Ancho de cada intervalo muestra_original = estadisticas['valor'].values # 1. Histograma de datos originales r_hist_counts, r_hist_breaks = np.histogram(muestra_original, bins=range( 0, 900 + 1, tamano_bin)) r_hist_mids = 0.5 * (r_hist_breaks[1:] + r_hist_breaks[:-1])