netcdf files in a predefined domain
1 view (last 30 days)
Show older comments
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 Comments
Walter Roberson
on 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.
Answers (1)
KSSV
on 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 Comments
See Also
Categories
Find more on NetCDF in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!