Skip to content

FIX: geopandas 1.0 support

PRISSIMITZIS Julien requested to merge fix-pygrio into master

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") avec fiona>=1.10.1 car bug similaire pour les version inférieures.
  • convertir les date_seq de str à dict avant de les passer à la méthode from_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.

Merge request reports

Loading