Этот пример показывает, как отобразить радарные изображения NEXRAD. Изображения покрывают прошлые 24 часа, выбранные в одночасовых интервалах, для данных об использовании Соединенных Штатов из сервера IEM WMS. Используйте слой JPL Daily Planet в качестве фона.
Найдите слой 'nexrad-n0r-wmst'
и обновите его.
wmst = wmsfind('nexrad-n0r-wmst', 'SearchField', 'layername'); wmst = wmsupdate(wmst);
Найдите, что сгенерированный составной объект КОНУСА ИДЕТ формирование изображений IR, и обновите его.
goes = wmsfind('goes*conus*ir', 'SearchField', 'layername'); goes = wmsupdate(goes);
Создайте фигуру с желаемой географической степенью.
hfig = figure;
region = 'conus';
usamap(region)
mstruct = gcm;
latlim = mstruct.maplatlimit;
lonlim = mstruct.maplonlimit;
Считайте слой GOES как изображение фона.
cellsize = .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;
В течение каждого часа получите почасовые данные о карте NEXRAD и объедините его с копией фона. Из-за того, как этот веб-сервер обрабатывает формат PNG
, получившиеся данные о карте имеют изображение с классом double
. Таким образом необходимо преобразовать его в uint8
перед слиянием.
borders = geoshow('usastatehi.shp', 'FaceColor', 'none'); black = [0,0,0]; threshold = 0; for k=1:numFrames time = datestr(hour); [A, R] = wmsread(wmst, 'Latlim', latlim, 'Lonlim', lonlim, ... 'Time', time, 'CellSize', cellsize, ... 'BackgroundColor', black, 'ImageFormat', 'image/png'); delete(hmap) index = any(A > threshold, 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}) drawnow frames(k) = getframe(hfig); hour = hour + 1/24; end
Просмотрите цикл фильма.
numTimes = 10; fps = 1.5; movie(hfig, frames, numTimes, fps);