194 lines
6.4 KiB
TeX
194 lines
6.4 KiB
TeX
\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}
|