\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} \usepackage[toc,page,title]{appendix} \addbibresource{bib.bib} \usepackage{caption} \usepackage{subcaption} \usepackage{gensymb} \usepackage{varwidth} \usepackage{tabularx} \usepackage{float} \usepackage{tikz} \usepackage{minted} \usetikzlibrary{er,positioning} \definecolor{mypurple}{RGB}{117,112,179} \input{version} \newcommand{\DP}{Douglas \& Peucker} \newcommand{\VW}{Visvalingam--Whyatt} \newcommand{\WM}{Wang--M{\"u}ller} \title{ \includegraphics[width=60mm]{vu.png}\\[8ex] Cartographic Generalization of Lines using free software \\ (example of rivers) \\ \vspace{4mm} } \author{Motiejus Jakštys} \date{ \VCDescribe } \begin{document} \maketitle \begin{abstract} \label{sec:abstract} Current open-source line generalization solutions have their roots in mathematics and geometry, and are not fit for natural objects like rivers and coastlines. This paper discusses our implementation of {\WM} algorithm under and open-source license, explains things that we would had appreciated in the original paper and compares our results to different generalization algorithms. \end{abstract} \newpage \tableofcontents \listoffigures \newpage \section{Introduction} \label{sec:introduction} When creating small-scale maps, often the detail of the data source is greater than desired for the map. This becomes especially acute for natural features that have many bends, like coastlines, rivers and forest boundaries. To create a small-scale map from a large-scale data source, these features need to be generalized: detail should be reduced. However, while doing so, it is important to preserve the "defining" shape of the original feature, otherwise the result will look unrealistic. For example, if a river is nearly straight, it should be nearly straight after generalization, otherwise a too straightened river will look like a canal. Conversely, if the river is highly wiggly, the number of bends should be reduced, but not removed. Generalization problem for other objects can often be solved by other non-geometric means: \begin{itemize} \item Towns and cities can be filtered and generalized by number of inhabitants. \item Roads can be eliminated by the road length, number of lanes, or classification of the road (local, regional, international). \end{itemize} Natural line generalization problem can be viewed as having two competing goals: \begin{itemize} \item Reduce detail by removing or simplifying "less important" features. \item Retain enough detail, so the original is still recognize-able. \end{itemize} Given the discussed complexities, a fine line between under-generalization (leaving object as-is) and over-generalization (making a straight line) must be found. Therein lies the complexity of generalization algorithms: all have different trade-offs. \section{Literature review} \label{sec:literature-review} A number of cartographic line generalization algorithms have been researched. The "classical" ones are {\DP} and {\VW}. \subsection{{\DP} and {\VW}} \cite{douglas1973algorithms} and \cite{visvalingam1993line} are "classical" line generalization computer graphics algorithms. They are relatively simple to implement, require few runtime resources. Both of them accept only a single parameter, which makes them very simple to adjust for different scales. However, both of them are emitting insufficient \subsection{Modern approaches} After {\DP} and {\VW} have been established, 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 cartographic result. E.g. \cite{jiang2003line}, \cite{dyken2009simultaneous}, \cite{mustafa2006dynamic}, \cite{nollenburg2008morphing}. \end{itemize} During research for the mentioned articles, prototype code has been written for most of the algorithms. However, none of them seem to be available for use except for the two "classical" ones -- {\DP} and {\VW}. \cite{wang1998line} is an algorithm specifically created for cartographic generalization and available for general use, though it is only currently available in a commercial product. This poses a problem for map creation in open source software: there is not a similar high-quality simplification algorithm to create down-scaled maps, so any cartographic work, which uses line generalization as part of its processing, will be of sub-par quality. We believe that availability of high-quality open-source tools is an important foundation for future cartographic experimentation and development, thus it it benefits the cartographic society as a whole. This paper will be reviewing and comparing two widely available algorithms that are often used for line generalization: \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} Since both algorithms produce jaggy output lines, it is worthwhile to process those through a widely available \cite{chaikin1974algorithm} smoothing algorithm via \href{https://postgis.net/docs/ST_ChaikinSmoothing.html}{PostGIS ChaikinSmoothing}. \section{Methodology} \label{sec:methodology} \section{Conclusions} \label{sec:conclusions} \section{Related Work and future suggestions} \label{sec:related_work} \printbibliography \begin{appendices} \section{Code listings} We strongly believe ability to reproduce the results is critical for any scientific work. To make it possible for this algorithm, all source files and accompanying scripts have been attached to the PDF. To preview the code listings and re-generate this document, run this simple script: \inputminted[fontsize=\small]{bash}{extract-and-generate} A reasonably up-to-date Linux or OS X system with a working Docker installation is required to re-generate this document. \end{appendices} \end{document}