有形状的信封类吗?

lin*_*nqu 9 python geometry jts geos shapely

我发现Java 的 JTS 库中的信封类非常方便。包络包含几何的最小和最大坐标,有时也称为边界框

我想得到许多匀称点的公共包络。在 JTS 中,您可以调用expandToInclude逐点放大包络。

由于 JTS 是 GEOS / shapely的蓝图,我期待在 shapely 上有类似的东西,但找不到它(虽然我是图书馆的新手)。我知道自己做这件事不是火箭科学,但我怀疑没有更优雅的方法来做到这一点。你有什么主意吗?

Mik*_*e T 18

要创建简单的盒子几何图形,有一个box返回矩形多边形的函数:

from shapely.geometry import box
# box(minx, miny, maxx, maxy, ccw=True)
b = box(2, 30, 5, 33)
b.wkt  # POLYGON ((5 30, 5 33, 2 33, 2 30, 5 30))
b.area  # 9.0
Run Code Online (Sandbox Code Playgroud)


sgi*_*ies 6

不,Shapely 中没有信封类,它依赖于 (minx, miny, maxx, maxy) 元组。如果您想以相同的 JTS 风格进行编程,那么编写一个封装此类元组的信封类将是微不足道的。

另外一个选项:

from shapely.geometry import MultiPoint
print MultiPoint(points).bounds
Run Code Online (Sandbox Code Playgroud)


F B*_*aig 5

对于来到这里的任何人来说,我相信shapely Polygon现在就bounds相当于 JTS envelop。以下是官方页面的文档

from shapely.geometry import Polygon
polygon = Polygon([(0, 0), (1, 1), (1, 0)])
polygon.bounds
(0.0, 0.0, 1.0, 1.0)
Run Code Online (Sandbox Code Playgroud)

它的 xy 边界框是一个 (minx, miny, maxx, maxy) 元组。