How to recenter spatial data?

15 visualizaciones (últimos 30 días)
JMSE
JMSE el 2 de Nov. de 2021
Comentada: JMSE el 11 de Nov. de 2021
I want to recenter spatial data from a grid of -180 to 180 lon to a grid of 0 - 360 lon. Using the command wrapTo360 leads to the issue below (see 2nd figure - you can see that the data > 180 shows an error). How can I reshape the rain/precipitation data accordingly so that the data is shifted correctly?
Help is very much appreciated.
dlat = load('latitude.mat');
lat = dlat.lat;
dlon = load('longitude.mat');
lon = dlon.lon;
dprec = load('rain.mat');
prec = dprec.prec;
lonW=wrapTo360(lon);
pcolor(lon,lat,prec);shading flat
pcolor(lonW,lat,prec);shading flat

Respuesta aceptada

Konrad
Konrad el 2 de Nov. de 2021
hi,
maybe I didn't get it, but why not just add 180?
lonW = lon + 180;
  3 comentarios
Konrad
Konrad el 2 de Nov. de 2021
Editada: Konrad el 2 de Nov. de 2021
I'm still not sure what you aim to achieve. To you want to preserve the order of your x-data (longitudes)? Then
pcolor(lon+180,lat,prec);shading flat
will give you longitudes from 0 to 360 on the x axis; everything else looks exactly like in your first plot.
In contrast, wrapTo360() changes e.g. -1 to 359, -180 to 180. So basically, the left half of your plot is moved to the right. pcolor() seems to expect sorted values, so you would have to do:
[lonW,idx] = sort(wrapTo360(lon));
precW = prec(:,idx);
figure;pcolor(lonW,lat,precW);shading flat;
Best, Konrad
JMSE
JMSE el 11 de Nov. de 2021
Many thanks, it helped a lot.

Iniciar sesión para comentar.

Más respuestas (0)

Productos


Versión

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by