Bug report #2497
ftools: difference tool (asymmetrical difference) does not work with multipolygon geometries
Status: | Closed | ||
---|---|---|---|
Priority: | High | ||
Assignee: | Alexander Bruy | ||
Category: | Processing/QGIS | ||
Affected QGIS version: | master | Regression?: | |
Operating System: | Easy fix?: | ||
Pull Request or Patch supplied: | No | Resolution: | worksforme |
Crashes QGIS or corrupts data: | No | Copied to github as #: | 12557 |
Description
When trying to make a "difference" operation between polygon layers and both are multipolygon then the following warning is issued
Warnings: GEOS geoprocessing error: One or more input features have invalid geometry. Some output geometries may be missing or invalid.
and the resulting geometry is wrong (empty).
The same happens if the diffence layer is multipart and the input layer singlepart, while otherwise, or with both input/difference layers as singlepart, acceptable results are given and no GEOS error messages are thrown.
In general I would suggest to add a control and don't allow to use multipart geometries in this operation in order to avoid problems.
History
#1 Updated by cfarmer - over 14 years ago
Difference between multipolygon (and multiline) features works ok for me here, could you please attach a test dataset to replicate this error?
-Carson
#2 Updated by Giovanni Manghi over 14 years ago
Hi Carson,
thanks for looking into this.
Yes I can attach the problematic data but not right now: the input vectors were obtained along a geoprocessing exercise and I need to create them again. I'll do it tomorrow.
thanks in advance
#3 Updated by Giovanni Manghi over 14 years ago
Replying to [comment:1 cfarmer]:
Difference between multipolygon (and multiline) features works ok for me here, could you please attach a test dataset to replicate this error?
-Carson
Hi Carson,
here I am again.
So you can test the following shapes:
http://mapserver.uevora.pt/~mapserver/viaria_evora_buffer_shp.zip
http://mapserver.uevora.pt/~mapserver/interdita2_shp.zip
Use the first as input layer and the second as difference layer.
The first one was obtained by buffering a line vector. The second one was obtained by unioning 3 shapes obtained by buffering (2) a line vector and a point vector plus a polygon vector. This line, point and polygon were obtained initially by clipping bigger vectors.
Only ftools was used for this exercise.
#4 Updated by Alexander Bruy over 13 years ago
Samples are not available anymore
#5 Updated by Giovanni Manghi over 13 years ago
I'll give new links asap, not before testing again the problem.
#6 Updated by Giovanni Manghi almost 13 years ago
- Target version changed from Version 1.7.0 to Version 1.7.4
#7 Updated by Paolo Cavallini over 12 years ago
- Affected QGIS version set to master
- Target version changed from Version 1.7.4 to Version 1.8.0
- Crashes QGIS or corrupts data set to No
#8 Updated by Salvatore Larosa over 12 years ago
- Status changed from Open to Feedback
- Pull Request or Patch supplied set to No
Hi Giovanni,
is it replicable still?
#9 Updated by Giovanni Manghi over 12 years ago
- Priority changed from Low to High
- Status info deleted (
0) - Operating System deleted (
All) - Assignee changed from cfarmer - to Alexander Bruy
- Status changed from Feedback to Open
- File inter2_singlepart.zip added
- File test_project.zip added
Salvatore Larosa wrote:
Hi Giovanni,
is it replicable still?
Hi Salvatore,
yes this is still an issue here. I recreated the original sample data and attached here again.
Basically this time I don't get any error message or warning from the console, but the asymmetrical difference between between "buffer_viaria" and "inter2" does not seems to come to and end (the progress bar stay 100% for hours and something is written. Using the symmetrical difference the progress bar stay at 2%). I tested also to create a singlepart version of the "inter2" layer, but the results are similar... and I found also that the result of the multipart to singlepart using "inter2" as input does not return a single part layer at all.
#10 Updated by Jürgen Fischer over 12 years ago
Which GEOS version are you using?
#11 Updated by Salvatore Larosa over 12 years ago
Giovanni, I can confirm the issue only for symdifference tool.
Multi to Single part tool works fine!
How do you generate the inter2 shapefile?
It seems the result of several merge and union operation! is it so?
@Jürgen: GEOS 3.3.3
#12 Updated by Giovanni Manghi over 12 years ago
Jürgen Fischer wrote:
Which GEOS version are you using?
I'm using qgis-master installed from the nightly build repo, the one that uses the ubuntugis packages. I'm on precise 64bit but actually GEOS says it's 3.2.2 Oneiric.
#13 Updated by Giovanni Manghi over 12 years ago
- File 40.png added
Salvatore Larosa wrote:
Giovanni, I can confirm the issue only for symdifference tool.
Multi to Single part tool works fine!
see attached screenshot, seems multipart to me, but I may be wrong.
How do you generate the inter2 shapefile?
It seems the result of several merge and union operation! is it so?
it was obtained by unioning (in two steps)* 3 buffers layers -> a pretty common operation I would say
*) the lack of possibility to do some geoprocessing operations using more than 2 inputs is sometimes frustrating. Would be very useful for real life work.
#14 Updated by Salvatore Larosa over 12 years ago
- File image_2.png added
- File image_1.png added
Giovanni Manghi wrote:
see attached screenshot, seems multipart to me, but I may be wrong.
To me those are 2 Polygons! geometry().wkbType() returns 3 for both! (see attached image 1)
I used your attached sample iter2_single.
Save selection as... and check out! (see attached image 2)
it was obtained by unioning (in two steps)* 3 buffers layers -> a pretty common operation I would say
*) the lack of possibility to do some geoprocessing operations using more than 2 inputs is sometimes frustrating. Would be very useful for real life work.
your operations have created geometry crossed, most likely!
#15 Updated by Giovanni Manghi over 12 years ago
To me those are 2 Polygons! geometry().wkbType() returns 3 for both! (see attached image 1)
ok forget about it, sorry for the noise
your operations have created geometry crossed, most likely!
I don't know exactly what do you mean, but anyway the layer was obtained by unioning 2 polygon layers obtained as buffers from 3 input layers... so nothing fancy. If this ayer is somehow wrong then QGIS should at least warn the user and propose a solution, or better should be able to handle this case, as at the end of the day this is what most of the users do.
cheers!
#16 Updated by Salvatore Larosa over 12 years ago
Sorry, fear of being badly explained!!
I try again with an example (layer section):
selected selected | LAYER 1 ______ ↓ ________ ↓ ___________ | *LAYER inter2_single-| | | LAYER 2 ________________________________________________ | *derived from union/merge/buffer operations
so, LAYER 2 looks as a Multipart instead it is not!
I agree that we need to find a solution to the problem!
Anyway, before the last change in fTools plugin, many tools created duplicated geometries (especially union tool) so you should try again in order to figure out if the problem is in union/merge/buffer operation!
If you can share the inuput data I'll try it!
#17 Updated by Giovanni Manghi over 12 years ago
- File butta.zip added
If you can share the inuput data I'll try it!
thanks for the effort Salvatore!
attached a small project. You will find 4 shapes in two different groups (3+1). Buffer the shapes (say 1000m) and then union the results of the group with 3 shapes and then try to do the difference between the result of the union and the remaining buffer layer.
#18 Updated by Salvatore Larosa over 12 years ago
Done!
everything went well!
I have not encountered major problems, each tool has worked well enough.
Maybe if you can control the end result if it goes well!
here the project: http://lrssvt.ns0.it/butta_2.zip
#19 Updated by Giovanni Manghi over 12 years ago
- Resolution set to worksforme
- Status changed from Open to Closed
Salvatore Larosa wrote:
Done!
everything went well!I have not encountered major problems, each tool has worked well enough.
Maybe if you can control the end result if it goes well!here the project: http://lrssvt.ns0.it/butta_2.zip
pretty strange... it now works :)
I'm bored of this ticket so I'll close it and hope not to need to reopen it again anytime soon! ;)
#20 Updated by Giovanni Manghi over 7 years ago
The "ftools" category is being removed from the tracker, changing the category of this ticket to "Processing/QGIS" to not leave the category orphaned.