Bonjour ,
j'utilise un script qui permet de calculer la moyenne des valeurs des pixel pour chaque bands dans un raster et le stocker dans un dataframe et sauvgarder en fichier CSV voilà le script :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import pandas as pd raster_filename = "D:/projetp/Doy_2000/output/2014mask.tif" raster = gdal.Open(raster_filename) bands = raster.RasterCount row_list = [] for band in range(1, bands+1): data = raster.GetRasterBand(band).ReadAsArray().astype('float') mean = np.mean(data[data != 0]) #calculate mean without value 0 row_list.append({ 'raster': os.path.basename(raster_filename), 'band': band, 'mean': mean, 'year': 2014, }) print("Band %s: Mean = %s" % (band, round(mean, 2))) # create DataFrame with columns from the dict keys df = pd.DataFrame(row_list) df.to_csv('band_means.csv')
j'ai 5 autres Raster dans même dossier nommer ( 2014mask,2013mask,2010mask, 2011mask,2009mask) que j'aimera effectuer le même opération sans faire un par un . j'ai essayé avec os.scandir mais j'arrive pas ou j'ai mal utilisé la fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 raster_path = "D:/projetp/Doy_2000/output/" with os.scandir(raster_path) as p: for raster in p: if not raster.name.endswith(".tif"): raster_file = os.path.join(raster_path) raster = gdal.Open("D:/projetp/Doy_2000/output/2014mask.tif") row_list = [] bands = raster.RasterCount for band in range(1, bands+1): data = raster.GetRasterBand(band).ReadAsArray().astype('float') mean = np.mean(data[data != 0]) #calculate mean without value 0 row_list.append({ 'raster': os.path.basename(raster_name), 'band': band, 'mean': mean, 'year': 2014, }) print("Band %s: Mean = %s" % (band, round(mean, 2))) df = pd.DataFrame(row_list) df.to_csv('band_mean.csv')
mais ça marche plus!!! j'ai besoin d'aide
merci d'avance
Partager