Одна из проблем работы с WMS - то, что иногда вы можете испытать затруднения при соединении с сервером.
Сервер может выпустить ошибку из-за тайм-аута, такую как Connection timed out: connect
или Read timed out
.
Работа вокруг: Попытайтесь установить 'TimeoutInSeconds'
параметр wmsread
, wmsinfo
, или wmsupdate
функционируйте к большему значению. Значения по умолчанию установки тайм-аута к 60 секундам.
Сервер может быть временно недоступным или занятым, или серверное приложение WMS может испытать проблему. В некоторых случаях сервер выпускает код ответа HTTP 500, такой как:
Server returned HTTP response code: 500 for URL: http://xyz.com ...
Обходные решения:
Попробуйте еще раз позже.
Попытайтесь запросить различный формат изображения путем установки 'ImageFormat'
параметр.
Попытайтесь соединиться многократно при помощи a while
цикл и try, catch
блок. Например, этот код предпринимает пять попыток получить информацию о Национальной Карте 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
У вас есть неустойчивый доступ в Интернет, или вы хотите совместно использовать данные WMS с кем-то без доступа в Интернет.
Работа вокруг: Чтение данных из серверов WMS требует доступа в Интернет. Однако, если вы считываете данные из сервера, можно сохранить данные как файл GeoTIFF или MAT. Если вы сохраняете данные, можно загрузить их, не читая их снова из сервера. Для получения дополнительной информации смотрите, Создают Карты WMS, когда доступ в Интернет Неустойчив.
Некоторые серверы не следуют за OGC® инструкции по спецификации относительно пределов широты и долготы.
Спецификация OGC требует, и функции WMS ожидают, что пределы возрастают. Однако некоторые сайты имеют убывающие пределы. В результате вы можете видеть ошибку, такую как:
"??? Error using ==> WMSMapRequest>validateLimit at 1313 Expected the elements of 'Latlim' to be in ascending order."
Кроме того, некоторые серверы имеют пределы, которые превышают границы [-180 180] для долготы и [-90,90] для широты.
Работа вокруг: установите Latlim
и Lonlim
свойства WMSLayer
объект:
layers = wmsfind('bluemarbleng');
layer = wmsupdate(layers(1));
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
функционируйте обновляет пределы с сервера, и вы еще раз не поддержали пределы.
Некоторые слои не заданы в EPSG:4326 или системе координат CRS:84. Чтение этих слоев с wmsread
функция не поддерживается.
Работа вокруг: Создайте запрос URL при помощи WMSMapRequest
возразите и считайте слой при помощи getMap
объектная функция. Для получения дополнительной информации смотрите Чтение Карты WMS Используя Различные Системы координат.
Иногда можно связать с сервером WMS, но вы не получаете карту, которую вы ожидаете.
Сервер может возвратить контурную карту.
Работа вокруг: можно изменить шкалу карты; или увеличьте высоту изображения и ширину или измените географические границы. Другая возможность состоит в том, что ваша требуемая географическая степень находится вне степени слоя, в этом случае необходимо изменить степень запроса. Третья возможность состоит в том, что вам выбрали неправильный формат изображения; в этом случае измените 'ImageFormat'
параметр.
Вы можете видеть это сообщение об ошибке:
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);
Сервер выпускает очень длинное сообщение об ошибке, начинаясь с этой фразы:
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. В этом случае вы получаете сообщение об ошибке, такое как:
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.