wmsread

Извлечение карты WMS с сервера

Описание

пример

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

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

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

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

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

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

Примеры

свернуть все

Поиск в базе данных WMS слоев, содержащих строку «NASA». Уточните поиск, чтобы найти слои, содержащие Blue Marble: Next Generation, указав строку поиска как «bluemarbleng».

nasa = wmsfind('NASA','SearchField','serverurl');
layer = nasa.refine('bluemarbleng', ...
    'SearchFields','layername', ...
    'MatchType', 'exact');

Прочтите первый слой и отобразите карту.

[A,R] = wmsread(layer(1));

axesm globe
axis off
geoshow(A,R)
title('Blue Marble')

Прочтите и отобразите ортоизображение северной части моста Золотые ворота в Сан-Франциско, Калифорния, используя сервер USGS National Map Seamless.

Сначала задайте пределы широты и долготы моста Золотые ворота.

latlim = [37.78 37.84]; 
lonlim = [-122.53 -122.40];

Затем найдите слой ортоимагерии высокого разрешения 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);


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'})

Считывайте и отображайте глобальный ежемесячный композит температуры поверхности моря на основе данных с датчика AMSR-E на борту спутника Aqua.

Сначала найдите в базе данных WMS слои, содержащие слово «coastwatch». Уточните поиск, чтобы найти слои с датчика AMSR-E.

coastwatch = wmsfind('coastwatch','SearchField','serverurl');
layers = refine(coastwatch,'erdAAsstamday','Searchfield','serverurl');

Ознакомьтесь и отобразите композит температуры поверхности моря за 16 апреля 2010 года. Включать береговую линию, ландмаск и национальные слои.

time = '2010-04-16T00:00:00Z';
[A,R] = wmsread(layers(end:-1:1),'Time',time);

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 - имя аргумента и 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]. The 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'Полоса Interleaved by Line (BIL). Когда вы задаете 'image/bil' формат, wmsread возвращает A как двумерный массив с типом классов int16 или int32.

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

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

Стиль, используемый при визуализации изображения, заданный как вектор символов или массив ячеек из векторов символов. The 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);

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

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

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

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

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

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

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

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

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

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

Имя размерности, заданное как двухэлементный массив ячеек из векторов символов, кроме 'time' или 'elevation' и его значение вектора символов. Слой должен содержать данные с размерностью выборки, которая обозначена 'Name' поле Layer.Details.Dimension структура. The 'Name' поле должно содержать значение первого элемента 'SampleDimension'. The '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

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

свернуть все

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

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

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

Подробнее о

свернуть все

EPSG: 4326 Система координат координат

Система координат EPSG:4326 основана на WGS84 (1984 World Geodetic System) данной величине. Широта и долгота в степенях, а долгота отсылает к меридиану Гринвича.

Совет

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

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

  • wmsread поддерживает чтение данных в версиях WMS 1.0.0, 1.1.1 и 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
Для просмотра документации необходимо авторизоваться на сайте