在TE开发中,系统有时会用到填挖方分析的功能,针对此开发,分享一下其中开发的一些关键点,不过,很不幸,计算土方量这个接口在te7的开发中被去掉了。
下边介绍一下,在bs系统中,如何实现填挖方分析的功能,接口都是基于te6.6的,最后会简单说一下在te7中实现的思路。
要达到在te中计算填挖方的效果,首先,在地图上选定一个范围,即在地图上画一个面(polygon),可以参见此公众号的《TE二次开发画polygon》,不过画出来的polygon不能自相交(下图为自相交polygon)。
polygon勾画完成后,需要达到地形填挖的效果,使用SGWorld.Creator.CreateTerrainModifier(polygon的geometry, 0为替换地形, 是否是平的表面, 羽化效果, 组编号, 名称)的方法,在地形上显示出填完的效果;
效果画完成后,开始计算填完的土方量,使用te6.6中的SGWorld.Analysis.CalculateVolume(ids, sample)方法,第一个参数为上边地形修改对象的id组,保证为数组类型,要不报错,所以就要求,系统中必须有地下修改的对象,才能进行土方量的计算;第二个为采样间隔,越大计算速度越快,精度相对就低,这个根据个人需求。
在te7中,把CalculateVolume这个方法给去掉了,但是,此功能以网页形式进行了计算,方法稍微有点复杂,有需要可以参见其中的代码。Skyline/TerraExplorer%20Pro/Tools/Volume/Volume.html