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 |