Чтобы считать карту WMS в системе координат EPSG:4326, используйте wmsread
функция. EPSG:4326 основан на 1 984 Мировых Геодезических Системах (WGS84) данная величина. Все серверы в Базе данных WMS, и по-видимому все серверы WMS в целом, используют систему координат EPSG:4326. Эта система является требованием спецификации OGC® WMS.
Чтобы считать карту WMS в различной системе координат, создайте запрос URL с помощью WebMapServer
и WMSMapRequest
объекты и затем читают карту с помощью getMap
метод. Для получения дополнительной информации о системах координат, смотрите Пространственную Ссылку.
В этом примере показано, как считать карту WMS с данными в сети Меркаторские координаты, также известные, когда WGS 84/Pseudo-Mercator координирует. Сеть Меркаторская система координат обычно используется веб-приложениями.
Импортируйте изображение GeoTIFF Бостона как массив и MapCellsReference
объект. Найдите спроектированную систему координат для изображения.
[A,R] = readgeoraster('boston.tif');
p_geotiff = R.ProjectedCRS;
Не спроектируйте x-и пределы y-мира и затем повторно спроектируйте их, чтобы использовать сеть Меркаторская система координат (EPSG:3857).
[latlim,lonlim] = projinv(p_geotiff,R.XWorldLimits,R.YWorldLimits); p_webmercator = projcrs(3857); [xlimits,ylimits] = projfwd(p_webmercator,latlim,lonlim);
Чтобы получить формирование изображений в этой системе координат, необходимо использовать WMSMapRequest
и WebMapServer
объекты, потому что wmsread
функция только считывает данные в системе координат WGS84 (EPSG:4326).
Национальная Карта USGS обеспечивает ортоформирование изображений и карты топографии для различных областей Соединенных Штатов. USGS NAIP Плюс сервер обеспечивает данные и в координатах WGS84 и в сети Меркаторские координаты.
Ищите Базу данных WMS USGS NAIP Плюс сервер и выберите слой Digital Ortho-Quadrangle.
doqLayer = wmsfind('usgsnaipplus','SearchField','serverurl'); doqLayer = wmsupdate(refine(doqLayer,'image')); doqLayer = refine(doqLayer,'USGSNaip','SearchField','abstract');
Создайте WebMapServer
и WMSMapRequest
объекты.
server = WebMapServer(doqLayer.ServerURL); request = WMSMapRequest(doqLayer,server);
Измените запрос карты путем установки свойств WMSMapRequest
объект. В данном примере задайте высоту изображения и ширину для объема выборки 5 метров. Установите пределы карты, чтобы покрыть ту же область как файл GeoTIFF.
metersPerSample = 5;
h = round(diff(ylimits)/metersPerSample);
w = round(diff(xlimits)/metersPerSample);
ylimits = [ylimits(1), ylimits(1) + h*metersPerSample];
xlimits = [xlimits(1), xlimits(1) + w*metersPerSample];
request.CoordRefSysCode = 'EPSG:3857';
request.ImageHeight = h;
request.ImageWidth = w;
request.XLim = xlimits;
request.YLim = ylimits;
Считайте карту ортоформирования изображений в сети Меркаторские координаты.
A_webmercator = getMap(server,request.RequestURL); R_webmercator = request.RasterReference;
Отобразите ортоформирование изображений на карте.
figure mapshow(A_webmercator,R_webmercator) axis tight title({'USGS Digital Ortho-Quadrangle - Boston', 'Web Mercator'})
Считайте Бостонские названия места из файла форм. Непроект и перепроект названия места так, чтобы они были в сети Меркаторские координаты. Отобразите названия места на карте.
S = shaperead('boston_placenames.shp'); x_names = [S.X] * unitsratio('sf','meter'); y_names = [S.Y] * unitsratio('sf','meter'); names = {S.NAME}; [lat_placenames,lon_placenames] = projinv(p_geotiff, ... x_names,y_names); [x_webmercator,y_webmercator] = projfwd(p_webmercator, ... lat_placenames,lon_placenames); text(x_webmercator,y_webmercator,names, ... 'BackgroundColor',[0.9 0.9 0],'FontSize',6,'Clipping','on')
Сравните карту, которую вы читаете от сервера до изображения GeoTIFF.
figure mapshow('boston.tif') axis tight title({'boston.tif', p_geotiff.Name}) text(x_names,y_names,names, ... 'BackgroundColor',[0.9 0.9 0],'FontSize',6,'Clipping','on')
Можно также сравнить карты при помощи географических осей и спутниковой основной карты. Когда вы строите на географических осях, на координаты ссылаются к системе координат WGS84.
figure geolimits(latlim,lonlim) geobasemap('satellite') text(lat_placenames,lon_placenames,names, ... 'BackgroundColor',[0.9 0.9 0],'FontSize',6) title({'Satellite Basemap','WGS84'})