MATLAB Answers

How to convert 3d array to raster (tiff)

15 views (last 30 days)
Dear all,
I have a 3 dimension array (longitude*latidute*time) (1439*719*1512) which represents the value of precipitation for 0.25 * 0.25 degrees over the whole globe.
I want to have a raster file (tiff) for time=1. how to do it?
whos lon lat t precipitation
Name Size Bytes Class Attributes
lat 1x719 2880 double
lon 1x1419 5760 double
precipitation 1439x719x1512 12515017536 double
t 1512x1 12096 double

  3 Comments

Walter Roberson
Walter Roberson on 12 Oct 2019
If you want a raster file for time=1, then do I understand correctly that the task is to convert the lat/long referenced information precipitation(:,:,1) into a raster form?
Behzad Navidi
Behzad Navidi on 12 Oct 2019
thank you for your answer. actually I was export this 3d array from a netcdf file which originaly grids are in 0.5*0.5 degree then I was regrid it to 0.25*0.25 degree, now I want to have this grid information as a raster file.
lat = ncread(filename,'lat');
lon = ncread(filename,'lon');
lat=double(lat);
lon=double(lon);
[Loni,Lati] = meshgrid(lon,lat);
lat actual_range = [89.75 -89.75]
lon actual_range = [0.25 359.75]
I want a raster file to show grided precipitation values on my study area at 0.25*0.25 degree.
I'm not sure but do you think geotiff functuin could help me?
thank you for your time

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 12 Oct 2019
surf(lon, lat, precip(:,:,1).'); view(2)

  0 Comments

Sign in to comment.

More Answers (2)

Sulaymon Eshkabilov
Sulaymon Eshkabilov on 11 Oct 2019
Hi,
You can get much of help from this source.
Good luck.

  0 Comments

Sign in to comment.


Image Analyst
Image Analyst on 12 Oct 2019
If "m" is your 3-D variable, then do this
time1 = m(:, :, 1);
imshow(time1, []);
This assumes your latitude and longitudes are uniformly spaced. If they're not, then you'll have to convert each into a row and column that is linear and assign the values one pixel at a time with the corrected (linear) latitude or longitude.

  3 Comments

Behzad Navidi
Behzad Navidi on 12 Oct 2019
Thank you for your answer I do it. the code runs with no problem but output is one black and white image without any grided cells,
how to grid this output?
thank you again
Walter Roberson
Walter Roberson on 12 Oct 2019
surf(lon, lat, precip(:,:,1).'); view(2)
Behzad Navidi
Behzad Navidi on 12 Oct 2019
Dear Walter Roberson
Thank you. it works well.
I want to accept your answer but on this page I can't see this button under your comments.

Sign in to comment.