MATLAB Answers

Making a Map Image from a Matrix

16 次查看(过去 30 天)
John Ziggs
John Ziggs2021-3-13
评论: Chad Greene ,2021-3-14
Hi all, I am trying to make a map based off data from a text documents containing daily surface air temperature. I attached 2 txt files as a sample. I am trying to create a map based off this.
This is my code:
inputdirTA = 'C:\Users\john\Desktop\TA2004daily'; %directory of folder containing data
S = dir(fullfile(inputdirTA,'*.txt'));
for k = 1:numel(S)
fnm = fullfile(inputdirTA,S(k).name);
vector = load(fnm);
mtx = reshape(vector,72,144);
if k == 1;
DataTA = [mtx];
DataTA = [DataTA mtx];
rv = [0.4 90 0];
geoshow(DataTA, rv, 'displaytype', 'texturemap');
C = load('coast');
plotm(, C.long, 'k');
title('Map of Surface Air Temperature');
I am getting this map:
But I am trying to get this kind of map:
I understand the concept of having to create 3 planes of the matrix, but I am having troubles understanding the syntax.
Any help or advice is greatly appreciated.


Chad Greene
Chad Greene 2021-3-13
编辑:Chad Greene 2021-3-13
With the Climate Data Toolbox you could do it like this:
T = flipud(reshape(load('TS20040101.txt'),[72 144])); % loads, reshapes, and orients the data correctly
[lat,lon] = cdtgrid(2.5); % creates a 2.5 degree global grid
pcolor(lon,lat,T) % plots the grid
shading interp
cmocean thermal % sets the colormap
xlabel longitude
ylabel latitude
You could even take it one step further and interpolate to a high-resolution grid, then plot with hillshaded topography:
% Create a 0.1 degree grid:
[lati,loni] = cdtgrid(0.1);
% Interpolate the temperature data to the high-res grid:
Ti = interp2(lon,lat,T,loni,lati);
% Get elevation data on the high res grid:
Zi = topo_interp(lati,loni);
% Set ocean elevations to zero:
Zi(Zi<0) = 0;
shading interp
axis tight equal
cmocean thermal
shadem(-10) % applies hillshade
  3 个评论
Chad Greene
Chad Greene 2021-3-14
Thanks, Mark! That means a lot coming from you!


更多回答(0 个)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by