geoid_load_file.m 1.08 KB
Newer Older
Valentin Platzgummer's avatar
Valentin Platzgummer committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
function geoid = geoid_load_file(filename)
%GEOID_LOAD_FILE  Loads geoid data from filename

  geoid.file = filename; geoid.offset = NaN; geoid.scale = NaN;
  fid = fopen(geoid.file, 'r');
  if fid == -1, error(['Cannot open ', geoid.file]), end
  for i = 1:16
    if isfinite(geoid.offset) && isfinite(geoid.scale), break, end
    text = fgetl(fid);
    if ~ischar(text), continue, end
    text = strsplit(text, ' ');
    if length(text) == 3
      if strcmp(text{2}, 'Offset')
        geoid.offset = str2double(text{3});
      elseif strcmp(text{2}, 'Scale')
        geoid.scale = str2double(text{3});
      end
    elseif length(text) == 2
      break
    end
  end
  fclose(fid);
  if ~isfinite(geoid.offset), error('Cannot find offset'), end
  if ~isfinite(geoid.scale), error('Cannot find scale'), end
  geoid.im = imread(geoid.file);
  if ~isa(geoid.im, 'uint16'), error('Wrong image type'), end
  geoid.h = size(geoid.im, 1);
  geoid.w = size(geoid.im, 2);
  if ~(bitand(geoid.w, 1) == 0 && bitand(geoid.h, 1) == 1)
    error('Image width/height not even/odd')
  end
end