Changeset 6670


Ignore:
Timestamp:
11/26/10 12:35:04 (14 years ago)
Author:
Eric.Larour
Message:

More flexible radarpower

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/m/model/radarpower.m

    r6488 r6670  
    1 function md=radarpower(md,xlim,ylim,highres)
     1function md=radarpower(md,options)
    22%RADARPOWER - overlay a power radar image on an existing mesh
    33%
     
    77%
    88%   Usage:
    9 %      md=radarpower(md,xlim,ylim,highres)
    10 %      md=radarpower(md,xlim,ylim)
     9%      md=radarpower(md,options);
    1110%      md=radarpower(md)
    1211
     
    1817
    1918%Parse inputs
    20 if nargin<4,
    21         highres=0;
     19if nargin==1,
     20        options=pairoptions;
    2221end
    23 if nargin<3,
    24         xlim=[min(md.x) max(md.x)];
    25         ylim=[min(md.y) max(md.y)];
    26 end
     22
     23highres=getfieldvalue(options,'highres',0);
     24xlim=getfieldvalue(options,'xlim',[min(md.x) max(md.x)]);
     25ylim=getfieldvalue(options,'ylim',[min(md.y) max(md.y)]);
    2726
    2827%find gdal coordinates
     
    3029y0=min(ylim); y1=max(ylim);
    3130
    32 %the geotiff image is either 200m or 1km accuracy.
    33 if strcmpi(md.hemisphere,'n'),
    34         if ~exist([MODELDATA '/MOG/mog150_greenland_map.jpg']),
    35                 error(['radarpower error message: file ' MODELDATA '/MOG/mog150_greenland_map.jpg not found. Check MODELDATA variable..']);
     31%figure out if we should go look for Greenland or Antarctica geotiff, or if user provided one.
     32if ~exist(options,'overlay_image'),
     33        if strcmpi(md.hemisphere,'n'),
     34                if ~exist([MODELDATA '/MOG/mog150_greenland_map.jpg']),
     35                        error(['radarpower error message: file ' MODELDATA '/MOG/mog150_greenland_map.jpg not found. Check MODELDATA variable..']);
     36                end
     37                jpgim=[MODELDATA '/MOG/mog150_greenland_map.jpg'];
     38                geom=load([MODELDATA '/MOG/mog150_greenland_map.jpgw'],'ascii');
     39                sizex=floor((x1-x0)/geom(1)); % x posting
     40                sizey=floor((y1-y0)/geom(4)); % y posting
     41                topleftx=floor((x0-geom(5))/geom(1)); % x min
     42                toplefty=floor((geom(6)-y1)/geom(4)); % y max
     43
     44                %Read and crop file
     45                disp('Warning: expecting coordinates in polar stereographic (Std Latitude: 70ºN Meridian: 45º)');
     46                im=imread(jpgim);
     47                im=im(toplefty:toplefty+sizey,topleftx:topleftx+sizex);
     48                md.sarpwr=double(flipud(im));
     49                md.sarxm=(x0:(x1-x0)/(size(md.sarpwr,2)-1):x1);
     50                md.sarym=(y0:(y1-y0)/(size(md.sarpwr,1)-1):y1);
     51
     52        elseif strcmpi(md.hemisphere,'s'),
     53                if highres,
     54                        if ~exist([MODELDATA '/MosaicTiffRsat/amm125m_v2_200m.tif']),
     55                                error(['radarpower error message: file ' MODELDATA '/MosaicTiffRsat/amm125m_v2_200m.tif not found. Check MODELDATA variable..']);
     56                        end
     57                        geotiff_name=[MODELDATA '/MosaicTiffRsat/amm125m_v2_200m.tif'];
     58                else
     59                        if ~exist([MODELDATA '/MosaicTiffRsat/amm125m_v2_1km.tif']),
     60                                error(['radarpower error message: file ' MODELDATA '/MosaicTiffRsat/amm125m_v2_1km.tif not found. Check MODELDATA variable..']);
     61                        end
     62                        geotiff_name=[MODELDATA '/MosaicTiffRsat/amm125m_v2_1km.tif'];
     63                end
     64
     65                %Name of image
     66                inputname='./temp.tif';
     67                eval(['!gdal_translate -quiet -projwin ' num2str(x0) ' ' num2str(y1) ' ' num2str(x1) ' ' num2str(y0) ' ' geotiff_name ' ' inputname ]);
     68
     69                %Read in temp.tif:
     70                md.sarpwr=double(flipud(imread('temp.tif','TIFF')));
     71                md.sarxm=(x0:(x1-x0)/(size(md.sarpwr,2)-1):x1);
     72                md.sarym=(y0:(y1-y0)/(size(md.sarpwr,1)-1):y1);
     73
     74                %Erase image
     75                system('rm -rf ./temp.tif');
     76
     77        else
     78                error('field hemisphere should either be ''n'' or ''s''');
    3679        end
    37         jpgim=[MODELDATA '/MOG/mog150_greenland_map.jpg'];
    38         geom=load([MODELDATA '/MOG/mog150_greenland_map.jpgw'],'ascii');
    39         sizex=floor((x1-x0)/geom(1)); % x posting
    40         sizey=floor((y1-y0)/geom(4)); % y posting
    41         topleftx=floor((x0-geom(5))/geom(1)); % x min
    42         toplefty=floor((geom(6)-y1)/geom(4)); % y max
     80else
     81        %ok, user provided an image. check we also have overlay_xlim and overlay_ylim  options, to know what range of coordinates the image covers.
     82        if (~exist(options,'overlay_xlim') | ~exist(options,'overlay_xlim')| ~exist(options,'overlay_xposting')| ~exist(options,'overlay_yposting')),
     83                error('radarpower error message: please provide overlay_xlim, overlay_ylim, overlay_xposting and overlay_yposting options together with overlay_image option');
     84        end
     85        overlay_image=getfieldvalue(options,'overlay_image');
     86        overlay_xlim=getfieldvalue(options,'overlay_xlim');
     87        overlay_ylim=getfieldvalue(options,'overlay_ylim');
     88        overlay_xposting=getfieldvalue(options,'overlay_xposting');
     89        overlay_yposting=getfieldvalue(options,'overlay_yposting');
     90
     91        sizex=floor((x1-x0)/overlay_xposting);
     92        sizey=floor((y1-y0)/overlay_yposting);
     93        topleftx=floor((x0-overlay_xlim(1))/overlay_xposting); % x min
     94        toplefty=floor((overlay_ylim(2)-y1)/overlay_yposting); % y max
     95
    4396
    4497        %Read and crop file
    4598        disp('Warning: expecting coordinates in polar stereographic (Std Latitude: 70ºN Meridian: 45º)');
    46         im=imread(jpgim);
     99        im=imread(overlay_image);
    47100        im=im(toplefty:toplefty+sizey,topleftx:topleftx+sizex);
    48101        md.sarpwr=double(flipud(im));
    49102        md.sarxm=(x0:(x1-x0)/(size(md.sarpwr,2)-1):x1);
    50103        md.sarym=(y0:(y1-y0)/(size(md.sarpwr,1)-1):y1);
    51 
    52 elseif strcmpi(md.hemisphere,'s'),
    53         if highres,
    54                 if ~exist([MODELDATA '/MosaicTiffRsat/amm125m_v2_200m.tif']),
    55                         error(['radarpower error message: file ' MODELDATA '/MosaicTiffRsat/amm125m_v2_200m.tif not found. Check MODELDATA variable..']);
    56                 end
    57                 geotiff_name=[MODELDATA '/MosaicTiffRsat/amm125m_v2_200m.tif'];
    58         else
    59                 if ~exist([MODELDATA '/MosaicTiffRsat/amm125m_v2_1km.tif']),
    60                         error(['radarpower error message: file ' MODELDATA '/MosaicTiffRsat/amm125m_v2_1km.tif not found. Check MODELDATA variable..']);
    61                 end
    62                 geotiff_name=[MODELDATA '/MosaicTiffRsat/amm125m_v2_1km.tif'];
    63         end
    64 
    65         %Name of image
    66         inputname='./temp.tif';
    67         eval(['!gdal_translate -quiet -projwin ' num2str(x0) ' ' num2str(y1) ' ' num2str(x1) ' ' num2str(y0) ' ' geotiff_name ' ' inputname ]);
    68 
    69         %Read in temp.tif:
    70         md.sarpwr=double(flipud(imread('temp.tif','TIFF')));
    71         md.sarxm=(x0:(x1-x0)/(size(md.sarpwr,2)-1):x1);
    72         md.sarym=(y0:(y1-y0)/(size(md.sarpwr,1)-1):y1);
    73 
    74         %Erase image
    75         system('rm -rf ./temp.tif');
    76 
    77 else
    78         error('field hemisphere should either be ''n'' or ''s''');
    79104end
Note: See TracChangeset for help on using the changeset viewer.