shapely中是否有信封类?

12
我发现Java的JTS库中的envelope class非常方便。一个envelope(信封)保存几何图形的最小和最大坐标,有时也被称为bounding box
我想获得一些Shapely点的公共envelope。在JTS中,您可以调用expandToInclude逐点扩大envelope。
由于JTS作为GEOS/shapely的蓝图,我期望在shapely中找到类似的功能,但未能找到(虽然我是新手)。我知道自己做这件事并不难,但我怀疑是否还有更优雅的方法来完成这项任务。你有什么想法吗?
3个回答

26

要创建简单的盒子形状,可以使用 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

8

很抱歉,Shapely中没有envelope类,它依赖于(minx,miny,maxx,maxy)元组。如果您想以同样的JTS风格编程,那么写一个包装这样一个元组的envelope类将会非常简单。

另一个选择:

from shapely.geometry import MultiPoint
print MultiPoint(points).bounds

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)

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

你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - user11717481

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接