Bonjour,

Je traite les données suivantes : j'ai la position (latitude et longitude) et le flux mesuré à cette position. J'ai interpolé ces données de flux en utilisant la fonction "scatteredInterpolant" puis j'affiche cette interpolation avec la fonction "mesh". J'ai au préalable défini une grid pour ne seulement afficher les données dans la zone qui m'intéresse. Toutes ces données sont "plottées" au dessus d'un planisphère que j'ai affiché grâce à la fonction "geoshow".
Je peux manipuler ces données dans le temps grâce à une interface graphique et un slider.
Mon problème : Ce que le mesh m'affiche ne se met pas TOTALEMENT au-dessus du planisphère. Je vous joins une capture d'écran pour que vous visualisiez mon problème et le code correspondant.
Nom : cap3.PNG
Affichages : 204
Taille : 48,8 Ko
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
% SCRIPT D'AFFICHAGE DES DONNEES
 
function Affichage
 
%Chargement des donnees dans le fichier txt
%------------------------------------------
load ('Datas_85_240.txt')
 
lon = Datas_85_240(:,1);
lat = Datas_85_240(:,2);
fl = Datas_85_240(:,3);
tps = Datas_85_240(:,4);
 
Duree_mission = 11.3925; %années  à CHANGER POUR CHAQUE MISSION !!!!!
Duree_annee = 365.25; %jours
 
global val
global Periode
global pas1
global Pas
global step
 
 
f = figure ('Visible', 'on');
 
% Affichage de la map 2d
%---------------------------------------------
geo = geoshow('landareas.shp', 'FaceColor', 'black');
grid on;
hold off;
 
% Définition du maillage pour le future interpolation
%----------------------------------------------------
Pas_Maillage_long = 0.5;
Pas_Maillage_lat  = 0.5;
% Xlim = -90:Pas_Maillage_long:50; protons 10Mev
% Ylim = -60:Pas_Maillage_lat:0;
Xlim = -90:Pas_Maillage_long:20;
Ylim = -50:Pas_Maillage_lat:0;
[XI,YI] = meshgrid(Xlim,Ylim);
hold on
%grid on
 
% On enlève les pts qui sont < et > aux Ylim et Xlim du meshgrid
%--------------------------------------------------------
Datas_85_240(Datas_85_240(:,2) <  min(Ylim), : )= [];
Datas_85_240(Datas_85_240(:,2) > max(Ylim), : )= [];
 
Datas_85_240(Datas_85_240(:,1) < min(Xlim), : )= [];
Datas_85_240(Datas_85_240(:,1) > max(Xlim), : )= [];
 
hold on
 
 
% On affiche une première interolation (sur 10000 lignes) pour lancer la
% fonction scatteredInterpolant qui colore les position en fonction du flux
%--------------------------------------------------------------------------
F = scatteredInterpolant(lon(1:10000),lat(1:10000),log(fl(1:10000)), 'natural', 'none');
ZI = F(XI,YI);
disp(size(ZI))
s = mesh(XI,YI,ZI);
hidden off
hold on
%affichage de la trajectoire (1000 lignes = 10 jours) juste avec des pts
% sz=25;
% s = scatter(lon(1:1001), lat(1:1001), sz, log(fl(1:1001)), 'filled','s');
 
 
title('Anomalie Atlantique Sud en 2D')
hold on
 
 
% lonG = sum(lon(1:10000))/length(lon(1:10000));
% latG = sum(lat(1:10000))/length(lat(1:10000));
% % disp(lonG)
% % disp(latG)
% 
% p = plot(lonG, latG, '--*r')
% hold on
 
% Mise en place de l'echelle en logarithmique de la colorbar
%----------------------------------------------------------
d = [1 3 10 30 100 ];
caxis( log([0.1 10]))
% load MyColormap
% colormap(mymap);
c = colorbar( 'YTick', log(d), 'YTickLabel', d);
title(c,'Flux en log(cm²/s/sr/MeV)');
hold on
grid on
 
% Creation d'un popup menu pour selectionner la plage de données que l'on
% veut afficher
%------------------------------------------------------------------------
periode = uicontrol('Style','popup',...
    'String', {'1', '2', '5', '10', '30'},...
    'Position',[20,340,100,50],...
    'Callback', @sample);
 
 
% Création du slider et de sa légende
%------------------------------------
tmin= min(tps);
tmax = max(tps);
 
slider = uicontrol('Style','slider',...
    'min', tmin, 'max', tmax, 'Value', tmin,...
    'SliderStep', [1000/391355 1000/391355],...
    'Position',[125,54,300,23],...
    'Callback', {@temps, @sample});
 
% Changement de l'affichage date en fonction de la position du slider
%---------------------------------------------------------------------
text = uicontrol('Style', 'text',...
    'Position', [300, 25, 200, 23]);
 
 
% Ecriture sur interface graphique
%----------------------------------
L1 = uicontrol('Style','text','Position',[10,54,100,23],...
    'String','09/12/2000');
 
L2 = uicontrol('Style','text','Position',[450,54,100,23],...
    'String','30/04/2012');
 
L3 = uicontrol('Style','text','Position',[100,25,100,23],...
    'String','Date');
 
L4 = uicontrol('Style', 'text', 'Position', [10, 400, 150, 23],...
    'String', 'Choisir le pas d affichage');
 
L4 = uicontrol('Style', 'text', 'Position', [10, 330, 100, 23],...
    'String', 'Flux max détecté');
 
 
% Création de la fonction qui va être appelée dans le popup menu et qui va
% adapter l'affichage
%-------------------------------------------------------------------------
    function sample(source, event, handles)
        valeur = get (source, 'value');
        %         disp(valeur)
        switch valeur
            case 1
            Periode = 1;
            case 2
            Periode = 2;
            case 3
            Periode = 5;
            case 4
            Periode = 10;
            case 5
            Periode = 30;
        end
        %         pas = Periode*((length(tps)/Duree_mission)/Duree_annee);
        pas1 = ((length(tps)/Duree_mission)/Duree_annee);
        step = [pas1 / 391355, pas1 / 391355];
        %         disp(step)
        % Mise à jour du pas du slider
        set(slider, 'SliderStep', step);
        guidata(slider, slider);
    end
 
% Création de la fonction d'affichage qui va changer à chaque fois que le
% slider sera bougé
%-------------------------------------------------------------------------
    function temps(source, event, sample)
        % On supprime les valeurs affectées au préalable dans
        % scatterInterpolation avant d'en affecter des nouvelles
        %         F.Points(:,:) = [];   
        %         F.Values(:) = [];
 
        clear F
 
        % On prend le temps dans le fichier Datas.txt
        Datas_temp = Datas_85_240;
        %         disp(Periode)
        val = get(source, 'Value') ;
        %          disp(val)
        num = datestr(val);
        %         disp(num)
 
        % On affiche la date correspondant au début d'affichage au bon
        % format
        set(text,'String', num2str(num))
        % disp(size(Datas_temp))
 
        % On onlève les valeurs < et > à val plus la période choisie (val
        % est en jours)
        Datas_temp(Datas_temp(:,4)< val ,:)=[];
        % disp(size(Datas_temp))
        Datas_temp(Datas_temp(:,4) > (val+Periode),:)=[];
 
        %On enlève les points qui sont < et > aux Ylim et Xlim du
        %meshgrid
        Datas_temp(Datas_temp(:,2) < min(Ylim), : )= [];
        Datas_temp(Datas_temp(:,2) > max(Ylim), : )= [];
 
        Datas_temp(Datas_temp(:,1) < min(Xlim), : )= [];
        Datas_temp(Datas_temp(:,1) > max(Xlim), : )= [];
 
        % disp(size(Datas_temp))
        lon1 = Datas_temp(:,1);
        lat1 = Datas_temp(:,2);
        fl1 = Datas_temp(:,3);
        tps1 = Datas_temp(:,4);
 
 
        % On affecte les nouvelle positions et flux pour l'interpolation
        %         F.Points(:,:) = Datas_temp(:,1:2);
        %         F.Values(:) = log(fl1(:));
        %         ZI = F(XI,YI);
 
 
        F = scatteredInterpolant(lon1(:),lat1(:),log(fl1(:)), 'natural', 'none');
        ZI = F(XI,YI);
        %affichage de 10 jours de données (1000 lignes) tous les 10 jours
        %      for  n=0:step:length(Datas_temp)
        % set(s, 'xdata', lon1(:), 'ydata', lat1(:), 'cdata', fl1(:));
        %    drawnow;
        %      end
        hold on
 
 
        % On modifie les données dans la fonction mesh
        set(s, 'xdata', XI, 'ydata',  YI,  'cdata', ZI)
        hidden off
        hold on
 
 
 
        % Mise de l'echelle en logarithmique
        d = [1 3 10 30 100];
        caxis( log([0.1 10]))
        c = colorbar('YTick', log(d), 'YTickLabel', d);
        title(c,'Flux en log(cm²/s/sr/MeV)');
        hold on
 
 
    end
 
end
J'espère avoir été claire, si jamais n'hésitez pas à me poser des questions. Je n'ai trouvé de réponses nul-part.
Merci d'avance pour votre aide !