From 9332be828c4de2e4eceadf807507462318751a05 Mon Sep 17 00:00:00 2001 From: Jacques Grelet <jacques.grelet@ird.fr> Date: Fri, 6 Jul 2018 08:32:42 +0000 Subject: [PATCH] v1.48.5rc1 improve map climatology with ship track over International Date Line (pacific) --- tsg_tools/climatology/test_m_map.m | 31 +++++++++++++++---------- tsg_util/plot_map.m | 37 ++++++++++++++++++++++-------- tsgqc.m | 4 ++-- 3 files changed, 48 insertions(+), 24 deletions(-) diff --git a/tsg_tools/climatology/test_m_map.m b/tsg_tools/climatology/test_m_map.m index cc515d3..d6740c4 100644 --- a/tsg_tools/climatology/test_m_map.m +++ b/tsg_tools/climatology/test_m_map.m @@ -1,14 +1,21 @@ % test plot climato with m_map +clear all +% climato file are under: ftp \us191\oceano\lib\matlab %ncdisp('woa13_annual_surf.nc' -SSTP = ncread('woa13_annual_surf.nc', 'WOA_MEAN_SSTP'); -SSPS = ncread('woa13_annual_surf.nc', 'WOA_MEAN_SSPS'); -LATX = ncread('woa13_annual_surf.nc', 'WOA_LATX'); -LONX = ncread('woa13_annual_surf.nc', 'WOA_LONX'); +%mainpath = '/mnt/irdbrest_ftp/us191/oceano/lib/matlab/'; +mainpath = ''; +file = 'woa05'; +%file = 'woa13'; -%latMin = -50; latMax = 65; lonMin = 40; lonMax = 280; +SSTP = ncread([mainpath file '_annual_surf.nc'], 'WOA_MEAN_SSTP'); +SSPS = ncread([mainpath file '_annual_surf.nc'], 'WOA_MEAN_SSPS'); +LATX = ncread([mainpath file '_annual_surf.nc'], 'WOA_LATX'); +LONX = ncread([mainpath file '_annual_surf.nc'], 'WOA_LONX'); + +latMin = -50; latMax = 65; lonMin = 40; lonMax = 280; %latMin = -50; latMax = 65; lonMin = 180; lonMax = 360; -latMin = -50; latMax = 65; lonMin = 179; lonMax = 181; +%latMin = -50; latMax = 65; lonMin = 179; lonMax = 181; m_proj('Mercator','lat',[latMin latMax],'long',[lonMin lonMax]); @@ -18,13 +25,13 @@ climato = permute(climato, fliplr(1:4)); climato = squeeze(climato(1, 1,:,:)); indLat = find(LATX > latMin & LATX < latMax); -%LONX = wrapTo360_p(LONX); -%LONX = wrapTo180_p(LONX); -indn = find(LONX < 0); -indp = find(LONX >= 0); -LONX = LONX(indn) -%LONX = mod(LONX+180,360)-180; +% swap negative value (west) to 180-360 +LONX(find(LONX < 0)) = LONX(find(LONX < 0)) + 360; + +[val, indval] = sort(LONX); +LONX = LONX(indval); +climato = climato(:,indval); indLon = find(LONX > lonMin & LONX < lonMax); lon = LONX(indLon); diff --git a/tsg_util/plot_map.m b/tsg_util/plot_map.m index 51b17bc..82590c7 100644 --- a/tsg_util/plot_map.m +++ b/tsg_util/plot_map.m @@ -95,18 +95,27 @@ if ~isempty( ind ) % get last selected climatology structure s = get(findobj('Tag', 'TAG_UIMENU_CLIMATO_MAIN'), 'Userdata'); level = tsg.preference.levitus_depth_value; - % extract the matrix + % extract the matrix climato = squeeze(climato(s.time, level,:,:)); - indLat = find(tsg.levitus.data.WOA_LATX > latMin-border & ... - tsg.levitus.data.WOA_LATX <latMax+border); + % use local var for quick access + LATX = tsg.levitus.data.WOA_LATX; + LONX = tsg.levitus.data.WOA_LONX; + + % swap negative value (west) to 180-360 if ~isempty(tsg.indcross) - tsg.levitus.data.WOA_LONX = mod(tsg.levitus.data.WOA_LONX+180,360)-180; + LONX(LONX < 0) = LONX(LONX < 0) + 360; + [val, indval] = sort(LONX); + LONX = LONX(indval); + climato = climato(:,indval); end - - indLon = find(tsg.levitus.data.WOA_LONX > lonMin-border & ... - tsg.levitus.data.WOA_LONX <lonMax+border); - lon = tsg.levitus.data.WOA_LONX(indLon); - lat = tsg.levitus.data.WOA_LATX(indLat); + + % find indices for the selected area + indLat = find(LATX > latMin-border & LATX <latMax+border); + indLon = find(LONX > lonMin-border & LONX <lonMax+border); + lon = LONX(indLon); + lat = LATX(indLat); + + % plot climatogogy m_pcolor(lon, lat, climato(indLat, indLon)); shading flat; %colormap(m_colmap('jet','step',10)); @@ -115,7 +124,7 @@ if ~isempty( ind ) colorbar('off'); end - % select map type and resolution + % select map type and resolution % ------------------------------ switch tsg.preference.map_resolution @@ -182,6 +191,14 @@ if ~isempty( ind ) if tsg.preference.map_patch_value == 1 x = s.ncst(:,1); y = s.ncst(:,2); + % swap negative value (west) to 180-360 + if ~isempty(tsg.indcross) + x(x < 0) = x(x < 0) + 360; + % remove line horizontal lines + x(x == 0) = nan; + end + + % plot coast m_line(x,y, 'color','k'); end diff --git a/tsgqc.m b/tsgqc.m index 1d3c29e..4c7de2f 100644 --- a/tsgqc.m +++ b/tsgqc.m @@ -43,8 +43,8 @@ global GOSUD_FORMAT_VERSION % 0.90x -> 1.0RCx % ------------------------------------------------------------------- VERSION = 1.485; % -> 1.44 -CHAR_VERSION = '1.48.5b2'; -DATE_VERSION = '03/07/2018'; +CHAR_VERSION = '1.48.5rc1'; +DATE_VERSION = '06/07/2018'; % netcdf file version, see DATA FORMAT TSG document: % CORTSG_format_gosud.doc -- GitLab