GSOC 2012 Vector Layer Generalization

This is a page for the Vector Layer Generalization project by a student from Russia. It contains brief weekly reports, for more detailed description please visit the blog


Evgeniy Pashentsev, Voronezh State University

Project description

The idea is to implement the topology preserving generalization algorithm, integrate on-the-fly generalization into the rendering and make any other possible improvements related to visualization and simplification.

Work plan

1. Implement generalization for a collection of objects keeping their topological relations. The Douglas-Peucker algorithm will be used.
2. Implement the on-the-fly generalization to speed up rendering. According to some tests, a simple distance threshold routine followed by the Douglas-Peucker algorithm shows significant reduction of the rendering time, especially with complex style lines.
3. Look into the render cache realization and find a way to improve it, if possible.
4. Adapt existing feature cache patch to the last QGIS version.

A more specific plan will be here soon.

Weekly report number one

Planned: make first steps of writing topology preserving generalization
Done: written a prototype of the simplification tool for a vector layer
Problems: actually this tool doesn't work as expected yet, but it just needs some debugging
Next week: get it to work

Weekly report number two

Done: continued working on topology preserving simplification
Problems: multipart features, mistakes in segments assembling order
Next week: deal with current problems

Weekly report number three

Done: almost correct topology preserving simplification
Problems: simplification mistakes, too slow, no UI
Next week: make it usable

Weekly report number four

Done: some kind of user interface
Problems: mistakes are still there, also performance is not very good
Next week: fix everything that is possible

Weekly report number five

Done: some refactoring
Problems: refactoring isn't finished yet
Next week: finish the tool

Weekly report number six

Done: refactoring is almost done
Problems: new algorithm should be tested
Next week: finish the tool

Weekly report number seven

Done: fixed some bugs
Problems: new algorithm brought new bugs
Next week: fix the rest, write unit tests