exponenta event banner

геоигрок

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

Описание

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

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

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

  • Изменение базовой карты или базовой карты 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 и Отображение данных карты на HERE Basemap.

'streets' basemap.

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

Данные карты улиц, составленные из плиток географических карт с использованием карты улиц мира, предоставленной Esri ®. Для получения дополнительной информации о карте см. Карту улиц мира на сайте 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' basemap, которая устанавливается с MATLAB.

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

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

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

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

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

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

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

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

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

Оси, используемые географическим игроком, указанные как 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