我正在使用QGIS 2.4.0。
#1 楼
尝试在多边形上运行微妙的缓冲区。如果您的CRS是UTM,则将-0.001设置为似乎值得尝试。 VECTOR | BUFFER#2 楼
当我的图层出现错误时,通常会通过“处理工具箱”中的GRASS函数v.clean运行该图层。尽管我从未真正确定哪种工具最适合哪种情况,但通常我会在那儿选择bpol函数。更重要的是,设置捕捉公差和最小面积的高级参数。
根据不同的图层,我通常选择0.1到2米的捕捉距离,例如最小面积为10平方米。
对齐要共享的边界但偏移量很小的边界,最小的区域消除了交点等处的细条。
与bpol一起,通常可以解决所有错误,而无需过多更改拓扑。
#3 楼
您可以在QGIS中直接使用ST_MakeValid,然后添加lwgeom插件,从而将lwgeom提供程序添加到处理工具箱=>您可以直接在加载的图层上应用MakeValid,而无需在postigs / spatialite中进行转换。 br />您必须安装liblwgeom并配置处理程序提供程序以指向它。
lwgeom提供程序可以作为实验性文件:
https://plugins.qgis.org/插件/处理lwgeomprovider /
评论
这可用于QGIS 2.18吗?在我的QGIS版本中似乎不起作用,github.com / faunalia / processinglwgeomprovider
–罗格(RutgerH)
17年6月13日在18:49
只是更新...从那时起,QGIS3.x就具有处理本机的fixgeometry算法,该算法是GEOS lwgeom MakeValid算法的包装。无需数据库。
–路易·倍耐力(Luigi Pirelli)
18年8月28日在15:41
#4 楼
将数据保存到PostGIS中并运行ST_MakeValid可以帮助http://postgis.refractions.net/docs/ST_MakeValid.html。 Spatialite还具有ST_MakeValid,也http://www.gaia-gis.it/gaia-sins/spatialite-sql-latest.html。#5 楼
尽管我知道这个问题是针对QGIS 2的,但是这里有人在寻找QGIS 3的答案吗?处理->工具箱->矢量几何->修复几何
仅出于上下文考虑,我需要在收到以下错误后执行此操作:
Feature (820) has invalid geometry. Please fix the geometry or change the Processing setting to the "Ignore invalid input features" option.
#6 楼
我只是在qgis中遇到了类似的问题。我有一个保利开始错误地投影。正如Bernd建议的那样,我在“处理”工具箱中使用了Grass fuction v.clean。尽管bpol无效,但似乎已使用break函数修复。#7 楼
有一个独立的实用程序可以解决此类问题,我发现它非常可靠。它被安德鲁·威廉姆森(Andrew Williamson)称为Shapechk。可以从以下链接下载:
https://gis.stackexchange.com/a/7824/93912
评论
我尝试了BillW最初建议的“缓冲区”解决方案。它解决了我97%的问题,这对我来说已经足够了。我可以手动完成工作。我相信,在多边形上运行一个小的缓冲区不会对我造成任何问题。但是我看到一些情况,使用ST_MakeValid或尝试使用v.clean可能会更好,更准确。
–巴普
2014年9月5日19:06