[GRASS-user] Averaging multiple vector lines

Michael Barton michael.barton at asu.edu
Thu Jun 4 12:36:59 EDT 2009


Try a cumulative path approach perhaps.

Transform each path to a raster path on a separate map.

Buffer each path a bit. You could also do declining value buffers  
(e.g., value=5 near the path, declining to 1 at some distance).

Change all background null values to 0

Add all the paths together.

The result will be a composite, cumulative path such that areas of  
considerable overlap have high values and areas of little or no  
overlap have low values.

Michael
____________________
C. Michael Barton, Professor of Anthropology
Director of Graduate Studies, School of Human Evolution & Social Change
Director, Center for Social Dynamics & Complexity
Arizona State University

Phone: 480-965-6262
Fax: 480-965-7671
www: <www.public.asu.edu/~cmbarton>



On Jun 4, 2009, at 9:00 AM, grass-user-request at lists.osgeo.org wrote:

> Message: 6
> Date: Wed, 3 Jun 2009 21:23:29 -0400
> From: Dwight Needels <needels at translucida.com>
> Subject: [GRASS-user] Averaging multiple vector lines
> To: ?GRASS? <grass-user at lists.osgeo.org>
> Message-ID: <AEF3F9BB-5929-4704-AECB-68D72A827229 at translucida.com>
> Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes
>
> I have a GRASS vector that originated as multiple GPS tracks from
> walking a particular trail segment on several different days. Is there
> a good way to average these lines to get a single line? I want to
> minimize GPS accuracy errors by averaging across multiple days and
> also minimize precision errors (random jumping around on a single day)
> while still maintaining the shape of the trail with all of its twists
> and turns.
>
> I have been able to generate a composite vector by using a combination
> of v.to.rast, r.grow, r.thin, r.to.vect, v.clean, and v.generalize
> method=douglas. This method works pretty well when the lines remain
> close together, but it is very dependent on picking a value for the
> r.grow radius that fills in all of the gaps between the multiple
> tracks. If one track is quite different than the others in even a
> single region of the vector, this requires a relatively large radius
> value. Moreover, the final vector is located about midway between the
> two extremes rather than being weighted toward where the majority of
> tracks fall.
>
> It seems like there would be a way to calculate some sort of sliding
> average of the coordinates that fall within a certain size window,
> perhaps after using v.to.points with a small dmax (5 ft?) to generate
> a fairly dense set of points. Ideally, the calculation window could be
> wider perpendicular to the direction of the line than it is along the
> direction of the line. From day to day tracks are often within 10 to
> 20 ft of each other, but it is not uncommon for two tracks to be 30 ft
> away from each other at some points.
>
> Any ideas?
>
> -Thanks, -Dwight



More information about the grass-user mailing list