Bonjour,
j'ai avec moi un fichier en format NetCDF ( "ECC-2018-08-01.nc4") contenant des longitude, latitude, le temps, et des parcelles d'air (sous la forme parcelle n° : 1, 2,...jusqu'à 10 000).

Pour chaque parcelle, il y a 87 coordonnées (long,lat) correspondant aux 87 pas de temps. Le but est de visualiser la trajectoire des parcelle au cours du temps.
Mais en utilisant le logiciel Panoplyj je vois que les valeurs sont écrit sous la forme : float lat(time=87, part=10000) et float lon(time=87, part=10000) donc je n'arrive pas à visualiser ça.

Ce que j'essaye de faire est d'importer toutes les données pour les réarranger de cette façon : time(lon=87, lat=87, particles = 10000) dans un autre fichier.
Sous python j'arrive bien à lire ces données et les mettre dans des variables, mais je n'arrive pas à les ranger à ma manière dans mon nouveau fichier.

Voici le code que j'essaye de construire pour ça :


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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
 
import netCDF4 as nc
import numpy as np
 
 
 
#reccuperation des données depuis le premier fichier
part_ds = nc.Dataset("ECC-2018-08-01.nc4", "r", format="NETCDF4")
particles = part_ds.variables['part']    
Times = part_ds.variables['time']      
longit = part_ds.variables['lon']  
Latit = part_ds.variables['lat']
 
 
#création du nouveau fichier
fn = 'Test2Pc.nc'
ds = nc.Dataset(fn, 'w', format='NETCDF4')
 
part = ds.createDimension('part', None)
lon = ds.createDimension('lon', 87)
lat = ds.createDimension('lat', 87)
 
 
parts = ds.createVariable('part', 'f4', ('part',))
lons = ds.createVariable('lon', 'f4', ('lon',))
lats = ds.createVariable('lat', 'f4', ('lat',))
time = ds.createVariable('time', 'i4', ('part','lon', 'lat',))
#time.units = 'Unknown'
 
 
#ecriture des données dans le nouveau fichier    
Tabtime = np.arange(0, 87, 1) #dimension de time
for i in Tabtime:
    lons[i] = np.append(lons, longit[i])
    lats[i] = np.append(lats, Latit[i])
    parts[i] = np.append(parts, particles[i]) 
 #   time[i, :, :] = np.append( time, ( parts[i], longit[i], Latit[i] ) )   : beaucoup de doutes ici, je ne sais pas comment ranger les valeurs dans time, surtout que parts n'a pas la même dimension que longit et Latit.  
 
 
ds.close()

Je vois bien qu'il y a plusieurs lignes qui posent problèmes (notamment l'utilisation de append) mais je n'ai pas d'idée pour résoudre ça.
Un autre problème est que j'ai déjà des valeurs de time depuis le premier fichier, donc je veux garder ces valeurs là.


Merci pour votre aide!