В этом примере показано, как отобразить радарные изображения NEXRAD. Изображения покрывают прошлые 24 часа, произведенные в одночасовых интервалах, для данных об использовании Соединенных Штатов из сервера IEM WMS.
Ищите базу данных WMS 'nexrad-n0r-wmst'
слой. Синхронизируйте слой с сервером.
wmst = wmsfind('nexrad-n0r-wmst','SearchField','layername'); wmst = wmsupdate(wmst);
Ищите База данных WMS для сгенерированного составного объекта КОНУСА ИДЕТ формирование изображений IR. Синхронизируйте слой с сервером.
goes = wmsfind('goes*conus*ir','SearchField','layername'); goes = wmsupdate(goes);
Создайте карту совпадающих Соединенных Штатов.
hfig = figure; region = 'conus'; usamap(region) borders = geoshow('usastatehi.shp','FaceColor','none');
Получите пределы широты и долготы карты.
mstruct = gcm; latlim = mstruct.maplatlimit; lonlim = mstruct.maplonlimit;
Считайте слой GOES, чтобы использовать в качестве изображения фона.
cellsize = 0.1; [backdrop, R] = wmsread(goes,'ImageFormat','image/png', ... 'Latlim',latlim,'Lonlim',lonlim,'Cellsize',cellsize);
Найдите текущее время минус 24 часа. Настройте системы координат, чтобы содержать данные из getframe
.
now_m24 = datestr(now-1); hour_m24 = [now_m24(1:end-5) '00:00']; hour = datenum(hour_m24); hmap = []; numFrames = 24; frames = struct('cdata',[],'colormap',[]); frames(numFrames) = frames;
Установите Visible
свойство фигуры к 'off'
скрыть фигуру при заполнении систем координат. В течение каждого часа получите почасовые данные о карте NEXRAD и объедините его с копией фона. Из-за того, как этот веб-сервер обрабатывает формат PNG, получившиеся данные о карте имеют изображение с классом double
. Таким образом необходимо преобразовать его в uint8
перед слиянием.
hfig.Visible = 'off'; for k=1:numFrames time = datestr(hour); [A,R] = wmsread(wmst,'Latlim',latlim,'Lonlim',lonlim, ... 'Time',time,'CellSize',cellsize, ... 'BackgroundColor',[0 0 0],'ImageFormat','image/png'); delete(hmap) index = any(A > 0, 3); combination = backdrop; index = cat(3,index,index,index); combination(index) = uint8(255*A(index)); hmap = geoshow(combination,R); uistack(borders,'top') title({wmst.LayerName,time}) frames(k) = getframe(hfig); hour = hour + 1/24; end
Установите Visible
свойство фигуры к 'on'
. Просмотрите цикл фильма три раза на уровне 1,5 кадров в секунду.
hfig.Visible = 'on';
shg
movie(hfig,frames,3,1.5)