三维智慧管网数据处理与发布流程
从数据处理到三维发布,主要经过以下几个步骤,由于经费和技术有限,只能做到大体上相似了。
1.管线CAD处理
为了实现每米的管线颜色不同,就要实现按米对直线进行打断的操作。与其将三维管线模型建好之后,在进行分割,可以在cad图中,先将线段进行定距等分,然后使用分割好的线段,然后进行建模。
(1) 在CAD中可以使用me命令,对直线进行定距等分,这里的等分,其实是对直线上的点进行增密的操作,每隔一定的距离就增加一个点,但是最后直线还是那条直线,只不过现在多了好几个点罢了。
(2) 管线打断。
1.CAD打断(BREAK)命令的使用技巧 (CAD的打断点命令)
2.在CAD中如何在一条多段线中增加节点? (对线段进行增加节点的处理)
3.cad如何将线段等分 (这里使用me命令,包含了两种方式,一种就是定数等分,一种是定距等分)
4.SketchUp草图大师如何给直线等分? (这是在sketchup中进行定数等分直线的操作)
5.DIVIDE(命令) (使用DIVIDE命令进行定数等分)
6.“点样式”对话框 (设置点的样式)
7.cad中把一条直线从某点切断的方法有哪些?【AutoCAD教程】 (这里有两种方式,一种是打断线,一种是打断与点)
8.cad怎么打断直线 (这是打断线,估计没啥用)
2.管线建模
管线的模型创建,就是需要在3dmax或者是sketchup中进行手工建模了。因为我自己也不是非常的专业,我觉得主要就是将cad图导入到3dmax或者是sketchup进行放样处理,将绘制的二维管道线段,变成三维管道,可能还需要增加一些管点,阀门等设施。为了挂载属性和点击的方便,必要的时候,还需要对管道进行分割,分成一段一段的管道,这样就可以通过cesiumlab进行属性挂接和在cesium中,进行点击处理了。
如果经费充足,倒是有个好用的参数化建模工具,可以直接从shp文件生成漂亮的管网,当然价格还是不便宜的。
生成的效果我就贴一张在群里发现的图吧,其实效果还是不错的。
在建模时候,为了在赋值属性的时候方便,以及改变管线颜色的过程方便,需要将管线进行打断,按米进行,然后每一米赋值一个id号。可以参考 3DMax学习之绘制管道 这篇文章中分割和绘制管道的部分,我这里其实都是很水的,专业的建模人员应该不是这样做的。
1.CAD导入3ds Max建模步骤解析 (CAD图导入3dmax进行建模的步骤)
2.PipeSer管线管网云服务 除了个人开发的蚂蚁管线建模工具,我又在群里找到了这个叫PipeSecr的在线创建管线的服务,是开发CesiumLab的公司开发的。价格还是有点高,没有地方适用,不过如果单纯的制作管网的话,我觉得其实也还是OK的,毕竟业务量起来了,就不在乎这点小钱了吧。所见即所得、无限承载、标准服务、丰富的材质库、免费的附属物库、灵活的数据导入、无限制的图层配置、私有化部署、二次开发,主要的特点就是这些,如果有机会可以尝试一下。
3.位置确定
使用建模工具或者是sketchup中进行处理的模型,要想放到适当的地理位置上去,需要有一个参照,这个时候可以借助于openstreep数据,将openstreepmap数据导入到3dmax之后,作为参照,然后移动模型,将移动模型后的位置,放到合适的位置,再进行模型导出操作。
(1) 从openstreetmap网站,下载 osm 特定区域的数据
(2) 下载 osm2world 软件,使用osm2world软件将osm数据转换成obj模型,可以参考 Post not found: 三维技术研究之获取城市模型 三维技术研究之获取城市模型 中的软件使用。
(3) 将生成的底图的obj导入到3dmax,作为参考,将其他的模型,分别移动到合适的位置,我在移动的时候,其实就是按照一个大概的意思去移动的,没有很精确的移动到,这个我估计应该是有方法的。
(4) 移动编辑好模型之后,就可以将模型导出为obj
注意
还有一点要注意的是,物体坐标的中心位置在那里,这个决定了你使用局部坐标时进行坐标编写的位置,如果3dmax中的物体坐标中心在物体的中间,那么你设置局部坐标系的时候,这个坐标就是这个中心所在的经纬度。我的做法就是:
(1) 找到一个好认的点作为坐标中心点,然后选中该物体,通过3dmax右侧的->层次->轴->调整轴,将物体的坐标中心移动到该点,或者直接对其到世界坐标,也就是底图osm数据的中心,这样就可以直接使用osm底图的中心坐标为参考点了
(2) 然后找到该点对应的地理坐标,填入cesiumlab中的局部坐标中
3.属性编辑
属性编辑,就是要对生成的3Dtiles进行属性的赋值。属性文件要求如下:
(1)必须是csv格式,utf8编码。
(2)第一列必须是【唯一名称】。
(3)第一列的值和模型场景里的名称关联匹配。
4.3Dtiles数据生成
3Dtiles主要使用的就是CesiumLab文件,操作方法也非常的简单。
(1) 打开CesiumLab程序,选中通用模型处理工具,选择导出的obj文件。
(2) 打开设置对话框,设置零点坐标和属性文件
(3) 选择要存储的属性数据,和输出的文件位置,开始处理,就可以将obj模型导出为3dtitle文件了。
5.Cesium数据加载
生成了3dtiles数据,就可以使用Cesiumjs进行数据加载了。这个可以参考 Post not found: Censium加载3dtiles Censium加载3dtiles 这篇文章。
1 | // 加载城市建筑物 |