Autodesk Forge Viewer是否支持空间函数,能否查询多边形内对象ID?
关于Autodesk Forge Viewer空间能力与多边形圈选功能的实现说明
核心能力判定
- Viewer原生不提供SQL语义层面的
intersect、contains、touches、within这类空间函数,这类函数本质是服务端空间数据库(如MySQL Spatial、PostGIS)的配套计算能力,并非Viewer客户端内置的原生接口。 - 基于Viewer的扩展API完全可以开发自定义功能,实现「绘制多边形并提取范围内所有对象ID」的需求,没有技术层面的硬障碍。
参考官方方案的改造思路
- 你可以对参考的官方区域规划工具方案做轻量化裁剪改造,完全不需要保留原有方案中的多边形面积计算、多边形坐标持久化存储到数据库的环节。
- 原方案的核心可复用模块只有「用户在Viewer画布上绘制自定义多边形的交互逻辑」,剩下的空间匹配环节完全可以从服务端迁移到客户端运行,甚至可以完全砍掉数据库交互链路:
- 复用成熟的多边形绘制交互模块,拿到用户绘制完成后,多边形在模型世界坐标系下的顶点集合
- 对当前Viewer加载模型下的全量对象做范围筛选:通过Viewer内置接口获取每个对象的空间包围盒、关键图元采样坐标,用客户端侧的几何判定逻辑(比如射线法判断点在多边形内、轻量几何库做三维空间相交判定),实现和数据库
within、intersect函数等价的匹配效果 - 整套筛选流程在前端即可完成计算,响应速度比走服务端计算更快,不需要额外的跨网络请求。
实现优化提示
- 处理大体量模型时,不需要逐图元做精细判定,可以先基于多边形的空间范围做粗筛,把明显不在目标空间范围内的对象提前排除,能大幅降低计算开销,保证交互流畅度
- 如果后续有跨用户共享圈选范围的需求,再按需把多边形坐标同步到服务端即可,核心的对象范围提取逻辑完全可以独立在客户端运行。
内容的提问来源于stack exchange,提问作者Ao55
相关产品推荐
相关产品推荐

