确定线段是否与多边形相交

2024-04-22

如果我在 2D 平面上有一个向量(由 2 个点组成的线),我如何确定它是否穿过多边形?

我知道我可以采用构成多边形的每条线并查看是否有相交,但有更好的方法吗?

我读过这篇文章如何确定 2D 点是否在多边形内? https://stackoverflow.com/questions/217578/point-in-polygon-aka-hit-test这给了我一些关于查看该点是否在多边形内的想法,但我需要查看它是否已经经过/相交。


如果你想要一个用于几何运算的Python库,请看看shapely https://github.com/Toblerity/Shapely。它使这变得简单someline.intersects(somepolygon).

这是一个交叉点、缓冲区和裁剪的快速示例(有一个很好的图......我正在使用descartes http://pypi.python.org/pypi/descartes轻松地将形状良好的多边形转换为 matplotlib 补丁。)。

import numpy as np
import matplotlib.pyplot as plt
import shapely.geometry
import descartes

circle = shapely.geometry.Point(5.0, 0.0).buffer(10.0)
clip_poly = shapely.geometry.Polygon([[-9.5, -2], [2, 2], [3, 4], [-1, 3]])
clipped_shape = circle.difference(clip_poly)

line = shapely.geometry.LineString([[-10, -5], [15, 5]])
line2 = shapely.geometry.LineString([[-10, -5], [-5, 0], [2, 3]])

print 'Blue line intersects clipped shape:', line.intersects(clipped_shape)
print 'Green line intersects clipped shape:', line2.intersects(clipped_shape)

fig = plt.figure()
ax = fig.add_subplot(111)

ax.plot(*np.array(line).T, color='blue', linewidth=3, solid_capstyle='round')
ax.plot(*np.array(line2).T, color='green', linewidth=3, solid_capstyle='round')
ax.add_patch(descartes.PolygonPatch(clipped_shape, fc='blue', alpha=0.5))
ax.axis('equal')

plt.show()

这产生:

Blue line intersects clipped shape: True
Green line intersects clipped shape: False
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

确定线段是否与多边形相交 的相关文章

  • 为神经网络打乱两个 numpy 数组

    我有两个 numpy 数组用于输入数据 X 和输出数据 y X np array 2 3 sample 1 x 16 4 dtype float sample 2 x y np array 1 0 sample 1 y 0 1 dtype
  • 安装tensorflow的正确命令

    当尝试在 Anaconda 上安装 Tensorflow 时 我尝试了两种类型的命令 conda install tensorflow gpu工作得很好 然而 当尝试conda install c anaconda tensorflow g
  • 如何在 QTableView 标题中单击鼠标右键单击上下文菜单?

    下面的示例代码 很大程度上受到here http www saltycrane com blog 2007 12 pyqt 43 qtableview qabstracttablemodel 有一个右键单击上下文菜单 当用户单击表中的单元格
  • 区分大小写的实体识别

    我的关键字全部以小写形式存储 例如 折扣耐克鞋 我正在尝试对其执行实体提取 我遇到的问题是 spaCy 在 NER 方面似乎区分大小写 请注意 我不认为这是 spaCy 特有的 当我跑步时 doc nlp u i love nike sho
  • 如何在seaborn热图标签中使用科学计数法?

    我正在尝试在 python 中使用seaborn 获取热图 不幸的是 即使数字非常大 它也没有使用科学记数法 我想知道是否有任何简单的方法可以转换为科学记数法或任何其他合理的格式 这是显示问题的一段代码 import seaborn as
  • Python函数组成

    我尝试使用良好的语法来实现函数组合 这就是我所得到的 from functools import partial class compfunc partial def lshift self y f lambda args kwargs s
  • 如何调试 numpy 掩码

    这个问题与this one https stackoverflow com q 73672739 11004423 我有一个正在尝试矢量化的函数 这是原来的函数 def aspect good angle float planet1 goo
  • 如何在 numpy 数组中查找并保存重复的行?

    我有一个数组 例如 Array 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 1 1 1 2 2 2 我想要输出以下内容的东西 Repeated 1 1 1 2 2 2 保留重复行的数量也可以 例如 Repeated 1 1
  • Pandas如何按时间段过滤DataFrame

    我有一个包含下表的文件 Name AvailableDate totalRemaining 0 X3321 2018 03 14 13 00 00 200 1 X3321 2018 03 14 14 00 00 200 2 X3321 20
  • 如何仅注释堆积条形图的一个类别

    我有一个数据框示例 如下所示 data Date 2021 07 18 2021 07 19 2021 07 20 2021 07 21 2021 07 22 2021 07 23 Invalid NaN 1 1 NaN NaN NaN N
  • 预测测试图像时出现错误 - 无法重塑大小数组

    我正在尝试使用 TensorFlow 和 Keras 在 Python 中进行图像识别 并且我已经关注了下面的博客 https stackabuse com image recognition in python with tensorfl
  • 我可以在 if 语句中使用“as”机制吗

    是否可以使用as in if类似的声明with我们使用的 例如 with open tmp foo r as ofile do something with ofile 这是我的代码 def my list rtrn lst True if
  • 操作错误:尝试在 ubuntu 服务器中写入只读数据库

    我正在使用 FlaskApp 运行mod wsgi and apache2在 Ubuntu 服务器上 我尝试运行烧瓶应用程序localhost成功 然后部署到ubuntu服务器上 但是当我尝试更新数据库时 出现错误 Failed to up
  • 无法将matplotlib安装到pycharm

    我最近开始使用Python速成课程学习Python编程 我陷入困境 因为我无法让 matplotlib 在 pycharm 中工作 我已经安装了pip 我已经通过命令提示符使用 pip 安装了 matplotlib 现在 当我打开 pych
  • 通过新数据更新绘图,而不是在 Jupyter 笔记本中制作新绘图

    我有一些问题 希望你能帮我解决 我需要使用下拉小部件创建交互式绘图 我可以在其中选择并绘制感兴趣的数据 我通过以下方式做到这一点 import plotly graph objects as go import ipywidgets as
  • 在 anaconda 环境下运行 qsub

    我有一个程序 通常在 Linux 的 conda 环境中运行 因为我用它来管理我的库 指令如下 source activate my environment python hello world py 我怎样才能跑你好世界 py在与 PBS
  • 避免“散点/点/蜂群”图中的数据点重叠

    使用绘制点图时matplotlib 我想偏移重叠的数据点以使它们全部可见 例如 如果我有 CategoryA 0 0 3 0 5 CategoryB 5 10 5 5 10 我想要每一个CategoryA 0 数据点并排设置 而不是彼此重叠
  • python 日志记录替代方案 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 蟒蛇记录模块 http docs python org library logging html使用起来
  • 正则表达式 - 匹配不包含字符串的模式

    我对正则表达式很陌生 并且一直在寻找方法来做到这一点 但没有成功 给定一个字符串 我想删除以 abc 开头 以 abc 结尾且中间不包含 abc 的任何模式 如果我做 abc abc abc 它将匹配以 b 开头 以 abc 结尾并且中间包
  • 防止 Ada DLL 中的名称损坏

    有没有一种简单的方法可以防止在创建 Ada DLL 时 Ada 名称被破坏 这是我的 adb 代码 with Ada Text IO package body testDLL is procedure Print Call is begin

随机推荐

  • 在 iPhone 中点击按钮时打开文件对话框

    我做了一个可可应用程序 其中在可可应用程序中使用 NSOpenPanel 控制器点击按钮时打开文件对话框 对于 ipad 应用程序 我们使用 UISplitViewController 我想知道 在 iPhone 中开发应用程序时 点击按钮
  • 如何将引导日期选择器放入我的表单中并在日期参数中包含值?

    我正在使用 bootstrap datepicker js 并且它工作正常 div class well div class input append date div div
  • 问答:我如何知道该月的最后一天是哪一天?

    我试图编写一个自己的时区转换器 我需要一种方法来确定该月的最后一天是哪一天 经过一番研究 我发现了查找闰年的公式 这是一个小小的贡献 但也许我可以为其他人节省 20 分钟的时间来弄清楚并应用它 此代码接受带符号的短月份 索引为 0 0 是一
  • ORACLE Select Distinct 返回许多列,其中

    我有一个看起来像这样的表 NAME Col1 Col2 Col3 Tim 1 2 3 Tim 1 1 2 Tim 2 1 2 Dan 1 2 3 Dan 2 2 1 Dan 2 1 3 我试图创建一个 SELECT 命令 结果如下 NAME
  • R 中的线性插值

    我有一个真实数据的数据集 例如如下所示 Dataset 1 with known data known lt data frame x c 0 6 y c 0 10 20 23 41 39 61 plot known x known y t
  • UIImage 内存未释放 VM:ImageIO_JPEG_DATA?

    我在屏幕上同时有多个水平滚动的集合视图 它们都充满了图像 所有这些图像都通过 Parse api 在后台加载 我正在运行 Instrument 的分配 并且匿名 VM ImageIO JPEG DATA 类别占用了大部分正在使用的内存 应用
  • linux终端动画-延迟打印“帧”的最佳方法(C语言)

    我正在为终端开发一个简单的 pong 克隆 并且需要一种方法来延迟 帧 的打印 我有一个二维数组 screen ROWS COLUMNS 以及打印屏幕的函数 void printScreen int i 0 int j while i lt
  • 与 Matlab 相比,Numpy 加载 csv 太慢

    我发布这个问题是因为我想知道我是否做了一些非常错误的事情才能得到这个结果 我有一个中等大小的 csv 文件 我尝试使用 numpy 来加载它 为了便于说明 我使用 python 创建了该文件 import timeit import num
  • 使用 Angular 5 和 RxJS 观察带有过滤器的数组

    我正在创建一个简单的论坛 我正在寻找过滤帖子 我在 RxJS 中使用 pipe 和 filter 时遇到一些问题 我试图 从内存中检索 api 帖子列表api posts 当与 http get 一起使用时 它返回一个Observable
  • Android appbarlayout 海拔出现在状态栏中

    如何消除状态栏中的高度 如果我在 AppbarLayout 中将 app elevation 设置为 0dp 则标高不再出现在状态栏中 但也不会出现在 AppbarLayout 下方 如何获取 AppbarLayout 下的高度 这是我的意
  • Rails/Devise - 我应该使用 devise 和 rspec 测试什么?

    许多程序员使用 devise 作为他们的身份验证解决方案 我想得到他们的建议 设计已经经过测试 但我想知道是否需要自己测试一些东西 集成 单元 功能测试 以便与我的知识进行标准设计集成 我不熟悉shoulda和cucumber 但我了解一些
  • 在 HTML 中正确对齐图像和文本

    This is the example 我想对齐image与名称并排 但不知何故 图像只是浮得更高一点 有什么帮助吗 UPDATE profile name header background color 006400 font famil
  • NPM5,package-lock.json 与 package.json 有什么区别?

    将NPM更新到版本5后 我发现package lock json包含 package json 的文件 这两个文件有什么区别 有什么优点package lock json package json 文件 列出您的项目所依赖的包 允许您使用语
  • 如何检查 iPhone 上的自定义 url 方案?

    我想在我的应用程序中使用自定义 url 方案 例如调用 navigons mobile navigator 首先 我想检查是否安装了 navigon 或者至少检查自定义 url 方案 navigon 是否已注册 有任何想法吗 多谢 看看 U
  • C 函数堆栈布局

    我有一个看起来像这样的函数 int bof char str char buffer 12 strcpy buffer str return 1 我正在尝试覆盖其返回地址 我发现我可以通过使用来做到这一点 例如 memcpy buffer
  • 使用 DTO 和 BO

    我对 DTO BO 的疑问之一是何时传递 返回 DTO 以及何时传递 返回 BO 我的直觉告诉我始终将 NHibernate 映射到 DTO 而不是 BO 并且始终传递 返回 DTO 然后 每当我需要执行业务逻辑时 我都会将 DTO 转换为
  • 在predict.lm()中使用聚类协方差矩阵

    我正在分析一个数据集 其中数据聚集在多个组 区域中的城镇 中 数据集如下所示 R gt df lt data frame x rnorm 10 y 3 rnorm x groups factor sample c 0 1 10 TRUE R
  • 如何调试 Heroku 请求超时错误

    我如何找出导致 heroku 上 h12 超时错误的原因 它在不同的页面 控制器上随机发生 这是我从日志中得到的错误 Processing by UsersController new as HTML 2013 08 15T13 08 54
  • 使用 script/api 更改组件服务 > COM 安全中的访问权限?

    是否有一个 api 可以更改 COM 安全的访问权限 我需要将新值写入 编辑限制 和 编辑默认值 这些是普通的注册表设置吗 找不到如何设置这些条目 快速答案是是 它们是注册表设置 长答案是否 它们不是simple注册表设置 这些值是二进制的
  • 确定线段是否与多边形相交

    如果我在 2D 平面上有一个向量 由 2 个点组成的线 我如何确定它是否穿过多边形 我知道我可以采用构成多边形的每条线并查看是否有相交 但有更好的方法吗 我读过这篇文章如何确定 2D 点是否在多边形内 https stackoverflow