Чтение данных из серверов WMS требует доступа в Интернет. Однако, если вы считываете данные из сервера, можно сохранить данные как файл GeoTIFF или MAT. Затем можно загрузить данные, не читая его снова из сервера. Сохранение данных WMS к файлам полезно, когда у вас есть неустойчивый доступ в Интернет, или, когда это необходимо, осуществлять обмен данными с кем-то без доступа в Интернет.
В этом примере показано, как создать карту WMS для области вокруг Бостона. Поведение примера зависит от того, есть ли у вас доступ в Интернет, но получившаяся карта является тем же самым.
В примере задайте, есть ли у вас доступ в Интернет при помощи логического скалярного useInternet
.
Если useInternet
true
, считайте данные из сервера WMS и обновите сохраненные файлы.
Если useInternet
false
, считайте данные из сохраненных файлов.
useInternet = false;
Если вы используете этот пример в качестве модели, чтобы создать ваши собственные карты WMS, необходимо создать сохраненные файлы в первый раз, когда вы запускаете пример установкой useInternet
к true
.
Ищите Базу данных WMS слои основной карты из Национальной Карты [1] USGS. Совершенствуйте поиск, чтобы найти слой, содержащий только ортоформирование изображений. Этот шаг не требует доступа в Интернет, потому что База данных WMS установлена с Mapping Toolbox™.
bmapLayers = wmsfind("basemap.nationalmap","SearchFields","ServerURL"); usgsImageryLayer = refine(bmapLayers,"USGSImageryOnly","SearchFields","ServerURL");
Синхронизируйте слой с сервером. wmsupdate
функция добавляет краткий обзор, информационные признаки и информацию о стилях и информацию о системе координат к слою.
Если useInternet
true
, синхронизируйте слой с сервером. Сохраните слой в файл MAT.
Если useInternet
false
, загрузите файл MAT.
if useInternet usgsImageryLayer = wmsupdate(usgsImageryLayer); save("usgsImageryLayer.mat","usgsImageryLayer") else load usgsImageryLayer.mat end
Задайте географические пределы и размер изображения. В данном примере задайте пределы для области вокруг Бостона и квадратного изображения с длиной стороны 750 пикселей.
latlim = [42.3453 42.3711]; lonlim = [-71.099 -71.0454]; s = 750;
Считайте изображение из сервера.
Если useInternet
true
, затем считайте карту как массив и GeographicCellsReference
объект. Сохраните массив и ссылочный объект к файлу GeoTIFF.
Если useInternet
false
, затем считайте файл GeoTIFF.
if useInternet [A,R] = wmsread(usgsImageryLayer,"Latlim",latlim,"Lonlim",lonlim, ... "ImageHeight",s,"ImageWidth",s); geotiffwrite("usgsImageryLayer.tif",A,R) else [A,R] = readgeoraster("usgsImageryLayer.tif"); end
Создайте карту с соответствующими пределами широты и долготы для данных. Отобразите карту.
figure usamap(A,R) geoshow(A,R)
[1] Доступные данные от американской Геологической службы, Национальной Геопространственной Программы.