基于Web的CAD一张图协同在线制图更新轻量级解决方案[示例已开源]

背景

之前相关的博文中介绍了如果在Web网页端展示CAD图形(唯杰地图云端图纸管理平台 https://vjmap.com/app/cloud),有不少朋友问,能不能实现一个协同的功能,实现不同部门不同专业间“一张图协同”,解决目前Web端CAD查看图纸更新不及时不同步的痛点!

需求分析

需求举例如下:如下图所示,图纸四属于一张图,此图由不同部门的图形组合而成【图纸一(图层1)、图纸一(图层3)、图纸二(图层2)、图纸三(图层3)】, 当图纸一、图纸二、图纸三有更新时,图形四应及时更新至最新版本,保证查看一张图图纸四时,永远是最新的图形版本。

image-20220531191637127

要想实现上面的功能,涉及到版本控制、权限控制、图形合并等相关功能。

实现原理介绍

一张图协同图形是由不同的部分的子图形中的相关图层组合而成。实现图形的组成查看有两种方式。

WMS服务组合图形

Web 地图服务 (WMS) 是用于在 Web 上显示 GIS 数据的 最广泛使用和最简单的形式,他能将不同的图形瓦片根据坐标叠加对应到一起。此方式是通过WMS方式,把要叠加显示的图通过WMS叠加到一起,把叠加后的瓦片数据返回给前端。

合并CAD图形创建协同图形

此方式是通过组合的参数,在后台根据参数把不同的CAD图合成一个新的组合图形。看查一张图时,查看的是组合后的图形。

两者的优缺点比较如下:

WMS服务组合图形: 叠加显示过程中速度快;组合图形太多时效率低;后期查询数据时不方便(涉及到多个图查询)

合并CAD图形创建协同图形: 叠加显示过程速度较慢(在后台要重新创建新图形); 创建完成后和组图图形多少没关系了;后期查询方便

 

结论

在实时叠加展示的时候,采用WMS服务组合图形,参数选择完成,真正在创建一张图协同图形时,采用合并CAD图形创建协同图形

 

实现步骤

1、上传基础图形

打开 (唯杰地图云端图纸管理平台 https://vjmap.com/app/cloud), 先上传基础图形。

需要注意的是,要想实现图形叠加组合到一起,应确保上传的图形的范围是同一个坐标系范围的。

image-20220531194035642

2、创建协同图形

image-20220531193716409

image-20220531194133766

 

在左侧列表中显示要叠加的图形和图层。这里在选择叠加的时候,用的是WMS服务组合图形

选择完成后,点击创建协同图形按钮,这时候会在后台合并CAD图形创建协同图形,处理完成后,给协同图形,新建一个名称即可。

image-20220531194617672

这时候协同图形已建立好。

image-20220531194726861

3、更新协同图形

当协同图形所依赖的图形更新时,打开协同图形会自动更新至最新版本。

要更新协同图形,需要对所依赖的图形进行更新。

更新有两种方式:

(1)在CAD里面修改图形,然后在对应图形那选择上传更新图形即可。

image-20220531195122878

(2) 也可以在线绘图,保存至后台更新CAD图形

image-20220531194902143

image-20220531195414435

在”保存“的提示框中选择”否“,稍等后,图形会自动在后台根据绘制的实体创建新的实体对象,并更新CAD图形,同时更新此图版本。

这时候,我们点击查看刚创建的协同图形,就会自动的更新成最新版本了!(版本有更新时,会自动在后台处理图形,需稍等下,下次无需等待)。

image-20220531195828754

 

自此,一个在线制图并自动更新协同一张图的功能就此完成,是不是操作很简单?!

4、展望

唯杰地图(vjmap)做为一个平台,没有就用户和权限部分进行封装;所以上面的方案只能做为一个轻量级的解决方案。

实际中,会有不同用户和不同权限的设置。这就需要利用vjmap提供的sdk对上面的方案进行进一步的封装。可能需要考虑的几点有:

(1)对图形名称进行隐藏处理,不要让所有人能查到图名称(以ns_开头的图名称不会显示)

(2)在用户登录后,上传的图形可以和用户名相关联。把图形名称和用户名的关系保存进自己后台,这样不同的用户登录后,能看到的是自己的图形,没有权限或更新其他用户的图形。

(3)根据业务需求对权限进行授权。

有需要的朋友可以在线上传图形创建属于自己的协同图形。上面的案例代码已开源。访问 (唯杰地图云端图纸管理平台 https://vjmap.com/app/cloud) ,点击下载此案例源码即可。

posted @ 2022-05-31 20:19  vjmap  阅读(182)  评论(0编辑  收藏  举报