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

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

Примеры

свернуть все

Ищите базу данных WMS слои, содержащие строку "НАСА". Совершенствуйте поиск, чтобы найти слои, содержащие Синий Мрамор: Следующее поколение путем определения строки поиска как "bluemarbleng".

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

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

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

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

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

Во-первых, задайте пределы широты и долготы моста Золотые Ворота.

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 на борту спутника Воды.

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

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

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

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

wmsread функция позволяет вам установить дополнительные параметры, такие как высота изображения, ширина изображения и цвет фона. В данном примере настройте карту путем определения разрешения изображения и цвета фона.

Ищите Базу данных WMS слои, которые содержат foundation.gtopo30 на имя. GTOPO30, цифровая модель вертикального изменения, разработанная Геологической службой США (USGS), имеет интервал сетки по горизонтали 30 секунд дуги.

gtopo30layer = wmsfind('foundation.gtopo30');

Задайте цвет фона путем определения красных, зеленых, и синих уровней. Задайте размер ячейки как 0,5 градуса.

oceanColor = [0 170 255];
cellSize = 0.5;

Считайте карту. Задайте цвет фона и разрешение с помощью аргументов name-value.

[A,R] = wmsread(gtopo30layer,'BackgroundColor',oceanColor, ...
    'CellSize',cellSize);

Отобразите карту и добавьте заголовок.

worldmap world
geoshow(A,R)
title('GTOPO30 Elevation Model')

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

свернуть все

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

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

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

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

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

Аргументы name-value

Задайте дополнительные разделенные запятой пары 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 truelatlim может не быть изменен.

Пример: [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 cellArray. Если не заданный, значения по умолчанию формата к первому доступному формату в списке поддерживаемых форматов..

ЗначениеОписание
'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