Vector topology cleaning

From GRASS-Wiki
Revision as of 00:39, 18 July 2014 by Neteler (talk | contribs) (+ link to Intro to vector data model)

Jump to: navigation, search

Cleaning large network datasets

Q: How can I speed up topologial cleaning (v.clean) in GRASS 6 for large network datasets (for example OpenStreetMap data)?

A: The improved v.clean version in GRASS 7 is way faster. Here some hints though:

GRASS 6: When breaking lines it is recommended to

  • split the lines first in smaller segments with v.split using the vertices option. Then,
  • run v.clean with 'tool=break'. After that,
  • use to merge lines again.

GRASS 7: Here this has become much easier. Use v.clean with the -c flag and 'tool=break' and 'type=line'. The 'rmdupl' tool is then automatically added, and the splitting and merging is done internally.

Cleaning patched polygons

Q: How can I patch to fitting area maps with have been digitized separately and correct the topology? I observe that the shared polygon boundaries do not perfectly match... I need to clean topology.

Polygon vector map with topology problems (click to see)

A: You can use v.clean for this.

Tools to consider:

  • snap,bpol,rmdupl,break,rmdupl,rms
  • the threshold (in map units) should be very small

Example (Lat-Long): natural_earth/ne_110m_admin_0_countries.shp out=country_boundaries snap=0.0001 TODO: FIX THIS

Polygon import from SHAPE file

Overlayed polygons after import from SHAPE file (Simple Features

v.clean applied:

Overlayed polygons topologically cleaned. Note the double categories.


  • In recent GRASS GIS versions, snapping thresholds for unclean polygons are suggested to the user when using
  • If the input polygons are supposed to not overlap each other, the number of centroids should be identical to the number of input polygons. If not the case, more topological cleaning is needed.
  • If the input polygons have logical errors, for example when the same landuse polygon is present more than once, this can not be cleaned automatically with or v.clean. You can investigate overlapping areas in the imported vector with 'd.vect type=area layer=2' (only overlapping areas have a category in layer 2 after import).

Q: How about self-intersecting lines and boundaries?

A: In the GRASS GIS topological model self-intersecting lines are allowed, self-intersecting boundaries are not. Self-intersecting lines are ok e.g. for modules, e.g. to represent a bridge of a secondary road over a highway.

Note: There are some modules that do not like self-intersecting lines, e.g with v.buffer problems are expected.

Q: I've imported a shapefile with 6842 input polygons and after importing (with 1e-12 snapping threshold) there are 6800 centroids. Further cleaning does not change the topology. Why?

A: It could be that some of the input polygons are exact duplicates. v.clean can remove them.

Q: Can I ignore the areas without centroids?

A: Yes, these are typically holes in polygons (islands).

See also