lire tous les rasters existe dans un dossier pour calcul du mean ! os.scandir
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:
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:
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