wmsread

Получите карту WMS из сервера

Синтаксис

[A,R] = wmsread(layer)
[A,R] = wmsread(layer,Name,Value,...)
[A,R] = wmsread(mapRequestURL)
[A,R,mapRequestURL] = wmsread(...)

Описание

пример

[A,R] = wmsread(layer) получает доступ к Интернету, чтобы представить и получить растровую карту из сервера Веб-картографического сервиса (WMS). Свойство ServerURL объекта WMSLayer, layer, задает сервер. Если layer имеет больше чем один элемент, то сервер накладывает каждый последующий слой сверх основного (первого) слоя, формируя одно изображение. Сервер представляет несколько слоев, только если все слои совместно используют то же значение ServerURL.

Сервер WMS возвращает растровую карту, или цветное или полутоновое изображение, в выводе A. Второй вывод, R, является растровым объектом ссылки, который связывает A с географической системой координат EPSG:4326. Строки A выравниваются с параллелями с ровной выборкой в долготе. Аналогично, столбцы A выравниваются с меридианами с ровной выборкой в широте.

Географические пределы A охватывают полную степень широты и долготы layer. Функция wmsread выбирает больший пространственный размер A, чтобы совпадать с его большей географической размерностью. Больший пространственный размер фиксируется в значении 512. Другими словами, принимая RGB вывод, A является 512-by-N-by-3, если степень широты превышает степень долготы и N-by-512-by-3 в противном случае. В обоих случаях N <= 512. Функция wmsread устанавливает N на целочисленное значение, которое обеспечивает самое близкое приближение, чтобы равняться размерам ячейки в широте и долготе. Карта охватывает полный объем, поддержанный для layer.

[A,R] = wmsread(layer,Name,Value,...) задает пары значения параметров, которые изменяют запрос к серверу. Можно сократить названия параметра, которые являются нечувствительными к регистру.

[A,R] = wmsread(mapRequestURL) использует входной параметр mapRequestURL, чтобы задать запрос к серверу. mapRequestURL содержит serverURL WMS с дополнительными параметрами WMS. Эти параметры WMS включают BBOX, GetMap и ключевое слово CRS:84 или EPSG:4326. Получите mapRequestURL из вывода wmsread, свойства RequestURL объекта WMSMapRequest или интернет-поиска.

[A,R,mapRequestURL] = wmsread(...) возвращается GetMap WMS запрашивают URL в векторе символов mapRequestURL. Можно вставить mapRequestURL в браузер, чтобы выполнить запрос к серверу, который затем возвращает растровую карту. Браузер открывает возвращенную карту, если ее тип пантомимы понят или сохраняет растровую карту на диск.

Примеры

свернуть все

Считайте слой NASA и отобразите его.

nasa = wmsfind('nasa', 'SearchField', 'serverurl');
layer = nasa.refine('bluemarbleng',  'SearchField', 'layername', ...
   'MatchType', 'exact');
[A, R] = wmsread(layer(1));
figure
axesm globe
axis off
geoshow(A, R)
title('Blue Marble')

Считайте и отобразите ортоизображение северного раздела моста Золотые Ворота в Сан-Франциско, Калифорния, с помощью Национальной Карты USGS Бесшовный сервер.

Задайте видимую область.

latlim = [37.78 37.841]; 
lonlim = [-122.53 -122.4];

Найдите слой ортоформирования изображений с высоким разрешением USGS. Национальная Карта USGS обеспечивает ортоформирование изображений из различных областей Соединенных Штатов. Один метод, чтобы получить слой ортоформирования изображений с высоким разрешением должен получить документ возможностей из сервера. Слой ортоформирования изображений является единственным слоем с этого сервера. Используйте несколько попыток соединиться с сервером в случае, если это занято.

numberOfAttempts = 5;
attempt = 0;
info = [];
serverURL = 'http://basemap.nationalmap.gov/ArcGIS/services/USGSImageryOnly/MapServer/WMSServer?';
while(isempty(info))
    try
        info = wmsinfo(serverURL);
        orthoLayer = info.Layer(1);
    catch e 
        
        attempt = attempt + 1;
        if attempt > numberOfAttempts
            throw(e);
        else
            fprintf('Attempting to connect to server:\n"%s"\n', serverURL)
        end        
    end
end

Получите изображение и отобразите его в проекции UTM.

imageLength = 1024;
[A, R] = wmsread(orthoLayer, 'Latlim', latlim, 'Lonlim', lonlim, ...
    'ImageHeight', imageLength, 'ImageWidth', imageLength);

figure
axesm('utm', 'Zone', utmzone(latlim, lonlim), ...
    'MapLatlimit', latlim, 'MapLonlimit', lonlim, ...
    'Geoid', wgs84Ellipsoid)
geoshow(A,R)
axis off
title({'San Francisco','Northern Section of Golden Gate Bridge'})

Считайте и отобразите глобальный ежемесячный составной объект температуры поверхности моря на 16 апреля 2010 на основе данных из датчика AMSR-E на борту спутника Воды. Включайте береговую линию, landmask, и слои страны.

coastwatch = wmsfind('coastwatch', 'SearchField', 'serverurl');
layers = coastwatch.refine('erdAAsstamday', ...
   'Searchfield','serverurl');
time = '2010-04-16T00:00:00Z';
[A, R] = wmsread(layers(end:-1:1), 'Time', time);
figure
axesm('pcarree', 'Maplonlimit', [0, 360], ...
   'PLabelLocation', 45, 'MLabelLocation', 90, ...
   'MLabelParallel', -90, 'MeridianLabel', 'on', ...
   'ParallelLabel', 'on');
geoshow(A, R);
title({layers(end).LayerTitle, time})

Входные параметры

свернуть все

Информация о слое вы получаете, заданный как объект WMSLayer.

Пример: [A,R] = wmsread(layers(1));

WMS запрос GetMap URL, заданный как вектор символов.

Пример: [A,R] = wmsread(mapURL);

Типы данных: char

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: [A,R] = wmsread(layers(1),'latlim',[40 50]);

Пределы широты выходного изображения в градусах, заданный как двухэлементный вектор формы [southern_limit northern_limit]. Предельные значения должны возрастать. По умолчанию 'Latlim' пуст, и wmsread использует полный объем в широте layer. Если Layer.Details.Attributes.NoSubsets является true, 'Latlim' не может быть изменен.

Пример: [A,R] = wmsread(layers(1),'latlim',[40 50]);

Типы данных: double

Пределы долготы выходного изображения в градусах, заданный как двухэлементный вектор в форме [western_limit eastern_limit]. Предельные значения должны возрастать. По умолчанию 'Lonlim' пуст, и полный объем в долготе layer используется. Если Layer.Details.Attributes.NoSubsets является true, вы не можете изменить 'Lonlim'

Пример: [A,R] = wmsread(layers(1),'lonlim',[40 50]);

Типы данных: double

Желаемая высота растра сопоставляет в пикселях, заданных как скаляр, положительный, номер с целочисленным знаком. ImageHeight не может превысить 8192. Если layer.Details.Attributes.FixedHeight содержит положительное число, вы не можете изменить 'ImageHeight'.

Пример: [A,R] = wmsread(layers(1),'ImageHeight',40);

Типы данных: double

Желаемая ширина растра сопоставляет в пикселях, заданных как скаляр, положительный, номер с целочисленным знаком. ImageWidth не может превысить 8192. Если Layer.Details.Attributes.FixedWidth содержит положительное число, вы не можете изменить 'ImageWidth'.

Пример: [A,R] = wmsread(layers(1),'ImageWidth',100);

Типы данных: double

Целевой размер выходных пикселей (растровые ячейки) в градусах, заданный как скалярный или двухэлементный вектор. Если вы задаете скаляр, значение применяется и к размерностям высоты и ширины. Если вы задаете вектор, используйте форму [height width]. Функция wmsread выдает ошибку, если вы задаете и CellSize и ImageHeight или ImageWidth. Выходная растровая карта не должна превышать размер [8192,8192].

Пример: [A,R] = wmsread(layers(1),'Cellsize',5);

Типы данных: double

Относительный допуск к 'CellSize', заданному как скалярный или двухэлементный вектор. Если вы задаете скаляр, значение применяется и к размерностям высоты и ширины. Если вы задаете вектор, допуски появляются в порядке [height width].

Пример: [A,R] = wmsread(layers(1),'RelTolCellsize',[4 5]);

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Нужный формат, чтобы использовать в рендеринге карты как изображение, заданное как один из следующих векторов символов. Если задано, формат должен совпадать с записью в массиве ячеек Layer.Details.ImageFormats. Если не заданный, значения по умолчанию формата к первому доступному формату в списке поддерживаемых форматов..

ЗначениеОписание
'image/jpeg'JPEG
'image/gif'GIF
'image/png'PNG
'image/tiff'TIFF
'image/geotiff'GeoTIFF
'image/geotiff8'GeoTIFF8
'image/tiff8'TIFF8
'image/png8'PNG8
'image/bil'Полоса, Чередованная с методической точностью (BIL) формат. Когда вы задаете формат 'image/bil', wmsread возвращает A как двумерный массив с типом класса int16 или int32.

Пример: [A,R] = wmsread(layers(1),'ImageFormat','image/png');

Типы данных: char

Разработайте, чтобы использовать при рендеринге изображения, заданного как вектор символов или массив ячеек из символьных векторов. StyleName должен быть действительным доступом в поле Layer.Details.Style.Name. Если вы запрашиваете несколько слоев, каждого с различным стилем, то StyleName должен быть массивом ячеек из символьных векторов.

Пример: [A,R] = wmsread(layer(1),'StyleName','style');

Типы данных: char | cell

Пиксельная прозрачность, заданная как логическое значение, true или false. Когда вы устанавливаете Transparent на true, пиксельная прозрачность включена, означая все пиксели, не представляющие функции, или значения данных установлены в прозрачное значение. Когда вы устанавливаете Transparent на false, пиксели неданных установлены в значение цвета фона.

Пример: [A,R] = wmsread(layers(1),'Transparent',true);

Типы данных: логический

Цвет использовал для фона (неданные) пиксели карты, заданной как трехэлементный вектор.

Пример: [A,R] = wmsread(layers(1),'BackgroundColor',[0,0,255]);

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Желаемая степень повышения требуемой карты, заданной как вектор символов. Слой должен содержать данные о повышении, которые обозначаются полем 'Name' структуры Layer.Details.Dimension. Поле 'Name' должно содержать значение 'elevation'. Поле 'Extent' структуры Layer.Details.Dimension определяет допустимую область значений значений для параметра.

Пример: [A,R] = wmsread(layer(1),'Elevation','test');

Типы данных: char

Желаемая степень времени требуемой карты, заданной как вектор символов или числовой номер даты. Слой должен содержать данные со степенью времени, которая обозначается полем 'Name' структуры Layer.Details.Dimension. Поле 'Name' должно содержать значение 'time'. Поле 'Extent' структуры Layer.Details.Dimension определяет допустимую область значений значений для параметра. Для получения дополнительной информации об установке этого параметра, смотрите страницу с описанием свойства WMSMapRequest.Time.

Пример: [A,R] = wmsread(layer(1),'Time','June 15, 2015');

Типы данных: double | char

Имя размерности, заданной как двухэлементный массив ячеек из символьных векторов, кроме 'time' или 'elevation' и его значения вектора символов. Слой должен содержать данные с демонстрационной степенью размерности, которая обозначается полем 'Name' структуры Layer.Details.Dimension. Поле 'Name' должно содержать значение первого элемента 'SampleDimension'. Поле 'Extent' структуры Layer.Details.Dimension определяет допустимую область значений значений для второго элемента 'SampleDimension'.

Пример: [A,R] = wmsread(layer(1),'SampleDimension',{'sample','test'});

Типы данных: cell

Номер секунд, чтобы протечь прежде, чем выпустить тайм-аут сервера, заданный как скалярное целое число. Если вы устанавливаете значение к 0, wmsread игнорирует механизм тайм-аута.

Пример: [A,R] = wmsread(layers(1),'TimeoutInSeconds',80);

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Выходные аргументы

свернуть все

Цветное или полутоновое изображение, возвращенное как действительная, неразреженная, 2D матрица.

Географический растровый объект ссылки, возвращенный как объект map.rasterref.GeographicCellsReference. Растровый ссылочный объект связывает изображение A с географической системой координат EPSG:4326.

WMS запрос GetMap URL, возвращенный как вектор символов.

Больше о

свернуть все

EPSG: 4 326 координатных ссылочных систем

Координата EPSG:4326 ссылочная система основана на WGS84 (1 984 Мировых Геодезических Системы) данная величина. Широта и долгота в градусах, и на долготу ссылаются в Гринвичский меридиан.

Советы

  • Установите Интернет-соединение, чтобы использовать wmsread. Периодически, сервер WMS недоступен. Получение карты может занять несколько минут. wmsread связывается с сервером с помощью объекта WebMapServer, представляющего сервер WMS. Объект действует как прокси к серверу WMS и находится физически на клиентской стороне. Объект получает карту из сервера. Объект автоматически времена после 60 секунд, если связь не установлена с сервером.

  • Чтобы задать прокси-сервер, чтобы соединиться с Интернетом, выберите File> Preferences> Web и введите свою информацию прокси. Используйте эту функцию, если у вас есть брандмауэр.

  • Поддержки wmsread, считывающие данные в версиях 1.0.0, 1.1.1 WMS, и 1.3.0. Для версии 1.3.0 только, состояний спецификации WMS, "EPSG:4326 отсылает к WGS 84 географическую широту, затем долгота. Таким образом, в этом CRS x - ось соответствует широте и y - ось к долготе". Большинство серверов обеспечивает данные этим способом; однако, некоторые серверы соответствуют версии 1.1.1, где x - ось соответствует долготе и y - ось к широте.

    wmsread пытается подтвердить, подтверждает ли сервер к спецификации. Это проверяет ограничительную рамку EPSG:4326, и если значения XLim превышают область значений широты, то оси подкачиваются, чтобы соответствовать версии 1.1.1 а не 1.3.0. Если wmsread не обнаруживает, что значения XLim превышают область значений широты, и вы замечаете, что пределы широты и долготы инвертируются, то необходимо подкачать их. Можно или изменить параметры bbox в mapRequestURL или изменить Latlim и значения параметров Lonlim, если допустимый.

Представлено до R2006a