[GRASS-dev] v.generalize no longer corrupts areas and area attributes

Markus Metz markus.metz.giswork at googlemail.com
Thu Jan 6 13:22:02 EST 2011


Area and area attribute handling of v.generalize is now fixed in r44899.

Vector topology for areas is always maintained: if boundary
modification would result in corrupt topology, the original boundary
is preserved. The method to check for corrupted topology is taken from
v.clean tool=prune. Additionally, area attributes are also preserved
and no longer mixed up.

The -r flag (remove lines shorter than threshold or areas smaller than
threshold) has been removed because lines were removed if they
consisted of less then threshold vertices, even though a line with
only two vertices can have any length, because this is an abuse of the
threshold parameter which is required by the simplification/smoothing
methods and a threshold value that makes sense for
simplification/smoothing does not necessarily make sense for removal
(map units vs. number of points), and because removing small areas is
done by v.clean. Consequently, the type option has been changed from
line,boundary,area to line,boundary only and method = REMOVE_SMALL has
been removed.


test commands for the NC sample database, mapset user1

# grass 7
g.copy vect=boundary_county at PERMANENT,myboundary_county
v.build map=myboundary_county
v.generalize -c input=myboundary_county at user1
output=myboundary_county_simple_7 type=boundary threshold=100.0
method=douglas

# grass 6
v.generalize -c input=boundary_county at PERMANENT
output=myboundary_county_simple_6 type=boundary threshold=100.0
method=douglas

v.generalize in grass 6 reduces the number of areas from 926 to 146,
780 areas disappeared.

Attributes of the few remaining areas are mixed up, e.g. comparing results of
v.what --v -a map=boundary_county at PERMANENT east_north=410000,168000
v.what --v -a map=myboundary_county_simple_7 at user1 east_north=410000,168000
v.what --v -a map=myboundary_county_simple_6 at user1 east_north=410000,168000

reveals that the county "Gaston" has been changed to "New Hanover" by
v.generalize in grass 6 but not grass7.

I would like to see these changes (after some testing) in 6.x because
v.generalize in its current form in 6.x is IMHO unusable for
boundaries.

Markus M


More information about the grass-dev mailing list