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

使用Shapely计算嵌套矩形接触线段长度的问题求助

问题分析与解决

你的代码错误原因在于:两个矩形的交集是小矩形本身,intersection.boundary.length计算的是小矩形的周长((200+199)*2=798),这并不是两个矩形接触的线段总长度。

要得到正确结果,应该计算两个矩形边界的交集长度,也就是它们共享的边的总长度:

from shapely.geometry import Polygon

big_rect = Polygon([(0,0), (0,600), (800,600), (800,0)])
small_rect = Polygon([(0,0), (0,199), (200,199), (200,0)])

# 获取两个矩形的边界线
big_boundary = big_rect.boundary
small_boundary = small_rect.boundary

# 计算边界的交集(即两个矩形接触的线段)
contact_segments = big_boundary.intersection(small_boundary)

# 计算接触线段的总长度
touch_length = contact_segments.length
print(touch_length)  # 输出 399

原理说明:

  • 大矩形和小矩形共享两条边:从(0,0)到(0,199)的竖边(长度199),以及从(0,0)到(200,0)的横边(长度200),总和为399。
  • 通过计算两个多边形边界的交集,直接得到这些共享线段,再取长度就得到了正确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:10:28