stud/II/Referatas/mj-referatas.tex

291 lines
11 KiB
TeX
Raw Normal View History

2020-05-25 15:21:43 +03:00
\documentclass[a4paper]{article}
2020-05-26 11:39:18 +03:00
\iffalse
2020-05-21 11:25:14 +03:00
\usepackage[L7x,T1]{fontenc}
2020-05-26 11:39:18 +03:00
\usepackage[lithuanian]{babel}
\else
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\fi
2020-05-21 11:25:14 +03:00
\usepackage[utf8]{inputenc}
2020-05-21 22:01:57 +03:00
\usepackage{a4wide}
2020-05-21 11:25:14 +03:00
\usepackage{csquotes}
\usepackage[maxbibnames=99,style=authoryear]{biblatex}
2020-05-25 15:21:43 +03:00
\usepackage[pdfusetitle]{hyperref}
2020-05-25 17:37:58 +03:00
\usepackage{enumitem}
2020-05-21 11:25:14 +03:00
\addbibresource{bib.bib}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{gensymb}
\usepackage{varwidth}
2020-05-25 12:32:45 +03:00
\usepackage{tabularx}
2020-05-26 09:55:42 +03:00
\usepackage{float}
2020-05-21 11:25:14 +03:00
\usepackage{tikz}
\usetikzlibrary{er,positioning}
2020-05-22 10:19:17 +03:00
\input{version}
2020-05-21 11:25:14 +03:00
2020-05-25 17:37:58 +03:00
\newcommand{\DP}{Douglas \& Peucker}
2020-05-25 18:02:48 +03:00
\newcommand{\VW}{Visvalingam--Whyatt}
2020-05-26 07:42:43 +03:00
\newcommand{\WM}{Wang--M{\"u}ller}
2020-05-25 17:37:58 +03:00
2020-05-21 11:25:14 +03:00
\title{
2020-05-21 11:40:20 +03:00
Cartografic Generalization of Lines \\
(example of rivers) \\ \vspace{4mm}
2020-05-21 11:25:14 +03:00
}
2020-05-21 22:01:57 +03:00
\iffalse
2020-05-25 11:40:16 +03:00
https://bost.ocks.org/mike/simplify/
2020-05-25 14:52:38 +03:00
http://bl.ocks.org/msbarry/9152218
2020-05-25 11:40:16 +03:00
2020-05-22 10:19:17 +03:00
small scale: 1:XXXXXX
large scale: 1:XXX
2020-05-21 22:01:57 +03:00
a4: 210x297mm
a6: 105x148xmm
a7: 74x105mm
a8: 52x74mm
2020-05-22 10:19:17 +03:00
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?
2020-05-26 13:56:26 +03:00
= Intro: Aktualumas
FOSS nėra realizuotas tinkamas kartografinio realizavimo algoritmas (23 sakiniai). Kad kartografai turėtų
įrankį upių generalizavimui.
Bazė: imame tai, ką dabar turi kartografai įrankių paletėj.
Imti mažus upės vingius. Paimti mažas atkarpėles ir palyginti su originalia.
Todėl, kad nėra kilpų.
2020-05-21 22:01:57 +03:00
\fi
2020-05-21 11:25:14 +03:00
\author{Motiejus Jakštys}
2020-05-22 10:19:17 +03:00
\date{
\vspace{10mm}
Version: \VCDescribe \\ \vspace{4mm}
Generated At: \GeneratedAt
}
2020-05-21 11:25:14 +03:00
\begin{document}
\maketitle
2020-05-26 11:39:18 +03:00
\begin{abstract}
2020-05-21 11:25:14 +03:00
\label{sec:abstract}
2020-05-21 16:41:29 +03:00
Current open-source line generalization solutions have their roots in
mathematics and geometry, thus emit poor cartographic output. Therefore, if one
2020-05-25 11:40:16 +03:00
is using open-source technology to create a small-scale map, downscaled lines
2020-05-21 16:41:29 +03:00
(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
2020-05-25 11:40:16 +03:00
PostGIS), rivers on these small-scale maps will look professionally downscaled.
2020-05-26 11:39:18 +03:00
\end{abstract}
\newpage
\tableofcontents
\listoffigures
2020-05-21 11:40:20 +03:00
2020-05-21 11:25:14 +03:00
\section{Introduction}
\label{sec:introduction}
2020-05-25 11:40:16 +03:00
Cartographic generalization is one of the key processes of creating small-scale
2020-05-21 13:31:18 +03:00
maps: how can one approximate object features, without losing its main
2020-05-21 16:41:29 +03:00
cartographic properties? The problem is universally challenging across many
geographical entities (\cite{muller1991generalization},
2020-05-26 11:39:18 +03:00
\cite{mcmaster1992generalization}). This paper focuses on line generalization
for natural rivers: which algorithm should be picked when down-scaling a river
map?
2020-05-21 13:31:18 +03:00
2020-05-26 11:39:18 +03:00
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.
2020-05-21 13:31:18 +03:00
2020-05-25 11:40:16 +03:00
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}
2020-05-26 11:39:18 +03:00
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.
2020-05-25 11:40:16 +03:00
2020-05-26 11:39:18 +03:00
To sum up, this paper will be comparing the following algorithms:
2020-05-25 11:40:16 +03:00
\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}
2020-05-21 13:31:18 +03:00
2020-05-26 11:39:18 +03:00
\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.
2020-05-21 16:41:29 +03:00
2020-05-26 09:55:42 +03:00
\begin{figure}[H]
2020-05-21 16:41:29 +03:00
\centering
2020-05-22 10:19:17 +03:00
\includegraphics[width=148mm]{zeimena-pretty}
\caption{Lakaja and Žeimena}
2020-05-21 18:20:44 +03:00
\label{fig:zeimena}
2020-05-21 16:41:29 +03:00
\end{figure}
2020-05-26 11:39:18 +03:00
To visually evaluate the Žeimena sample, examples for {\DP} and {\VW}
2020-05-25 18:02:48 +03:00
were created using the following parameters:
2020-05-25 17:37:58 +03:00
\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}
2020-05-26 11:39:18 +03:00
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.
2020-05-25 18:02:48 +03:00
2020-05-26 14:17:39 +03:00
As can be observed in table~\ref{tab:comparison-zeimena} on
page~\pageref{tab:comparison-zeimena}, 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.
2020-05-25 18:02:48 +03:00
2020-05-26 09:55:42 +03:00
\begin{figure}[H]
2020-05-25 18:02:48 +03:00
\renewcommand{\tabularxcolumn}[1]{>{\center\small}m{#1}}
2020-05-26 14:07:28 +03:00
\begin{tabularx}{\textwidth}{ p{2.1cm} | X | X | }
Tolerance DP/VW &
Douglas \& Peucker &
Visvalingam-Whyatt \tabularnewline \hline
2020-05-25 18:02:48 +03:00
2020-05-26 14:07:28 +03:00
125/15625 &
2020-05-26 12:11:41 +03:00
\includegraphics[width=\linewidth]{zeimena-douglas-125} &
\includegraphics[width=\linewidth]{zeimena-visvalingam-125} \tabularnewline \hline
2020-05-25 18:02:48 +03:00
2020-05-26 14:07:28 +03:00
250/62500 &
2020-05-26 12:11:41 +03:00
\includegraphics[width=.5\linewidth]{zeimena-douglas-250} &
\includegraphics[width=.5\linewidth]{zeimena-visvalingam-250} \tabularnewline \hline
2020-05-25 18:02:48 +03:00
2020-05-26 14:07:28 +03:00
500/250000 &
2020-05-26 12:11:41 +03:00
\includegraphics[width=.25\linewidth]{zeimena-douglas-500} &
\includegraphics[width=.25\linewidth]{zeimena-visvalingam-500} \tabularnewline \hline
2020-05-25 18:02:48 +03:00
2020-05-26 14:07:28 +03:00
1000/1000000 &
2020-05-26 12:11:41 +03:00
\includegraphics[width=.125\linewidth]{zeimena-douglas-1000} &
\includegraphics[width=.125\linewidth]{zeimena-visvalingam-1000} \tabularnewline \hline
2020-05-25 18:02:48 +03:00
2020-05-26 14:07:28 +03:00
2000/4000000 &
2020-05-26 12:11:41 +03:00
\includegraphics[width=.0625\linewidth]{zeimena-douglas-2000} &
\includegraphics[width=.0625\linewidth]{zeimena-visvalingam-2000} \tabularnewline \hline
2020-05-25 18:02:48 +03:00
2020-05-26 14:07:28 +03:00
4000/16000000 &
2020-05-26 12:11:41 +03:00
\includegraphics[width=.0625\linewidth]{zeimena-douglas-4000} &
\includegraphics[width=.0625\linewidth]{zeimena-visvalingam-4000} \tabularnewline \hline
2020-05-25 18:02:48 +03:00
\end{tabularx}
2020-05-26 14:17:39 +03:00
\caption{{\DP} and {\VW} side-by-side on Žeimena}
\label{tab:comparison-zeimena}
2020-05-25 18:02:48 +03:00
\end{figure}
2020-05-25 12:32:45 +03:00
2020-05-26 14:07:28 +03:00
2020-05-26 11:39:18 +03:00
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?
2020-05-26 13:56:26 +03:00
\subsection{Combining bends}
2020-05-26 07:42:43 +03:00
2020-05-26 13:56:26 +03:00
Consecutive small bends should be combined into larger bends, and that is one
of the least developed aspects of automatic line generalization, according to
\cite{miuller1995generalization}. {\WM} encoded this process to an algorithm.
2020-05-26 11:39:18 +03:00
Imagine there are two small bends close to each other, similar to
figure~\ref{pic:sinewave} on page~\pageref{pic:sinewave}, and one needs
2020-05-26 11:39:18 +03:00
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
2020-05-26 13:56:26 +03:00
\includegraphics[width=52mm]{sinewave}
2020-05-26 11:39:18 +03:00
\caption{Example river bend that should be generalized}
2020-05-26 13:56:26 +03:00
\label{pic:sinewave}
2020-05-26 11:39:18 +03:00
\end{figure}
2020-05-26 13:56:26 +03:00
When one applies {\DP} to figure~\ref{pic:sinewave}, either both bends remain,
2020-05-26 14:17:39 +03:00
or become a straight line, see table~\ref{tab:comparison-sinewave} on
page~\pageref{tab:comparison-sinewave}.
2020-05-26 11:39:18 +03:00
2020-05-26 13:56:26 +03:00
\begin{figure}[h]
2020-05-26 14:17:39 +03:00
\renewcommand{\tabularxcolumn}[1]{>{\center\small}m{#1}}
\begin{tabularx}{\textwidth}{ p{1.5cm} | X | X | }
Tolerance DP/VW &
Douglas \& Peucker &
Visvalingam-Whyatt \tabularnewline \hline
1/1 &
\includegraphics[width=\linewidth]{sinewave-douglas-1} &
\includegraphics[width=\linewidth]{sinewave-visvalingam-1} \tabularnewline \hline
2/4 &
\includegraphics[width=\linewidth]{sinewave-douglas-2} &
\includegraphics[width=\linewidth]{sinewave-visvalingam-2} \tabularnewline \hline
3/9 &
\includegraphics[width=\linewidth]{sinewave-douglas-3} &
\includegraphics[width=\linewidth]{sinewave-visvalingam-3} \tabularnewline \hline
4/16 &
\includegraphics[width=\linewidth]{sinewave-douglas-4} &
\includegraphics[width=\linewidth]{sinewave-visvalingam-4} \tabularnewline \hline
\end{tabularx}
\caption{{\DP} and {\VW} on example wave}
\label{tab:comparison-sinewave}
2020-05-26 13:56:26 +03:00
\end{figure}
2020-05-21 11:25:14 +03:00
2020-05-25 18:09:44 +03:00
\section{Related Work and future suggestions}
2020-05-21 11:25:14 +03:00
\label{sec:related_work}
2020-05-21 16:41:29 +03:00
\cite{stanislawski2012automated} studied different types of metric assessments,
such as Hausdorff distance, segment length, vector shift, surface displacement,
2020-05-25 11:40:16 +03:00
and tortuosity for the generalization of linear geographic elements. This
2020-05-21 16:41:29 +03:00
research can provide references to the appropriate settings of the line
generalization parameters for the maps at various scales.
2020-05-26 11:39:18 +03:00
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.
2020-05-25 18:09:44 +03:00
2020-05-26 11:39:18 +03:00
\section{Conclusions}
\label{sec:conclusions}
2020-05-21 11:25:14 +03:00
2020-05-26 07:42:43 +03:00
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.
2020-05-21 11:25:14 +03:00
\printbibliography
\end{document}