Bug report #7401
"Add Ring" tool fails with "The inserted Ring is not contained in a feature"
Status: | Closed | ||
---|---|---|---|
Priority: | Normal | ||
Assignee: | Nyall Dawson | ||
Category: | Digitising | ||
Affected QGIS version: | master | Regression?: | No |
Operating System: | Easy fix?: | No | |
Pull Request or Patch supplied: | No | Resolution: | |
Crashes QGIS or corrupts data: | No | Copied to github as #: | 16370 |
Description
I have seen this error a few times. If you map some polygons within QGIS sometimes the add ring tool does not work.
I tried a few things to fix it. Checking the geometry validity, simplifing the polygon, saving out the selection to a new shapefile. All of these failed.
One fix, was to create a brand new shapefile and copy the poly into the new shapefile. Then the add ring tool would work again.
I have the corrupt shapefile attached. If someone can look into what happened to the shapefile and find the link how it was caused by qgis that would be great.
Associated revisions
History
#1 Updated by Giovanni Manghi over 11 years ago
- Subject changed from Add Ring Feature Fails on Mapped Feature using Poly Tool within QGIS to "Add Ring" tool fails with "The inserted Ring is not contained in a feature"
- OS version deleted (
1.8.0) - Operating System deleted (
Lisboa) - Priority changed from Low to Normal
- Category changed from Vectors to Digitising
- Affected QGIS version changed from 1.8.0 to master
- Status info deleted (
?)
It fails also on master, the message is
"The inserted Ring is not contained in a feature"
QGIS validation tools says 0 errors.
#2 Updated by Daniel Vaz over 11 years ago
Hello,
I ran the file command in linux on the attached shapefile and I got it:
Centenary.shp: ESRI Shapefile version 1000 length 2246 type PolygonZ
In the qgsgeometry.cpp:
if ( wkbType() == QGis::WKBPolygon ) { if ( type != GEOS_POLYGON ) return 1; polygonList << mGeos; }
was not evaluated to true, because QGis doesn't handle a WKBPolygonZ.
So, I think this issue need more expert coders.
I can fix it with the following code:
mDirtyWkb = true; exportGeosToWkb();
before the previous piece of code. But it's an ugly HACK.
#3 Updated by Giovanni Manghi over 11 years ago
The issue seems to be that 3d vectors are not well supported. It is OK if working in copy of the attached vector with the Z infos removed.
#4 Updated by Nyall Dawson about 9 years ago
- Assignee set to Nyall Dawson
#5 Updated by Nyall Dawson about 9 years ago
- Status changed from Open to Closed
Fixed in changeset 957d82698d893c4a0e95c0ac887231b26d894bbb.