我有一个包含市区的shapefile,但是不幸的是,shapefile仅包含单行。shapefile如下所示:
我想将这些线转换为QGIS中的区域多边形shapefile。我使用“到多边形的线”工具(“矢量”>“几何工具”>“到多边形的线”)进行了尝试,但无法正常工作。使用此工具后,shapefile如下所示:
还有其他方法可以将线shapefile转换为QGIS中的区域多边形shapefile吗?
顺便说一句,我正在使用QGIS 2.14.3 Essen。
我有一个包含市区的shapefile,但是不幸的是,shapefile仅包含单行。shapefile如下所示:
我想将这些线转换为QGIS中的区域多边形shapefile。我使用“到多边形的线”工具(“矢量”>“几何工具”>“到多边形的线”)进行了尝试,但无法正常工作。使用此工具后,shapefile如下所示:
还有其他方法可以将线shapefile转换为QGIS中的区域多边形shapefile吗?
顺便说一句,我正在使用QGIS 2.14.3 Essen。
Answers:
在Polygonize
从处理工具箱中的工具仍然工作正常,我就简单的线条:
但是,线必须相交或共享公共顶点。而且线条应该没有自相交。
您可能需要捕捉角顶点以使其起作用。我通常将顶点的捕捉公差设置为10像素。
如果找不到该Polygonize
工具,则只是一个提示。在我的QGIS 2.18.3安装(Windows)中,无法在“工具箱”中找到该Polygonize
工具Vector geometry tools
。我花了一些时间才意识到我需要python-shapely
使用OSGeo4W 安装该库(感谢Nick Hopton:QGIS中的Perfect Polygons)。
如果没有孔,我将创建一个具有一个足以覆盖整个区域的多边形的临时图层。然后,将其与您的线到多边形结果相交,并在必要时将其进一步拆分。
在QGIS 2.18和QGIS 3.4上测试
我可以建议使用"Virtual Layer"
通过Layer > Add Layer > Add/Edit Virtual Layer...
。
假设我们在中有五个线要素"lines"
,请参见下图。
通过以下查询,可以实现结果。
SELECT l.id, l.NAME, MakePolygon(AddPoint(l.geometry,StartPoint(l.geometry)))
FROM lines AS l
GROUP BY l.id
输出的虚拟层看起来像
如@AndreJ所提到的,这些线应相交或共享共同的顶点。而且线条应该没有自相交。关于清理层的拓扑,我建议您探索v.clean
GRASS工具集。
如果线条具有自相交,则可以将ConvexHull与以下查询一起使用
SELECT l.id, l.NAME, ConvexHull(AddPoint(l.geometry,StartPoint(l.geometry)))
FROM lines AS l
GROUP BY l.id
参考文献: