FIX: geopandas 1.0 support
Lorsque j'utilise pastis_dataset.py
, je rencontre l'erreur suivante :
Traceback:(most recent call last):
File "/work/scratch/env/prissij/git/vit/scripts/load_pastis_attempt.py", line 81, in <module>
loader = instanciate_data_loader(["S2"], DATA_FOLDER, 1)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/work/scratch/env/prissij/git/vit/scripts/load_pastis_attempt.py", line 28, in instanciate_data_loader
PASTISDataset(PASTISOptions(PASTISTask(sats=sats), data_folder)),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/work/scratch/env/prissij/git/vit/third_parties/mtan_s1s2_classif/src/mtan_s1s2_classif/datamodules/pastis_dataset.py", line 312, in __init__
meta_patch = self.get_metadata()
^^^^^^^^^^^^^^^^^^^
File "/work/scratch/env/prissij/git/vit/third_parties/mtan_s1s2_classif/src/mtan_s1s2_classif/datamodules/pastis_dataset.py", line 376, in get_metadata
dates = pd.DataFrame().from_dict(date_seq, orient="index")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/work/scratch/env/prissij/git/vit/.pixi/envs/dev/lib/python3.12/site-packages/pandas/core/frame.py", line 1900, in from_dict
if isinstance(next(iter(data.values())), (Series, dict)):
^^^^^^^^^^^
AttributeError: 'str' object has no attribute 'values'
Mon environnement est le suivant :
geopandas 1.0.1 pyhd8ed1ab_1 7.4 KiB conda geopandas-1.0.1-pyhd8ed1ab_1.conda
geopandas-base 1.0.1 pyha770c72_1 233.9 KiB conda geopandas-base-1.0.1-pyha770c72_1.conda
pandas 2.2.3 py312hf9745cd_1 14.7 MiB conda pandas-2.2.3-py312hf9745cd_1.conda
J'ai trouvé une issue similaire dans le repo pygrio : https://github.com/geopandas/pyogrio/issues/445
Je vois 3 solutions possibles :
- fixer la version de geopandas utilisée
geopandas<1
(mais nécessite de lire la doc avant de copier le Dataset) - utiliser le paramètre
engine="fiona"
au moment de l'appel àgpd.read_file(os.path.join(self.options.folder, "metadata.geojson")
avecfiona>=1.10.1
car bug similaire pour les version inférieures. - convertir les
date_seq
destr
àdict
avant de les passer à la méthodefrom_dict
J'ai choisi cette dernière méthode et ajouté une vérification pour éviter de casser le code avec les versions geopandas<1
.