ps_plot_ifg.m

来自「StaMps最新测试版」· M 代码 · 共 431 行

M
431
字号
function [ph_lims]=ps_plot_ifg(in_ph,bg_flag,col_rg,lon_rg,lat_rg)% PS_PLOT_IFG plot phase of a PS interferogram%    PS_PLOT_IFG(PHASE,BACKGROUND,LIMS)%%    PHASE is a vector of phases (wrapped or unwrapped)%    %    BG_FLAG,  0, black background, lon/lat axes (default)%              1, white background, lon/lat axes%              2, shaded relief topo, lon/lat axes%              3, 3D topo, lon/lat axes%              4, mean amplitude image%              5, mean amplitude image, brightness showing through PS%              6, white background, xy axis (rotated lon/lat)%%    COL_RG is the color map limits (defaults to use maximum range)  %    LON_RG is the longitude range (defaults to use maximum range)            %    LAT_RG is the latitude range (defaults to use maximum range)            %%   Andy Hooper, June 2006plot_pixel_size=getparm('plot_pixel_size');pixel_aspect_ratio=getparm('pixel_aspect_ratio');plot_color_scheme=getparm('plot_color_scheme');shade_rel_angle=getparm('shade_rel_angle');lonlat_offset=getparm('lonlat_offset');if nargin < 1    error('PS_PLOT_IFG(PHASE,BACKGROUND,LIMS)')endif nargin < 3    col_rg=[];endif nargin < 4    lon_rg=[];endif nargin < 5    lat_rg=[];endif nargin < 2    bg_flag=1; % background flagendif bg_flag==4 | bg_flag==5    bg_amp=1;else    bg_amp=0;endmarker_size=8; load psverpsname=['ps',num2str(psver)];load(psname,'lonlat')if bg_amp==1    load(psname,'ij')endlonlat(:,1)=lonlat(:,1)+lonlat_offset(1);lonlat(:,2)=lonlat(:,2)+lonlat_offset(2);if ~isempty(lon_rg)    ix=lonlat(:,1)>=lon_rg(1)&lonlat(:,1)<=lon_rg(2);    in_ph=in_ph(ix);    lonlat=lonlat(ix,:);    if bg_amp==1        ij=ij(ix,:);    endendif ~isempty(lat_rg)    ix=lonlat(:,2)>=lat_rg(1)&lonlat(:,2)<=lat_rg(2);    in_ph=in_ph(ix);    lonlat=lonlat(ix,:);    if bg_amp==1        ij=ij(ix,:);    endendmin_ph=0;max_ph=0;if ~isempty(in_ph)if ~isempty(col_rg)    min_ph=min(col_rg);    max_ph=max(col_rg);else    if isreal(in_ph)        min_ph=min(in_ph);        max_ph=max(in_ph);    endendph_range=max_ph-min_ph;if ~isreal(in_ph) | ph_range==0    if ph_range==0        min_ph=-pi;        max_ph=+pi;        ph_range=2*pi;    end    in_ph=angle(in_ph);    c=hsv(64);else    if strncmpi(plot_color_scheme,'inflation',9)        c=flipud(jet(64));    else        c=jet(64);    endendcol_ix=round(((in_ph-min_ph)*63/ph_range)+1);col_ix(col_ix>64)=64;col_ix(col_ix<1)=1;else    c=hsv(64);endhold onif bg_flag==4 % plot on amplitude image    ampfile='./amp_mean.mat';    if ~exist(ampfile,'file')        ampile='../amp_mean.mat';    end    if ~exist(ampfile,'file')        ampfile=ps_load_mean_amp;    end    load(ampfile)        cd=(double(amp_mean))+1;    [n,m]=size(cd);    c=[gray(256);c];    az_ix=pixel_aspect_ratio:pixel_aspect_ratio:m*pixel_aspect_ratio;        pixel_margin1=floor((plot_pixel_size-1)/2);    pixel_margin2=ceil((plot_pixel_size-1)/2);    for i=1 : length(in_ph)        ix1=ij(i,2)-floor((pixel_aspect_ratio*plot_pixel_size/2)-1):ij(i,2)+ceil(pixel_aspect_ratio*plot_pixel_size/2);        ix1=ix1(ix1>0&ix1<=n);        ix2=ij(i,3)-pixel_margin1+1:ij(i,3)+pixel_margin2+1;        ix2=ix2(ix2>0&ix2<=m);        if ~(isnan(col_ix(i)))            cd(ix1,ix2)=256+col_ix(i);        end    end            image(az_ix,[1:size(cd,1)],flipud(fliplr(cd)))        axis equal    axis tight    elseif bg_flag==5 % plot on amplitude image, let amp show through color        ampfile='./amp_mean.mat';    if ~exist(ampfile,'file')        ampfile='../amp_mean.mat';    end    if ~exist(ampfile,'file')        ampfile=ps_load_mean_amp;    end    load(ampfile)    n_gray=16;    n_color=64;        ci=(double(amp_mean));    ci=ci-min(ci(:));    cimax=max(ci(:))*(1+1e-9);    ci=floor(ci/cimax*n_gray)*(n_color+1)+1;    c_base=c;    c=[];    for i=1:n_gray        i_frac=i/n_gray;        c=[c;[i_frac i_frac i_frac;c_base*(0.6+i_frac*0.4)]];    end    cd=ci;    [n,m]=size(cd);    az_ix=pixel_aspect_ratio:pixel_aspect_ratio:m*pixel_aspect_ratio;        pixel_margin1=floor((plot_pixel_size-1)/2);    pixel_margin2=ceil((plot_pixel_size-1)/2);    for i=1 : length(in_ph)        ix1=ij(i,2)-floor((pixel_aspect_ratio*plot_pixel_size/2)-1):ij(i,2)+ceil(pixel_aspect_ratio*plot_pixel_size/2);        ix1=ix1(ix1>0&ix1<=n);        ix2=ij(i,3)-pixel_margin1+1:ij(i,3)+pixel_margin2+1;        ix2=ix2(ix2>0&ix2<=m);        if ~(isnan(col_ix(i)))            cd(ix1,ix2)=ci(ix1,ix2)+col_ix(i);        end    end            image(az_ix,[1:size(cd,1)],flipud(fliplr(cd)))        axis equal    axis tight    elseif floor(bg_flag)==2        demfile='dem.mat';    if ~exist(demfile,'file')        demfile='../dem.mat';    end    if ~exist(demfile,'file')        demfile='../../dem.mat';    end    if ~exist(demfile,'file')        demfile=ps_load_dem;    end    load(demfile)    [dem_y,dem_x]=size(dem);    c2=gray(64);    c2=c2(35:50,:);    x=[dem_lon:dem_posting:(dem_x-1)*dem_posting+dem_lon];    y=[(dem_y-1)*dem_posting+dem_lat:-dem_posting:dem_lat];    demx=round((lonlat(:,1)-dem_lon)/dem_posting)+1;    demy=round((y(1)-lonlat(:,2))/dem_posting)+1;    [X,Y]=meshgrid(x,y);    [cindx,cimap,clim] = shaderel(X,Y,dem,[0.7 0.7 0.7],shade_rel_angle);    if bg_flag==2        c=[cimap;0,0,0;c];    else        c=[cimap;1,1,1;c];    end    cindx(dem==0)=257;    h=image(x,y,cindx);    pixel_margin1=floor((plot_pixel_size-1)/2);    pixel_margin2=ceil((plot_pixel_size-1)/2);    R=get(h,'cdata');    pixel_margin1=floor((plot_pixel_size-1)/2);    pixel_margin2=ceil((plot_pixel_size-1)/2);       	for i=1 : length(in_ph)        %if ~(isnan(col_ix(i))) & demy(i)>0 & demy(i)<=size(X,1) & demx(i)>0 & demx(i)<=size(X,2) & dem(demy(i),demx(i))~=0        if ~(isnan(col_ix(i))) & demy(i)>0 & demy(i)<=size(X,1) & demx(i)>0 & demx(i)<=size(X,2)             ix1=demy(i)-pixel_margin1:demy(i)+pixel_margin2;            ix2=demx(i)-pixel_margin1:demx(i)+pixel_margin2;            ix1=ix1(ix1>0&ix1<=size(X,1));            ix2=ix2(ix2>0&ix2<=size(X,2));            R(ix1,ix2)=col_ix(i)+257;        end    end    set(h,'cdata',R);    axis tight    dem_length=dem_y;    dem_width=dem_x;    lat_range=dem_posting*dem_length;    lon_range=dem_posting*dem_width;    xy_ratio=llh2local([dem_lon+lon_range;dem_lat+lat_range;0],[dem_lon;dem_lat;0]);    aspect_ratio=[xy_ratio(1)/xy_ratio(2),1,1];    set(gca,'plotboxaspectratio',aspect_ratio)    elseif bg_flag==3    % plot on 3D DEM            demfile='dem.mat';    if ~exist(demfile,'file')        demfile='../dem.mat';    end    if ~exist(demfile,'file')        demfile='../../dem.mat';    end    if ~exist(demfile,'file')        demfile=ps_load_dem;    end    load(demfile)        [dem_y,dem_x]=size(dem);    c2=gray(80);    x=[dem_lon:dem_posting:(dem_x-1)*dem_posting+dem_lon];    y=[(dem_y-1)*dem_posting+dem_lat:-dem_posting:dem_lat];    [X,Y]=meshgrid(x,y);    c=[c2(8:71,:);c];        demx=round((lonlat(:,1)-dem_lon)/dem_posting)+1;    demy=round((y(1)-lonlat(:,2))/dem_posting)+1;     h=surfl(X,Y,dem,shade_rel_angle);    dem_length=dem_y;    dem_width=dem_x;    lat_range=dem_posting*dem_length;    lon_range=dem_posting*dem_width;    xy_ratio=llh2local([dem_lon+lon_range;dem_lat+lat_range;0],[dem_lon;dem_lat;0]);    aspect_ratio=[xy_ratio(1)/xy_ratio(2),1,0.1];    set(gca,'plotboxaspectratio',aspect_ratio)        shading interp    R=get(h,'cdata');    R=R/2;        c=[c;0,0,0];    R(dem==0)=129;    pixel_margin1=floor((plot_pixel_size-1)/2);    pixel_margin2=ceil((plot_pixel_size-1)/2);       	for i=1 : length(in_ph)        if ~(isnan(col_ix(i)))            ix1=demy(i)-pixel_margin1:demy(i)+pixel_margin2;            ix2=demx(i)-pixel_margin1:demx(i)+pixel_margin2;            ix1=ix1(ix1>0&ix1<=size(X,1));            ix2=ix2(ix2>0&ix2<=size(X,2));            R(ix1,ix2)=col_ix(i)/128+0.5;        end    end    set(h,'cdata',R);    view(20,40)    axis off        elseif bg_flag==0 | bg_flag==1    % lon/lat axes        x_posting=1/3600;    y_posting=1/3600;        x=[min(lonlat(:,1))-2*x_posting:x_posting:max(lonlat(:,1))+2*x_posting];    y=[min(lonlat(:,2))-2*y_posting:y_posting:max(lonlat(:,2))+2*y_posting];        [X,Y]=meshgrid(x,y);    if bg_flag==0        c=[[0 0 0];c]; % black background    else        c=[[1 1 1];c]; % white background    end        demx=round((lonlat(:,1)-x(1))*3600)+1;    demy=round((lonlat(:,2)-y(1))*3600)+1;    R=zeros(size(X));        pixel_margin1=floor((plot_pixel_size-1)/2);    pixel_margin2=ceil((plot_pixel_size-1)/2);       	for i=1 : length(in_ph)        if ~(isnan(col_ix(i)))            ix1=demy(i)-pixel_margin1:demy(i)+pixel_margin2;            ix2=demx(i)-pixel_margin1:demx(i)+pixel_margin2;            ix1=ix1(ix1>0&ix1<=size(X,1));            ix2=ix2(ix2>0&ix2<=size(X,2));            R(ix1,ix2)=col_ix(i)+1;        end    end        dem_length=size(R,1);    dem_width=size(R,2);    lat_range=y_posting*dem_length;    lon_range=x_posting*dem_width;    dem_lat=y(1);    dem_lon=x(1);    xy_ratio=llh2local([dem_lon+lon_range;dem_lat+lat_range;0],[dem_lon;dem_lat;0]);    aspect_ratio=[xy_ratio(1)/xy_ratio(2),1,1];    set(gca,'plotboxaspectratio',aspect_ratio)        image(x,y,R)    axis tight           elseif bg_flag==5     % xy axes        x_posting=100;    y_posting=100;        x=[min(xy(:,2))-2*x_posting:x_posting:max(xy(:,2))+2*x_posting];    y=[min(xy(:,3))-2*y_posting:y_posting:max(xy(:,3))+2*y_posting];        [X,Y]=meshgrid(x,y);    c=[[1 1 1];c]; % white background        demx=round((xy(:,2)-x(1))/100)+1;    demy=round((xy(:,3)-y(1))/100)+1;    R=zeros(size(X));        pixel_margin1=floor((plot_pixel_size-1)/2);    pixel_margin2=ceil((plot_pixel_size-1)/2);       	for i=1 : length(in_ph)        if ~(isnan(col_ix(i)))            ix1=demy(i)-pixel_margin1:demy(i)+pixel_margin2;            ix2=demx(i)-pixel_margin1:demx(i)+pixel_margin2;            ix1=ix1(ix1>0&ix1<=size(X,1));            ix2=ix2(ix2>0&ix2<=size(X,2));            R(ix1,ix2)=col_ix(i)+1;        end    end        image(x,y,R)    axis equal    axis tight        else         	for i=1 : length(in_ph)        if ~(isnan(col_ix(i)))            p=plot(xy(i,2),xy(i,3),'.');		    set(p,'color',c(col_ix(i),:));           end    end    axis equal    axis tightendph_lims=[max_ph,min_ph];hold offcolormap(c);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?