Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
5年前关闭。
我正在使用C ++开发应用程序,我需要将栅格数据(DEM)转换为不规则三角网(TIN),建议使用任何库?
我尝试使用arcGIS,但是我需要C ++中的代码
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
5年前关闭。
我正在使用C ++开发应用程序,我需要将栅格数据(DEM)转换为不规则三角网(TIN),建议使用任何库?
我尝试使用arcGIS,但是我需要C ++中的代码
最佳答案
我不确定是否有现有的C ++库已经实现了这种转换。
但这可以使您大致了解如果要从头开始使用C ++(使用STL和CGAL库)必须执行什么操作:
将您的栅格数据转换为高架的三角网格
点(每个DEM样本变为具有x / y / z坐标的TIN顶点,DEM中的4个相邻样本通过2个TIN三角形连接)。那是容易的部分。显然,这是TIN,只是它不是完全不规则的,并且可能包含太多样本。
从TIN中删除多余的顶点(一个接一个),然后重新三角化刚创建的孔。重复直到满意为止。那是困难的部分。首先,您需要具有一些标准来衡量TIN顶点的冗余度(例如,对TIN局部平坦度的某种衡量)。应当根据此标准对顶点进行排序(将其读取为优先级队列,以使用此度量作为优先级对顶点进行排序)。删除最多余的顶点后,必须对相应的孔进行三角测量(您需要沿着孔的边界找到顶点,并对多边形进行三角测量),并且必须更新相邻顶点的冗余度。最后,您显然需要决定在某个时候停止此过程(具有最小允许的冗余)。
09-08 04:20