I am currently using symmetrical difference, difference and intersect tools from standard QGis implementation in python (I use pyqgis). I do topological checks ie. if Fc1 is contained within Fc2. Algorithms give good results and pick up even on very slight difference between objects (offset of 0.0001 m etc.), however with massive shapefiles that include complex polygons processing speed is just unbearable. I have been looking at OGR implementation but it seems to have some sort built in tolerance that I can not remove. I do care for the most precise measurements between objects. I did give very quick look at v.overlay but importing shape to grass format put me a bit of. Althought I think that grass format is best for this kind of task it seems that Ill loose some details during conversion. I also had a quick look at SQL geometry tools (OGR +SQL on shapefiles) but I did not notice huge speed improvement. I tried to investigate, why python implementation is so slow, since I found some thread about C++ implementations for above tools that apparently are way faster (someone started C++ implementation but I did not find any finished tools). From what I understand current QGis tools use geos libraries, the same that are used for SQL spatial operations. Its really not possible that those for loops in https://github.com/qgis/QGIS/blob/master/python/plugins/processing/algs/qgis/SymmetricalDifference.py decrease performance so much. I have been working with arc and geomedia, both had much better performance for those operations. Is there a way in open source world to get at least decent processing speed with good accuracy? Can anyone recommend any tools or tell me what I am missing or doing wrong or point towards some geometry guru for advice?

  • I suggest to have a try with OpenJUMP. However, it keeps everything in memory so it may not be the best match for really massive datasets. – user30184 Feb 26 '18 at 22:05
  • Try qgis 3 - many geoemtric operations like this were made MUCH faster in that version. – ndawson Feb 27 '18 at 20:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.