\subsection{Polyline simplification} In this chapter several algorithms for polyline simplification will be explained. For each algorithm a short summary of the routine and the runtime complexity will. At the end a comparison will be drawn to determine the method used for benchmarking. %In this chapter the history behind polyline simplification is shown. Several algorithm in the chronological order of their creation will be explained. At the end comparison will be drawn to determine the method used for benchmarking. \paragraph{n-th point algorithm} This algorithm is fairly simplistic. It was described in 1966 by Tobler. The routine is to select every n-th coordinate of the polyline to retain. The larger the value of n is, the greater the simplification will be. %\begin{figure} % \centering % \includegraphics[width=.7\linewidth]{./images/shi-np.png} % \caption{Nth point algorithm} % \label{fig:algo-np} %\end{figure} \paragraph{The Random-point routine} is derived from the n-th point algorithm. It sections the line into parts containing n consecutive positions. From each section a random point is chosen to construnct the simplified line. \todo{O(n)} \paragraph{Radial distance algorithm} Another simple algorithm to reduce points clustered too closely together. The algorithm will sequentially go through the line and eliminate all points whose distance to the current key is shorter than a given tolerance limit. As soon as a point with greater distance is found, it becomes the new key. \todo{O(n)} %\begin{figure} % \centering % \includegraphics[width=.7\linewidth]{../lib/psimpl_v7_src/doc/psimpl_rd.png} % \caption{Radial distance algorithm} % \label{fig:algo-rd} %\end{figure} \paragraph{Perpendicular distance algorithm} Again a tolerance limit is given. The measure to check against is the perpendicular distance of a point to the line connecting its two neighbors. All points that exceed this limit are retained. \todo{O(n)} %\begin{figure} % \centering % \includegraphics[width=.7\linewidth]{../lib/psimpl_v7_src/doc/psimpl_pd.png} % \caption{Perpendicular distance algorithm} % \label{fig:algo-pd} %\end{figure} \paragraph{Reumann-Witkam simplification} As the name implies this algorithm was developed by Reumann and Witkam. In 1974 they described the routine that constructs a "corridor/search area" by placing two parallels line in the direction of its initial tangent. The distance from this segment is user specified. Then the successive points will be checked until a point outside of this area is found. Its predecessor becomes a key and the two points mark the new tangent for the search area. This procedure is repeated until the last point is reached. \todo{O(n)} %\begin{figure} % \centering % \includegraphics[width=.7\linewidth]{../lib/psimpl_v7_src/doc/psimpl_rw.png} % \caption{Reuman-Witkam algorithm} % \label{fig:algo-rw} %\end{figure} \paragraph{The Opheim simplification} Opheim extends the Reumann-Witkam algorithm in 1982 by constraining the search area. To do that two parameters \textsf{dmin} and \textsf{dmax} are given. From the key point on the last point inside a radial distance search region defined by \textsf{dmin} is taken to form the direction of the search corridor. If there is no point inside this region the subsequent point is taken. Then the process from the Reumann-Witkam algorithm is applied with the corridor constrained to a maximum distance of \textsf{dmax}. \todo{O(n)} %\begin{figure} % \centering % \includegraphics[width=.7\linewidth]{../lib/psimpl_v7_src/doc/psimpl_op.png} % \caption{Opheim algorithm} % \label{fig:algo-op} %\end{figure} \paragraph{Lang simplification} Lang described this algorithm in 1969. The search area is defined by a specified number of points too look ahead of the key point. A line is constructed from the key point to the last point in the search area. If the perpendicular distance of all intermediate points to this line is below a tolerance limit, they will be removed and the last point is the new key. Otherwise the search area is shrunk by excluding this last point until the requirement is met or there are no more intermediate points. \todo{O(??) maybe $O(m^n)$} %\begin{figure} % \centering % \includegraphics[width=.7\linewidth]{../lib/psimpl_v7_src/doc/psimpl_la.png} % \caption{Lang algorithm} % \label{fig:algo-la} %\end{figure} %\paragraph{Jenks simplification} \paragraph{Douglas-Peucker simplification} \todo{O(n*m)} %\begin{figure} % \centering % \includegraphics[width=.7\linewidth]{../lib/psimpl_v7_src/doc/psimpl_dp.png} % \caption{Douglas Peucker algorithm} % \label{fig:algo-dp} %\end{figure} \paragraph{with reduction parameter} \todo{O(n*m)} \paragraph{Visvalingam-Whyatt simplification} \paragraph{Zhao-Saalfeld simplification} \subsubsection{Summary}