diff --git a/.DS_Store b/.DS_Store index 9f81f64..1289a77 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/InSampGCent/DataLoadersGCent/loadISCE_MAI.m b/InSampGCent/DataLoadersGCent/loadISCE_MAI.m new file mode 100644 index 0000000..dd2b4e7 --- /dev/null +++ b/InSampGCent/DataLoadersGCent/loadISCE_MAI.m @@ -0,0 +1,195 @@ +function datastruct = loadISCE_MAI(filename,zone,limitny,azo,scaleval) +pathname =[]; +datastruct=struct([]); +if(nargin<5) + scaleval=0; +end +if(nargin<4) + azo=0; +end +if(nargin<3) + limitny=0; +end +if(nargin<2) + zone=0; +end +if(nargin<1) + [infilename, pathname]=uigetfile({'*.geo','Unwrapped files (*.unw)'; ... + '*.flat','Interferograms (*.flat)'; ... + '*.slc','Single Look Complex (*.slc)'; ... + % '*.amp','Amplitude files (*.amp)'; ... + '*.cor','Correlation files (*.cor)'; ... + '*.hgt','Height files (*.hgt)'; .... + % '*.msk','Mask files (*.msk)'; ... + '*.dem','DEMs (*.dem)'; ... + % '*.byt','Byte files (*.byt)'; ... + % '*.flg','Flag files (*.flg)'; ... + % '*.slp','Slope files (*.slp)'; ... + % '*.off','Offset files (*.off)'; ... + '*','All files'}, ... + 'Pick an input file'); + + filename=[pathname infilename]; +elseif length(strsplit(filename,'/'))>1 + pathname = []; + parts=strsplit(filename,'/'); + if isempty(parts{1}) + for k=2:length(parts)-1 + pathname = [pathname '/' parts{k}]; + end + % pathname = ['/' pathname]; + else + for k=1:length(parts)-2 + pathname =[pathname parts{k} '/']; + end + pathname = [pathname parts{end-1}]; + end +else + pathname = '.'; +end +% if isempty(pathname) +% pathname='.'; +% end +mag=[]; +phs=[]; + +n = length(filename); +patterns = {'phsig','cor','unw','rdr','flat','hgt','dem','slc','def'}; +figtype = {'phsig','rmg','rmg','rmg','cpx','rmg','rmg','cpx','rmg'}; + + + +for k = 1:length(patterns) + if(regexp(filename,patterns{k})) + type=figtype{k}; + break + end +end +im = sqrt(-1); + +if(regexp(filename,'geo')) + % [nx,ny,lambda,x1,y2,dx,dy] = load_xml([pathname '/insarProc.xml'],'GEO_WIDTH','GEO_LENGTH','radar_wavelength','maximum_longitude','maximum_latitude','LONGITUDE_SPACING','LATITUDE_SPACING'); + % [nx,ny,x1,y2,dx,dy] = load_xml([pathname '/' filename '.xml'], + [nx,ny,x1,y2,dx,dy] = loadGeoXml([filename '.xml']); + if regexp(filename,'merged') + lambda= '1'; + elseif regexp(filename,'insar') + lambda = '1'; + else + %lambda = loadGenericXml([pathname '/insarProc.xml'],'radar_wavelength'); + lambda='1'; + end + + nx = str2num(nx); ny = str2num(ny); x1 = str2num(x1); y2 = str2num(y2); dx = str2num(dx); dy = str2num(dy);lambda=str2num(lambda); +else + if regexp(filename,'merged') + + lambda = '0.05465763'; + [nx, ny] = loadISCEinfo([pathname(1:end-7) '/isce.log'],'isce.mroipac.filter - DEBUG - width','isce.mroipac.filter - DEBUG - length'); + + else + + % [nx,ny,lambda] = loadGenericXml([pathname '/insarProc.xml'],'WIDTH','LENGTH','RADAR_WAVELENGTH'); + [nx, ny,lambda] = loadISCEinfo([pathname '/isce.log'],'runCorrect.inputs.width','runCorrect.inputs.length','runCorrect.inputs.radar_wavelength'); + end + nx = str2num(nx); ny = str2num(ny); lambda =str2num(lambda); +end + +fprintf('%s\n', 'IMPORTANT!! This code assumes that the MAI is already in meters so the wavelength is set to 1.') +% lambda = getWavelength(sensor); + +if(limitny) + ny = limitny; +end + +switch type + case 'rmg' + disp('Loading rmg file') + disp(filename) + fid = fopen(filename,'r','native'); + [rmg,count] = fread(fid,[nx,ny*2],'float32'); + [nx,ny] = size(rmg); + ny = ny/2; + status = fclose(fid); + mag = flipud((rmg(1:nx,1:2:ny*2))'); + phs = flipud((rmg(1:nx,2:2:ny*2))'); + data = phs; + %if(regexp(filename,'unw')); + %data = -phs*lambda/(4*pi); + %end + case 'cpx' + + disp('Loading cpx file') + fid = fopen(filename,'r','native'); + [rmg,count] = fread(fid,[nx*2,ny],'real*4'); + status = fclose(fid); + real = flipud((rmg(1:2:nx*2,1:ny))'); + imag = flipud((rmg(2:2:nx*2,1:ny))'); + mag = abs(real+im*imag); + phs = angle(real+im*imag); + data = phs; + case 'phsig' + disp('Loading PHSIG file') + fid=fopen(filename,'r','native'); + [cor,count]=fread(fid,[nx, ny],'real*4'); + data = flipud(cor'); +end + + + +if(scaleval) + olddata = data; + scale = 2^ceil(log2(min([ny nx])/scaleval)); + extrax = scale-mod(nx,scale); + extray = scale-mod(ny,scale); + data = blkdiag(olddata,zeros(extray,extrax)); + [ny,nx] = size(data); + y2 = y2-extray*dy; + disp(['padding X,Y,data,S with ' num2str(extrax) '/' num2str(extray) ' zeros']); +else + extrax = 0; + extray = 0; + scale = 0; +end + + +if(regexp(filename,'geo')) + disp('File is geocoded') + y1 =y2+dy*(ny-1); + x2 =x1+dx*(nx-1); + + x =x1:dx:x2; + y =y1:-dy:y2; + + [X,Y] =meshgrid(x,y); + if zone==0 + [jnk1,jnk2,zone] = my_utm2ll(mean(x),mean(y),2); + end + if(str2num(zone)<=-1) + disp('not setting zone'); + else + [leng,width] =size(X); + [X,Y] = my_utm2ll(X,Y,2,zone); + X = reshape(X,leng,width); + Y = reshape(Y,leng,width); + pixelsize = mean([sqrt((X(1)-X(2))^2+(Y(1)-Y(2))^2) sqrt((X(nx*ny-1)-X(nx*ny))^2+(Y(nx*ny-1)-Y(nx*ny))^2)]); + X = X+pixelsize/2; + Y = Y-pixelsize/2; + end +else + disp('File is not geocoded') + [X,Y] = meshgrid(1:nx,1:ny); + zone = []; +end + +pixelsize=mean([sqrt((X(1)-X(2))^2+(Y(1)-Y(2))^2) sqrt((X(nx*ny-1)-X(nx*ny))^2+(Y(nx*ny-1)-Y(nx*ny))^2)]); + +baddata = mode(data(:)); +badid = find(data==baddata); +data(badid) = NaN; +disp(['setting ' num2str(length(badid)) ' pts with phs=' num2str(baddata) ' to NaN']); + + +datastruct=struct('data',data,'mag',mag,'phs',phs,'X',X,'Y',Y,'pixelsize',pixelsize, ... + 'zone',zone,'lambda',lambda,'nx',nx,'ny',ny,'filename',filename, ... + 'scale',scale','extrax',extrax,'extray',extray); diff --git a/InSampGCent/DataLoadersGCent/loadLOS_ISCE_MAI.m b/InSampGCent/DataLoadersGCent/loadLOS_ISCE_MAI.m new file mode 100644 index 0000000..dc8a86b --- /dev/null +++ b/InSampGCent/DataLoadersGCent/loadLOS_ISCE_MAI.m @@ -0,0 +1,68 @@ +function datastruct = loadLOS_ISCE_MAI(datastruct,losfilename, azo); + + +if(isempty(losfilename)); + filename = datastruct.filename; + c = strsplit(filename,'/'); + pathname = []; + for k = 2:length(c)-1 + pathname=[pathname '/' c{k}]; + end + + losfilename=[pathname '/los.rdr.geo']; +end +clear c k +squint = 0.1; +if(azo==1) + heading = datastruct.heading+squint; + S = zeros(datastruct.ny, datastruct.nx,3); + S(:,:,1)= sind(heading); + S(:,:,2)= cosd(heading); + S(:,:,3)= 0; +else + + nx = datastruct.nx; + ny = datastruct.ny; + extrax = datastruct.extrax; + extray = datastruct.extray; + ox = nx-extrax; + oy = ny-extray; + + fid = fopen(losfilename,'r','native'); + [tmp,count] = fread(fid,[ox*2,oy],'real*4'); + status = fclose(fid); + + look = tmp(1:ox,:); + heading = tmp((ox+1):(ox*2),:); + heading = 90-flipud(heading'); %Puts heading into same convention as ROI_PAC geo_incidence.unw + + look = flipud(look'); + + heading = heading.*pi/180; + look = look.*pi/180; + + id = find(heading==0); + jd = find(heading~=0); + heading(id) = mean(heading(jd)); + look(id) = mean(look(jd)); + + S1 = [sin(heading)]; + S2 = [cos(heading)]; + disp('Making the up-down unit vector zero for MAI') + S3 = [cos(look).*0]; + + S1 = blkdiag(S1,zeros(extray,extrax)); + S2 = blkdiag(S2,zeros(extray,extrax)); + S3 = blkdiag(S3,zeros(extray,extrax)); + badid = find(S1(:)==0); + S1(badid) = S1(1); % set to average in load_los + S2(badid) = S2(1); + S3(badid) = S2(1); + + S(:,:,1) = S1; + S(:,:,2) = S2; + S(:,:,3) = S3; + +end + +datastruct.S=S; diff --git a/InSampGCent/ResamplerGCent/resampInSARgCent.m b/InSampGCent/ResamplerGCent/resampInSARgCent.m index 652e2a6..557ba0a 100644 --- a/InSampGCent/ResamplerGCent/resampInSARgCent.m +++ b/InSampGCent/ResamplerGCent/resampInSARgCent.m @@ -14,6 +14,7 @@ corStruct = loadISCE(corrfilename,zone,limitny,azo,0); cor = corStruct.data; data = datastruct.data; + disp("Adding red noise to data") corId = find(cor<=corThresh); data(corId) = NaN; diff --git a/gCentWrappers/writeResampIn.m b/gCentWrappers/writeResampIn.m index 62f3723..7882f9f 100644 --- a/gCentWrappers/writeResampIn.m +++ b/gCentWrappers/writeResampIn.m @@ -47,15 +47,13 @@ function writeResampIn(toResample, gCentFile) fid = fopen([resampDir '/resamp_in.m'],'w'); - fprintf(fid,'datafilename = ''%s'';\n', datafilename); fprintf(fid,'losfilename = ''%s'';\n', losfilename); -fprintf(fid,'corrfilename = '''';\n'); +fprintf(fid,'corrfilename = ''%s'';\n', corrfilename); fprintf(fid,'demfilename = ''%s'';\n', demfilename); fprintf(fid,'faultfilename = ''%s'';\n', faultfilename); fprintf(fid,'savestructname = ''%s'';\n', savestructname); fprintf(fid,'processor = ''%s'';\n', processor); -%fprintf(fid,'processor = ''%s'';\n', 'ISCEMINTPY'); fprintf(fid,'iscestack = ''%s'';\n', iscestack); fprintf(fid,'nx = 0;\n'); fprintf(fid,'ny = 0;\n');