From 158e9e00757303978d33d7c28dfed2a66aeaa418 Mon Sep 17 00:00:00 2001
From: "raffaele.gaetano" <raffaele.gaetano@cirad.fr>
Date: Thu, 28 Jul 2022 23:36:21 +0200
Subject: [PATCH] ENH: tiled vectorization (needs full segmentation in memory).

---
 VHR/segmentation.py | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/VHR/segmentation.py b/VHR/segmentation.py
index 8c03a27..4bfca27 100644
--- a/VHR/segmentation.py
+++ b/VHR/segmentation.py
@@ -225,18 +225,19 @@ def tiled_vectorization(input_segm, nominal_tile_size, output_template):
         obj_to_tile[idx].append(o.label)
         tiles[idx][0] = min(o.bbox[1], tiles[idx][0])
         tiles[idx][1] = min(o.bbox[0], tiles[idx][1])
-    for o in rp:
-        ix, iy = int(o.bbox[1] / nominal_tile_size[0]), int(o.bbox[0] / nominal_tile_size[1])
-        idx = ix * ty + iy
-        tiles[idx][2] = max(o.bbox[3] - tiles[idx][0], tiles[idx][2])
-        tiles[idx][3] = max(o.bbox[2] - tiles[idx][1], tiles[idx][3])
+        tiles[idx][2] = max(o.bbox[3], tiles[idx][2])
+        tiles[idx][3] = max(o.bbox[2], tiles[idx][3])
 
-    for i in range(tx*ty):
+    out_files = []
+    for i in range(len(tiles)):
+        tiles[i][2] -= tiles[i][0]
+        tiles[i][3] -= tiles[i][1]
         in_seg = to_otb_pipeline(input_segm)
         if len(obj_to_tile[i]) > 0:
-            vectorize_tile(in_seg, tiles[i], obj_to_tile[i], output_template.format(i))
+            out_files.append(output_template.format(i))
+            vectorize_tile(in_seg, tiles[i], obj_to_tile[i], out_files[-1])
 
-    return obj_to_tile, tiles
+    return out_files
 
 def get_bounding_boxes(input_segm):
     in_seg = to_otb_pipeline(input_segm)
-- 
GitLab