diff --git a/OBIA/OBIABase.py b/OBIA/OBIABase.py index 276b359a324cd55fea00188cc699068716dc314b..1680405b79602fa87d8d1a28560f5ddc424f9335 100644 --- a/OBIA/OBIABase.py +++ b/OBIA/OBIABase.py @@ -46,6 +46,7 @@ class OBIABase: self.raster_stats = [] self.raster_var_names = [] self.raster_groups = [] + self.n_vars = 0 def init_ref_db(self, vector_file, id_field, class_field): ras_id = otb.Registry.CreateApplication('Rasterization') @@ -161,8 +162,9 @@ class OBIABase: ds = None to_append = [raster_name + '_{}_{}'.format(i+1,j.value) for i in range(n_bands) for j in stats] if as_group: - self.raster_groups.extend(range(len(self.raster_var_names), len(self.raster_var_names)+len(to_append))) + self.raster_groups.extend(range(self.n_vars, self.n_vars+len(to_append))) self.raster_var_names.append(to_append) + self.n_vars += len(to_append) return def add_raster_time_series_for_stats(self, raster_list, ts_name=None, stats=[OStats.MEAN]): @@ -174,7 +176,7 @@ class OBIABase: assert all(x == n_bands[0] for x in n_bands) n_bands = n_bands[0] - pos = len(self.raster_var_names) + pos = self.n_vars for i,r in enumerate(raster_list): if ts_name is not None: raster_name = '{}_D{}'.format(ts_name,i) @@ -224,7 +226,6 @@ class OBIABase: for g in self.raster_groups: tmp = X[:,g] m,M = np.percentile(tmp, [2, 98]) - print("For g = {}, m = {}, M = {}".format(g,m,M)) if isinstance(g, list): for x in g: p2[x] = m @@ -236,3 +237,16 @@ class OBIABase: Y = self.ref_db['class'].to_numpy(dtype=int) G = self.ref_db['polygon_id'].to_numpy(dtype=int) return X,Y,G,p2,p98 + + def tiled_data(self, normalize=None): + vars = [item for sublist in self.raster_var_names for item in sublist] + for tilenum in self.tiles.keys(): + tile_data = self.get_full_stats_on_tile(tilenum) + L = tile_data.index.to_numpy(dtype=np.int) + X = tile_data[vars].to_numpy() + if normalize is not None: + X = (X - normalize[0]) / (normalize[1] - normalize[0]) + yield L,X + + def populate_map(self, tilenum, labels): + return \ No newline at end of file