Source code for chap_core.spatio_temporal_data.converters

import pandas as pd

from chap_core.api_types import FeatureCollectionModel
from chap_core.database.dataset_tables import DataSet
from chap_core.datatypes import create_tsdataclass
from chap_core.spatio_temporal_data.temporal_dataclass import DataSet as _DataSet


[docs] def observations_to_dataset(dataclass, observations, fill_missing=False): obs_dicts = [obs.model_dump() for obs in observations] dataframe = pd.DataFrame(obs_dicts).rename(columns={"org_unit": "location", "period": "time_period"}) dataframe = dataframe.set_index(["location", "time_period"]) pivoted = dataframe.pivot(columns="feature_name", values="value").reset_index() new_dataset = _DataSet.from_pandas(pivoted, dataclass, fill_missing=fill_missing) return new_dataset
[docs] def dataset_model_to_dataset(dataset: DataSet): dataclass = create_tsdataclass(dataset.covariates) ds = observations_to_dataset(dataclass, dataset.observations) if dataset.geojson is not None: polygons = FeatureCollectionModel.model_validate(dataset.geojson) ds.set_polygons(polygons) return ds