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

如何判断Shapely中的LineString是否为复杂(自相交)图形?

判断Shapely LineString是否自相交(复杂图形)

嘿,这个问题Shapely其实已经内置了现成的解决方案,完全不用额外折腾!

核心就是利用LineString对象的is_simple属性:

  • 当is_simple返回True时,说明这条线没有自相交,是简单图形
  • 当返回False时,就表示它存在自相交,属于你说的“复杂图形”

给你举个实际代码例子,一看就懂:

from shapely.geometry import LineString

# 构造一个自相交的线(类似8字形)
intersecting_line = LineString([(0, 0), (2, 2), (0, 2), (2, 0)])
# 构造一条普通的无自相交线
simple_line = LineString([(0, 0), (1, 1), (2, 0)])

# 打印判断结果
print(intersecting_line.is_simple)  # 输出 False,代表自相交
print(simple_line.is_simple)        # 输出 True,代表无自相交

额外提个小技巧:如果还想定位具体的自相交点,可以用intersection方法,比如intersecting_line.intersection(intersecting_line),它会返回所有自相交的点集合,你可以进一步处理这些结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:12:26