IndexError - 具有匀称形状的笛卡尔 PolygonPatch

2024-05-23

我曾经使用 shapely 制作一个圆圈并将其绘制在之前填充的图上。这曾经工作得很好。最近,我收到索引错误。我将代码分解为最简单的操作,但它甚至无法执行最简单的循环。

import descartes
import shapely.geometry as sg
import matplotlib.pyplot as plt

circle = sg.Point((0,0)).buffer(1)

# Plot the cricle
fig = plt.figure()
ax = fig.add_subplot(111)
patch = descartes.PolygonPatch(circle)
ax.add_patch(patch)
plt.show()

以下是我现在遇到的错误。我觉得这可能是新版本与可能发生的事情不匹配。我尝试卸载并重新安装最后一个已知的稳定版本,但这也没有帮助

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
Cell In[20], line 6
      4 fig = plt.figure()
      5 ax = fig.add_subplot(111)
----> 6 patch = descartes.PolygonPatch(circle)
      7 ax.add_patch(patch)
      8 plt.show()

File ~/env/lib/python3.8/site-packages/descartes/patch.py:87, in PolygonPatch(polygon, **kwargs)
     73 def PolygonPatch(polygon, **kwargs):
     74     """Constructs a matplotlib patch from a geometric object
     75 
     76     The `polygon` may be a Shapely or GeoJSON-like object with or without holes.
   (...)
     85 
     86     """
---> 87     return PathPatch(PolygonPath(polygon), **kwargs)

File ~/env/lib/python3.8/site-packages/descartes/patch.py:62, in PolygonPath(polygon)
     58     else:
     59         raise ValueError(
     60             "A polygon or multi-polygon representation is required")
---> 62 vertices = concatenate([
     63     concatenate([asarray(t.exterior)[:, :2]] +
     64                 [asarray(r)[:, :2] for r in t.interiors])
     65     for t in polygon])
     66 codes = concatenate([
     67     concatenate([coding(t.exterior)] +
     68                 [coding(r) for r in t.interiors]) for t in polygon])
     70 return Path(vertices, codes)

File ~/env/lib/python3.8/site-packages/descartes/patch.py:63, in <listcomp>(.0)
     58     else:
     59         raise ValueError(
     60             "A polygon or multi-polygon representation is required")
     62 vertices = concatenate([
---> 63     concatenate([asarray(t.exterior)[:, :2]] +
     64                 [asarray(r)[:, :2] for r in t.interiors])
     65     for t in polygon])
     66 codes = concatenate([
     67     concatenate([coding(t.exterior)] +
     68                 [coding(r) for r in t.interiors]) for t in polygon])
     70 return Path(vertices, codes)

IndexError: too many indices for array: array is 0-dimensional, but 2 were indexed

所以据我所知,这个问题来自于一个破碎的实现shapely within descartes.

我的猜测是shapely改变了它处理多边形外部的方式和descartes根本就没有更新。

我不知道这是否是最好的主意,但我编辑了我的安装descartes直接解决这个问题:

  1. 导航到您的descartes安装并打开patch.py.

  2. 在第 62 行,您应该看到这段代码:

     vertices = concatenate([
     concatenate([asarray(t.exterior)[:, :2]] + [asarray(r)[:, :2] for r in t.interiors])
     for t in polygon])
    

只需改变t.exterior to t.exterior.coords。这有望解决您的问题。

    vertices = concatenate([
    concatenate([asarray(t.exterior.coords)[:, :2]] + [asarray(r)[:, :2] for r in t.interiors])
    for t in polygon])

我正在尝试找到一种方法来提供descartes开发人员提供此反馈。

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

IndexError - 具有匀称形状的笛卡尔 PolygonPatch 的相关文章

  • 熊猫按 n 最大总和分组

    我正在尝试使用groupby nlargest and sum在 Pandas 中一起运行 但在运行时遇到困难 State County Population Alabama a 100 Alabama b 50 Alabama c 40
  • Vimeo API:获取下载所有视频文件的链接列表

    再会 我正在尝试从 Vimeo 帐户获取所有视频文件的列表 直接下载的链接 有没有办法在 1 GET 请求中做到这一点 好的 如果是API限制的话 就100倍 我有硬编码脚本 我在其中发出 12 个 GET 请求 1100 多个视频 根据文
  • 在函数内的 for 循环上使用 tqdm 来检查进度

    我正在使用 for 循环迭代目录树内的一大组文件 这样做时 我想通过控制台中的进度条来监视进度 因此 我决定使用 tqdm 来实现此目的 目前 我的代码如下所示 for dirPath subdirList fileList in tqdm
  • 如何同时运行多个功能[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有以下代码 my func1 my func2 my func3 my func4 my func5 是否可以同时计算函数的数据 而
  • Python 不考虑 distutils.cfg

    我已经尝试了给出的所有内容 并且所有教程都指向相同的方向 即使用 mingw 作为 python 而不是 Visual C 中的编译器 我确实有 Visual C 和 mingw 当我想使用 pip 安装时 问题开始出现 它总是给Unabl
  • Scrapy 文件管道不下载文件

    我的任务是构建一个可以下载所有内容的网络爬虫 pdfs 在给定站点中 Spider 在本地计算机和抓取集线器上运行 由于某种原因 当我运行它时 它只下载一些但不是全部的 pdf 通过查看输出中的项目可以看出这一点JSON 我已经设定MEDI
  • 使用 Pandas 从 csv 文件读取标题信息

    我有一个包含 14 行标题的数据文件 在标头中 有经纬度坐标和时间的元数据 我目前正在使用 pandas read csv filename delimiter header 14 读取文件 但这只是获取数据 我似乎无法获取元数据 有人知道
  • NSUserNotificationCenter.defaultUserNotificationCenter() 使用 PyInstaller 返回 None

    我正在尝试将通知发送到通知中心 Mac OSX 我正在使用 PyObjC 绑定来使用我们的 python 应用程序中的 cocoa api 我正在使用以下代码片段 import Foundation import objc NSUserNo
  • 使用 scikit 时 scipy.sparse 矩阵的缩放问题

    在使用 scikit learn 解决机器学习问题时 我需要在使用 SVM 进行训练之前对 scipy sparse 矩阵进行缩放 但在文档 http scikit learn org stable modules preprocessin
  • 为什么需要设置WORKON_HOME环境变量?

    我已经有一段时间没有使用 python 虚拟环境了 但我也安装了虚拟环境包装器 我的问题是 在文档页面中它说要这样做 export WORKON HOME Envs mkdir p WORKON HOME source usr local
  • 如何从 python 脚本执行 7zip 命令

    我试图了解如何使用 os system 模块来执行 7zip 命令 现在我不想用 Popen 或 subprocess 让事情变得复杂 我已经安装了 7zip 并将 7zip exe 复制到我的用户文件夹中 我只想提取我的测试文件 inst
  • Python 在哪些系统上不使用 IEEE-754 双精度浮点数

    Python 对 IEEE 754 浮点运算进行了各种引用 但不保证1 https docs python org 3 tutorial floatingpoint html 2 https pythondev readthedocs io
  • 使用 ElementTree 在 python 中解析 xml

    我对 python 很陌生 我需要解析一些脏的 xml 文件 这些文件需要先清理 我有以下 python 代码 import arff import xml etree ElementTree import re totstring wit
  • pandas groupby 操作缺少数据

    在 pandas 数据框中 我有一列如下所示 0 M 1 E 2 L 3 M 1 4 M 2 5 M 3 6 E 1 7 E 2 8 E 3 9 E 4 10 L 1 11 L 2 12 M 1 a 13 M 1 b 14 M 1 c 15
  • 哪种方式最适合Python工厂注册?

    这是一个关于这些方法中哪一种被认为是最有效的问题 Pythonic 我不是在寻找个人意见 而是在寻找惯用的观点 我的背景不是Python 所以这会对我有帮助 我正在开发一个可扩展的 Python 3 项目 这个想法类似于工厂模式 只不过它是
  • 如何将 URL 添加到 Telegram Bot 的 InlineKeyboardButton

    我想制作一个按钮 可以从 Telegram 聊天中在浏览器中打开 URL 外部超链接 目前 我只开发了可点击的操作按钮 update message reply text Subscribe to us on Facebook and Te
  • 如何检测一个二维数组是否在另一个二维数组内?

    因此 在堆栈溢出成员的帮助下 我得到了以下代码 data needle s which is a png image base64 code goes here decoded data decode base64 f cStringIO
  • 从给定的项目列表创建子列表

    我首先要说的是以下问题不是为了家庭作业目的即使因为我几个月前就完成了软件工程师的工作 无论如何 今天我正在工作 一位朋友向我询问了这个奇怪的排序问题 我有一个包含 1000 行的列表 每行代表一个数字 我想创建 10 个子列表 每个子列表都
  • AWS 将 MQTT 消息存储到 DynamoDB

    我构建了一个定期发送 MQTT 消息的 python 脚本 这是发送到后端的 JSON 字符串 Id 1234 Ut 1488395951 Temp 22 86 Rh 48 24 在后端 我想将 MQTT 消息存储到 DynamoDB 表中
  • 使用 python 将 CSV 文件上传到 Microsoft Azure 存储帐户

    我正在尝试上传一个 csv使用 python 将文件写入 Microsoft Azure 存储帐户 我已经发现C sharp https blogs msdn microsoft com jmstall 2012 08 03 convert

随机推荐