I've experienced the same problems you area having in your second method. I exported a Raster to a Vector and try to and use v.generalise and I get mostly smooth polygons with the occasional 'stepped' boundary which appears to have been unaffected by the algorithm.
I found a process that worked for my task, not sure if its the best way but thought i'd share it in case it helped you.
What I started with was an ascii grid from BoM that looked like this:
What I wanted something similar to what BoM produce like this:
I was able to get to an outcome (that I was happy with) using the following steps.
- Load grid (in my case ASCII Grid from BoM) into QGIS.
- Recoded into discrete classes. (Processing Toolbox>Grass>Raster>r.recode)
- Run a majority filter to 'clean up'.(Processing Toolbox>SAGA>Raster Filter>Majority Filter)
- Created contours from the filtered grid at intervals of 1, and stored them in an attribute 'class' (because my classes were 1,2,3,4,etc). (Raster 'Menu'>Extraction>Contour)
- The output contours are somewhat generalised, but I used
v.generalised with the 'snakes' algorithm to smooth them out.(Processing Toolbox>Grass>Vector>v.generalize)
- I then converted the lines to polygon.(Processing Toolbox>QGIS geoalgorithms>Vector Geometry Tools>Lines to Polygons)
- Finally I had to convert the single part polygons into multiple parts, so that all the polygons drew nicely. (Processing Toolbox>QGIS geoalgorithms>Vector Geometry Tools>Singleparts to Mulitpart).
After styling my output is below:
I would also be interested in hearing if someone knows a simpler way. Originally I was thinking similar to @Rx_ that I could just convert my raster to vector then generalise and I would be done. What I had to do was much much longer.