单体化效果做出来也有段时间了,可能还是有些问题没有讲清楚,我们这里再说下
单体化矢量的制作
单体化的原理就是一个通过矢量文件构造一个个封闭的几何体去附着到被分类的对象(倾斜或者地形),所以第一步我们需要制作这样的矢量。在GIS行业里,最常见的矢量数据就是shp格式,而arcgis的arcmap就是编辑shp的官方工具,所以我们下来展示如何用arcmap制作一个 大雁塔的分层示例。
第一步,先要用arcgis另一个工具arccatalog 新建一个 shp数据图层
arccatalog新建矢量图层
新建矢量图层
注意这里选polygon类型,也就是多边形图层。
设置为wgs84坐标系统
然后右键属性
右键属性
增加字段
我们这里增加四个字段:
name,类型为text,这个用来记录我们的 大雁塔级别的名称
minheight,类型为float,用来记录 这一层底面的绝对高程
maxheight,类型为float,用来记录 这一层顶面的绝对高程
height,类型为float,用来记录 这一层顶面相对底面的相对高度
也就是 height = maxheight - minheight
这里其实 maxheight 和 height 二选一就可以了,只是在cesiumlab处理的时候有一个选项可以来设定顶面高度是否是绝对高程。
第二步,在arcmap里绘制矢量面
在arcmap 里把这个shp 和 底图影像数据加进来
arcmap里加载
注意我这里的底图数据是用的我们自定义的一个arcmap插件,它可以加载各种在线的底图数据,这里我加载的谷歌无偏移影像。当然对于专业做gis的公司,这都不是问题,要么有自己的底图影像数据,要么是有类似的插件。(PS:我们的插件可以有偿转让)。
我们拖拽定位到大雁塔附近
大雁塔附近
调出editor工具,点开始编辑
editor工具
create feature
使用右侧的createfeature 工具,选择 polygon工具
在图上鼠标单击勾多边形
这里注意两个问题:1,单体化矢量面尽量大一些,只要不和旁边的单体化矢量面相交就行,因为我们的倾斜数据,底图数据本身都有误差,如果太过紧凑,反倒不能完全包含倾斜数据,导致效果不好。2,单体化矢量面尽量简单一些,也就是多边形的顶点更少一些,越多的多边形顶点,我们生成的封闭体越复杂,渲染效率越低。
我们来填写下它的属性
填写属性
矢量面属性
minheight为什么填写了425 ? 这个高度值是我在lab里预览大雁塔倾斜的时候看到的
cesiumlab中查看点击位置高度
lab里点击高度是425.68,我们填写的425,因为这是最下面一层,我们可以向下增加一些余量。
maxheight为什么填439? 同样道理,这里也是手工在lab里点击第一层最顶端看到的
第一层顶端高度
height的值就很好理解了,就是两者的差值 = 439 - 425 = 14
第一层我们就设置完毕了。
第二层我们直接在arcmap里选中第一层,然后ctrl+c,ctrl+v复制一个面就行了
第二层属性
第二层属性里的几个值
minheight当然等于第一层的maxheight
maxheight也是在lab里预览里看到的
height = maxheight - minheight
其他层的就不做了,这两个能说明问题就可以了。
注意编辑完成之后,editor工具栏里选择 stop editing
单体化矢量的处理
我们先做一个非单体化的处理效果
lab中处理
注意我们先在使用的 maxheight 和 minheight,因为maxheight是绝对高度,所以我们需要在其他选项里,勾选绝对高度
默认处理效果
我们再试下,用height字段处理,这时候,不能选择 绝对高度 选项
lab处理2
你们可以验证下,这两种处理结果是一样的。
下来我们做一个单体化效果处理
单体化处理
单体化处理的时候,一定要勾选 分类单体 选项,如果不能勾选,是因为免费登录版不支持,请向我们申请测试授权。
单体化效果的预览
要测试单体化效果,需要把倾斜数据 和 单体化数据增加到一个场景里。
单体化预览效果
后记
再次感谢大家对CesiumLab的喜爱和支持,希望Lab能和你一起成长