\documentclass[a4paper]{article}

\iffalse
\usepackage[L7x,T1]{fontenc}
\usepackage[lithuanian]{babel}
\else
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\fi

\usepackage[utf8]{inputenc}
\usepackage{a4wide}
\usepackage{csquotes}
\usepackage[maxbibnames=99,style=authoryear]{biblatex}
\usepackage[pdfusetitle]{hyperref}
\usepackage{enumitem}
\addbibresource{bib.bib}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{gensymb}
\usepackage{varwidth}
\usepackage{tabularx}
\usepackage{float}
\usepackage{tikz}
\usetikzlibrary{er,positioning}
\input{version}

\newcommand{\DP}{Douglas \& Peucker}
\newcommand{\VW}{Visvalingam--Whyatt}
\newcommand{\WM}{Wang--M{\"u}ller}

\title{
    Cartografic Generalization of Lines \\
    (example of rivers) \\ \vspace{4mm}
}

\iffalse
https://bost.ocks.org/mike/simplify/
http://bl.ocks.org/msbarry/9152218

small scale: 1:XXXXXX
large scale: 1:XXX

a4: 210x297mm
a6: 105x148xmm
a7: 74x105mm
a8: 52x74mm

connect rivers first to a single polylines:
- some algs can preserve connectivity, some not.

ideal hypothesis: mueller algorithm + topology may fully realize cartographic generalization tasks.

what scales and what distances?
\fi

\author{Motiejus Jakštys}

\date{
    \vspace{10mm}
    Version: \VCDescribe \\ \vspace{4mm}
    Generated At: \GeneratedAt
}

\begin{document}
\maketitle

\begin{abstract}
\label{sec:abstract}
Current open-source line generalization solutions have their roots in
mathematics and geometry, thus emit poor cartographic output. Therefore, if one
is using open-source technology to create a small-scale map, downscaled lines
(e.g. rivers) will not be professionally scale-adjusted. This paper explores
line generalization algorithms and suggests one for an avid GIS developer to
implement. Once it is usable from within open-source GIS software (e.g. QGIS or
PostGIS), rivers on these small-scale maps will look professionally downscaled.
\end{abstract}

\newpage

\tableofcontents
\listoffigures

\section{Introduction}
\label{sec:introduction}

Cartographic generalization is one of the key processes of creating small-scale
maps: how can one approximate object features, without losing its main
cartographic properties? The problem is universally challenging across many
geographical entities (\cite{muller1991generalization},
\cite{mcmaster1992generalization}). This paper focuses on line generalization
for natural rivers: which algorithm should be picked when down-scaling a river
map?

We examine readily available open-source algorithms using a concrete
cartographical example, and make a suggestion on which algorithm could be
implemented next.

\section{What's available}

Line generalization algorithms are well studied, but expose deficiencies in
large-scale reduction (\cite{monmonier1986toward}, \cite{mcmaster1993spatial}).
Most of these techniques are based on mathematical shape representation, rather
than cartographic characteristics of the line.

A number of cartographic line generalization algorithms have been researched,
which claim to better process cartographic objects like lines. These fall into
two rough categories:
\begin{itemize}
    \item Cartographic knowledge was encoded to an algorithm (bottom-up
        approach). One among these are \cite{wang1998line}.
    \item Mathematical shape transformation which yields a more
        cartographically suitable down-scaling. E.g. \cite{jiang2003line},
        \cite{dyken2009simultaneous}, \cite{mustafa2006dynamic},
        \cite{nollenburg2008morphing}.
\end{itemize}

During research for the mentioned papers, code has been written for all of the
algorithms above, however, is not to be found in a usable form.
\cite{wang1998line} is available in a commercial product, but the author of
this paper does not have means to try it.

To sum up, this paper will be comparing the following algorithms:
\begin{itemize}
    \item \cite{douglas1973algorithms} via
        \href{https://postgis.net/docs/ST_Simplify.html}{PostGIS Simplify}.

    \item \cite{visvalingam1993line} via
        \href{https://postgis.net/docs/ST_SimplifyVW.html}{PostGIS SimplifyVW}.
\end{itemize}

\section{Visual comparison}

Lakaja and large part of Žeimena (see figure~\ref{fig:zeimena} on
page~\pageref{fig:zeimena}) will be used, because the river exhibits both both
straight and curved shape, is a combination of two curly rivers, and author's
familiarity with the location.

\begin{figure}[H]
    \centering
    \includegraphics[width=148mm]{zeimena-pretty}
    \caption{Lakaja and Žeimena}
    \label{fig:zeimena}
\end{figure}

To visually evaluate the Žeimena sample, examples for {\DP} and {\VW}
were created using the following parameters:

\begin{enumerate}[label=(\Roman*)]
    \item {\DP} tolerance: $tolerance := 125 * 2^n, n = 0,1,...,5$.
    \item {\VW} tolerance: $vwtolerance = tolerance ^ 2$\label{itm:2}.
\end{enumerate}

Parameter~\ref{itm:2} requires explanation. Tolerance for {\DP} is specified in
linear units, in this case, meters. Tolerance for {\VW} is specified in area
units $m^2$. As author was not able to locate formal comparisons between the
two (i.e. how to calculate one tolerance value from the other, so the results
are comparable?), {\DP} tolerance was arbitrarily squared and fed to {\VW}. To
author's eye, this provides comparable and reasonable results, though could be
researched.

As can be observed in table~\ref{tab:dp-vs-vw} on page~\pageref{tab:dp-vs-vw},
both simplication algorithms convert bends to chopped lines. This is especially
visible in tolerances 250 and 500. In a more robust simplification algorithm,
the larger tolerance, the larger the bends on the original map should be
retained.

\begin{figure}[H]
    \renewcommand{\tabularxcolumn}[1]{>{\center\small}m{#1}}
    \begin{tabularx}{\textwidth}{ p{1.5cm} | X | X | }
        Tolerance                                                 &
        Douglas \& Peucker                                        &
        Visvalingam-Whyatt                                        \tabularnewline \hline

        125                                                       &
        \includegraphics[width=\linewidth]{zeimena-douglas-125}           &
        \includegraphics[width=\linewidth]{zeimena-visvalingam-125}       \tabularnewline \hline

        250                                                       &
        \includegraphics[width=.5\linewidth]{zeimena-douglas-250}         &
        \includegraphics[width=.5\linewidth]{zeimena-visvalingam-250}     \tabularnewline \hline

        500                                                       &
        \includegraphics[width=.25\linewidth]{zeimena-douglas-500}        &
        \includegraphics[width=.25\linewidth]{zeimena-visvalingam-500}    \tabularnewline \hline

        1000                                                      &
        \includegraphics[width=.125\linewidth]{zeimena-douglas-1000}      &
        \includegraphics[width=.125\linewidth]{zeimena-visvalingam-1000}  \tabularnewline \hline

        2000                                                      &
        \includegraphics[width=.0625\linewidth]{zeimena-douglas-2000}     &
        \includegraphics[width=.0625\linewidth]{zeimena-visvalingam-2000} \tabularnewline \hline

        4000                                                      &
        \includegraphics[width=.0625\linewidth]{zeimena-douglas-4000}     &
        \includegraphics[width=.0625\linewidth]{zeimena-visvalingam-4000} \tabularnewline \hline
    \end{tabularx}
    \caption{{\DP} and {\VW} side-by-side visual comparison}
    \label{tab:dp-vs-vw}
\end{figure}

To sum up, both {\VW} and {\DP} simplify the lines, but their cartographic
output poorly represents lines and bends. Where to look for better output?

\section{Suggested alternative}
\label{sec:suggested_alternative}

{\WM} observed how professional cartographers are simplifying rivers and encoded it
to an algorithm which can be implemented by a computer.

Imagine there are two small bends close to each other, similar to
figure~\ref{pic:example-bend} on page~\pageref{pic:example-bend}, and one needs
to generalize it. The bends are too large to ignore replace them with a
straight line, but too small to retain both and retain their complexity.

\begin{figure}[h]
    \centering
    \begin{tikzpicture}[xscale=.5]
        \draw (-4,-1) -- (-1, -1);
        \draw (-1,-1) cos (0,0) sin (1,1) cos (2,0) sin (3,-1) cos (4,0) sin (5,1) cos(6,0) sin (7,-1);
        \draw (7,-1) -- (10, -1);
    \end{tikzpicture}
    \caption{Example river bend that should be generalized}
    \label{pic:example-bend}
\end{figure}

We would imagine 

\begin{itemize}
    \item Describe algorithm by {\WM}.
    \item Explain how outputs will differ.
    \item Explain implementation plan?
\end{itemize}

\section{Related Work and future suggestions}
\label{sec:related_work}

\cite{stanislawski2012automated} studied different types of metric assessments,
such as Hausdorff distance, segment length, vector shift, surface displacement,
and tortuosity for the generalization of linear geographic elements. This
research can provide references to the appropriate settings of the line
generalization parameters for the maps at various scales.

As noted in parameter~\ref{itm:2} on page~\pageref{itm:2}, it would be useful
to have a formula mapping {\DP} tolerance to {\VW}. That way, visual
comparisons between line simplification algorithms could be more objective.

\section{Conclusions}
\label{sec:conclusions}

We have practically evaluated two readily available line simplification
algorithms with a river sample: {\VW} and {\DP}, and outlined their
deficiencies. We are suggesting to implement {\WM} and compare it to the other
two.

\printbibliography

\end{document}
