I'm new to Grass.

I would like to reposition a polygon shapefile using ground control points and v.rectify seemed just the perfect tool to do that.

The raster from which the shapefile comes from was georeferenced using wrong control points for the KKJ1 projected coordinate system (EPSG:2391), now I obtained the correct ones and I am trying to find a way to reposition the vector without having to digitize everything again.

After running the command, the vector does move to the desired position, yet the original conformation is not retained and in particular some of the areas "lose" the centroid and become just empty boundaries.

Moreover I noticed that the areas whose centroids had not gone missing in the process, presented wrong attributes when inspected.

I had a look at the output and 3 errors show up (my output is in Italian so the translation might not be exactly the same):

WARNING: Number of incorrect boundaries: 1752
WARNING: Number of centroids out of the area: 139
WARNING: Number of duplicated centroids: 25
  • 1
    Please edit you posting and add which coordinate system/projection you are using and why the original polygons were not properly positioned to better understand your task.
    – markusN
    Apr 26, 2014 at 15:21
  • Done! I'm sorry but it's my first post ever here in StackExchange. thanks for the correction and please let me know if further information are needed - Nicola
    – user29584
    Apr 26, 2014 at 17:43
  • @underdark thank you for editing the post! looks much better - Nicola
    – user29584
    Apr 27, 2014 at 13:39

1 Answer 1


Probably the line/boundary segments are very long which may lead to overlaps when rectifying the map (the same applies to v.proj).

Proposed solution: First use v.split in order to split lines to shorter segments. Then run v.rectify on the output map produced by v.split.

I have added a graphical example to the related GRASS Wiki page on map projections (Section "Important: Have enough vertices in your vector data").

  • 1
    Hi Markus! thanks for the possible solution: I tried v.split setting maximum segment length to 5 meters and then I applied v.rectify, it still doesn't work unfortunately. Yesterday I found a workaround using R and the function AffineTransformation() of the package vec2dtransf, which does the job just fine. Doing it in Grass would actually save some time, but seems that for my files it is not possible
    – user29584
    May 9, 2014 at 11:21

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.