Диагностируйте серверы WMS

Ошибки связи

Одна из проблем работы с WMS - то, что иногда вы можете испытать затруднения при соединении с сервером.

Ошибка из-за тайм-аута

Сервер может выпустить ошибку из-за тайм-аута, такую как:

Connection timed out: connect

Или

Read timed out

Работа вокруг: Попытайтесь установить параметр 'TimeoutInSeconds' на большее значение. Значения по умолчанию установки тайм-аута к 60 секундам. (Функции wmsread, wmsinfo и wmsupdate у всех есть параметры 'TimeoutInSeconds'.)

Server No Longer Provides Full WMS Services

Сервер Лаборатории реактивного движения (JPL) НАСА может выпустить следующее сообщение об ошибке:

This server no longer provides full WMS services!

Сервер DataFed, http://webapps.datafed.net/OnEarth_JPL.ogc?, каскадные слои с сервера JPL и могут выпустить следующее сообщение об ошибке:

Error in Execution. Cannot fetch url.

Работа вокруг: Используйте URL TiledWMS или найдите различный сервер.

Глобальный Сервисный сервер Формирования изображений JPL, http://onearth.jpl.nasa.gov/wms.cgi?, больше не предоставляет полные услуги WMS ни для одного из наборов данных. Любой сервер (например, http://webapps.datafed.net/OnEarth_JPL.ogc?), который располагает каскадом данные из этого сервера, также затронут изменением.

К небольшому подмножеству данных можно получить доступ с помощью нестандартного запроса TiledWMS. Доступные мозаичные шаблоны могут быть найдены в:

http://pat.jpl.nasa.gov/wms.cgi?request=GetTileService

Параметры WMS должны быть в точном порядке. Если вы хотите получить мозаику, можно предварительно ожидать префикс, 'http://onearth.jpl.nasa.gov/wms.cgi?/SERVICE=WMS&' перед запросом, найденным в разделе CDATA запроса GetTileService.

Например:

url = ['http://onearth.jpl.nasa.gov/wms.cgi?/SERVICE=WMS&Version=1.1.1&' ... 
'request=GetMap&layers=global_mosaic&srs=EPSG:4326&'  ... 
'format=image/jpeg&styles=visual&width=512&height=512&' ... 
'bbox=-180,58,-148,90']; 
[A, R] = wmsread(url);

Слои повышения от onearth.jpl.nasa.gov могут быть заменены слоями с сервера НАСА WorldWind (https://data.worldwind.arc.nasa.gov/elev?). Слой Blue Marble может быть заменен слоем Blue Marble от Центра космических полетов имени Годдарда НАСА Сервер WMS SVS Изображений (http://svs.gsfc.nasa.gov/cgi-bin/wms?) или Синий Мрамор: слой Next Generation от Наблюдений Земли НАСА (NEO) Сервер WMS (http://neowms.sci.gsfc.nasa.gov/wms/wms?).

Слой The Daily Planet может быть заменен слоем 'True Color (1 day - Terra/MODIS Rapid Response)' от Наблюдений Земли НАСА (NEO) сервер WMS.

Код 500 ответа HTTP

В некоторых случаях сервер становится временно недоступным, или серверное приложение WMS испытывает некоторый тип проблемы. Сервер выпускает код ответа HTTP 500, такой как:

Server returned HTTP response code: 500 for URL: http://xyz.com ...

Работа вокруг: Попробуйте еще раз позже. Также попытайтесь установить различный параметр 'ImageFormat'.

Удаленный WMSServlet

Если сервер columbo.nrlssc.navy.mil выдает ошибку, такие как:

WebMapServer cannot communicate to the host columbo.nrlssc.navy.mil.
The host is unknown.

Это сообщение указывает, что сервер, к которому оно пытается получить доступ, более не доступен.

Работа вокруг: Выберите различный слой.

Неправильная шкала

Сервер columbo.nrlssc.navy.mil часто выдает это сообщение об ошибке:

This layer is not visible for this scale. The maximum valid scale
is approximately X. Zoom in and try again if desired. The scale of 
the image requested is Y.

X и Y представляют определенные значения, которые отличаются от слоя до слоя.

Работа вокруг: Некоторые источники WMS этот сервер доступы имеют слои карты, чувствительные к требуемой шкале. Увеличение (выбирают меньшую видимую область), или уменьшение (выбирают большую видимую область). Также можно выбрать больший размер выходного изображения, чтобы просмотреть слой в соответствующей шкале.

Проблемы с географическими пределами

Некоторые серверы не следуют инструкциям спецификации OGC® относительно пределов широты и долготы.

Latlim и Lonlim в порядке убывания

Спецификация OGC требует, и функции WMS ожидают, что пределы возрастают. Некоторые сайты, однако, имеют убывающие пределы. В результате можно получить это сообщение об ошибке:

"??? Error using ==> WMSMapRequest>validateLimit at 1313
Expected the elements of 'Latlim' to be in ascending order." 

Работа вокруг: Чтобы решить эту проблему, установите свойства Latlim и Lonlim WMSLayer:

layer = wmsfind('SampleServer.com', 'SearchField', 'serverurl');
layer = wmsupdate(layer);
latlim = [min(layer.Latlim), max(layer.Latlim)];
lonlim = [min(layer.Lonlim), max(layer.Lonlim)];
layer.Latlim = [max([ -90, latlim(1)]), min([ 90, latlim(2)])];
layer.Lonlim = [max([-180, lonlim(1)]), min([180, lonlim(2)])];
[A,R] = wmsread(layer);

Обновите свой слой прежде, чем установить пределы. В противном случае wmsread обновляет пределы с сервера, и у вас еще раз есть убывающие пределы.

Пределы превышают границы

Некоторые серверы имеют пределы, которые превышают границы [-180, 180] для долготы и [-90, 90] для широты.

Работа вокруг: Чтобы решить эту проблему, выполните ту же процедуру, обрисованную в общих чертах в Latlim и Lonlim в порядке убывания.

Проблемы с изменением сервера LayerName

В большинстве случаев обновленный слой, возвращенный wmsupdate, должен иметь свойства ServerURL и LayerName, которые совпадают с теми из слоя, который вы вводите, как введено. В некоторых случаях, когда слой обновляется с сервера columbo.nrlssc.navy.mil, сервер возвращает слой с различным LayerName, но ServerURL и LayerTitle являются тем же самым. Слои с сервера columbo.nrlssc.navy.mil имеют имена, такие как 'X:Y', где X и Y являются числами ASCII. Со времени вашего последнего обновления слой был добавлен к или удален из сервера, вызывающего сдвиг в последовательности слоев. Поскольку свойство LayerName создается с числами ASCII на основе положения слоя в этой последовательности, свойство LayerName изменилось. Для слоев с сервера columbo.nrlssci.navy.mil wmsupdate совпадает со свойством LayerTitle, а не свойством LayerName.

Координата Non-EPSG:4326 ссылочные системы

Некоторые слои не заданы в EPSG:4326 или координате CRS:84 ссылочная система. Вы не можете считать эти слои с функцией wmsread.

Работа вокруг: Используйте объект WMSMapRequest создать запрос URL и метод WebMapServer.getMap, чтобы считать слой. Смотрите Координату Понимания Ссылочные Системные коды и Получение Вашей Карты с WebMapServer.getMap для получения дополнительной информации.

Карта, не возвращенная

Иногда можно соединиться с сервером WMS, но вы не получаете карту, которую вы ожидаете.

Контурная карта возвращена

Сервер может возвратить контурную карту.

Работа вокруг: можно изменить шкалу карты; или увеличьте высоту изображения и ширину или измените географические границы. Другая возможность состоит в том, что ваша требуемая географическая степень находится вне степени слоя, в этом случае необходимо изменить степень запроса. Третья возможность состоит в том, что вам выбрали неправильный формат изображения; в этом случае измените параметр 'ImageFormat'.

Файл HTML возвращен

Можно получить это сообщение об ошибке:

The server returned an HTML file instead of an image file.

Работа вокруг: Следуйте за направлениями в сообщении об ошибке. Следующий пример, который использует демонстрационный URL, иллюстрирует тип сообщения об ошибке, которое вы получаете.

% Example command.
[A,R] = wmsread(['https://www.mathworks.com?',...
'&BBOX=-180,-90,180,90&CRS=EPSG:4326&VERSION=1.1.1']);

Демонстрационное сообщение об ошибке:

Error using WebMapServer>issueReadGetMapError (line 974)
The server returned an HTML file instead of an image file. You may view the
complete error message by issuing the command,
 web('https://www.mathworks.com?&BBOX=-180,-90,180,90&CRS=EPSG:4326&VERSION=1.1.1')
  or
 urlread('https://www.mathworks.com?&BBOX=-180,-90,180,90&CRS=EPSG:4326&VERSION=1.1.1').
 
Error in WebMapServer>readImageFormat (line 874)
        issueReadGetMapError(filename, requestURL);

Error in WebMapServer>readGetMapFile (line 852)
    A = readImageFormat(filename, requestURL);

Error in WebMapServer/getMap (line 299)
            A = readGetMapFile(filename, h.RequestURL);

Error in wmsread (line 376)
A = server.getMap(mapRequestURL);

XML-файл возвращен

Сервер выпускает очень длинное сообщение об ошибке, начинаясь со следующей фразы:

An error occurred while attempting to get the map from the server. 
The error returned is <?xml version="1.0" encoding="utf-8"?> ...

Работа вокруг: Эта проблема происходит, потому что сервер порывает с требованиями стандарта OGC и возвращает документ возможностей XML, а не требуемую карту. Выберите различный слой или сервер.

Неподдерживаемая версия WMS

В редких случаях сервер использует различную и неподдерживаемую версию WMS. В этом случае вы получаете сообщение об ошибке, такое как:

The WMS version, '1.2.0', listed in layer.Details.Version is not 
supported by the server. The supported versions are: '1.0.0' '1.1.0' 
'1.1.1' '1.3.0' .

Работа вокруг: Выберите различный сервер.

Другие неисправимые ошибки сервера

Сервер выдает ошибку, указывая, что никакое исправление или обходное решение не существуют. Эти случаи приводят к следующим типам сообщений об ошибке:

Server redirected too many  times (20)

An error occurred while attempting to parse the XML capabilities 
document from the server.

Unexpected end of file from server

An error occurred while attempting to get the map from the server. 
The server returned a map containing no data.

Смотрите также

| |

Похожие темы