本人现在用的Cesium版本是1.61。
功能优化后的完整demo: Cesium功能集 之 034-可视域分析(纯前端)完整版
关于视域分析,Cesium本身是不提供直接接口实现的,也许是我接触的还不够全面,反正自己是没找到现成的东西来调用,没办法只能自己一步一个坑的去踩。前后差不多一天多的时间实现了一个大致的效果,基本可以满足现阶段项目上的需要。效果远达不到那些付费产品视域分析的效果,性能上也会有些许的影响(范围足够大的情况下,性能下降还是比较明显的),现阶段能力也就这样,希望后续能够再完善吧。上图:

思路历程:网上能够搜到的多数都是透视分析的例子,某种情境下,足够多的透视分析结果整合到一起也能看作是一个简单的视域分析。也是顺着这个思路,自己设计了两个思路来实现视域分析:
①利用高程判别:视角初始位置和视域目标点之间组成的一条直线,我们暂且称之为当前视角下的“视域线”,对该直线进行空间插值,获得直线上一系列的空间插值点。对于获取到的每个插值点P(x,y,z)通过getHeight()方法来获取当前场景下(x,y)点的地表高程h,对比z与h的高程关系。若z<h,则证明,该插值点位于地表下,可以归属于不可视域点;反之,若z>h,则归属于可视域点。这样就可以获取到视域线在当前插值精度下的可视域情况。

②pick取交

本文分享了在Cesium 1.61版本中实现可视域分析的过程与方法,包括利用高程判别和pick取交两种思路。通过具体代码示例,详细介绍了如何构建视角位置、目标点,并进行视域线的求交与分析,最终形成可视域结果。
最低0.47元/天 解锁文章
3316

被折叠的 条评论
为什么被折叠?



