source: issm/trunk-jpl/src/m/contrib/morlighem/modeldata/interpFromGeotiff.m@ 24747

Last change on this file since 24747 was 24747, checked in by Mathieu Morlighem, 5 years ago

CHG: much faster interp from geotiff

File size: 1.6 KB
Line 
1function dataout = interpFromGeotiff(geotiffname,X,Y),
2
3usemap = 0;
4if license('test','map_toolbox')==0,
5 disp('WARNING: map toolbox not installed, trying house code');
6 usemap = 0;
7elseif license('checkout','map_toolbox')==0
8 disp('WARNING: map toolbox not available (checkout failed), trying house code');
9 usemap = 0;
10end
11
12if usemap,
13 [data,R] = geotiffread(geotiffname);
14 data=double(flipud(data));
15 xdata=R.XLimWorld(1):R.DeltaX:R.XLimWorld(2); xdata=xdata(:);
16 xdata =(xdata(1:end-1)+xdata(2:end))/2;
17 ydata=R.YLimWorld(2):R.DeltaY:R.YLimWorld(1); ydata=flipud(ydata(:));
18 ydata =(ydata(1:end-1)+ydata(2:end))/2;
19else
20
21 %Get image info
22 Tinfo = imfinfo(geotiffname);
23 N = Tinfo.Width;
24 M = Tinfo.Height;
25 dx = Tinfo.ModelPixelScaleTag(1);
26 dy = Tinfo.ModelPixelScaleTag(2);
27 minx = Tinfo.ModelTiepointTag(4);
28 maxy = Tinfo.ModelTiepointTag(5);
29
30 %Generate vectors
31 xdata = minx + dx/2 + ((0:N-1).*dx);
32 ydata = maxy - dy/2 - ((M -1:-1:0).*dy);
33
34 %Read image
35 if 1
36 assert(dx>0); assert(dy>0);
37 ydata = fliplr(ydata);
38
39 %Get pixels we are interested in
40 offset=2;
41 xmin=min(X(:)); xmax=max(X(:));
42 posx=find(xdata<=xmax);
43 id1x=max(1,find(xdata>=xmin,1)-offset);
44 id2x=min(numel(xdata),posx(end)+offset);
45
46 ymin=min(Y(:)); ymax=max(Y(:));
47 posy=find(ydata>=ymin);
48 id1y=max(1,find(ydata<=ymax,1)-offset);
49 id2y=min(numel(ydata),posy(end)+offset);
50
51 data = double(imread(geotiffname,'PixelRegion',{[id1y,id2y],[id1x,id2x]}));
52 xdata=xdata(id1x:id2x);
53 ydata=ydata(id1y:id2y);
54 else
55 data=double(flipud(imread(geotiffname)));
56 end
57 data(find(abs(data)>10^30))=NaN;
58
59end
60
61dataout = InterpFromGrid(xdata,ydata,data,X,Y);
62dataout(dataout==-9999)=NaN;
Note: See TracBrowser for help on using the repository browser.