如何配置Azure Maps Creator manifest.json 2.0支持寻路及相关问题
核心问题1:如何修改v2示例数据包以支持预览版寻路
我正尝试使用最新的Azure Maps Creator 2023-03-01-preview API实现寻路功能,但不清楚如何提供正确的数据包以支持该功能。文档指出,寻路需要设施本体2.0(facility ontology 2.0)中的“structure”和“verticalPenetration”要素类来确定最优路径,我推测需在manifest.json v2文件中定义这些类。不过manifest 2.0的建筑包要求文档显示,featureClassProperties仅用于映射DWG图层,无法设置例如“unit”的isRouteable=true属性。我使用了Azure官方的v2示例数据包,修改类名以匹配设施本体2.0的structure和verticalPenetration,但转换服务仍将数据识别为“自定义”本体。请问如何修改该v2示例包以支持此预览版的寻路功能?
补充疑问1:manifest.json v2与本体2.0要素类的混淆
似乎manifest.json 2.0在寻路时并未使用本体2.0的要素类,附上v2示例的寻路效果截图,认为文档需澄清该混淆点。
补充疑问2:寻路路径穿墙、折线生硬是否为预期行为
附上另一示例,路径从0层到1层通过楼梯str2实现楼层转换,虽楼层转换正常,但路径明显穿过部分路径点间的墙体(如楼梯str1、房间1045和1341附近),且用折线绘制时方向变化生硬,请问这是API背后的路由引擎的预期行为吗?
针对核心问题1:修正v2数据包以适配设施本体2.0寻路
要让转换服务识别为设施本体2.0而非自定义本体,仅修改类名是不够的,需确保以下几点:
- 指定本体版本:在
manifest.json的根层级添加"ontologyVersion": "2.0"字段,这是让服务识别本体类型的核心配置,缺失该字段时即使类名匹配,服务也会默认按自定义本体处理。 - 正确映射要素类与属性:
- 对于
structure类,需确保对应的GeoJSON要素包含本体要求的必填属性(如category、name),且在manifest.json的featureClasses中正确关联GeoJSON文件——本体2.0会自动识别structure的可路由性,无需在featureClassProperties中额外配置。 - 对于
verticalPenetration类,需将要素的category属性设置为stair、elevator等符合本体定义的值,这些值是路由引擎识别垂直通行设施的关键依据。
- 对于
- 清理自定义本体残留:如果原示例中有
customFeatureClasses相关配置,需删除或替换为设施本体2.0的标准类定义,避免干扰服务的本体判定逻辑。
针对补充疑问1:manifest.json v2与本体2.0的关系澄清
manifest.json v2是建筑包的配置规范,设施本体2.0是要素类与属性的定义标准,二者是配合关系:
manifest.jsonv2的作用是告诉转换服务如何解析你的GeoJSON/DWG数据,将其映射到对应的本体要素类。- 若未显式声明
ontologyVersion: 2.0,服务会默认按自定义本体处理,这就是你遇到“类名匹配但仍识别为自定义”的原因。文档此处确实需要更明确的说明,核心是必须显式指定本体版本,才能让寻路引擎调用本体2.0的规则。
针对补充疑问2:路径穿墙与折线生硬的问题
这种情况并非路由引擎的预期行为,通常由以下原因导致:
- 墙体数据配置错误:若
structure类中未包含对应墙体的要素,或墙体的category属性未设置为wall等阻挡类值,路由引擎会判定该区域可通行,从而生成穿墙路径。 - 路径点位置不合理:如果起点、终点或中间路径点设置在墙体内部或紧贴墙体的位置,路由引擎可能会生成穿过墙体的路径,需确保路径点落在可通行区域(如房间内部、走廊)。
- 路由精度参数未调整:默认路由精度可能未启用精细的墙体碰撞检测,可尝试在寻路API请求中设置
routePrecision参数为high,查看是否改善路径生硬和穿墙问题。
内容的提问来源于stack exchange,提问作者Mark

