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

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()
相关推荐
passer__jw7671 小时前
【LeetCode】【算法】3. 无重复字符的最长子串
算法·leetcode
passer__jw7671 小时前
【LeetCode】【算法】21. 合并两个有序链表
算法·leetcode·链表
sweetheart7-71 小时前
LeetCode22. 括号生成(2024冬季每日一题 2)
算法·深度优先·力扣·dfs·左右括号匹配
小于小于大橙子2 小时前
视觉SLAM数学基础
人工智能·数码相机·自动化·自动驾驶·几何学
景鹤4 小时前
【算法】递归+回溯+剪枝:78.子集
算法·机器学习·剪枝
_OLi_4 小时前
力扣 LeetCode 704. 二分查找(Day1:数组)
算法·leetcode·职场和发展
丶Darling.4 小时前
Day40 | 动态规划 :完全背包应用 组合总和IV(类比爬楼梯)
c++·算法·动态规划·记忆化搜索·回溯
风影小子4 小时前
IO作业5
算法
奶味少女酱~4 小时前
常用的c++特性-->day02
开发语言·c++·算法
passer__jw7675 小时前
【LeetCode】【算法】11. 盛最多水的容器
算法·leetcode