问题标签 [shapely]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
19666 浏览

python - 多边形与线的交点 | 蟒蛇匀称

我一直在尝试使用 shapely 来找到一条线和一个多边形的交点,但是我遇到了一些浮点数的问题。

示例代码:

我期望的是两个顶点的列表。

点 1:将在多边形内的点,或在本例中为 (4.0, -2.0000000000000004)。

点 2:[(4.0, -2.0000000000000004), (2.0, -1.1102230246251565e-15)] 和 [(3.0, -3.0), (4.0, -2.0)] 的交点。

但是,我收到的结果是:

我还检查了我正在查看的边缘是否存在交叉点:

如果我将 (4.0, -2.0000000000000004) 替换为 (4.0, -2.000000000000000),则边缘交点将评估为 True。

有没有人对正在发生的事情或我错过了什么有任何想法?谢谢!

在此处输入图像描述

编辑:

我已经使用 shapely 版本 1.12 和 3.3.1、3.3.5、3.3.6、3.3.7 的 geos 进行了测试。

如果有人对我如何在 Windows 上更新 geos 版本感到好奇:

从 GEOS 网站下载了 geos-[version].tar.bz2。使用 Visual Studio 10 Win64 生成器提取文件并在其上运行 CMake。打开 .sln 文件并构建它,然后移动生成的 geos_c.dll 并将其粘贴到 Python 目录中 shapely 安装 geos_c.dll 的位置。

0 投票
2 回答
62528 浏览

python - 多边形相交与匀称的更快方法

我有大量的多边形(~100000),并试图找到一种聪明的方法来计算它们与规则网格单元的相交区域。

目前,我正在使用 shapely(基于它们的角坐标)创建多边形和网格单元。然后,我使用一个简单的 for 循环遍历每个多边形并将其与附近的网格单元格进行比较。

只是一个小例子来说明多边形/网格单元。

(顺便说一句:网格单元的尺寸为 0.25x0.25,多边形最大为 1x1)

实际上,这对于大约 0.003 秒的单个多边形/网格单元组合来说是相当快的。但是,在我的机器上运行大量多边形(每个多边形可能与数十个网格单元相交)大约需要 15 分钟以上(最多 30 分钟以上,具体取决于相交网格单元的数量),这是不可接受的。不幸的是,我不知道如何为多边形相交编写代码以获得重叠区域。你有什么建议吗?有没有比匀称的替代品?

0 投票
1 回答
534 浏览

python - 无法使用 Flask 和 Shapely 在 Heroku 上运行应用程序

我开发了一个需要 Shapely python 库的小应用程序。我通过 .exe 文件将它安装在 Windows 上,因此它会自动将必要的 DLL 文件(geos.dll、geos_c.dll)放在 Python27\Lib\site-packages\shapely\DLLs 中。

当我试图在我的盒子上创建一个 virtualenv 时,我通过 pip 进行了安装,但它没有放置那些 DLL 文件,所以我收到了这个错误:

所以我手动替换了 virtualenv\Lib\site-packages\shapely\DLLs 文件夹中的这 2 个 DLL 文件,并且它起作用了。

现在我正在尝试在 heroku 上部署应用程序,但由于以下错误再次失败:

所以我认为它崩溃是因为那 2 个 DLL 文件不存在。我将这两个文件复制到一个单独的文件夹中并通过 git 推送它们

我在我的应用程序根目录中创建了一个 .profile 文件,以将这两个文件复制到 python 环境

。轮廓

但该应用程序仍然因相同的错误而崩溃。

谁能帮我解决这个问题?

0 投票
2 回答
968 浏览

python - 找不到匀称的 parallel_offset

我正在尝试使用 Shapely parallel_offset,但似乎找不到。我已经包含了示例中的导入,但它就是无法识别parallel_offset.

我得到:

我究竟做错了什么?

0 投票
0 回答
186 浏览

python - trouble with Python's Shapely module in Apache under WSGI on Windows

I’d like to use Python's Shapely in this environment:

  • In a Python 2.6 script implementing a WSGI application
  • Deployed on Windows behind Apache httpd 2.x

Alas, I get this error logged by Apache:

The traceback reveals a problem loading the “geos_c.dll”:

This is thrown immediately upon “import shapely.wkb”, or any other Shapely library that imports shapely.geos.

This has the smell of some sort of “path problem”, but I have fiddled with every possible PATH and PYTHONPATH setting both inside and outside of Apache.

I can repeat this in a diminutive app (not only my larger application), which shows that even loading nothing else, I can trip this error. I’d be willing to post/share my sample code and fragment from my Apache conf... but you’d have to already have some familiarity with Apache and Python WSGI on Windows for it to mean much.

Note that calling similar script (using Shapely) as a CGI (behind Apache) work fine. So this sounds like a DLL loading problem peculiar to Windows+Apache+mod_wsgi. (Not a Shapely or geos_c.dll bug, per se.) However, none of my other Python+WSGI+Window+Apache scripts are having the same problem.

Any advice? Thanks in advance!

0 投票
2 回答
3018 浏览

debian - 如何在 debian raspberry pi 上安装 geos

嗨,我正在尝试在运行 rasbian wheezy 的树莓派上安装 geos,以便我可以在我的 python 脚本中包含 shapely 模块。我尝试使用: git clone git://git.debian.org/git/pkg-grass/geos

这可以正确下载,但是当我尝试运行我的 python 脚本时,它给了我一个回溯错误说 OSError: Could not find library geos_c or load any of its variants ['libgeos_c.so.1', 'libgeos_c.so']

我把地理信息放在错误的地方了吗?有没有一种特殊的方法来构建文件?谢谢你的帮助!

0 投票
1 回答
783 浏览

python - 如何以匀称的方式实现__eq__(python)

我对身材匀称和运算符的使用有疑问==。有一个函数可以测试几何对象的相等性:.equals()。但是==不起作用。

返回真。

然而:

返回 False

我希望能够使用==运算符来检查 aPoint是否已经存在于列表中。一个用例可能是:

据我了解,这不起作用,因为==返回False. 我知道存在in使用该any()函数的替代方法,但我更喜欢in关键字:

__eq__在中实施是否会付出很大的努力shapely/geometry/base.py?您如何看待这种幼稚的实现__eq__

或者

0 投票
1 回答
1841 浏览

python - 寻找椭圆和直线的交点

我试图找到椭圆和直线之间的交点,但似乎无法做到。我尝试了两种方法,一种是通过尝试在下面的代码中找到 LineString 和 LinearRing 之间的交集,但没有从中得到任何可用的值。问题之一是椭圆将始终偏离中心并以小角度或高角度

我也尝试使用 fsolve ,如下例所示,但它找到了错误的交叉点(或者实际上是一个错误的点。

有什么帮助会受到重视吗?

0 投票
1 回答
1215 浏览

python - numpy mgrid 匀称地用于线串坐标

我一直在制作小地图来定位自己使用匀称。

例如:

我发现我是一个糟糕的打字员,而且很难写出长长的坐标列表。

我注意到 numpy mgrid 并想知道是否有一种方法可以使用它来创建任意矩形 xy 网格,然后将 mgrid 转换为形状优美的 LineString 的列表。

网格通常设计为类似于棋盘的东西。然后将网格中的一些水平线缓冲成多边形,然后缓冲垂直线,然后将两个级联合并,我有我的棋盘。然后我采用不同的对角线,将它们与棋盘结合,并从线性环中提取生成的多边形。

随着地图尺寸越来越大,并且不是最好的打字员,我希望有一种方法可以使用 mgrid 来更好地完成我的一些打字工作。

IE。x, y = np.mgrid[:55, :35] # 矩形

这给出了预期的 x 和 y 值。我对如何将这些结果带回 Linestring(s) 的 Nx2 数组作为匀称的列表感到困惑。

提前感谢您的任何指导。克里斯

0 投票
1 回答
2344 浏览

python - 使用底图和笛卡尔绘图不显示 PolygonPatch

我可以像这样绘制一些匀称的缓冲点:

这导致以下情节:

在此处输入图像描述

但是,如果我尝试使用底图绘制这些点,它们不会出现:

在此处输入图像描述

我究竟做错了什么?