数据制作

超图AR导航数据的来源有多个渠道。主要包括影像平面图、CAD平面图、GIS格式平面图、自采集数据等等。使用时,选择最容易获取或质量最好的源数据即可。不同类型的数据来源在进行导航数据制作时的流程略有不同,如下图所示:

图:不同类型数据来源的导航地图制作流程

这里介绍如何利用自采集轨迹,制作一副室内AR导航地图。其它来源的地图,请参照自采集数据流程步骤。

数据采集工具下载地址:

数据采集工具为SuperMap iTablet(以下简称“iTablet”),在各大应用市场均可下载。高精轨迹采集,对智能手机或平板有一定的要求,请参照https://developers.google.cn/ar/devices?hl=zh-cn使用对应型号的设备。

数据制作工具为SuperMap iDesktop(以下简称“iDesktop”),请前往超图官网下载,或直接访问http://support.supermap.com.cn/DownloadCenter/ProductPlatform.aspx。本文使用的是iDesktop 版本为10.0。

轨迹数据采集与制作

轨迹数据即道路数据,是导航地图的基础,用于路径分析,并作为POI、面数据的采集参考。

运行iTablet,依次进入“AR地图”—“AI助手”—“高精采集”。

图:使用iTablet采集轨迹

通过手动输入或“自动定位”或“地图选点”的方式,设置当前位置坐标。

图:设置当前位置坐标

坐标设置完成后,把手机垂直于地面,面向正南,点击“确定”。

图:进入“高精采集”

点击“新建”开始采集轨迹,当前轨迹采集完成后,点击“保存线”,完成采集。每执行一次“保存线”操作,生成一条以当前时间命名的三维线数据集。点击“新建”和“保存线”,继续下一条轨迹的采集和保存。

图:采集轨迹
注意事项:
  • 进入高精采集时,请保持相机镜面清洁,并且尽量远离墙面或者地面等弱纹理区域。
  • 点击“新建”进行采集前,可以围绕采集区域走动几周,在走动的过程中,设备会记录区域内的特征信息,从而在正式采集时提升采集的精度。
  • 若采集任务分多次完成,请确保每次进入“高精采集”时摄像头的方向和位置一致,否则轨迹会发生偏移。

采集完成后,轨迹数据存储于设备中的“\iTablet\User\Customer\Data\Datasource\”路径下。若是iTablet的登录用户,将路径中的“Customer”替换为登录的用户名。将数据拷贝至电脑,进行轨迹数据制作。

图:采集完成的轨迹数据

第一步:数据打开并加入地图

运行iDesktop,在左侧的“工作空间管理器”中,右键点击“数据源”,选择“打开文件型数据源…”,打开采集的轨迹数据。

图:用iDesktop打开采集的轨迹数据

展开数据源,右键点击对应的数据集,选择“添加到当前地图”,或直接拖拽到地图窗口,将数据集依次加入地图。

图:在同一地图窗口查看采集的轨迹

若发现轨迹数据不全、偏移、变形,可利用iTablet再次采集。其中,偏移的数据,还可以通过iDesktop直接编辑和修改。

第二步:数据合并

轨迹采集完整后,通过“追加行”将全部的轨迹合并到一个三维线数据集中。

(1). 新建一个三维线数据集,用于保存所有的轨迹数据。

图:新建“三维线”数据集

(2). 选择“数据”-“追加行”。在“数据集追加行”对话框中,设置目标数据。“数据集”即为上一步新建的三维线数据集。数据源为该数据集对应的数据源。

图:“追加行”操作

(3). 点击对话框中的“添加”按钮,依次添加不同数据源中的数据集。

图:设置目标数据源,添加用于合并的数据集

(4). 添加完成后,点击“数据集追加行”对话框中的“确定”按钮,完成数据合并。合并后的轨迹数据如下所示。

图:数据集合成效果示意

(5). 通过“复制数据集”将合并后的数据集,复制到室内导航数据源中。若还没有室内导航数据源,通过“新建文件型数据源…”新建,数据源格式选择“SuperMap UDB文件(*.UDB)”。复制完成后,可以“关闭”轨迹数据源。

图:复制数据集
图:新建数据源

第三步:类型转换

用于数据分析的数据集类型为网络数据集,由线数据集生成,这里需要将三维线数据集转换为线数据集。

选择“数据”—“类型转换”—“三维线->二维线”,在“三维线->二维线”对话框中,设置对应参数,点击“转换”按钮,完成转换。

图: “三维线”转“二维线”
图:转换参数设置

第四步:数据重采样

采集的轨迹中包含了大量的节点,影响路径分析的效率,对数据进行重采样,减少节点的数量。

选择“数据”,在“数据处理”分组中,点击“下拉”按钮,选择“矢量重采样”。

图:数据集重采样

在“矢量数据集重采样”对话框中,设置“重采样方法”、“重采样距离”。这里选的是“光栏法”、“根据比例尺”。不同的数据可能存在比例尺不同的情况,可酌情选择。

图:重采样参数设置
图:重采样前后结果对比

第五步:数据优化

重采样后的数据,依然存在不直、不相交、节点多等问题,通过对这些数据进行编辑,解决这些问题。

将重采样后的线数据集添加到当前地图中,在“图层管理器”中,点亮“编辑”按钮,让数据可编辑。

图:设置图层可编辑

依次选择“对象操作”—“编辑节点”,调整节点位置,使数据更规范。

图:编辑对象节点

这里要注意,为了后续能正常制作导航道路数据,在数据优化时,通过“捕捉”功能将点捕捉到线上。

图:节点捕捉到线示意
图:道路数据编辑前后对比

第六步:生成导航路径

网络数据集才能进行路径规划,这里将编辑完成的线数据集转换为网络数据集。

依次选择“交通分析”—“拓扑构网”—“构建二维网络”,在“构建二维网络数据集”对话框中,通过“添加”按钮,添加上一步编辑的线数据集,输入网络数据集的名称,勾选“线线自动打断”。

图: “构建二维网络”
图:“构建二维网络”参数设置
图:网络数据集示意

至此,室内导航所需要的道路数据制作完成。若进行室内AR导航的建筑物是多层,请按照上述步骤,逐层采集,逐层制作数据。

POI数据采集与制作

POI数据的制作,依然是分楼层采集和编辑。这里的POI不包括楼梯数据。

运行iTablet,依次进入“AR地图”—“AI助手”—“高精采集”,并设置当前位置坐标。启动“高精采集”的注意事项参考轨迹数据采集。在室内房间中的适当位置,建议选择房间的中心点,点击“保存点”采集POI。每执行一次“保存点”操作,生成一个以对应时间命名的点数据集。

图:POI数据采集

采集完成后,参照轨迹数据的制作方法,依次执行“第一步:数据打开并加入地图”、“第二步:数据合并”,数据合并时,新建数据类型是“点数据集”。合并后,与该层的轨迹在同一窗口中打开,可以根据轨迹的位置,对偏移的点位进行调整。

图:根据轨迹调整点位

第三步:属性添加

下表中,列出了POI的一些必选或可选属性。其中必选属性,必须为表中指定的名称。可选属性是制作地图或搜索过程中可能会用到的属性。使用时,可根据具体的使用情况添加更多的属性项。

名称 表达意义 类型
FL_ID
(名称不可更改)
(必选)
POI所在的楼层ID。用于楼层显示、路径分析和导航。每一个楼层有一个唯一的ID,同一楼层中所有地物的楼层ID都相同。 宽字符
Type
(名称可更改)
(可选)
POI类型。用于制作单值专题图,根据类型显示为不同的颜色或不同的符号。可以根据地物不同的属性设置类型值。以商场为例,店铺、电梯间、卫生间可以设置为不同的类型。 宽字符
Name
(名称可更改)
(可选)
POI名称。用于制作标签专题图,将名称显示在地图上。或者用于POI搜索。 宽字符

左侧的“工作空间管理器”中,在对应的POI图层中单击右键,在弹出的菜单中选择“属性”,界面右侧打开“属性”窗口,选择“属性表”选项卡,通过“添加”按钮,添加属性项。添加完成后,点击“应用”按钮,完成添加。

图:添加属性项

应用完成后,在对应的POI图层中单击右键,在弹出的菜单中选择“浏览属性表”,可以在属性表中看到,属性项已被添加。

图:浏览属性表

将POI数据集和该层的路径数据在同一个地图窗口中打开,在“图层管理器”中点亮“编辑”图标,地图窗口中选择某个POI,在右侧的属性窗口中,进行属性编辑。按照这种方法,依次编辑好每个POI的属性。

图:添加POI属性

至此,POI数据制作完成。若多楼层建筑,请按上述步骤逐层采集,逐层制作。应用中,同一楼层的POI数据也可存放于不同的点图层中,可根据使用需要进行调整。

楼梯数据采集与制作

楼梯数据的采集和制作方式与POI数据的采集和制作方式相同。需要注意三处不同。首先,每层的楼梯数据存放于一个独立的点数据集中,不与POI数据放于同一个点数据集。第二,楼梯数据集的命名方式为“T楼层_CON_INFO”,如第6层为“T6_CON_INFO”,第七层为“T7_CON_INFO”。第三,楼梯数据的必选属性项与POI数据不同,如下表:

名称 表达意义 类型
FL_ID
(名称不可更改)
(必选)
POI所在的楼层ID。用于楼层显示、路径分析和导航。每一个楼层有一个唯一的ID,同一楼层中所有地物的楼层ID都相同。 宽字符
FT_ID
(名称不可更改)
(必选)
楼梯ID。每层的每个楼梯的唯一ID值,即使是相同的一部直梯,在不同的楼层,ID值也不同。 宽字符
TO_CON
(名称不可更改)
(必选)
到达楼层。格式为“#到达的楼层#到达的下一个楼梯的ID“,如到达2层,ID为0211的楼梯,属性值为“#2#0211”。每个楼梯只需对应上一层的楼梯即可,如1层的楼梯,本属性的属性值中到达的楼层为2。最顶层,本属性必须为空。 宽字符
Name
(名称可更改)
(可选)
电梯名称。用于制作标签专题图,将名称显示在地图上。或者用于电梯搜索。 宽字符
Type
(名称可更改)
(可选)
楼梯类型。用于制作单值专题图,根据类型显示为不同的颜色或不同的符号。如楼梯分为直梯、滚梯、步行梯。 宽字符

属性项的添加方式参照POI数据。

图:楼梯属性示意

至此,楼梯数据制作完成。若多楼层建筑,请按上述步骤逐层采集,逐层制作。

房间数据绘制与制作

建筑物的每个楼层都有多个房间,这里介绍采集如何采集面数据。

运行iTablet,依次进入“AR地图”—“AI助手”—“高精采集”,并设置当前位置坐标。启动“高精采集”的注意事项参考轨迹数据采集。点击“新建”按钮,拿着设备沿着房间边缘采集房间轮廓,点击“保存面”完成保存。每执行一次“保存面”操作,生成一个以对应时间命名的面数据集。

采集完成后,参照轨迹数据的制作方法,依次执行“第一步:数据打开并加入地图”、“第二步:数据合并”,数据合并时,新建数据类型是“面数据集”。合并后,与该层的轨迹在同一窗口中打开,可以根据轨迹的位置,对采集的面进行微调。

第三步:添加属性

下表中,列出了房间对象的一些必选或可选属性。其中必选属性,必须为表中指定的名称。可选属性是制作地图或搜索过程中可能会用到的属性。使用时,可根据具体的使用情况添加更多的属性项。

名称 表达意义 类型
FL_ID
(名称不可更改)
(必选)
房间所在的楼层ID。用于地图展示、路径分析和导航。每一个楼层有一个唯一的ID,同一楼层中所有地物的楼层ID都相同。 宽字符
Type
(名称可更改)
(可选)
房间类型。用于制作单值专题图,根据类型显示为不同的颜色或不同的符号。可以根据地物不同的属性设置类型值。以商场为例,店铺、电梯间、卫生间可以设置为不同的类型。 宽字符
Name
(名称可更改)
(可选)
房间名称。用于制作标签专题图,将名称显示在地图上。或者用于搜索。 宽字符

新建和编辑属性项的方法,参照POI数据添加和编辑属性项。

图:房间属性表示意

多楼层导航地图制作

各楼层数据准备完毕后,需要对数据进行分组,以图层组的方式组织数据,使每个图层组中含有一个楼层的全部数据。

第一步:建立图层分组

在【图层管理器】中点击按钮,创建一个名为“indoor”的图层根组(注意,这里必须命名为“indoor”)。继续点击按钮,选择“新建组”,创建一个图层组,名称任意。继续点击按钮,根据楼层,创建楼层分组。

图:创建图层根组

第二步:加载数据并分组

将需要在地图中显示的数据集加入到当前地图,通过拖拽的方式放置在相应的分组下。

图:图层分组

第三步:制作专题图

在“图层管理器”中,选择房间面图层,单击右键,选择“制作专题图…”,在“制作专题图”对话框中选择“单值专题图”—“默认”。

图:制作“单值专题图”

在专题图页面,进行专题图相关属性的设置。

图:设置专题图属性

若需自定义颜色,直接点击“风格”列中的颜色块,打开“填充符号选择器”进行设置。

图:填充颜色设置

同样的方式,设置点图层,如POI点、楼梯点的显示风格。设置点符号时,若现有符号不能满足要求,可以加载外部符号库或者直接导入外部栅格符号。

图:点符号设置

在“图层管理器”中,选择房间面图层,单击右键,选择“制作专题图…”,在“制作专题图”对话框中选择“标签专题图”—“统一风格”。在“专题图”页面,设置文本的显示风格。

图:创建“标签专题图”,设置属性

在“图层管理器”中,选择楼层面图层,单击右键,选择“图层风格…”,在“风格”对话设置面的填充色和线型等。

图:设置图层风格

第四步:保存地图

按照上述方法,制作每个楼层的数据。可以将不需要显示的图层移除地图。制作完成后,通过“”按钮,设置一个楼层组可显示,其它楼层组不显示。

图:设置仅有一个楼层可显示

设置完成后,在地图窗口,点击右键,选择“保存地图”。

图:保存地图

属性表制作

属性数据集在导航的过程中发挥着至关重要的作用,必须包含如下数据项,且名称不能更改:

名称 表达意义 类型
LayerName 图层名称。在“图层管理器”中每一个楼层的名称。 文本型
FL_ID 楼层ID。和每层地物中的添加的楼层ID一致。 文本型
NetworkName 路径文件名称。每一层的路径数据所在的网络数据集的名称。 文本型
FloorName 楼层名称。用于在楼层控件中显示的名称。 文本型
FloorIndex 楼层索引。每个楼层的索引值。 32位整型

第一步:创建属性数据集

数据集存储在原始室内数据所在的数据源,名称为“FloorRelationTable”(注意,这里必须命名为“FloorRelationTable”)。在“工作空间管理器”中,选择室内数据源单击右键,选择“新建数据集…”,在“新建数据集”对话框,选择“创建类型”为“属性表”,“数据集名称”为“FloorRelationTable”。

图:新建属性表数据集

第二步:添加属性项

在“工作空间管理器”中,右键单击“FloorRelationTable”数据集,选择“属性”,在界面右侧打开“属性”窗口,选择“属性表”选项卡,通过“添加”按钮,添加属性项。添加完成后,点击“应用”按钮,完成添加。

图:“属性表数据集”添加属性项

第三步:添加属性值

在“FloorRelationTable”数据集上,单击右键,选择“浏览属性表”,打开属性表,在“属性表”选项卡中选择“添加行”,添加属性行。双击属性表中的项,即可对属性进行编辑。

图:添加行

LayerName值,为“图层管理器”中每个楼层的分组对应的图层名称。

图:获取楼层组的图层名称

FL_ID值:楼层ID,每个楼层中所有地物的楼层ID相同。

NetworkName值,楼层对应的导航路径网络数据集的名称。

图:获取“NetworkName”的对应值

FloorName值,楼层控件中显示的楼层名称。

FloorIndex值,为楼层索引,如负一层为-1,一层为1,二层为2。

图:属性表数据集属性示意

范围数据源制作

范围数据源,用来控制楼层控件的显示和隐藏,包括一个名为“bounds”(注意,这里必须命名为“bounds”)的数据源,一个名为“building”(注意,这里必须命名为“building”)的面数据集。面数据集中有且仅有一个面对象。

第一步:创建数据源

数据源名称“bounds”,类型为udb,存储路径与室内数据源的路径相同。在“工作空间管理器”中,选择“数据源”,右键打开菜单,选择“新建文件型数据源…”。

图:新建数据源

第二步:创建面数据集

数据集名称“building”,类型为面数据集。在“工作空间管理器”,选择上一步创建的“bounds”数据源,右键打开菜单,选择“新建数据集”。

图:创建面数据集

第三步:添加面对象

面对象数量只能是1个,大小应与室内地图范围相同或者略大,位置与室内数据相同。建议复制室内数据源中的室内区域范围面数据集。

在“工作空间管理器”中,右键点击待复制的数据集,在打开的菜单中选择“复制数据集”,在“数据集复制”对话框中,设置“目标数据源”和“目标数据集”。

图:复制数据集

若室内数据源中没有类似的面数据集,可以绘制一个面。将“building”数据集在地图窗口中打开,并设为“编辑”状态。选择“对象操作”选项卡中的“面”—“直角矩形”,绘制一个面即可。绘制时参考室内地图的位置。

图:绘制面对象

第四步:添加属性项

为building数据集添加“LinkName"、“LinkDataSource”两个属性项(注意,这里必须命名为“LinkName”和“LinkDataSource”)。

图:添加属性项

第五步:添加属性值。

LinkName属性值,来源为“图层管理器”中,楼层分组的上一级分组的图层名称。获取方式为,在该分组上点击右键,选择【图层属性】,在图层属性表中“图层名称”的值。

图:获取“LinkName”属性值

LinkDataSource属性值,为原始导航数据所在数据源的数据源名称。

图:获取“LinkDataSource”属性值
图: “building”数据集属性示意

保存工作空间。至此,室内AR导航数据制作完成。