Commit 4e5c9774 authored by Gaetano Raffaele's avatar Gaetano Raffaele
Browse files

ENH: generator of tile data

parent 2cfba1e5
No related merge requests found
Showing with 17 additions and 3 deletions
+17 -3
...@@ -46,6 +46,7 @@ class OBIABase: ...@@ -46,6 +46,7 @@ class OBIABase:
self.raster_stats = [] self.raster_stats = []
self.raster_var_names = [] self.raster_var_names = []
self.raster_groups = [] self.raster_groups = []
self.n_vars = 0
def init_ref_db(self, vector_file, id_field, class_field): def init_ref_db(self, vector_file, id_field, class_field):
ras_id = otb.Registry.CreateApplication('Rasterization') ras_id = otb.Registry.CreateApplication('Rasterization')
...@@ -161,8 +162,9 @@ class OBIABase: ...@@ -161,8 +162,9 @@ class OBIABase:
ds = None ds = None
to_append = [raster_name + '_{}_{}'.format(i+1,j.value) for i in range(n_bands) for j in stats] to_append = [raster_name + '_{}_{}'.format(i+1,j.value) for i in range(n_bands) for j in stats]
if as_group: 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.raster_var_names.append(to_append)
self.n_vars += len(to_append)
return return
def add_raster_time_series_for_stats(self, raster_list, ts_name=None, stats=[OStats.MEAN]): def add_raster_time_series_for_stats(self, raster_list, ts_name=None, stats=[OStats.MEAN]):
...@@ -174,7 +176,7 @@ class OBIABase: ...@@ -174,7 +176,7 @@ class OBIABase:
assert all(x == n_bands[0] for x in n_bands) assert all(x == n_bands[0] for x in n_bands)
n_bands = n_bands[0] n_bands = n_bands[0]
pos = len(self.raster_var_names) pos = self.n_vars
for i,r in enumerate(raster_list): for i,r in enumerate(raster_list):
if ts_name is not None: if ts_name is not None:
raster_name = '{}_D{}'.format(ts_name,i) raster_name = '{}_D{}'.format(ts_name,i)
...@@ -224,7 +226,6 @@ class OBIABase: ...@@ -224,7 +226,6 @@ class OBIABase:
for g in self.raster_groups: for g in self.raster_groups:
tmp = X[:,g] tmp = X[:,g]
m,M = np.percentile(tmp, [2, 98]) m,M = np.percentile(tmp, [2, 98])
print("For g = {}, m = {}, M = {}".format(g,m,M))
if isinstance(g, list): if isinstance(g, list):
for x in g: for x in g:
p2[x] = m p2[x] = m
...@@ -236,3 +237,16 @@ class OBIABase: ...@@ -236,3 +237,16 @@ class OBIABase:
Y = self.ref_db['class'].to_numpy(dtype=int) Y = self.ref_db['class'].to_numpy(dtype=int)
G = self.ref_db['polygon_id'].to_numpy(dtype=int) G = self.ref_db['polygon_id'].to_numpy(dtype=int)
return X,Y,G,p2,p98 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
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment