exponenta event banner

hereHDLMReader

HERE HD Live устройство чтения карт

Описание

Использовать hereHDLMReader объект для считывания данных карты высокой четкости для выбранных фрагментов карты из веб-службы HERE HD Live Map [1] (HERE HDLM), предоставляемой HERE Technologies. HERE HDLM данные предоставляют очень подробную и точную информацию об окружающей среде транспортного средства, такой как топология дороги и полосы движения, и подходит для разработки автоматизированных приложений вождения .

Можно выбрать определенные плитки карты, из которых будут считываться данные, или выбрать плитки карты на основе координат маршрута движения. Чтобы прочитать данные карты для плиток, используйте read и укажите устройство чтения в качестве входного аргумента. Дополнительные сведения см. в разделе Чтение и визуализация данных карты HD Live.

Примечание

Использование hereHDLMReader Для объекта требуются действительные учетные данные HERE HDLM. Если учетные данные ранее не были настроены, появится диалоговое окно с запросом на их ввод. Введите идентификатор ключа доступа и секрет ключа доступа, полученные из HERE Technologies, и нажмите кнопку ОК.

Создание

Описание

пример

reader = hereHDLMReader(lat,lon) создает устройство чтения HERE HDLM, которое может считывать данные карты для элементов карты HERE, которые соответствуют набору координат широты и долготы. Плитки карты имеют уровень зумирования 14.

пример

reader = hereHDLMReader(tileID) создает устройство чтения HERE HDLM, которое может считывать данные карты для плиток карты с указанными идентификаторами плиток HERE. Эти идентификаторы плиток хранятся в TileIDs свойство устройства чтения HERE HDLM.

пример

reader = hereHDLMReader(___,Name,Value) устанавливает Configuration, WriteLocation, и CoordinateFormat с использованием одной или нескольких пар имя-значение. Например, hereHDLMReader(tileID,'Configuration',config) создает устройство чтения, которое сконфигурировано для чтения данных плитки карты из конкретного каталога или версии каталога HERE HDLM, где config является hereHDLMConfiguration объект.

Входные аргументы

развернуть все

Координаты широты, заданные как вектор вещественных значений в диапазоне [-90, 90].

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

lat и lon должен быть одинакового размера.

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

Координаты долготы, заданные как вектор вещественных значений в диапазоне [-180, 180].

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

lat и lon должен быть одинакового размера.

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

ЗДЕСЬ идентификаторы плиток, из которых следует считывать данные, указанные как вектор беззнаковых 32-разрядных целых чисел. Эти идентификаторы плиток хранятся в TileIDs имущества hereHDLMReader объект. Все указанные плитки карты должны поступать из одного и того же производственного каталога HERE HDLM.

При настройке hereHDLMReader для считывания данных из определенного каталога с помощью hereHDLMConfiguration , то все идентификаторы плиток должны быть найдены в этом каталоге. В противном случае объект reader возвращает ошибку.

Пример: uint32([386497368 386497369])

Типы данных: uint32

Свойства

развернуть все

Это свойство доступно только для чтения.

ЗДЕСЬ идентификаторы плиток, из которых следует считывать данные, указанные как вектор беззнаковых 32-разрядных целых чисел. Эти плитки соответствуют либо указанному lat и lon координаты или указанные tileID плитки.

Пример: uint32([386497368 386497369])

Типы данных: uint32

Это свойство доступно только для чтения.

Отображение слоев данных, доступных для выбранных идентификаторов плиток HERE, указанных как строковый массив имен слоев. Доступные слои карты зависят от географического региона.

Чтобы считать данные из этих слоев, укажите эти имена слоев в качестве входных данных для read функция.

Это свойство доступно только для чтения.

Конфигурация каталога, указанная как hereHDLMConfiguration объект. Эта конфигурация содержит конкретный каталог HERE HDLM и версию каталога, hereHDLMReader объект считывает данные из.

Если при создании конфигурация не указана, объект reader вычисляет конфигурацию по умолчанию путем поиска в последней версии каждого производственного каталога. Если все выбранные идентификаторы плиток карты найдены в каталоге, то hereHDLMReader объект настроен на чтение данных из последней версии этого каталога.

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

Это свойство доступно только для чтения.

Имя папки, в которую загружаются данные HERE HDLM, указанное как строковый скалярный или символьный вектор. Указанная папка должна существовать и иметь разрешения на запись.

По умолчанию данные веб-службы HERE HDLM загружаются во временное местоположение файла. Это временное расположение файла удаляется в конце сеанса MATLAB ®.

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

Пример: "C:\Users\myName\HERE"

Тип формата кодирования координат для применения к значениям географических координат, указанным как 'geographic' или 'raw'.

ФорматОписаниеПример
'geographic'Значения координат возвращаются как пары (широта, долгота) с десятичными градусами.[42.3743 -71.0266]
'raw'Значения координат возвращаются в формате кодирования координат по умолчанию службы HERE HDLM.int64(5978842261285240832)

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

readЧитайте ЗДЕСЬ Данные слоя HD Live Map
plotПечать данных слоя HD Live Map Here

Примеры

свернуть все

Используйте услугу HERE HD Live Map (HERE HDLM) для считывания данных топологии полосы движения маршрута движения и окружающей его зоны. Постройте график этих данных, а затем выполните потоковую передачу маршрута на географическом проигрывателе.

Загрузите координаты широты и долготы маршрута движения в Натике, штат Массачусетс, США.

route = load('geoSequenceNatickMA.mat');
lat = route.latitude;
lon = route.longitude;

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

player = geoplayer(lat(1),lon(1),'HistoryDepth',5);
plotRoute(player,lat,lon)

for idx = 1:length(lat)
    plotPosition(player,lat(idx),lon(idx))
end

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

reader = hereHDLMReader(lat,lon);

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

laneTopology = read(reader,'LaneTopology');
plot(laneTopology)

Наложение данных трассы на график.

hold on
geoplot(lat,lon,'bo-','DisplayName','Route');
hold off

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

plot(laneTopology,'Axes',player.Axes)
for idx = 1:length(lat)
    plotPosition(player,lat(idx),lon(idx))
end

Используйте веб-сервис HERE HD Live Map (HERE HDLM) для чтения данных геометрии полосы 3-D из плитки карты. Затем постройте график данных на базовой карте OpenStreetMap ®.

Создайте устройство чтения HERE HDLM для идентификатора плитки карты, представляющей область Берлина, Германия. Если ранее не были настроены учетные данные HERE HDLM, появится диалоговое окно с предложением ввести их.

tileID = uint32(377894435);
reader = hereHDLMReader(tileID);

Добавьте базовую карту OpenStreetMap в список базовых карт, доступных для использования с услугой HERE HDLM. После добавления базовой карты нет необходимости добавлять ее снова в будущих сессиях.

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)

Считывание данных 3-D геометрии полосы движения из LaneGeometryPolyline слой плитки карты. Постройте график геометрии полосы движения на вкладке openstreetmap базовая карта.

laneGeometryPolyline = read(reader,'LaneGeometryPolyline');
gx = plot(laneGeometryPolyline);
geobasemap(gx,'openstreetmap')

Увеличьте изображение центральной координаты плитки карты.

latcenter = laneGeometryPolyline.TileCenterHere3dCoordinate.Here2dCoordinate(1);
loncenter = laneGeometryPolyline.TileCenterHere3dCoordinate.Here2dCoordinate(2);

offset = 0.001;
latlim = [latcenter-offset,latcenter+offset];
lonlim = [loncenter-offset,loncenter+offset];

geolimits(latlim,lonlim)

Используйте веб-службу HERE HD Live Map (HERE HDLM) для считывания данных геометрии топологии из плитки карты. Эти данные используются для поиска кратчайшего пути между двумя узлами внутри плитки карты.

Определите идентификатор плитки HERE для района Стокгольма, Швеция.

tileID = uint32(378373553);

Создайте устройство чтения HERE HDLM для идентификатора плитки. Настройте устройство чтения для поиска плитки только в каталоге Западной Европы. Если ранее не были настроены учетные данные HERE HDLM, появится диалоговое окно с предложением ввести их. Считыватель содержит данные карты для указанной плитки карты.

config = hereHDLMConfiguration('hrn:here:data::olp-here-had:here-hdlm-protobuf-weu-2');
reader = hereHDLMReader(tileID,'Configuration',config);

Прочтите определения ссылок из TopologyGeometry слой плитки карты. Возвращенный объект слоя содержит указанный LinksStartingInTile поле и требуемые поля плитки карты, например идентификатор плитки. Остальные поля пусты. Данные карты и версия каталога могут отличаться от приведенных здесь.

topology = read(reader,'TopologyGeometry','LinksStartingInTile')
topology = 
  TopologyGeometry with properties:

   Data:
                    HereTileId: 378373553
          IntersectingLinkRefs: []
           LinksStartingInTile: [1249×1 struct]
                   NodesInTile: []
    TileCenterHere2dCoordinate: [59.3372 18.0505]

   Metadata:
                       Catalog: 'hrn:here:data::olp-here-had:here-hdlm-protobuf-weu-2'
                CatalogVersion: 5597

  Use plot to visualize TopologyGeometry data.

Найдите начальный и конечный узлы для каждой ссылки в LinksStartingInTile поле.

startNodes = [topology.LinksStartingInTile.StartNodeId];
endNodesRef = [topology.LinksStartingInTile.EndNodeRef];
endNodes = [endNodesRef.NodeId];

Найдите длину каждой ссылки в метрах.

linkLengths = [topology.LinksStartingInTile.LinkLengthMeters];

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

G = graph(string(startNodes),string(endNodes),double(linkLengths));
H = plot(G,'Layout','force');
title('Undirected Graph')

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

startNode = G.Nodes.Name(1);
endNode = G.Nodes.Name(end);

highlight(H,[startNode endNode],'NodeColor','red','MarkerSize',6)
title('Undirected Graph - Start and End Nodes')

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

path = shortestpath(G,startNode,endNode);
highlight(H,path,'EdgeColor','red','LineWidth',2);
title('Undirected Graph - Shortest Path')

Ограничения

  • Веб-служба HERE HDLM определяет географический охват картографических данных. Данные карты доступны не для всех расположений.

Совет

  • Чтобы ускорить работу считывателя, при создании считывателя укажите hereHDLMConfiguration объект для Configuration собственность. Этот объект настраивает устройство чтения для поиска выбранных плиток карты только в конкретном производственном каталоге HERE HD Live Map. Если при создании устройства чтения не указан объект конфигурации, устройство чтения выполняет поиск плиток карты во всех каталогах.

  • Для сохранения учетных данных HERE HDLM между сеансами MATLAB выберите соответствующий параметр в диалоговом окне HERE HD Live Map Credentials. Для управления учетными данными HERE HDLM используйте hereHDLMCredentials функция.

Представлен в R2019a

[1] Необходимо заключить отдельное соглашение с HERE, чтобы получить доступ к услугам HDLM и получить необходимые учетные данные (access_key_id и access_key_secret) для использования услуги HERE.