计算最低/最高组合曲面的编程方法

时间:2017-06-19 18:42:10

标签: python algorithm 3d geometry

最低/最高组合表面

我正在寻找一种方法(和/或最好是软件方法)来创建我为一组多边形调用最低(或最高)组合曲面的方法。

因此,如果我们的输入是这两个部分重叠且明确相交的多边形 enter image description here

我的最低合并输出将是这三个多边形

![](threePoly.png)

给出了许多表面" (3d多边形)

我们已经经历了各种方法,我们可以提出的最佳解决方案是将点网格应用于每个多边形并执行计算以返回每个网格位置处的最低点集。问题是原始几何体在这种方法中丢失了,但这并没有给我们提供有效的解决方案。

背景

我正在观察各种各样的表面"可以用3d face(cad Speak)或多边形表示,通常分布在shapefile(.shp)中。当有两个相互作用的表面时,我有兴趣采用最低组合或最高组合表面。我可以通过手动跟踪交互区域的新多边形来在CAD中执行此操作 - 但是一旦我进入多个表面,这就变得过于劳动密集。

当前的方法

我目前处于可怕类别中的方法是从1m网格上的每个表面生成点云,然后基于网格单元对点进行比较。

我是通过使用 AutoCAD Civl 3D&#39> 曲面生成工具从每个多边形曲面创建TIN然后使用其Surface来实现的。然后将其导出到1m DEM文件,我认为该文件是网格化输出格式。

接下来,每个DEM文件都会进入 Global Mapper ,我会在每个"提升网格单元格的中心生成一个单点"。接下来,此数据将导出到.csv文件,其中每个点都包含各种属性,例如此点的表面名称及其高度是什么

接下来,一旦我有一组CSV个文件,我就会通过python脚本运行它们,这个脚本将导出每个网格的最低点(和相关属性)。我在UTM中执行所有操作,因为UTM网格基于米,它使一切变得更容易。

最后,我们将点文件带回全局映射器 - 按照从哪个表面开始为每个点着色。

这种方法存在各种各样的问题 - 有时事情并没有完美排列,我必须做各种各样的清理工作

![](output_wiht_attirbutes.png)

边缘最终也是锯齿状的 - 因为我已将漂亮的直线转换为点云

或者我们使用曲面比较工具 Arc GIS 中提出了类似的方法,但是它与我们的方法遇到了类似的限制。

我正在寻找的是一种使用可变数量的输入自动执行此操作的方法。我愿意使用任何工具来完成这项任务,因为它似乎不应该是一个过程难度

软件?

当我从程序员的角度来看这个问题时,它看起来很直接 - 但我完全不知道如何继续。我假设Stack Overflow是这个问题的正确堆栈交换 - 但如果它应该在其他地方 - 我很乐意将它移到另一个交易所。

我不确定像Mathematica这样的东西(我没有经验)可以处理这种情况,或者python中是否有一些奇特的3D数学库可以根据它们的交互方式来修剪多边形然后给我同位多晶硅的最低价。

在任何情况下,我都愿意尝试任何事情,所以如果您对我可以使用的工具和/或库有所了解请分享!我不得不假设那里有SOMETHING可以处理这种类型的3d几何处理 感谢

修改 因为评论者似乎很困惑我不是要求代码 - 我要求提供方法,库,支持工具,甚至可以执行这些操作的软件包。我打算写软件来做这件事,但是,我希望我不需要拔出我的手册并手工编写所有这些操作。我必须假设有人在那之前处理过类似的事情。

0 个答案:

没有答案