三维GIS之单体化

众所周知,倾斜摄影自动建模的模型能够看做是一张表面覆盖率高分辨率影像的连续的TIN三角网。这在实际应用中只能像影像地图同样看成底图浏览,不能单独选中和查询,这对于实际做用不大。要解决这个问题,就只能进行模型单体化。“单体化”其实指的是每个咱们想要单独管理的对象,都是一个个单独的、能够被选中分离的实体对象,能够赋予属性,能够被查询统计等等。只有具有了“单体化”的能力,数据才能够被管理,而不单单是被用来查看。目前应用较为普遍的单体化方法包括如下三种:切割单体化、ID单体化和动态单体化。前端

倾斜摄影模型单体化技术

切割单体化

实现思路大致以下:首先,以配套矢量面(建筑物、道路、树木等)的边界线为切割线,将点集(即建模过程当中生成的高密度点云)分为内外两个部分;再进行运算生成每个点子集的边界,也就获得了单体化模型的边界;最后对每个点子集进行三角剖分和优化,便得出单体化模型。缓存

ID单体化

ID单体化是指结合已有的二维矢量面数据,将对应的矢量面的ID值做为属性赋给三角网中的每一个顶点,那么同一地物对应的三角网顶点就存储了同一个ID值,当鼠标选中某一个三角面片时,根据这个三角面片顶点的ID值获得其余ID相同的三角面片并高亮显示,就实现了单独选中某一地物的效果。矢量数据集中存储ID值的字段就是关联字段,也能够指定其余字段做为关联字段。工具

动态单体化

与前两种方法不一样的是,动态单体化不须要对倾斜摄影模型数据进行预处理。咱们将配套的二维矢量面与倾斜摄影模型加载到同一场景中,在渲染模型数据时把矢量面贴到倾斜模型对象表面,而后设置矢量面的颜色和透明度,从而实现能够单独选中地物的效果。若是要作专题图,用这种办法那是至关方便。优化

三种单体化技术对比

总的来讲目前市场上大部分三维应用中都是经过叠加配套矢量面的方式实现了动态单体化,而在不支持动态渲染的环境中则多使用ID单体化的方式。例如在WebGL客户端和移动端开发中,均使用ID单体化。ui

模型单体化实例研究

实现单体化的方式能够经过工具软件预处理,也能够经过相关js进行,这里主要从这两方面进行研究:spa

​​​​​​​LocaSpace单体化

LSV 可以实现倾斜摄影自动化建模成果的单体化。采用矢量化的方式,经过叠加的矢量底面,在渲染层面实现建筑物、道路等地物单体化。3d

具体方法为在LSV中加载OSGB的倾斜摄影数据,在场景功能模式下打开数据源,对象

再在开始模块下叠加矢量图层blog

​​​​​​​PhotoMesh单体化

PhotoMesh的单体化是经过精准切割单体化实现的。具体实现路径为:将数据在PhotoMesh中加载,通过自动建模后,将PhotoMesh建立的三维模型导入CityBuilder,经过叠加分类图层,将模型单体化并赋予属性信息,同时建立LOD,进行优化,生成3DML数据格式。开发

​​​​​​​Cesium实现单体化

经过Cesium.JS前端实现单体化主要依靠classificationType这个参数,这是一个分类参数,设置其参数,可轻松实现单体化。经过  classificationType: Cesium.ClassificationType.CESIUM_3D_TILE属性的设置,便可在前端展现页面实现单体化。

​​​​​​​SuperMap实现单体化

SuperMap也就是超图的单体化是经过其桌面软件完成的,具体实现分层单体化过程以下:

方式1:使用SQL 的空间查询方法

  1. 先叠加数据
  2. 选择菜单中的风格设置(如图)

​​​​​​​

拉伸设置:高度模式——相对高度;底部高程——属性表中相应的底高字段;拉伸高度——属性表中相应的拉伸高字段;

  1. 在场景的图层管理器中右键添加的矢量面图层,选择“对象选择风格”,更改前景色为饱和度高的颜色,透明度设为50%,勾选“贴对象”,而后肯定;

  1. 等待操做完成完成单体化,最后效果以下:

方式2 : 利用shp数据进行空间建模,拉伸模型,而后依赖SmID来进行关联,作数据查询

  1. 对数据进行预处理
  2. 拉伸建模
  3. 建模完成以后保存当前场景
  4. 在场景上右键,生成场景缓存,保存到工做空间同级目录便可
  5. 注意存储类型以及文件类型(原始,s3m)

​​​​​​​