Отобразитесь анимация радарных изображений ИДЕТ фон

Этот пример показывает, как отобразить радарные изображения 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);

Смотрите также

| |

Похожие темы