python - 使用 Shapely 在一个方向上扩展矩形多边形,直到它与另一个多边形相交
问题描述
有没有办法在 Shapely 中扩展多边形?我有一个如下所示的场景
我想做的是将水平多边形扩展到垂直多边形。
多边形外部表示如下:
vert_poly.exterior.xy
(array('d', [55.63234329223633, 517.281494140625, 517.281494140625, 55.63234329223633, 55.63234329223633]),
array('d', [632.2301635742188, 632.2301635742188, 647.7040405273438, 647.7040405273438, 632.2301635742188]))
和
hor_poly.exterior.xy
(array('d', [560.3878784179688, 575.0977172851562, 575.0977172851562, 560.3878784179688, 560.3878784179688]),
array('d', [64.83158111572266, 64.83158111572266, 904.9833984375, 904.9833984375, 64.83158111572266]))
使用vert_poly = vert_poly.buffer(vert_poly.distance(hor_poly))
回报
这是正确的方向,但不完全正确。这会在矩形周围创建类似椭圆的形状。但我想要实现的是扩展水平矩形,使其两个端点与垂直矩形相连。
解决方案
通常我会建议过度放大左多边形,调用intersection()
并从返回的点构造新多边形,但是您的问题非常具体,您可以使用坐标。
一般的
假设你的左矩形是(X1,Y1),(X2,Y2)
(左上角/右下角),你的右矩形是(X3,Y3),(X4,Y4)
. 那么扩展的左矩形是(X1,Y1),(X2,Y3)
。
匀称
# let left, right be the given Polygons
extended_left = Polygon( [ left.bounds[:2], (right.bounds[0], left.bounds[1]), \
(right.bounds[0], left.bounds[3]), left.bounds[2:] ] )
推荐阅读
- r - 使用 for 循环或应用函数来分离和求和变量
- .net - .NET 正则表达式前瞻自定义行延续
- github - Heroku Composer 安装后自动设置 APP_KEY 环境变量
- c# - Azure Functions 和 Azure Durable Function 之间有什么区别
- api - 如何在没有预共享密钥的情况下使用 Sony Bravia TV IP Control 进行身份验证
- flutter - WillPopScope:使Android后退按钮弹出实际视图
- python - 当用户在 django rest api 中发布图像时如何调用函数
- java - Java 抽象:抽象类委托抽象与具体类使用通用抽象
- mysql - 有没有办法在nodejs的mysql'insert'查询中动态设置多个值?
- python - `__getattribute__` 和 `__getattr__` 中的错误处理