You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用JTS找出线段集合相交形成的多边形?

如何找出线段相交后形成的多边形?

我有一组线段,希望找出这些线段相交后形成的多边形。例如,我有以下两组线段序列:

  • 第一组:(-0.5, 0.5) 至 (0, -0.5) 至 (0, 1) 至 (1, 1) 至 (1, 0) 至 (-0.5, 0)
  • 第二组:(0, 2) 至 (0.5, 0) 至 (1, 2)

需要找出下图中红色箭头标识的4个多边形:
笛卡尔平面线段示意图

具体实现步骤

1. 线段拆分与交点计算

  • 遍历所有线段对,判断每对是否相交(涵盖端点重合、交叉相交等所有情况)
  • 对相交的线段,计算精确交点坐标,将原线段在交点处拆分为子线段,确保所有线段的端点仅为原始端点或交点

2. 构建拓扑边图

  • 将所有端点(原始点、交点)作为图的节点,拆分后的子线段作为连接节点的边
  • 为每条边记录相邻边信息:比如从节点A到节点B的边,需明确在B点可转向的、非当前边反向的所有边

3. 追踪闭合多边形环

  • 选取任意一条未被访问的边作为起点,沿边走到终点后,在终点选择**保持统一转向规则(如始终逆时针)**的下一条未被访问的边
  • 持续追踪路径,直到回到起始点,形成闭合环,这就是一个多边形
  • 标记已访问的边,重复此过程,直到所有边都被访问,即可得到所有闭合多边形

4. 筛选目标多边形(按需操作)

  • 若仅需内部小多边形,可通过多边形面积的方向(逆时针为正、顺时针为负)或包含关系筛选;也可通过面积大小排除外围的大多边形

内容的提问来源于stack exchange,提问作者Mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 23:35:00