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

2024-09-24 06:31:33 发布

您现在位置:Python中文网/ 问答频道 /正文

最低/最高结合面

我正在寻找一种方法(和/或最好的软件方法),以创建我所说的最低(或最高)组合曲面的一组多边形。你知道吗

所以如果我们的输入是这两个部分重叠并且绝对相交的多边形 enter image description here

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

![](threePoly.png)

给定多个“曲面”(3d多边形)

我们已经经历了各种各样的方法,我们能想出的最佳解决方案包括对每个多边形应用点网格,并执行计算以返回每个网格位置的最低点集。问题是,在这种方法中,原始几何图形丢失了,这并不能给我们一个有效的解决方案。你知道吗

背景

我正在研究各种各样的“曲面”,它们可以用3d面(cad语言)或多边形表示,并且通常分布在一个shapefile(.shp)中。当有两个曲面相互作用时,我感兴趣的是取最低组合曲面或最高组合曲面。我可以在CAD中通过手动跟踪交互区域的新多边形来实现这一点,但一旦我进入了多个曲面,这就变得过于劳动密集了。你知道吗

当前方法

我目前的方法是从1m网格上的每个曲面生成一个点云,然后对这些点进行基于网格单元的比较。你知道吗

为此,我使用AutoCAD Civl 3D的曲面生成工具从每个多边形曲面创建三角网,然后使用其曲面。然后将其导出为1m DEM文件,我认为这是一种网格化的输出格式。你知道吗

接下来,将每个DEM文件放入全局映射器中,在每个“高程网格单元”的中心生成一个点。接下来,这些数据被导出到一个.csv文件中,其中每个点都包含各种属性,例如这个点来自的曲面的名称以及它的海拔高度

下一步,一旦我有了一组CSV文件,我就通过一个python脚本来运行它们,这个脚本将导出每个网格的最低点(和相关属性)。我在UTM中做任何事情,因为UTM网格是基于米的,它使一切变得更容易。你知道吗

最后,我们把点文件带回全局映射器-着色的每个点从什么表面开始。你知道吗

这种方法有各种各样的问题-有时事情并不完美地排成一行,我必须做各种各样的清理工作

![](output_wiht_attirbutes.png)

而且边缘最终会锯齿状-因为我已经将漂亮的直线转换为点云

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

我要找的是一种方法,可以通过可变数量的输入自动完成这项工作。我愿意使用任何工具来完成这项工作,因为这似乎不是一个太难的过程

软件?你知道吗

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

我不确定像Mathematica这样的东西(我没有任何经验)是否可以处理这种情况,或者python中是否有一些花哨的3d数学库,可以通过多边形的交互方式将多边形切碎,然后给出位于同一位置的多边形的最低值。你知道吗

在任何情况下,我愿意尝试任何东西,所以请如果你有什么样的工具和/或库,我可以用来做这个想法请分享!我不得不假设有什么东西可以处理这种类型的三维几何处理 谢谢

编辑 因为评论者看起来很困惑,所以我不是要代码——我要的是方法、库、支持工具,甚至是可以执行这些操作的软件包。我计划写一个软件来做这个,但是,我希望我不需要拿出我的trig书来手工编写所有这些操作。我必须假设有人曾经处理过类似的事情。你知道吗


Tags: 文件工具方法脚本网格属性软件解决方案