Обычно сервер WMS возвращает графическое представление уровня (или уровней) обратно запрашивающему, а не фактические данные. Однако в некоторых редких случаях можно запросить фактические данные с определенных серверов WMS.
Сервер WMS визуализирует один или несколько уровней и сохраняет результаты в файле, который передается в потоковом режиме инициатору запроса. wmsread и getMap функции обращаются с просьбой от Вашего имени, захватывают поток во временном файле и импортируют содержание файла в переменную в переменную рабочего пространства.
Могут быть доступны различные форматы файлов, такие как JPEG, PNG, GIF и GeoTIFF. Почти все серверы WMS поддерживают использование формата JPEG, а многие поддерживают более одного стандартного графического формата.
Формат может повлиять на качество результатов. Например, формат PNG позволяет избежать артефактов, связанных с плиткой, которые являются общими для JPEG. Если сервер поддерживает несколько форматов, можно указать формат с помощью wmsread функции и ImageFormat аргумент «имя-значение»; такие как 'ImageFormat','image/png'.
Формат также определяет, будет ли получено графическое представление, как в случае с любым из стандартных графических форматов, или абсолютно количественная сетка данных (возможно, включая отрицательные, а также положительные значения). Количественные наборы данных предоставляются в форматах GeoTIFF и BIL.
Примечание
Для запроса фактических данных чаще всего требуется создать либо запрос службы веб-покрытия (WCS) для растровых данных, либо запрос службы веб-функций (WFS) для векторных данных. Toolbox™ сопоставления не поддерживает запросы WCS и WFS.
Чтобы задать форматы GeoTIFF или BIL, используйте аргументы «имя-значение» 'ImageFormat','image/tiff' или 'ImageFormat','image/bil'соответственно. Хотя файлы GeoTIFF и BIL могут содержать несколько совместно зарегистрированных диапазонов (каналов), файлы GeoTIFF и BIL, возвращаемые серверами WMS, включают только один диапазон и выходные данные wmsread является 2-D массивом.
Например, с сервера НАСА WorldWind WMS можно получить подписанные количественные данные об отметке, а не изображение RGB. См. выходные данные команды:
wmsinfo('https://worldwind26.arc.nasa.gov/wms/elev?')После извлечения данных в количественном формате отобразите их как поверхность или поверхность, отображенную на текстуру, а не как изображение, как показано в примерах ниже.
Сервер НАСА WorldWind WMS содержит широкий выбор слоев, содержащих данные о высотах. Ниже приведен пример объединения данных фасада с растровой картой, содержащей национальные границы.
Получите информацию о сервере НАСА WorldWind. Выберите слой, содержащий данные SRTM.
info = wmsinfo('https://worldwind26.arc.nasa.gov/wms/elev?'); layers = info.Layer; srtm = refine(layers,'SRTM','SearchField','layername');
Укажите пределы широты и долготы для региона, окружающего Афганистан.
latlim = [25 40]; lonlim = [55 80];
Считывание данных с использованием 1-минутного интервала выборки. Укажите 'ImageFormat' как 'image/tiff'.
cellSize = dms2degrees([0,1,0]); [ZA,RA] = wmsread(srtm,'Latlim',latlim,'Lonlim',lonlim, ... 'CellSize',cellSize,'ImageFormat','image/tiff');
Обратите внимание, что ZA - массив данных об отметке, а не изображение RGB. Найдите минимальную и максимальную отметки.
elevationLimits = [min(min(ZA)) max(max(ZA))]
elevationLimits = 1×2 int16 row vector -1415 7715
Отображение данных фасада в виде текстуры.
figure worldmap('Afghanistan') geoshow(ZA,RA,'DisplayType','texturemap') demcmap(double(ZA)) title({'Afghanistan and Surrounding Region',srtm.LayerTitle}, ... 'Interpreter','none');

Включите национальные границы от сервера VMAP0 WMS в карту возвышения.
vmap0 = wmsfind('vmap0.tiles','SearchField','serverurl'); boundaries = refine(vmap0,'country_02'); B = wmsread(boundaries,'Latlim',latlim, ... 'Lonlim',lonlim,'CellSize',cellSize); ZB = ZA; ZB(B(:,:,1) < 250) = min(ZA(:)); figure worldmap('Afghanistan') demcmap(double(ZA)) geoshow(ZB,RA,'DisplayType','texturemap') title({'Afghanistan and Country Boundaries',srtm.LayerTitle}, ... 'Interpreter','none');

Миссия по топографии радара шаттла (SRTM) - проект, возглавляемый Национальным управлением геопространственной разведки США (NGA) и НАСА. SRTM создал цифровую топографическую базу данных Земли с высоким разрешением. SRTM30 Плюс набор данных объединяет GTOPO30, SRTM-полученное возвышение земли и данные о батиметрии Sandwell Калифорнийского университета в Сан-Диего.
В этом примере считывайте и отображайте слой SRTM30 Plus для Мэнского залива с интервалом выборки в 30 дуг-секунд, используя данные сервера WorldWind.
Получите информацию о сервере НАСА WorldWind. Найти 'srtm30' слой, который является набором данных SRTM30 Plus.
info = wmsinfo('https://worldwind26.arc.nasa.gov/wms/elev?'); layers = info.Layer; srtm = refine(layers,'srtm30','SearchField','layername');
Укажите пределы широты и долготы для региона, окружающего Мэнский залив. Установите интервал выборки в 30 угловых секунд, а формат изображения в 'image/tiff'. Запросите карту у сервера.
latlim = [40 46]; lonlim = [-71 -65]; samplesPerInterval = dms2degrees([0 0 30]); imageFormat = 'image/tiff'; [Z,R] = wmsread(srtm,'Latlim',latlim, ... 'Lonlim',lonlim,'ImageFormat',imageFormat, ... 'CellSize',samplesPerInterval);
Обратите внимание, что Z - массив данных об отметке, а не изображение RGB. Найти минимальное и максимальное значения Z.
elevationLimits = [min(min(Z)) max(max(Z))]
elevationLimits = 1×2 int16 row vector -4540 1469
Создайте карту. Объект-ссылка растра R1 связывает внутренние координаты растровой карты с EPSG:4326 географической системой координат. Примените карту цветов, соответствующую данным отметки. Отображение и контур карты на уровне моря.
figure worldmap(Z,R) geoshow(Z,R,'DisplayType','texturemap') demcmap(double(Z)) contourm(double(Z),R,[0 0],'Color','k') colorbar title ({'Gulf of Maine',srtm.LayerTitle}, ... 'Interpreter','none')

В этом примере показано, как наносить изображения WMS на данные об отметке из национального набора данных об отметке USGS (NED).
Поиск слоев, содержащих данные ортоизображений и отметок.
ortho = wmsfind('/USGSImageryTopo/','SearchField','serverurl'); ortho = wmsupdate(ortho); info = wmsinfo('https://worldwind26.arc.nasa.gov/wms/elev?'); layers = info.Layer; us_ned = refine(layers,'usgs-ned');
Задайте пределы широты и долготы для области вокруг Большого каньона. Укажите размер изображения.
latlim = [36 36.23]; lonlim = [-113.36 -113.13]; imageHeight = 575; imageWidth = 575;
Прочитайте слои. Укажите 'ImageFormat' слоя фасада как 'image/tiff'.
A = wmsread(ortho,'Latlim',latlim,'Lonlim',lonlim, ... 'ImageHeight',imageHeight,'ImageWidth',imageWidth); [Z,R] = wmsread(us_ned,'ImageFormat','image/tiff', ... 'Latlim',latlim,'Lonlim',lonlim, ... 'ImageHeight',imageHeight,'ImageWidth',imageWidth);
Обратите внимание, что Z - массив данных об отметке, а не изображение RGB.
Нанесите ортоизображение на данные фасада.
figure usamap(latlim,lonlim) framem off mlabel off plabel off gridm off geoshow(double(Z),R,'DisplayType','surface','CData',A); daspectm('m',1) title({'Grand Canyon','USGS NED and Ortho Image'}, ... 'FontSize',8); axis vis3d

Настройте вид камеры и освещение.
cameraPosition = [96431 4.2956e+06 -72027]; cameraTarget = [-82.211 4.2805e+06 3054.6]; cameraViewAngle = 8.1561; cameraUpVector = [3.8362e+06 5.9871e+05 5.05123e+006]; set(gca,'CameraPosition',cameraPosition, ... 'CameraTarget',cameraTarget, ... 'CameraViewAngle',cameraViewAngle, ... 'CameraUpVector',cameraUpVector); lightHandle = camlight; camLightPosition = [7169.3 1.4081e+06 -4.1188e+006]; set(lightHandle,'Position',camLightPosition);
