【发布时间】:2020-05-06 16:53:35
【问题描述】:
我需要编写一个函数来简化一组段。特别是:
给定一组二维线段(x 和 y 坐标)
- 在重叠(或几乎重叠)段的情况下只保留一个副本
- 对于每个保留的部分,请计算其上有多少重叠。
所以输入将是一大组片段(有很多重叠) 并且输出将是不重叠的段,每个段都有计数。
正如您所见,有些线条看起来更粗,因为有多个重叠。 因此,我只需要没有重叠的骨架,但我需要重叠的信息作为每个输出段的数字。
我不是处理线段和几何问题的专家。 解决此类问题的最有效方法是什么?我正在使用 Matlab,但任何高级语言的代码示例都会有所帮助。谢谢!
编辑 根据要求,这里也是一个示例数据集,您可以从此 google drive 链接获取它 https://drive.google.com/open?id=1r2hkG7gI0qhzfP-Mmn8HzIil1o47Z2nA
输入是包含 276 个电缆段的 csv 输出是一个 csv,包含 58 个电缆段(减少的段)+ 一个额外的列,其中包含保留的每个段的重叠电缆的数量。
输入可以包含更多段。这个想法是减少应该消除平行和相互重叠的电缆,并具有一定的公差。 例如,如果 2 根电缆平行但相距很远,则应将它们都保留。
我不关心公差,如果输出不同也没关系,我只需要一个关于如何有效解决这个问题的想法,因为即使有许多段作为输入,代码也应该运行得很快。
【问题讨论】:
-
请提供一个minimal reproducible example,包括一个简单的示范性输入数据集,以及该数据集的预期输出。图形示例有助于理解,但不能直接回答您的问题。还请先发制人地解决边缘情况 - 例如如果段是共线但不重叠会发生什么? “重叠”的容忍度是多少?你如何衡量这种容忍度?您可以做出哪些假设(例如,段是否总是平行的?)等等...
标签: matlab geometry 2d overlap segment