【交点】直线与多边形相交显示

every blog every motto: You can do more than you think.
https://blog.csdn.net/weixin_39190382?type=blog

0. 前言

python 求直线与多边形交点并显示

1. 正文

1.1 步骤

python 复制代码
import matplotlib.pyplot as plt
from shapely.geometry import LineString, Polygon

导入所需的模块和函数:

python 复制代码
import matplotlib.pyplot as plt
from shapely.geometry import LineString, Polygon

创建直线对象和多边形对象:

python 复制代码
line = LineString([(x1, y1), (x2, y2)])
polygon = Polygon([(x3, y3), (x4, y4), ..., (xn, yn)])

提取多边形的边界作为LineString对象:

python 复制代码
boundary = polygon.boundary

计算直线与多边形边界的交点:

python 复制代码
intersection = line.intersection(boundary)

将交点转换为MultiPoint对象(如果有多个交点)或Point对象(如果只有一个交点):

python 复制代码
if intersection.geom_type == 'MultiPoint':
    intersection_points = list(intersection)
else:
    intersection_points = [intersection]

绘制多边形、直线和交点

python 复制代码
fig, ax = plt.subplots()
ax.plot(*boundary.xy, label='Polygon')
ax.plot(*line.xy, label='Line')

for point in intersection_points:
    ax.plot(*point.xy, 'ro', label='Intersection')

ax.legend()
plt.show()

1.2 完整代码

python 复制代码
import matplotlib.pyplot as plt
from shapely.geometry import LineString, Polygon

# 创建直线对象和多边形对象
line = LineString([(0, 0), (3, 5)])
polygon = Polygon([(1, 1), (1, 4), (4, 4), (4, 1)])

# 提取直线的起点和终点坐标以及多边形的边界坐标
line_coords = line.xy
boundary_coords = polygon.boundary.xy

# 计算直线与多边形边界的交点
boundary = polygon.boundary
intersection = line.intersection(boundary)

if intersection.geom_type == 'MultiPoint':
    intersection_points = list(intersection)
else:
    intersection_points = [intersection]

fig, ax = plt.subplots()
ax.plot(*boundary.xy, label='Polygon')
ax.plot(*line.xy, label='Line')

for point in intersection_points:
    ax.plot(*point.xy, 'ro', label='Intersection')

ax.legend()
plt.show()
相关推荐
土司大王5 小时前
LeetCode hot100——对称二叉树
算法·leetcode·职场和发展
sali-tec5 小时前
C# 基于OpenCv的视觉工作流-章106-差值追踪
图像处理·人工智能·opencv·算法·计算机视觉
Navigator_Z5 小时前
LeetCode //C - 1208. Get Equal Substrings Within Budget
c语言·算法·leetcode
手写码匠6 小时前
Dify 多 Agent 工具权限与安全沙箱实战:让智能体“有能力,但不越权“
人工智能·深度学习·算法·aigc
黎阳之光6 小时前
打破堆场感知黑盒:黎阳之光视频孪生,构建港口码头网格化透明管控新体系
大数据·人工智能·算法·安全·数字孪生
大模型码小白6 小时前
AI 对话流性能调优:万级消息的虚拟滚动落地
java·大数据·前端·javascript·人工智能·算法·机器学习
sel_97 小时前
【多轮对话论文导读(三)】多轮对话与Agent论文阅读笔记:用户模拟、轨迹生成与长期记忆
论文阅读·人工智能·笔记·深度学习·算法·机器学习
Asize7 小时前
438. 找到字符串中所有字母异位词
算法
Asize8 小时前
283. 移动零
算法
船厂电气自动化ai大模型9 小时前
AI大模型与数学·第57课 傅里叶全套工具链综合实战:串联级数/连续变换/DFT/FFT,图像、音频、扩散模型完整例题
数据结构·人工智能·深度学习·算法·机器学习