How to recenter spatial data?

2 ビュー (過去 30 日間)
JMSE
JMSE 2021 年 11 月 2 日
コメント済み: JMSE 2021 年 11 月 11 日
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

採用された回答

Konrad
Konrad 2021 年 11 月 2 日
hi,
maybe I didn't get it, but why not just add 180?
lonW = lon + 180;
  3 件のコメント
Konrad
Konrad 2021 年 11 月 2 日
編集済み: Konrad 2021 年 11 月 2 日
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 2021 年 11 月 11 日
Many thanks, it helped a lot.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeProgramming についてさらに検索

製品


リリース

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by