我正在开发一个使用C ++的应用程序,我需要将栅格数据( DEM )转换为Triangulated Irregular网络( TIN ),建议任何库吗?
我尝试使用 arcGIS ,但我需要c ++中的Code
答案 0 :(得分:3)
我不确定是否存在已实现此转换的现有C ++库。
但如果要在C ++(使用STL和CGAL库)中从头开始实现,这可以让您大致了解必须实现的内容:
将您的栅格数据转换为高架的三角网格 点(每个DEM样本变为具有x / y / z坐标的TIN顶点,并且DEM中的4个相邻样本通过2个TIN三角形连接)。这很容易。显然这是一个TIN,除了它根本不是不规则的,可能包含太多的样本。
从TIN中删除多余顶点(逐个),并重新三角测量刚刚创建的孔。重复直到满意。这是困难的部分。首先,您需要有一些标准来衡量TIN顶点的冗余程度(例如,TIN局部平坦度的某种度量)。应根据此标准对顶点进行排序(将其读作使用优先级队列,以此度量作为优先级对顶点进行排序)。当移除最多余的顶点时,必须对相应的孔进行三角测量(您需要沿着孔的边界找到顶点并对多边形进行三角测量),并且必须更新相邻顶点的冗余度量。最后,您显然需要决定在某个时刻停止此过程(具有最小允许冗余)。