geobeyond / Arpav-PPCV-backend

Backend di Piattaforma Proiezioni Climatiche per il Nord-Est.
Creative Commons Attribution 4.0 International
0 stars 1 forks source link

171 provide bootstrap configuration values to account for translations and possible values #173

Closed ricardogsilva closed 1 month ago

ricardogsilva commented 1 month ago

This PR provides a set of bootstrap configuration values for coverages. The main objectives of this PR are to ensure that:

  1. All coverage configurations have localized display names and descriptions
  2. All coverage configurations have sufficient meta information by means of possible values so that the frontend is able to find them by searching for this meta info.

These bootstrap configs are meant to allow to replicate the configuration of the system very fast, by simply typing the CLI command:

arpav-ppcv bootstrap coverage-configurations

The above command creates the configurations for all coverages.

As an example, the bootstrap config for tas_seasonal_anomaly_model_ensemble now includes the following information

In order to get the relevant coverage identifier, which is used to request WMS layers, time series and downloads, the frontend can query the API - for example for retrieving the TAS value for the summer month, scenario RCP26 for the configuration mentioned above, the frontend can perform a request like:

GET /api/v2/coverages/coverage-identifiers \
  possible_value==climatological_variable:tas \
  possible_value==aggregation_period:annual \
  possible_value==measure:anomaly \
  possible_value==climatological_model:model_ensemble \
  possible_value==scenario:rcp26 \
  possible_value==year_period:JJA

This PR also includes the existing values in the response, so that the frontend may further filter the returned items into the one it wants to use. The reponse to the above request:

{
    "items": [
        {
            "identifier": "tas_seasonal_anomaly_model_ensemble-annual-model_ensemble-tas-anomaly-rcp26-JJA",
            "related_coverage_configuration_url": "http://localhost:8877/api/v2/coverages/coverage-configurations/27049eea-798f-4725-ae23-d76db93d629a",
            "wms_base_url": "http://thredds:8080/thredds/wms/ens5ym/clipped/tas_anom_pp_ts_rcp26_JJA_VFVGTAA.nc",
            "wms_main_layer_name": "tas",
            "possible_values": [
                {
                    "configuration_parameter_name": "aggregation_period",
                    "configuration_parameter_display_name_english": "Temporal aggregation period",
                    "configuration_parameter_display_name_italian": "Periodo di aggregazione temporale",
                    "configuration_parameter_value": "annual"
                },
                {
                    "configuration_parameter_name": "climatological_model",
                    "configuration_parameter_display_name_english": "Forecast model",
                    "configuration_parameter_display_name_italian": "Modello di previsione",
                    "configuration_parameter_value": "model_ensemble"
                },
                {
                    "configuration_parameter_name": "climatological_variable",
                    "configuration_parameter_display_name_english": "Variable",
                    "configuration_parameter_display_name_italian": "Variabile",
                    "configuration_parameter_value": "tas"
                },
                {
                    "configuration_parameter_name": "measure",
                    "configuration_parameter_display_name_english": "Measurement type",
                    "configuration_parameter_display_name_italian": "Tipo di misurazione",
                    "configuration_parameter_value": "anomaly"
                },
                {
                    "configuration_parameter_name": "scenario",
                    "configuration_parameter_display_name_english": "Scenario",
                    "configuration_parameter_display_name_italian": "Scenario",
                    "configuration_parameter_value": "rcp26"
                },
                {
                    "configuration_parameter_name": "year_period",
                    "configuration_parameter_display_name_english": "Year period",
                    "configuration_parameter_display_name_italian": "Periodo dell'anno",
                    "configuration_parameter_value": "JJA"
                }
            ]
        },
        {
            "identifier": "tas_seasonal_anomaly_model_ensemble_lower_uncertainty-annual-model_ensemble-tas-anomaly-rcp26-lower_bound-JJA",
            "related_coverage_configuration_url": "http://localhost:8877/api/v2/coverages/coverage-configurations/7a678761-a198-471e-9280-684f022e0d10",
            "wms_base_url": "http://thredds:8080/thredds/wms/ens5ym/std/clipped/tas_anom_stddown_pp_ts_rcp26_JJA_VFVGTAA.nc",
            "wms_main_layer_name": "tas_stddown",
            "possible_values": [
                {
                    "configuration_parameter_name": "aggregation_period",
                    "configuration_parameter_display_name_english": "Temporal aggregation period",
                    "configuration_parameter_display_name_italian": "Periodo di aggregazione temporale",
                    "configuration_parameter_value": "annual"
                },
                {
                    "configuration_parameter_name": "climatological_model",
                    "configuration_parameter_display_name_english": "Forecast model",
                    "configuration_parameter_display_name_italian": "Modello di previsione",
                    "configuration_parameter_value": "model_ensemble"
                },
                {
                    "configuration_parameter_name": "climatological_variable",
                    "configuration_parameter_display_name_english": "Variable",
                    "configuration_parameter_display_name_italian": "Variabile",
                    "configuration_parameter_value": "tas"
                },
                {
                    "configuration_parameter_name": "measure",
                    "configuration_parameter_display_name_english": "Measurement type",
                    "configuration_parameter_display_name_italian": "Tipo di misurazione",
                    "configuration_parameter_value": "anomaly"
                },
                {
                    "configuration_parameter_name": "scenario",
                    "configuration_parameter_display_name_english": "Scenario",
                    "configuration_parameter_display_name_italian": "Scenario",
                    "configuration_parameter_value": "rcp26"
                },
                {
                    "configuration_parameter_name": "uncertainty_type",
                    "configuration_parameter_display_name_english": "Uncertainty type",
                    "configuration_parameter_display_name_italian": "Tipologia dei limiti di incertezza",
                    "configuration_parameter_value": "lower_bound"
                },
                {
                    "configuration_parameter_name": "year_period",
                    "configuration_parameter_display_name_english": "Year period",
                    "configuration_parameter_display_name_italian": "Periodo dell'anno",
                    "configuration_parameter_value": "JJA"
                }
            ]
        },
        {
            "identifier": "tas_seasonal_anomaly_model_ensemble_upper_uncertainty-annual-model_ensemble-tas-anomaly-rcp26-upper_bound-JJA",
            "related_coverage_configuration_url": "http://localhost:8877/api/v2/coverages/coverage-configurations/a2317832-76b1-4c5e-92a2-9b935d789737",
            "wms_base_url": "http://thredds:8080/thredds/wms/ens5ym/std/clipped/tas_anom_stdup_pp_ts_rcp26_JJA_VFVGTAA.nc",
            "wms_main_layer_name": "tas_stdup",
            "possible_values": [
                {
                    "configuration_parameter_name": "aggregation_period",
                    "configuration_parameter_display_name_english": "Temporal aggregation period",
                    "configuration_parameter_display_name_italian": "Periodo di aggregazione temporale",
                    "configuration_parameter_value": "annual"
                },
                {
                    "configuration_parameter_name": "climatological_model",
                    "configuration_parameter_display_name_english": "Forecast model",
                    "configuration_parameter_display_name_italian": "Modello di previsione",
                    "configuration_parameter_value": "model_ensemble"
                },
                {
                    "configuration_parameter_name": "climatological_variable",
                    "configuration_parameter_display_name_english": "Variable",
                    "configuration_parameter_display_name_italian": "Variabile",
                    "configuration_parameter_value": "tas"
                },
                {
                    "configuration_parameter_name": "measure",
                    "configuration_parameter_display_name_english": "Measurement type",
                    "configuration_parameter_display_name_italian": "Tipo di misurazione",
                    "configuration_parameter_value": "anomaly"
                },
                {
                    "configuration_parameter_name": "scenario",
                    "configuration_parameter_display_name_english": "Scenario",
                    "configuration_parameter_display_name_italian": "Scenario",
                    "configuration_parameter_value": "rcp26"
                },
                {
                    "configuration_parameter_name": "uncertainty_type",
                    "configuration_parameter_display_name_english": "Uncertainty type",
                    "configuration_parameter_display_name_italian": "Tipologia dei limiti di incertezza",
                    "configuration_parameter_value": "upper_bound"
                },
                {
                    "configuration_parameter_name": "year_period",
                    "configuration_parameter_display_name_english": "Year period",
                    "configuration_parameter_display_name_italian": "Periodo dell'anno",
                    "configuration_parameter_value": "JJA"
                }
            ]
        }
    ],
    "meta": {
        "returned_records": 3,
        "total_records": 1785,
        "total_filtered_records": 3
    },
    "links": {
        "self": "http://localhost:8877/api/v2/coverages/coverage-identifiers?limit=20&offset=0&possible_value=year_period:JJA",
        "next": null,
        "previous": null,
        "first": "http://localhost:8877/api/v2/coverages/coverage-identifiers?limit=20&offset=0&possible_value=year_period:JJA",
        "last": "http://localhost:8877/api/v2/coverages/coverage-identifiers?limit=20&offset=0&possible_value=year_period:JJA"
    }
}

In the example above, the response include three items:

Upon receiving the response, the frontend is able to distinguish between them by inspecting the properties of each. Those that represent uncertainty will have a configuration_parameter_name: uncertainty_type property