netcdf files in a predefined domain
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello,
I am trying to read multiple netcdf4 files in a predefined area (lat and lon). I want values OUTSIDE my predefined area to be equal to '-99' but below code changes all the values to -99.
NOTE: in the below code lat_edge and lon_edge are lat and lon values from first satellite and sub_lat and sub_lon are lat and lon values from second satellite. I'm doing collocation first.
lat_edge=double([min(lat(:)) max(lat(:))]);
lon_edge=double([min(lon(:)) max(lon(:))]);
index_out_edge=find(sub_lat(:)<=lat_edge(1) | sub_lat(:)>=lat_edge(2) | sub_lon(:)<=lon_edge(1) | sub_lon(:)>=lon_edge(2));
CLTT_temp = ncread(files{i},'CLTT');
CLTT_temp_FINAL=CLTT_temp(min(row):max(row),min(col):max(col)); %min and max row col are lat lon indices from second satellite.
CLTT_temp_FINAL(index_out_edge)=-99;
kindly tell me what I'm missing in my code.
thank you.
6 commentaires
Walter Roberson
le 15 Mar 2021
It looks like the distribution of your values might be biased. I suggest investigating with something like
lat_edge = double([min(lat(:)) max(lat(:))]);
lon_edge = double([min(lon(:)) max(lon(:))]);
fill(lon_edge([1 2 2 1]), lat_edge([1 1 2 2]), [.5 .5 .5]);
hold on
scatter(sub_lon, sub_lat, [], 'r')
hold off
xlim auto
ylim auto
The red marks that show up in the mid-gray background are the ones that should be located by index_out_edge. My suspicion is that you will find all your marks are outside the rectangle.
Réponses (1)
KSSV
le 11 Mar 2021
Something like this should work:
index_out_edge = ~(((sub_lat(:)<=lat_edge(1) | sub_lat(:)>=lat_edge(2)) && (sub_lon(:)<=lon_edge(1) | sub_lon(:)>=lon_edge(2))));
0 commentaires
Voir également
Catégories
En savoir plus sur NetCDF dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!