From f9a6086c6b3fd3bc0281c9f129982d3d95f3f453 Mon Sep 17 00:00:00 2001
From: Remi Cresson <remi.cresson@irstea.fr>
Date: Wed, 23 Feb 2022 11:10:44 +0100
Subject: [PATCH] ADD: pickle serialization

---
 scenes/drs.py      | 25 +++++++++++++++++++++++--
 test/drs_import.py |  6 +++++-
 2 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/scenes/drs.py b/scenes/drs.py
index 96fe9dd..7745faf 100644
--- a/scenes/drs.py
+++ b/scenes/drs.py
@@ -2,6 +2,7 @@
 A set of utils to deal with DRS products
 """
 import tqdm
+import pickle
 from scenes import spot, utils
 
 
@@ -17,8 +18,8 @@ def find_all_dimaps(pth):
 def get_spot67_scenes(root_dir):
     """
     Return the list of pairs of PAN/XS DIMAPS
-    :param root_dir: directory
-    :return: list of pairs of filenames
+    :param root_dir: directory containing "MS" and "PAN" subdirectories
+    :return: list of Spot67Scenes instances
     """
     # List files
     look_dir = root_dir + "/MS"
@@ -59,3 +60,23 @@ def get_spot67_scenes(root_dir):
                 print("\t{}".format(error))
 
     return scenes
+
+
+def save_scenes(scenes_list, pickle_file):
+    """
+    Use pickle to save scenes
+    :param scenes_list: a list of Scene instances
+    :param pickle_file: pickle file
+    """
+    pickle.dump(scenes_list, open(pickle_file, "wb"))
+
+
+def load_scenes(pickle_file):
+    """
+    Use pickle to save Spot-6/7 scenes
+    :param pickle_file: pickle file
+    :return: list of Scene instances
+    """
+    return pickle.load(open(pickle_file, "rb"))
+
+
diff --git a/test/drs_import.py b/test/drs_import.py
index 1cfad67..9aec815 100644
--- a/test/drs_import.py
+++ b/test/drs_import.py
@@ -4,7 +4,11 @@ from scenes import drs
 # Arguments
 parser = argparse.ArgumentParser(description="Test",)
 parser.add_argument("--root_dir", help="Root directory containing MS and PAN folders", required=True)
+parser.add_argument("--out_pickle", help="Output pickle file", required=True)
 params = parser.parse_args()
 
-# Find pairs of DIMAPS
+# Get all scenes in the root_dir
 scenes = drs.get_spot67_scenes(params.root_dir)
+
+# Save scenes in a pickle file
+drs.save_scenes(scenes, params.out_pickle)
-- 
GitLab