如何通过共享区域的平均线串分割两个相交的多边形(QGIS / python整形)


9

我有两个多边形

POLYGON(((-5 -5,-5 5,5 5,5 -5,-5 -5))POLYGON((1 1,1 7,7 7,7 1,1 1))

并希望将它们平均分配。结果应该是沿着红色标记线的拆分。

我正在使用qgis / python并希望使用python来做到这一点。

LINESTRING(1 5,5 1)


4
您的问题有多普遍?显然,您打算将一种解决方案应用于不仅仅是两个多边形。您打算使用哪种多边形?准确地说,“平均”是什么意思?分割必须沿着线段还是可以沿着某些非线性弧线?如果多边形相交由多个组件组成或不简单连接怎么办?输出应采用什么形式-应该分割相交线,每个多边形,还是仅仅是分割线?
ub

1
我正在使用不规则多边形,并且想要有两个不相交的多边形。在这种情况下,如上所述,原始多边形为POLYGON(((-5 -5,-5 5,1 5,5 1,5 -5,-5 -5))POLYGON((1 5,1 7, 7 7,7 1,5 1,1 5))
OLS 2012年

1
当两个多边形中的一个或两个都具有环(即,不是简单连接的)时,此问题就很难解决。
ub

Answers:


5

我曾经对voronoi多边形使用过一种方法。我亲手做的只是对如何匀称地做一个模棱两可的想法,但是事情就是这样。

首先,您提取每个重叠多边形的顶点并从中创建Voronoi多边形(矢量>几何工具>提取节点和矢量>几何工具> vononoi)。使用生成的形状,您可以绘制将重叠区域精确地一分为二的线。(鲜绿色的线) 沃罗诺伊

您用重叠的多边形裁剪voronoi图层,并从原始形状中删除重叠的部分,然后将裁剪后的voronoi多边形粘贴回原始形状。选择,合并,瞧!

现在,它看起来有点粗糙,因为我的确实是简单的形状。但是,您可以对其进行压缩(矢量>几何工具>密度几何),并在每个现有顶点之间添加20个节点,您可以使用以下命令:

densigy_voronoi

哪个更好。如果您只需要修改少量的形状,这很容易。


这是一个好主意。但是,那条鲜绿色的线是从哪里来的?您怎么知道它将区域分成两个相等的部分?
ub

这个过程与SELECT astext(intersection(geomFromText('POLYGON((-5 -5,-5 5,5 5,5 -5,-5 -5))',4326),geomFromText('POLYGON( (1 1,1 7,7 7,7 1,1 1))',4326))); astext -------------------------------- POLYGON((1 5,5 5,5 1,1 1,1 5 )'?
OLS

它来自voronoi多边形的适当性。它在两点之间平均分配空间。这就是为什么您必须使多边形致密,因为否则“中间”线将不遵循边界。至于亮线,我手动绘制它以说明中间位置。至于PostGIS命令(我是PostGIS的新手),我认为它将仅选择相交区域,而不是对其进行划分。
fgcartographix 2012年

1
话虽这么说,但我并不是说那将是平等的一部分。该方法用于查找河流中心线。如果河中有海湾,则中间线将拉向河岸。但它不会进入,因此仍使其“居中”。
fgcartographix 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.