hereHDLMReader

Описание

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

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

Примечание

Использование hereHDLMReader объекту требуются действительные HDLM-учетные данные HERE. Если ранее учетные данные не были настроены, отобразится диалоговое окно с запросом на их ввод. Введите Access Key ID и Access Key Secret, которые вы получили от HERE Technologies, и нажмите OK.

Создание

Описание

пример

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

пример

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

пример

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

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

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

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

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

Свойства

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

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

HERE идентификаторы плитки, из которых можно считать данные, заданные как вектор 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 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 Reader из координат маршрута. Если вы ранее не настраивали HDLM-учетные данные HERE, то появится диалоговое окно с приглашением ввести их. Считыватель содержит данные карты для двух мозаик карты, которые пересекает маршрут.

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 reader для карты с идентификатором плитки, представляющей область Берлина, Германия. Если вы ранее не настраивали HDLM-учетные данные HERE, то появится диалоговое окно с приглашением ввести их.

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 Reader для идентификатора плитки. Настройте устройство чтения для поиска плитки только в каталоге Западной Европы. Если вы ранее не настраивали HDLM-учетные данные HERE, то появится диалоговое окно с приглашением ввести их. Считыватель содержит данные карты для указанной плитки карты.

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. Если при создании считывателя объект строения не задан, считыватель ищет плитки карты по всем каталогам.

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

Введенный в R2019a

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