页面技术选择解释了Rugged如何从机载像素视线到达椭球体入口附近的地面视线到达。在这一步骤中,我们有一个在地表附近定义的3D线,并且想要计算它穿过数字高程模型表面的确切位置。Orekit库层面上没有支持此计算,所有计算都在Rugged库层面上完成。
由于该算法的这一部分代表了一个内部循环,因此必须使用快速算法。根据条件(视线在接近视场边缘的地形上滑过或直接潜入纳德尔视图),某些算法比其他算法更合适。这个计算在Rugged库中被隔离在最小的编程单元中,并定义了一个接口,其中包含多个不同的实现,用户可以选择。
Rugged中预定义了五种不同的算法:
预计将来会添加其他算法,如线步进(可能使用Bresenham线算法)。
具有对椭球体形状的完全考虑的Duvenhage算法是操作计算的基准方法。使用平面假设的Duvenhage算法在计算方面并没有真正节省任何有意义的东西,因此只应用于测试目的。基本扫描算法仅用作可以用于验证和测试的基本参考。无操作算法可用于低精度快速计算需求,而不改变完整的数据产品工作流程。
由于最小/最大KD树结构是Duvenhage算法特有的,并且算法被隐藏在通用接口后面,因此树是用户不应该看到的实现细节。因此,最小/最大KD树结构直接在Rugged层级上构建,仅当选择Duvenhage算法执行位置计算时才构建。
另一方面,Rugged不会解析DEM文件,因此算法依赖于上层传递的原始数据。为了传递这些数据,任务特定接口层实现了一个特定的回调函数,并将其注册到Rugged中,可以调用它来检索DEM的部分,以小单元格的形式。然后从叶子到根构建隐式KD树并进行缓存。