基于Web的CAD一张图协同在线制图更新轻量级解决方案[示例已开源]
2022/5/31 23:22:32
本文主要是介绍基于Web的CAD一张图协同在线制图更新轻量级解决方案[示例已开源],对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
背景
之前相关的博文中介绍了如果在Web网页端展示CAD图形(唯杰地图云端图纸管理平台 https://vjmap.com/app/cloud),有不少朋友问,能不能实现一个协同的功能,实现不同部门不同专业间“一张图协同”,解决目前Web端CAD查看图纸更新不及时不同步的痛点!
需求分析
需求举例如下:如下图所示,图纸四属于一张图,此图由不同部门的图形组合而成【图纸一(图层1)、图纸一(图层3)、图纸二(图层2)、图纸三(图层3)】, 当图纸一、图纸二、图纸三有更新时,图形四应及时更新至最新版本,保证查看一张图图纸四时,永远是最新的图形版本。
要想实现上面的功能,涉及到版本控制、权限控制、图形合并等相关功能。
实现原理介绍
一张图协同图形是由不同的部分的子图形中的相关图层组合而成。实现图形的组成查看有两种方式。
WMS服务组合图形
Web 地图服务 (WMS) 是用于在 Web 上显示 GIS 数据的 最广泛使用和最简单的形式,他能将不同的图形瓦片根据坐标叠加对应到一起。此方式是通过WMS方式,把要叠加显示的图通过WMS叠加到一起,把叠加后的瓦片数据返回给前端。
合并CAD图形创建协同图形
此方式是通过组合的参数,在后台根据参数把不同的CAD图合成一个新的组合图形。看查一张图时,查看的是组合后的图形。
两者的优缺点比较如下:
WMS服务组合图形: 叠加显示过程中速度快;组合图形太多时效率低;后期查询数据时不方便(涉及到多个图查询)
合并CAD图形创建协同图形: 叠加显示过程速度较慢(在后台要重新创建新图形); 创建完成后和组图图形多少没关系了;后期查询方便
结论
在实时叠加展示的时候,采用WMS服务组合图形
,参数选择完成,真正在创建一张图协同图形时,采用合并CAD图形创建协同图形
实现步骤
1、上传基础图形
打开 (唯杰地图云端图纸管理平台 https://vjmap.com/app/cloud), 先上传基础图形。
需要注意的是,要想实现图形叠加组合到一起,应确保上传的图形的范围是同一个坐标系范围的。
2、创建协同图形
在左侧列表中显示要叠加的图形和图层。这里在选择叠加的时候,用的是WMS服务组合图形
选择完成后,点击创建协同图形
按钮,这时候会在后台合并CAD图形创建协同图形
,处理完成后,给协同图形,新建一个名称即可。
这时候协同图形已建立好。
3、更新协同图形
当协同图形所依赖的图形更新时,打开协同图形会自动更新至最新版本。
要更新协同图形,需要对所依赖的图形进行更新。
更新有两种方式:
(1)在CAD里面修改图形,然后在对应图形那选择上传更新图形即可。
(2) 也可以在线绘图,保存至后台更新CAD图形
在”保存“的提示框中选择”否“,稍等后,图形会自动在后台根据绘制的实体创建新的实体对象,并更新CAD图形,同时更新此图版本。
这时候,我们点击查看刚创建的协同图形,就会自动的更新成最新版本了!(版本有更新时,会自动在后台处理图形,需稍等下,下次无需等待)。
自此,一个在线制图并自动更新协同一张图的功能就此完成,是不是操作很简单?!
4、展望
唯杰地图(vjmap)做为一个平台,没有就用户和权限部分进行封装;所以上面的方案只能做为一个轻量级的解决方案。
实际中,会有不同用户和不同权限的设置。这就需要利用vjmap提供的sdk对上面的方案进行进一步的封装。可能需要考虑的几点有:
(1)对图形名称进行隐藏处理,不要让所有人能查到图名称(以ns_开头的图名称不会显示)
(2)在用户登录后,上传的图形可以和用户名相关联。把图形名称和用户名的关系保存进自己后台,这样不同的用户登录后,能看到的是自己的图形,没有权限或更新其他用户的图形。
(3)根据业务需求对权限进行授权。
有需要的朋友可以在线上传图形创建属于自己的协同图形。上面的案例代码已开源。访问 (唯杰地图云端图纸管理平台 https://vjmap.com/app/cloud) ,点击下载此案例源码
即可。
这篇关于基于Web的CAD一张图协同在线制图更新轻量级解决方案[示例已开源]的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享