<分区>
我正在使用 C++ 开发应用程序,我需要将栅格数据 (DEM) 转换为不规则三角网 (TIN),是否推荐任何库?
我尝试使用 arcGIS 但我需要用 c++ 编写的代码
标签 c++
<分区>
我正在使用 C++ 开发应用程序,我需要将栅格数据 (DEM) 转换为不规则三角网 (TIN),是否推荐任何库?
我尝试使用 arcGIS 但我需要用 c++ 编写的代码
最佳答案
我不确定是否有现有的 C++ 库已经实现了这种转换。
但是如果要用 C++(使用 STL 和 CGAL 库)从头开始完成,这可以让您大致了解必须实现什么:
将您的栅格数据转换为高架三角网格 点(每个 DEM 样本成为具有 x/y/z 坐标的 TIN 顶点,DEM 中的 4 个相邻样本通过 2 个 TIN 三角形连接)。这是最简单的部分。显然这是一个 TIN,除了它根本不是不规则的并且可能包含太多样本。
从 TIN 中(一个接一个)删除冗余顶点,并重新三角化刚刚创建的洞。重复直到满意为止。那是困难的部分。首先,您需要有一些标准来衡量 TIN 顶点的冗余程度(例如,一些衡量 TIN 局部平坦度的指标)。应根据此标准对顶点进行排序(将其理解为使用优先级队列对具有此度量的顶点进行排序作为优先级)。当删除最冗余的顶点时,必须对相应的孔进行三角剖分(您需要沿着孔的边界找到顶点并对多边形进行三角剖分)并且必须更新相邻顶点的冗余度量。最后,您显然需要决定在某个时候停止此过程(允许的最小冗余)。
关于c++ - DEM 到 TIN 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20857937/