geoplayer

Визуализация потоковых данных географической карты

Описание

A geoplayer объект является географическим проигрывателем, который отображает потоковые координаты ведущего маршрута на карте.

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

  • Чтобы отобразить положение транспортного средства во время движения по маршруту, используйте plotPosition функция. Вы можете построить график положения нескольких транспортных средств на разных маршрутах одновременно, задав уникальный идентификатор пути для каждого маршрута. Для получения дополнительной информации смотрите 'TrackID' аргумент пары "имя-значение" plotPosition.

  • Чтобы изменить базовую карту или basemap geoplayer объект, обновить Basemap свойство объекта. Для получения дополнительной информации см. Раздел «Пользовательские основные карты».

Создание

Описание

player = geoplayer(latCenter,lonCenter) создает географический проигрыватель с центром в координатах широты latCenter и координатные lonCenter долготы.

пример

player = geoplayer(latCenter,lonCenter,zoomLevel) создает географический плеер с увеличением карты, заданным zoomLevel.

пример

player = geoplayer(___,Name,Value) устанавливает свойства с помощью одной или нескольких пар "имя-значение", в дополнение к указанию входных параметров из предыдущих синтаксисов. Для примера, geoplayer(45,0,'HistoryDepth',5) создает географический плеер с центром в координате широта-долгота (45, 0) и устанавливает HistoryDepth свойство таким образом, чтобы игрок отображал пять предыдущих географических координат.

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

расширить все

Координата широты, при которой центрирован географический плеер, заданная как действительный скаляр в области значений (-90, 90).

Типы данных: single | double

Координата долготы, при которой центрирован географический плеер, заданная как действительный скаляр в области значений [-180, 180].

Типы данных: single | double

Увеличение географического проигрывателя, заданное в виде целого числа в области значений [0, 25]. Это увеличение происходит на логарифмической шкале с основой 2. Увеличение zoomLevel на единицу удваивает шкалу карты.

Свойства

расширить все

Количество предыдущих географических координат для отображения, заданное в виде неотрицательного целого числа или Inf. Значение 0 отображает только текущие географические координаты. Значение Inf отображает все географические координаты, ранее нанесенные с помощью plotPosition функция.

Задать это свойство можно только при создании объекта. После создания объекта это свойство доступно только для чтения.

Стиль отображаемых географических координат, заданный как одно из следующих значений:

  • 'point' - отображение координат как дискретных, несвязных точек.

  • 'line' - отображение координат как одной соединенной линии.

Вы можете задать это свойство при создании объекта. После создания объекта это свойство доступно только для чтения.

Карта, на которой можно построить данные, заданная как одно из имен основной карты в этой таблице, 'none', или пользовательская основная карта, заданная с помощью addCustomBasemap функция. Дополнительные сведения о добавлении пользовательских основных карт см. в разделе Пользовательские Основные карты. Для примеров добавления пользовательских основных карт смотрите Отображение данных на OpenStreetMap Basemap и Отображение Map Data на HERE Basemap.

'streets' basemap.

'streets' (по умолчанию)

Данные уличной карты, составленные из плитки географической карты с использованием карты World Street Map, предоставленной Esri®. Для получения дополнительной информации о карте смотрите World Street Map на сайте Esri ArcGIS.

Организатор - Эсри.

'streets-light' basemap.

'streets-light'

Карта, разработанная для обеспечения географического контекста с подсветкой пользовательских данных на световом фоне.

Организатор - Эсри.

'streets-dark' basemap.

'streets-dark'

Карта, разработанная для обеспечения географического контекста с подсветкой пользовательских данных на темном фоне.

Организатор - Эсри.

'satellite' basemap.

'satellite'

Полная глобальная основная карта, состоящая из спутниковых снимков с высоким разрешением.

Организатор - Эсри.

'topographic' basemap.

'topographic'

Карта общего назначения со стилем для отображения топографических функций.

Организатор - Эсри.

'landcover' basemap.

'landcover'

Карта, которая объединяет спутниковые данные о типе поверхности, затененный рельеф и океанический рельеф. Светлая, натуральная палитра подходит для тематических и эталонных карт.

Создан с использованием Natural Earth.

'colorterrain' basemap.

'colorterrain'

Заштрихованная карта подреза сопряжена с палитрой типа поверхности. Влажные низменности зелёные, а засушливые - коричневые.

Создан с использованием Natural Earth.

'grayterrain' basemap.

'grayterrain'

Карта местности в оттенках серого. Заштрихованный рельеф подчеркивает как высокие горы, так и микропочвенную местность, встречающуюся в низинах.

Создан с использованием Natural Earth.

'bluegreen' basemap.

'bluegreen'

Двухцветная карта суши и океана со светло-зелеными землями и светло-голубыми акваториями.

Создан с использованием Natural Earth.

'grayland' basemap.

'grayland'

Двухцветная карта суши-океана с серыми участками суши и белыми акваториями.

Создан с использованием Natural Earth.

'darkwater' basemap.

'darkwater'

Двухцветная карта суши-океана со светло-серыми участками суши и темно-серыми акваториями. Эта основная карта установлена с MATLAB®.

Создан с использованием Natural Earth.

Н/Д

'none'

Географические оси строят графики данных с сеткой широта-долгота, тактами и метками, но не включают карту.

По умолчанию для доступа к основным картам требуется подключение к Интернету. Исключение составляют 'darkwater' основная карта, который устанавливается с MATLAB.

Если у вас нет последовательного доступа к Интернету, можно загрузить основные карты, созданные с помощью Natural Earth, в локальную систему с помощью Add-On Explorer. Основные карты, размещенные в Esri, недоступны для загрузки. Для получения дополнительной информации о загрузке основные карты, смотрите Access Basemaps для географических осей и графиков.

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

Выравнивание контуров и меток областей является представлением функции, предоставляемой поставщиками данных, и не подразумевает одобрения MathWorks®.

Пример: player = geoplayer(latCenter,lonCenter,'Basemap','darkwater')

Пример: player.Basemap = 'darkwater'

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

Отображение recenter на основе заданного идентификатора дорожки в виде положительного целого числа. The geoplayer объект восстанавливает карту, когда новая позиция, заданная latCenter и lonCenter, перемещается за пределы текущей области видимой карты. Можно также использовать это свойство для повторного ввода карты на ранее нарисованной дорожке, находящейся вне видимой области. Определите идентификатор дорожки при помощи 'TrackID' аргумент пары "имя-значение" при вызове plotPosition функция объекта.

Родительские оси географического проигрывателя, заданные как Figure графический объект или Panel графический объект. Если вы не задаете Parent, затем geoplayer создает географический игрок в новом рисунке.

Вы можете задать это свойство при создании объекта. После создания объекта это свойство доступно только для чтения.

Оси, используемые географическим проигрывателем, задаются как GeographicAxes объект. Используйте эти оси, чтобы настроить карту, которую отображает географический игрок. Для получения примера см. раздел «Настройка географических осей». Дополнительные сведения о свойствах, которые можно настроить, см. в разделе Свойства GeographicAxes.

Функции объекта

plotPositionОтобразите текущее положение в geoplayer рисунок
plotRouteОтображение непрерывного маршрута в geoplayer рисунок
resetУдалите все существующие графики из geoplayer рисунок
showДелайте geoplayer рисунок виден
hideДелайте geoplayer рисунок невидим
isOpenВерните true, если geoplayer рисунок виден

Примеры

свернуть все

Загрузите последовательность координат широты и долготы.

data = load('geoSequence.mat');

Создайте географический плеер и настройте его для отображения всех точек в его истории.

zoomLevel = 17;
player = geoplayer(data.latitude(1),data.longitude(1),zoomLevel,'HistoryDepth',Inf);

Отображение последовательности координат.

  for i = 1:length(data.latitude)
      plotPosition(player,data.latitude(i),data.longitude(i));
      pause(0.01)
  end

Загрузите последовательность координат широты и долготы.

data = load('geoRoute.mat');

Создайте географический проигрыватель и установите уровень масштаба равным 12. По сравнению с уровнем масштабирования по умолчанию этот уровень масштабирования увеличивает карту в 8 раз.

player = geoplayer(data.latitude(1),data.longitude(1),12);

Отобразите полный маршрут.

plotRoute(player,data.latitude,data.longitude);

Отображение координат в последовательности. Маркер круга указывает текущее положение.

for i = 1:length(data.latitude)
    plotPosition(player,data.latitude(i),data.longitude(i));
    pause(0.05)
end

В этом примере показано, как отобразить маршрут движения и положения транспортного средства на основной карте OpenStreetMap ®.

Добавьте основной карты OpenStreetMap в список основных карт, доступных для использования со geoplayer объект. После добавления основной карты не нужно добавлять ее снова в будущих сеансах.

name = 'openstreetmap';
url = 'https://a.tile.openstreetmap.org/${z}/${x}/${y}.png';
copyright = char(uint8(169));
attribution = copyright + "OpenStreetMap contributors";
addCustomBasemap(name,url,'Attribution',attribution)

Загрузите последовательность координат широты и долготы.

data = load('geoRoute.mat');

Создайте географический плеер. Центрируйте географического игрока на первом месте маршрута и установите уровень масштаба равным 12.

zoomLevel = 12;
player = geoplayer(data.latitude(1),data.longitude(1),zoomLevel);

Отобразите полный маршрут.

plotRoute(player,data.latitude,data.longitude);

По умолчанию географический игрок использует основную карту World Street Map ('streets') предоставляется Esri ®. Обновите географический проигрыватель, чтобы использовать вместо этого добавленную основную карту OpenStreetMap.

player.Basemap = 'openstreetmap';

Отобразите маршрут еще раз.

plotRoute(player,data.latitude,data.longitude);

Отобразите положения транспортного средства в последовательности.

for i = 1:length(data.latitude)
   plotPosition(player,data.latitude(i),data.longitude(i))
end

Отображение маршрута движения на основной карте, предоставляемой HERE Technologies. Чтобы использовать этот пример, вы должны иметь действительную лицензию от HERE Technologies.

Укажите имя основной карты и URL-адрес карты.

name = 'herestreets';
url = ['https://1.base.maps.ls.hereapi.com/maptile/2.1/maptile/', ...
    'newest/normal.day/${z}/${x}/${y}/256/png?apikey=%s'];

Для карт из HERE Technologies требуется действительная лицензия. Создайте диалоговое окно. В диалоговом окне введите идентификатор ключа доступа, соответствующий вашей лицензии HERE.

prompt = {'HERE Access Key ID:'};
title = 'HERE Tokens';
dims = [1 40]; % Text edit field height and width
hereTokens = inputdlg(prompt,title,dims);

Если лицензия действительна, задайте учетные данные HERE и пользовательский атрибут, загрузите данные координат и отобразите координаты на основной карте HERE с помощью geoplayer объект. Если лицензия недействительна, отобразится сообщение об ошибке.

if ~isempty(hereTokens)
        
    % Add HERE basemap with custom attribution.
    url = sprintf(url,hereTokens{1});
    copyrightSymbol = char(169); % Alt code
    attribution = [copyrightSymbol,' ',datestr(now,'yyyy'),' HERE'];
    addCustomBasemap(name,url,'Attribution',attribution);

    % Load sample lat,lon coordinates.
    data = load('geoSequence.mat');

    % Create geoplayer with HERE basemap.
    player = geoplayer(data.latitude(1),data.longitude(1), ...
        'Basemap','herestreets','HistoryDepth',Inf);
 
    % Display the coordinates in a sequence.
    for i = 1:length(data.latitude)
        plotPosition(player,data.latitude(i),data.longitude(i));
    end

else
    error('You must enter valid credentials to access maps from HERE Technologies');
end

Настройте географические оси geoplayer путем добавления пользовательской линии между конечными точками трассы.

Загрузите маршрут движения и положения транспортного средства вдоль этого маршрута.

data = load('geoRoute.mat');

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

zoomLevel = 10;
player = geoplayer(data.latitude(1),data.longitude(1),zoomLevel);

Отобразите полный маршрут.

plotRoute(player,data.latitude,data.longitude);

Отображение положения транспортного средства вдоль маршрута.

for i = 1:length(data.latitude)
    plotPosition(player,data.latitude(i),data.longitude(i))
end

Настройте географические оси путем добавления линии между двумя конечными точками трассы.

geoplot(player.Axes,[data.latitude(1) data.latitude(end)], ...
    [data.longitude(1) data.longitude(end)],'g-*')

Стройте графики нескольких маршрутов одновременно в географическом проигрывателе. Сначала присвойте каждому маршруту уникальный идентификатор. Затем при построении графиков точек на трассах используйте plotPosition object function, задайте идентификатор маршрута используя 'TrackID' аргумент пары "имя-значение". В этом примере маршруты маркируются транспортным средством 1 и транспортным средством 2. На этом экране показана точка пересечения двух маршрутов с путями.

Загрузка данных для маршрута.

data = load('geoRoute.mat');

Извлеките данные для первого транспортного средства.

lat1 = data.latitude;
lon1 = data.longitude;

Создайте синтетический маршрут для второго транспортного средства, который будет управлять тем же маршрутом в противоположном направлении.

lat2 = flipud(lat1);
lon2 = flipud(lon1);

Создайте geoplayer объект. Инициализируйте игрока, чтобы отобразить последние 10 позиций как линию, завершающую текущее положение.

zoomLevel = 12;
player = geoplayer(lat1(1),lon1(1),zoomLevel,...
    'HistoryDepth',10,'HistoryStyle','line');

Постройте график положения обоих транспортных средств при их перемещении по маршруту. Укажите идентификатор для каждой дорожки при помощи 'TrackID' аргумент пары "имя-значение". По умолчанию в geoplayer объект центрирует отображение транспортного средства на первой дорожке. Вы можете центрировать отображение на других треках, используя CenterOnID свойство geoplayer объект.

loopCounter = length(lat1);
for i = 1:loopCounter
     plotPosition(player,lat1(i),lon1(i),'TrackID',1,'Label','Vehicle 1');
     plotPosition(player,lat2(i),lon2(i),'TrackID',2,'Label','Vehicle 2');
end

Ограничения

  • Плитки географической карты доступны не для всех местоположений.

Подробнее о

расширить все

Совет

  • Когда geoplayer объект строит график положения, которое находится вне текущего представления карты, объект автоматически прокручивает карту.

Введенный в R2018a