本例展示了如何在OpenStreetMap®基图上显示行驶路线和车辆位置。 将OpenStreetMap基图添加到geoplayer对象可用的基图列表中。添加基图后,在以后的会话中不需要再添加。 name = 'openstreetmap'; url = 'https://a.tile./${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); 默认情况下,地理播放使用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 6.2 阅读和可视化这里的高清实时地图数据HERE高清实时地图(HERE HDLM)由HERE技术公司开发,是一个基于云计算的网络服务,使能够访问高度精确、持续更新的地图数据。这些数据由瓷砖地图层组成,包含道路和车道的拓扑结构和几何形状、道路级属性和车道级属性,以及道路沿线的障碍物、标志和杆子等信息。这些数据适用于各种高级驾驶辅助系统(ADAS)的应用,包括本地化、场景生成、导航和路径规划。 使用自动驾驶工具箱的功能和对象,可以配置和创建HEREHDLM阅读器,从HERE HDLM网络服务中读取地图数据,然后将某些图层的数据可视化。 6.2.1 输入凭证在使用HEREHDLM网络服务之前,必须输入与HERE Technologies签订的协议中获得的凭证。要设置的凭证,请使用hereHDLMCredentials功能。 hereHDLMCredentialssetup
输入有效的访问密钥 ID 和访问密钥秘密,然后单击 "确定"。该凭证将保存在的机器上的 MATLAB 会话的其余部分。要为计算机上的未来MATLAB 会话保存的凭证,请在对话框中选择在MATLAB 会话之间保存我的凭证。这些凭证将一直保存,直到删除它们。 6.2.2 配置阅读器搜索特定目录在HERE HDLM网络服务中,地图数据存储在一组称为目录的数据库中。每个目录大致对应一个不同的地理区域,如北美或西欧。通过创建 hereHDLMConfiguration 对象,可以配置 HERE HDLM 阅读器,使其仅从特定目录中搜索地图数据。还可以选择性地指定要搜索的目录的版本。这些配置可以加快读卡器的性能,因为读卡器不会为地图数据搜索不必要的目录。 例如,为大致对应于北美地区的目录创建一个配置。 config= hereHDLMConfiguration('hrn:here:data::olp-here-had:here-hdlm-protobuf-na-2'); 使用此配置创建的读取器仅从指定目录中搜索地图数据。 配置HERE HDLM阅读器是可选的。如果没有指定配置,读取器默认为在所有目录中搜索地图层。读取器会从找到这些磁贴的目录的最新版本中返回地图数据。 6.2.3 为特定地图瓦片创建读取器hereHDLMReader对象从选定的地图磁贴中读取HERE HDLM数据。默认情况下,这些地图层被设置为14的缩放级别,相当于大约5-10平方公里的矩形区域。 创建 hereHDLMReader 对象时,可以选择要读取数据的地图磁贴。可以直接指定地图层ID。或者, 也可以指定一个行驶路线的坐标,并从该路线的地图层中读取数据。 加载北美地区驾车路线的经纬度坐标。作为参考,在地理轴上显示路线。 route = load('geoSequenceNatickMA.mat'); lat = route.latitude; lon = route.longitude; geoplot(lat,lon,'bo-')geobasemap('streets') title('Driving Route') 使用指定的驾驶路径和配置创建一个 hereHDLMReader 对象。 reader= hereHDLMReader(lat,lon,'Configuration',config); 该阅读器可以让 读取该行驶路线所在的地砖的地图数据。地图数据存储在一组包含地图各方面详细信息的图层中。读取器支持读取道路中心线模型、高清车道模型和高清定位模型的地图图层数据。 有关这些模型中的图层的详细信息,请参见第七讲 "HERE高清实时地图图层"。 6.2.4 读取地图层数据读取函数读取所选地图层的数据。地图数据以一系列图层对象的形式返回。读取包含道路拓扑几何体的图层的数据。 topology =read(reader,'TopologyGeometry') topology= 2×1 TopologyGeometry arraywith properties: Data: HereTileId IntersectingLinkRefs LinksStartingInTileNodesInTile TileCenterHere2dCoordinate Metadata: Catalog CatalogVersion 每个地图层对象都对应于使用输入的 hereHDLMReader 对象选择的地图层。这些地图瓦片的ID存储在阅读器的TileIds属性中。检查第一个地图瓦片的地图层对象的属性。的目录版本和地图数据可能与这里显示的不同。 topology(1) ans = TopologyGeometry with properties: Data: HereTileId: 321884279 IntersectingLinkRefs: [42×1 struct] LinksStartingInTile: [905×1 struct] NodesInTile: [635×1 struct] TileCenterHere2dCoordinate: [42.3083-71.3782] Metadata: Catalog:'hrn:here:data::olp-here-had:here-hdlm-protobuf-na-2' CatalogVersion: 3321 TopologyGeometry层对象的属性对应于该层的有效HERE HDLM字段。在这些图层对象中,图层字段的名称被修改为符合MATLAB对象属性的命名惯例。关于图层对象的更多细节,请参见读取函数参考页的layerData输出参数说明。 6.2.5 可视化地图图层数据要可视化地图图层的数据,请使用绘图功能。绘制返回的地图图层的拓扑几何图形。该图显示地图层内的边界、节点(交叉口和死角)和链接(街道)。如果一个链接延伸到指定地图层的边界之外,图层数据就包括该链接。 plot(topology)
地图图层图是在地理轴上返回的。要自定义地图显示,可以使用地理轴的属性。更多详情,请参阅GeographicAxes属性。将行驶路线覆盖在图上。 hold on geoplot(lat,lon,'bo-','DisplayName','Route') hold off |
|