Для решения задачи был написан модуль для GRASS (shell-скрипт) v.to.averline. Он использует простой алгоритм, описанный здесь.
Параметры модуля:
Код: Выделить всё
GRASS 6.4.2svn (arrows_test):~ > v.to.averline -help
Description:
 Find "average" line(s) of input vector map. Results differ depending on vector type: lines/boundaries or polygons. NOTE: Lines/boundaries must have the same direction.
Keywords:
 vector
Usage:
 v.to.averline input=name output=name [ave_dist=value] [ave_segm=value]
   [--overwrite] [--verbose] [--quiet]
Flags:
 --o   Allow output files to overwrite existing files
 --v   Verbose module output
 --q   Quiet module output
Parameters:
     input   Name of input vector map
    output   Name of output vector map
  ave_dist   Average distance to vectors sampling. Affects the shape of output "average" line.
  ave_segm   Average number of vectors segments. Affects the shape of output "average" line.На заметку: линии/границы должны иметь одинаковое направление.
Примеры:

