1 | function dataout = interpFromGeotiff(geotiffname,X,Y),
|
---|
2 |
|
---|
3 | usemap = 0;
|
---|
4 | if license('test','map_toolbox')==0,
|
---|
5 | disp('WARNING: map toolbox not installed, trying house code');
|
---|
6 | usemap = 0;
|
---|
7 | elseif license('checkout','map_toolbox')==0
|
---|
8 | disp('WARNING: map toolbox not available (checkout failed), trying house code');
|
---|
9 | usemap = 0;
|
---|
10 | end
|
---|
11 |
|
---|
12 | if 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;
|
---|
19 | else
|
---|
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 | data=double(flipud(imread(geotiffname)));
|
---|
36 | data(find(abs(data)>10^30))=NaN;
|
---|
37 | end
|
---|
38 |
|
---|
39 | dataout = InterpFromGrid(xdata,ydata,data,X,Y);
|
---|
40 | dataout(dataout==-9999)=NaN;
|
---|