将vtk自相交多数据从重复点分离成多个多边形?

2024-01-07

从 vtk 自相交多数据中,我想将其分成多个多边形。

请注意,可以从形成多边形的点列表中的重复点检测初始多边形中的交点。

从 wget 获取测试文件https://thredds-su.ipsl.fr/thredds/fileServer/ipsl_thredds/brocksce/tmp/poly_11.vtk https://thredds-su.ipsl.fr/thredds/fileServer/ipsl_thredds/brocksce/tmp/poly_11.vtk

then

import pyvista as pv

a = pv.read('poly_11.vtk')

pl = pv.Plotter()
pl.add_mesh(a)
viewer = pl.show(jupyter_backend='trame', return_viewer=True)
display(viewer)

事实上,我想按照 matplotlib 路径结构的要求逆时针描述它的坐标。

解决方案可能是将多数据分成 2 个凸多边形,然后根据需要使用 shapely orient 函数(https://shapely.readthedocs.io/en/stable/manual.html?highlight=orient#shapely.geometry.polygon.orient https://shapely.readthedocs.io/en/stable/manual.html?highlight=orient#shapely.geometry.polygon.orient).

那么如何从这组线(polydata)中得到2个凸多边形呢?


这是一个解决方案。

对于每个单元格,查找重复点并提取多边形。

import numpy as np
import vtk
import pyvista as pv
import random

input_file_name = "poly_07.vtk"
reader = vtk.vtkPolyDataReader()
reader.SetFileName(input_file_name)
reader.Update()

p = reader.GetOutput()
print("Number of cells: ", p.GetNumberOfCells())

polys = []
for cellIndex in range(p.GetNumberOfCells()):

    c = p.GetCell(cellIndex)
    print("-- Cell #%d Number of points: %d"  %(cellIndex, c.GetNumberOfPoints()))
    
    d = c.GetPointIds()

    ids = []
    for idIndex in range(d.GetNumberOfIds()):
        ids.append(d.GetId(idIndex))
    #print(ids)

    # Find duplicate points
    unique, count = np.unique(ids, return_counts=True)
    dup = unique[count > 1]
    print("---- Duplicate points: ", dup)

    # Extract points between duplicate points
    for id in dup[::-1]:
        select = np.where(ids == id)[0]
        polys.append(ids[select[0]:select[1]+1])
        idsIndices = list(range(select[0],select[1]))
        ids = list(np.delete(ids, idsIndices))

print("Number of polygons: ", len(polys))

# Display the results
pl = pv.Plotter()
for poly in polys:
    points = []
    for id in poly:
        points.append(p.GetPoint(id))
    m1 = pv.MultipleLines(points)
    random_color = "#"+''.join([random.choice('0123456789ABCDEF') for i in range(6)])
    pl.add_mesh(m1, color=random_color, line_width=2)
viewer = pl.show(jupyter_backend='trame', return_viewer=True)
display(viewer)

与poly_07.vtk

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

将vtk自相交多数据从重复点分离成多个多边形? 的相关文章

  • 是否有解决方法可以通过 CoinGecko API 安全检查?

    我在工作中运行我的代码 一切都很顺利 但在不同的网络 家庭 WiFi 上 我不断收到403访问时出错CoinGecko V3 API https www coingecko com api documentations v3 可以观察到 在
  • Django 的内联管理:一个“预填充”字段

    我正在开发我的第一个 Django 项目 我希望用户能够在管理中创建自定义表单 并向其中添加字段当他或她需要它们时 为此 我在我的项目中添加了一个可重用的应用程序 可在 github 上找到 https github com stephen
  • 将html数据解析成python列表进行操作

    我正在尝试读取 html 网站并提取其数据 例如 我想查看公司过去 5 年的 EPS 每股收益 基本上 我可以读入它 并且可以使用 BeautifulSoup 或 html2text 创建一个巨大的文本块 然后我想搜索该文件 我一直在使用
  • Pandas/Google BigQuery:架构不匹配导致上传失败

    我的谷歌表中的架构如下所示 price datetime DATETIME symbol STRING bid open FLOAT bid high FLOAT bid low FLOAT bid close FLOAT ask open
  • 使用 kivy textinput 的 'input_type' 属性的问题

    您好 我在使用 kivy 的文本输入小部件的 input type 属性时遇到问题 问题是我制作了两个自定义文本输入 其中一个称为 StrText 其中设置了 input type text 然后是第二个文本输入 名为 NumText 其
  • 如何使用 Pandas、Numpy 加速 Python 中的嵌套 for 循环逻辑?

    我想检查一下表的字段是否TestProject包含了Client端传入的参数 嵌套for循环很丑陋 有什么高效简单的方法来实现吗 非常感谢您的任何建议 def test parameter a list parameter b list g
  • Pandas Merge (pd.merge) 如何设置索引和连接

    我有两个 pandas 数据框 dfLeft 和 dfRight 以日期作为索引 dfLeft cusip factorL date 2012 01 03 XXXX 4 5 2012 01 03 YYYY 6 2 2012 01 04 XX
  • 如何使用python在一个文件中写入多行

    如果我知道要写多少行 我就知道如何将多行写入一个文件 但是 当我想写多行时 问题就出现了 但是 我不知道它们会是多少 我正在开发一个应用程序 它从网站上抓取并将结果的链接存储在文本文件中 但是 我们不知道它会回复多少行 我的代码现在如下 r
  • 如何通过索引列表从 dask 数据框中选择数据?

    我想根据索引列表从 dask 数据框中选择行 我怎样才能做到这一点 Example 假设我有以下 dask 数据框 dict A 1 2 3 4 5 6 7 B 2 3 4 5 6 7 8 index x1 a2 x3 c4 x5 y6 x
  • 如何使用 pybrain 黑盒优化训练神经网络来处理监督数据集?

    我玩了一下 pybrain 了解如何生成具有自定义架构的神经网络 并使用反向传播算法将它们训练为监督数据集 然而 我对优化算法以及任务 学习代理和环境的概念感到困惑 例如 我将如何实现一个神经网络 例如 1 以使用 pybrain 遗传算法
  • pyspark 将 twitter json 流式传输到 DF

    我正在从事集成工作spark streaming with twitter using pythonAPI 我看到的大多数示例或代码片段和博客是他们从Twitter JSON文件进行最终处理 但根据我的用例 我需要所有字段twitter J
  • Numpy - 根据表示一维的坐标向量的条件替换数组中的值

    我有一个data多维数组 最后一个是距离 另一方面 我有距离向量r 例如 Data np ones 20 30 100 r np linspace 10 50 100 最后 我还有一个临界距离值列表 称为r0 使得 r0 shape Dat
  • Python3 在 DirectX 游戏中移动鼠标

    我正在尝试构建一个在 DirectX 游戏中执行一些操作的脚本 除了移动鼠标之外 我一切都正常 是否有任何可用的模块可以移动鼠标 适用于 Windows python 3 Thanks I used pynput https pypi or
  • import matplotlib.pyplot 给出 AttributeError: 'NoneType' 对象没有属性 'is_interactive'

    我尝试在 Pycharm 控制台中导入 matplotlib pyplt import matplotlib pyplot as plt 然后作为回报我得到 Traceback most recent call last File D Pr
  • 使用特定颜色和抖动在箱形图上绘制数据点

    我有一个plotly graph objects Box图 我显示了箱形 图中的所有点 我需要根据数据的属性为标记着色 如下所示 我还想抖动这些点 下面未显示 Using Box我可以绘制点并抖动它们 但我不认为我可以给它们着色 fig a
  • 如何使用原始 SQL 查询实现搜索功能

    我正在创建一个由 CS50 的网络系列指导的应用程序 这要求我仅使用原始 SQL 查询而不是 ORM 我正在尝试创建一个搜索功能 用户可以在其中查找存储在数据库中的书籍列表 我希望他们能够查询 书籍 表中的 ISBN 标题 作者列 目前 它
  • 如何解决 PDFBox 没有 unicode 映射错误?

    我有一个现有的 PDF 文件 我想使用 python 脚本将其转换为 Excel 文件 目前正在使用PDFBox 但是存在多个类似以下错误 org apache pdfbox pdmodel font PDType0Font toUnico
  • 实现 XGboost 自定义目标函数

    我正在尝试使用 XGboost 实现自定义目标函数 在 R 中 但我也使用 python 所以有关 python 的任何反馈也很好 我创建了一个返回梯度和粗麻布的函数 它工作正常 但是当我尝试运行 xgb train 时它不起作用 然后 我
  • 使用for循环时如何获取前一个元素? [复制]

    这个问题在这里已经有答案了 可能的重复 Python 循环内的上一个和下一个值 https stackoverflow com questions 1011938 python previous and next values inside
  • 模拟pytest中的异常终止

    我的多线程应用程序遇到了一个错误 主线程的任何异常终止 例如 未捕获的异常或某些信号 都会导致其他线程之一死锁 并阻止进程干净退出 我解决了这个问题 但我想添加一个测试来防止回归 但是 我不知道如何在 pytest 中模拟异常终止 如果我只

随机推荐

  • 将 2D NumPy 数组转换为 1D 数组以绘制直方图

    我正在尝试使用 matplotlib 绘制直方图 我需要转换我的单行二维数组 1 2 3 4 shape is 1 4 进入一维数组 1 2 3 4 shape is 4 我怎样才能做到这一点 Adding ravel http docs
  • GHC Haskell 当前的约束系统有什么问题?

    我听说 Haskell 的 损坏 约束系统存在一些问题 从 GHC 7 6 及以下版本开始 它出什么问题了 是否有一个可比的现有系统可以克服这些缺陷 例如 edwardk 和 tekmo 都遇到了麻烦 例如此评论来自 tekmo http
  • Google Api PHP 客户端库

    我正在尝试将 Google API PHP 客户端库用于 Google Analytic v3 我可以运行我在家里编写的简单应用程序 但是当我在办公室尝试时它不起作用 当我运行该程序时 系统会要求我将 php 应用程序授权给我的谷歌帐户 允
  • 按用户条件在 JSP 中渲染

    我正在尝试创建一个简单的论坛 只是为了掌握 Spring Security 和 MVC 框架 为了简单起见 我有一个 JSP 来查看论坛帖子 如下所示 Title forumPost title br Author forumPost au
  • Java 7 中的 java 流

    我的问题可能太宽泛 答案可能是简单的 否 但我必须问 是否有 Java 8 的等效实现streams https docs oracle com javase 8 docs api java util stream package summ
  • 调整“std::vector”的大小;哪些元素受到影响?

    std vector
  • 使用 jquery 在 iframe 中动态显示 javascript google 广告的问题

    我们尝试在动态添加的 iframe 中显示 Google 广告 在 iframe 中 src 字段通常是一个 url 但我们希望使用 data text html 格式以便能够直接使用我们的广告代码 它适用于简单的 JavaScript 代
  • 在 Firefox 中通过 URL 进行 HTTP 基本身份验证不起作用?

    我知道通常您可以通过在 URL 中传递用户名和密码来登录需要使用 Selenium 进行 HTTP 基本身份验证的网站 例如 selenium open http myusername email protected cdn cgi l e
  • 复合键字典

    我在列表中有一些对象 比方说List
  • git stash create 和 git stash store 的目的是什么?

    从文档中git scm http git scm com docs git stash 有两个 git stash 命令提到了与脚本编写的相关性 但不是一般用途 create 创建一个存储 这是一个常规提交对象 并返回其对象名称 而不将其存
  • 获取两个日期之间的日期列表未正确返回 JS

    我有一个开始日期和一个结束日期 我想生成这两个日期之间 并包括 的日期列表 但我不明白为什么它不起作用 我传入了几个 JS 日期对象 我已经在下面的控制台中展示了它们记录的内容 function dateList dateStart dat
  • 使用内置 python ssl 模块验证签名

    有没有办法使用内置的ssl验证签名的模块 从理论上讲 这似乎是可能的 因为ssl必须能够验证 ssl 消息签名 但我没有看到任何用于进行简单数字签名验证的公共接口 最终 我只是想要一个类似的功能PyOpenSSL 之一 http www p
  • iOS MVC - 如何将数据从模型传递到控制器?

    我对此做了很多研究 但我对我的问题有一个心理障碍 我正在为 iOS 应用程序开发 Objective C 这是我的设置 视图控制器从视图 用户输入 获取文本 并将该文本传递给模型的 MethodA 模型中的方法适用于输入文本并获取输出 例如
  • 在每个浏览器中加载 html5shiv 是否有任何副作用?

    On the html5shiv谷歌代码页 http code google com p html5shiv 示例用法包括 IE 条件 然而关于html5shivgithub页面 https github com aFarkas html5
  • 如何等待按键?

    如何让我的 python 脚本等待用户按下任意键 In Python 3 use input input Press Enter to continue In Python 2 use raw input raw input Press E
  • C++ 中继承(无虚拟性)的运行时成本?

    在使用 O3 编译的 C 中 没有虚拟性的继承是否会产生以下成本 执行时间处理时间 memory 如果答案是肯定的 为什么 例如 MyClass1 和 MyClass2 在性能和内存方面等效吗 执行时间处理时间 属于什么 函数是静态解析的
  • 将 Xcode 7.3.1 与 iOS 10.1 (14B67) 设备结合使用

    我在用着Xcode 7 3 1 7D1014 我想在 iPhone 7 plus 上安装我的应用程序iOS 10 14B67 我有10 0 14A345 Xcode 8 中的文件夹Xcode app Contents Developer P
  • .net core,n层应用程序,服务层是否应该依赖于Microsoft.Extensions.Options.dll

    简单的问题是 Microsoft Extensions Options IOptions 是否只能在伞式应用程序 本例中为 Web 应用程序 上下文中使用 或者也可以在类库中使用 Example 在一个 n 层的 ASP NET Core
  • 使 NSTimer 失效

    我有 4 个NSTimers我的应用程序中的对象 每隔几秒就向休息 URL 发出请求 单击特定的button我想停止计时器 以便它停止轮询并单击另一个计时器button我想恢复投票 我努力了invalidate适用于所有计时器 但不起作用
  • 将vtk自相交多数据从重复点分离成多个多边形?

    从 vtk 自相交多数据中 我想将其分成多个多边形 请注意 可以从形成多边形的点列表中的重复点检测初始多边形中的交点 从 wget 获取测试文件https thredds su ipsl fr thredds fileServer ipsl