How does this program work in practice? Figure 1 is the result of applying the Spaghetti Machine to a 256 by 256 pixel classified scene, and not smoothing. There are 204 strings containing a total of 5125 vertices.
The alternate approach to the algorithm developed here is the thinning algorithm used by ARC/INFO GIS system. Here follows a pseudo-code description of this algorithm :-
const tolerance = 0.707; procedure thin( startPoint, endPoint) begin construct a line from the startPoint to the endPoint; Find the point on the string between startPoint and endPoint that is furthest from the constructed line; If distance from line to furthest point < tolerance Then output startpoint; Else Begin thin( startPoint, furthestPoint); thin( furthestPoint, endPoint); End; end; begin {main program} while more strings do begin read string. thin( startPoint, lastPoint); output lastPoint; end; end.
Figure 2 is the result of applying the standard ARC/INFO thinning algorithm, with the tolerance set to 0.707. There are 204 strings containing a total of 3401 vertices.
Figure 3 is the result of using the smoothing algorithm described in Chapters 4 and 5. There are 204 strings containing a total of 2766 vertices.
Previous | Next | Contents |