exponenta event banner

wmsread

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

Описание

пример

[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 содержит WMS serverURL с дополнительными параметрами WMS. Эти параметры WMS включают в себя BBOX, GetMap и EPSG:4326 или CRS:84 ключевое слово. Получить mapRequestURL из выходных данных wmsread, RequestURL свойство WMSMapRequest объект или поиск в Интернете.

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

Примеры

свернуть все

Поиск в базе данных 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 слоев, содержащих слово «береговые часы». Уточните поиск, чтобы найти слои от датчика 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]. 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'ДЖИФ
'image/png'PNG
'image/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);

Типы данных: 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 структура. '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

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

свернуть все

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

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

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

Подробнее

свернуть все

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

Система координат EPSG:4326 основана на опорном элементе WGS84 (Всемирная геодезическая система 1984). Широта и долгота в градусах, а долгота привязана к Гринвичскому меридиану.

Совет

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

  • Чтобы указать прокси-сервер для подключения к Интернету, выберите «Файл» > «Установки» > «Веб» и введите сведения о прокси-сервере. Эта функция используется при наличии брандмауэра.

  • 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