commit 76c799cf2b469510e728127e145a22ac0540ea5e (tree)
parent 69711bb841a90a8f04bbf4c58b4800d6396c33b6
Author: Motiejus Jakštys <motiejus@uber.com>
Date: Sun, 16 May 2021 23:23:07 +0300
Add a few DP, VW and Chaikins
Diffstat:
| M | IV/Makefile | | | 89 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------- |
| M | IV/mj-msc.tex | | | 102 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------- |
| M | IV/visuals.sql | | | 10 | +++++----- |
3 files changed, 150 insertions(+), 51 deletions(-)
diff --git a/IV/Makefile b/IV/Makefile
@@ -35,12 +35,12 @@ RIVERS = \
salvis-50k \
salvis-250k-10x \
salvis-gdr250-2x \
- salvis-douglas-64-50k \
- salvis-visvalingam-64-50k \
- salvis-douglas-64-chaikin-50k \
- salvis-visvalingam-64-chaikin-50k \
- salvis-overlaid-douglas-64-chaikin-50k \
- salvis-overlaid-visvalingam-64-chaikin-50k \
+ salvis-dp-64-50k \
+ salvis-vw-64-50k \
+ salvis-dp-64-chaikin-50k \
+ salvis-vw-64-chaikin-50k \
+ salvis-overlaid-dp-64-chaikin-50k \
+ salvis-overlaid-vw-64-chaikin-50k \
salvis-wm-250k-10x \
salvis-wm-250k-2x \
salvis-wm-50k \
@@ -49,7 +49,11 @@ RIVERS = \
salvis-wm-overlaid-250k-zoom \
salvis-wm-gdr50 \
salvis-wm-gdr50-ne \
- salvis-wm-220
+ salvis-wm-220 \
+ salvis-wm-dp-50k \
+ salvis-wm-dp-chaikin-50k \
+ salvis-wm-vw-50k \
+ salvis-wm-vw-chaikin-50k
#################################
# The thesis, publishable version
@@ -183,29 +187,29 @@ salvis-250k-10x_WIDTHDIV = 10
salvis-gdr250-2x_1SELECT = wm_visuals where name='salvis-gdr250'
salvis-gdr250-2x_WIDTHDIV = 2
-salvis-douglas-64-50k_1SELECT = wm_visuals where name='salvis-douglas-64'
-salvis-douglas-64-50k_WIDTHDIV = 2
+salvis-dp-64-50k_1SELECT = wm_visuals where name='salvis-dp-64'
+salvis-dp-64-50k_WIDTHDIV = 2
-salvis-visvalingam-64-50k_1SELECT = wm_visuals where name='salvis-visvalingam-64'
-salvis-visvalingam-64-50k_WIDTHDIV = 2
+salvis-vw-64-50k_1SELECT = wm_visuals where name='salvis-vw-64'
+salvis-vw-64-50k_WIDTHDIV = 2
-salvis-douglas-64-chaikin-50k_2SELECT = wm_visuals where name='salvis-douglas-64-chaikin'
-salvis-douglas-64-chaikin-50k_WIDTHDIV = 2
+salvis-dp-64-chaikin-50k_2SELECT = wm_visuals where name='salvis-dp-64-chaikin'
+salvis-dp-64-chaikin-50k_WIDTHDIV = 2
-salvis-visvalingam-64-chaikin-50k_2SELECT = wm_visuals where name='salvis-visvalingam-64-chaikin'
-salvis-visvalingam-64-chaikin-50k_WIDTHDIV = 2
+salvis-vw-64-chaikin-50k_2SELECT = wm_visuals where name='salvis-vw-64-chaikin'
+salvis-vw-64-chaikin-50k_WIDTHDIV = 2
-salvis-overlaid-douglas-64-chaikin-50k_1SELECT = wm_visuals where name='salvis-douglas-64-chaikin'
-salvis-overlaid-douglas-64-chaikin-50k_2SELECT = wm_visuals where name='salvis'
-salvis-overlaid-douglas-64-chaikin-50k_1COLOR = orange
-salvis-overlaid-douglas-64-chaikin-50k_WIDTHDIV = 2
-salvis-overlaid-douglas-64-chaikin-50k_QUADRANT = 1
+salvis-overlaid-dp-64-chaikin-50k_1SELECT = wm_visuals where name='salvis-dp-64-chaikin'
+salvis-overlaid-dp-64-chaikin-50k_2SELECT = wm_visuals where name='salvis'
+salvis-overlaid-dp-64-chaikin-50k_1COLOR = orange
+salvis-overlaid-dp-64-chaikin-50k_WIDTHDIV = 2
+salvis-overlaid-dp-64-chaikin-50k_QUADRANT = 1
-salvis-overlaid-visvalingam-64-chaikin-50k_1SELECT = wm_visuals where name='salvis-visvalingam-64-chaikin'
-salvis-overlaid-visvalingam-64-chaikin-50k_2SELECT = wm_visuals where name='salvis'
-salvis-overlaid-visvalingam-64-chaikin-50k_1COLOR = orange
-salvis-overlaid-visvalingam-64-chaikin-50k_WIDTHDIV = 2
-salvis-overlaid-visvalingam-64-chaikin-50k_QUADRANT = 1
+salvis-overlaid-vw-64-chaikin-50k_1SELECT = wm_visuals where name='salvis-vw-64-chaikin'
+salvis-overlaid-vw-64-chaikin-50k_2SELECT = wm_visuals where name='salvis'
+salvis-overlaid-vw-64-chaikin-50k_1COLOR = orange
+salvis-overlaid-vw-64-chaikin-50k_WIDTHDIV = 2
+salvis-overlaid-vw-64-chaikin-50k_QUADRANT = 1
salvis-wm-250k-2x_1SELECT = wm_visuals where name='salvis-wm-220'
salvis-wm-250k-2x_WIDTHDIV = 2
@@ -236,17 +240,52 @@ salvis-wm-gdr50_2SELECT = wm_visuals where name='salvis-gdr50'
salvis-wm-gdr50_3SELECT = wm_visuals where name='salvis'
salvis-wm-gdr50_1COLOR = orange
salvis-wm-gdr50_2COLOR = green
+salvis-wm-gdr50_3LINESTYLE = dotted
salvis-wm-gdr50-ne_1SELECT = wm_visuals where name='salvis-wm-75'
salvis-wm-gdr50-ne_2SELECT = wm_visuals where name='salvis-gdr50'
salvis-wm-gdr50-ne_3SELECT = wm_visuals where name='salvis'
salvis-wm-gdr50-ne_1COLOR = orange
salvis-wm-gdr50-ne_2COLOR = green
+salvis-wm-gdr50-ne_3LINESTYLE = dotted
salvis-wm-gdr50-ne_QUADRANT = 1
salvis-wm-220_1SELECT = wm_visuals where name='salvis-wm-220'
salvis-wm-220_WIDTHDIV = 2
+salvis-wm-dp-50k_1SELECT = wm_visuals where name='salvis-dp-64'
+salvis-wm-dp-50k_2SELECT = wm_visuals where name='salvis-wm-75'
+salvis-wm-dp-50k_3SELECT = wm_visuals where name='salvis'
+salvis-wm-dp-50k_1COLOR = green
+salvis-wm-dp-50k_2COLOR = orange
+salvis-wm-dp-50k_3LINESTYLE = dotted
+
+salvis-wm-dp-chaikin-50k_1SELECT = wm_visuals where name='salvis-dp-64-chaikin'
+salvis-wm-dp-chaikin-50k_2SELECT = wm_visuals where name='salvis-wm-75'
+salvis-wm-dp-chaikin-50k_3SELECT = wm_visuals where name='salvis'
+salvis-wm-dp-chaikin-50k_1COLOR = green
+salvis-wm-dp-chaikin-50k_2COLOR = orange
+salvis-wm-dp-chaikin-50k_3LINESTYLE = dotted
+
+salvis-wm-vw-50k_1SELECT = wm_visuals where name='salvis-vw-64'
+salvis-wm-vw-50k_2SELECT = wm_visuals where name='salvis-wm-75'
+salvis-wm-vw-50k_3SELECT = wm_visuals where name='salvis'
+salvis-wm-vw-50k_1COLOR = green
+salvis-wm-vw-50k_2COLOR = orange
+salvis-wm-vw-50k_3LINESTYLE = dotted
+
+salvis-wm-vw-chaikin-50k_1SELECT = wm_visuals where name='salvis-vw-64-chaikin'
+salvis-wm-vw-chaikin-50k_2SELECT = wm_visuals where name='salvis-wm-75'
+salvis-wm-vw-chaikin-50k_3SELECT = wm_visuals where name='salvis'
+salvis-wm-vw-chaikin-50k_1COLOR = green
+salvis-wm-vw-chaikin-50k_2COLOR = orange
+salvis-wm-vw-chaikin-50k_3LINESTYLE = dotted
+
+
+salvis-wm-dp-chaikin-50k_1SELECT =
+
+salvis-wm-vw-chaikin-50k_1SELECT =
+
.faux_db_pre: db init.sql
bash db start
bash db -f init.sql
diff --git a/IV/mj-msc.tex b/IV/mj-msc.tex
@@ -270,12 +270,12 @@ simplification for scale 1:\numprint{50000} and especially for
\begin{figure}[ht]
\centering
\begin{subfigure}[b]{.49\textwidth}
- \includegraphics[width=\textwidth]{salvis-douglas-64-50k}
+ \includegraphics[width=\textwidth]{salvis-dp-64-50k}
\caption{Using {\DP}.}
\end{subfigure}
\hfill
\begin{subfigure}[b]{.49\textwidth}
- \includegraphics[width=\textwidth]{salvis-visvalingam-64-50k}
+ \includegraphics[width=\textwidth]{salvis-vw-64-50k}
\caption{Using {\VW}.}
\end{subfigure}
\caption{Simplified using classical algorithms (1:\numprint{50000}).}
@@ -291,15 +291,15 @@ generalization, illustrated in figure~\ref{fig:salvis-generalized-chaikin-50k}.
\begin{figure}[ht!]
\centering
\begin{subfigure}[b]{.49\textwidth}
- \includegraphics[width=\textwidth]{salvis-douglas-64-chaikin-50k}
+ \includegraphics[width=\textwidth]{salvis-dp-64-chaikin-50k}
\caption{{\DP} and Chaikin's.}
- \label{fig:salvis-douglas-64-chaikin-50k}
+ \label{fig:salvis-dp-64-chaikin-50k}
\end{subfigure}
\hfill
\begin{subfigure}[b]{.49\textwidth}
- \includegraphics[width=\textwidth]{salvis-visvalingam-64-chaikin-50k}
+ \includegraphics[width=\textwidth]{salvis-vw-64-chaikin-50k}
\caption{{\VW} and Chaikin's.}
- \label{fig:salvis-visvalingam-64-chaikin-50k}
+ \label{fig:salvis-vw-64-chaikin-50k}
\end{subfigure}
\caption{Simplified and smoothened river (1:\numprint{50000}).}
\label{fig:salvis-generalized-chaikin-50k}
@@ -308,18 +308,18 @@ generalization, illustrated in figure~\ref{fig:salvis-generalized-chaikin-50k}.
\begin{figure}[ht!]
\centering
\begin{subfigure}[b]{.49\textwidth}
- \includegraphics[width=\textwidth]{salvis-overlaid-douglas-64-chaikin-50k}
+ \includegraphics[width=\textwidth]{salvis-overlaid-dp-64-chaikin-50k}
\caption{Original (fig.~\ref{fig:salvis-50k}) and simplified
- (fig.~\ref{fig:salvis-douglas-64-chaikin-50k}).}
+ (fig.~\ref{fig:salvis-dp-64-chaikin-50k}).}
\end{subfigure}
\hfill
\begin{subfigure}[b]{.49\textwidth}
- \includegraphics[width=\textwidth]{salvis-overlaid-visvalingam-64-chaikin-50k}
+ \includegraphics[width=\textwidth]{salvis-overlaid-vw-64-chaikin-50k}
\caption{Original (fig.~\ref{fig:salvis-50k}) and simplified
- (fig.~\ref{fig:salvis-visvalingam-64-chaikin-50k}.)}
+ (fig.~\ref{fig:salvis-vw-64-chaikin-50k}.)}
\end{subfigure}
\caption{Zoomed-in simplified and smoothened river and original.}
@@ -1361,19 +1361,34 @@ Figure~\ref{fig:isolated-1-exaggerated} illustrates an exaggerated bend using
\section{Results}
\label{sec:results}
-\subsection{Generalization Results of Analyzed Rivers}
-\label{sec:generalization-results-of-analyzed-rivers}
+This section visualizes the results, discusses robustness and issues of the
+generalization, and suggests specific improvements.
-Figures~\ref{fig:salvis-wm-50k} and~\ref{fig:salvis-wm-250k} visualize
-the generalization result for Šalčia and Visinčia using {\WM} with the
-\textsc{dhalfcircle} values from the
-table~\ref{table:scale-halfcirlce-diameter}:
+One of our goals is to compare the generalized lines with the official
+generalized dataset\cite{nzt}. Therefore, we have selected the target scales
+that the official sources offer too: 1:\numprint{50000} and
+1:\numprint{250000}. The \textsc{dhalfcircle} values for the subset are as
+follows:
+\begin{table}[ht]
+ \centering
+ \begin{tabular}{ c D{.}{.}{1} }
+ Scale & \multicolumn{1}{c}{$D(m)$} \\ \hline
+ 1:\numprint{50000} & 75 \\
+ 1:\numprint{250000} & 220 \\
+ \end{tabular}
+\end{table}
+
+Our generalized results are viewed from the following angles:
\begin{itemize}
- \item 1:\numprint{50000}: 75.
- \item 1:\numprint{250000}: 220.
+ \item Compare to the non-simplified originals.
+ \item Compare to the official datasets.
+ \item Compare to {\DP} and {\VW}.
\end{itemize}
+\subsection{Generalization Results of Analyzed Rivers}
+\label{sec:generalization-results-of-analyzed-rivers}
+
\subsubsection{Medium-scale (1:\numprint{50000})}
\label{sec:analyzed-medium-scale}
@@ -1468,7 +1483,7 @@ future research and improvement:
\end{itemize}
-\subsection{Comparing Generalized Result with National Spatial Datasets}
+\subsection{Comparison with National Spatial Datasets}
\subsubsection{Background}
@@ -1504,7 +1519,7 @@ all three shapes: GDR50LT, {\WM}--simplified GDB10LT, and the original GDB10LT.
\includegraphics[width=\textwidth]{salvis-wm-gdr50}
\caption{2x zoomed-in GDR50LT (green), {\WM}--simplified GDB10LT (orange)
- and original GDB10LT (black).}
+ and original GDB10LT (dotted black).}
\label{fig:salvis-wm-gdr50}
\end{figure}
@@ -1548,6 +1563,51 @@ desired in section~\ref{sec:future-suggestions}.
\end{figure}
+\subsection{Comparison with {\DP} and {\VW}}
+
+It is time to visually compare our implementation with the classical
+algorithms: {\DP}, {\VW} and Chaikin. Since we have established more work is
+needed for small-scale maps (1:\numprint{250000}), we will limit the comparison
+in this section to 1:\numprint{50000}.
+
+\begin{figure}[h!]
+ \includegraphics[width=\textwidth]{salvis-wm-dp-50k}
+
+ \caption{{\DP} (green), {\WM} (orange) and original (black dotted) at
+ 1:\numprint{50000}.}
+
+ \label{fig:salvis-wm-dp-50k}
+\end{figure}
+
+\begin{figure}[h!]
+ \includegraphics[width=\textwidth]{salvis-wm-dp-chaikin-50k}
+
+ \caption{Chaikin--smoothened {\DP} (green), {\WM} (orange) and original
+ (black dotted) at 1:\numprint{50000}.}
+
+ \label{fig:salvis-wm-dp-chaikin-50k}
+\end{figure}
+
+
+\begin{figure}[h!]
+ \includegraphics[width=\textwidth]{salvis-wm-vw-50k}
+
+ \caption{{\VW} (green), {\WM} (orange) and original (black dotted) at
+ 1:\numprint{50000}.}
+
+ \label{fig:salvis-wm-vw-50k}
+\end{figure}
+
+\begin{figure}[h!]
+ \includegraphics[width=\textwidth]{salvis-wm-vw-chaikin-50k}
+
+ \caption{Chaikin--smoothened {\VW} (green), {\WM} (orange) and original
+ (black dotted) at 1:\numprint{50000}.}
+
+ \label{fig:salvis-wm-vw-chaikin-50k}
+\end{figure}
+
+
\subsection{Testing Results Online}
\label{sec:testing-results-online}
@@ -1605,7 +1665,7 @@ implementation:
a exaggerated bends that became sharp and includes some future ideas.
\item What are the exaggeration limits when working with large scales?
- Section~\ref{sec:national-large-scales} discusses examples that some
+ Section~\ref{sec:national-large-scale} discusses examples that some
limits are necessary.
\item Research when bends should be marked as \textsc{isolated}. As is
diff --git a/IV/visuals.sql b/IV/visuals.sql
@@ -125,14 +125,14 @@ declare
geom2 geometry;
geom3 geometry;
begin
- foreach i in array array[16, 64, 256] loop
+ foreach i in array array[16, 32, 64, 256] loop
geom1 = st_simplify((select way from wm_visuals where name='salvis'), i);
geom2 = st_simplifyvw((select way from wm_visuals where name='salvis'), i*i);
insert into wm_visuals(name, way) values
- ('salvis-douglas-' || i, geom1),
- ('salvis-douglas-' || i || '-chaikin', st_chaikinsmoothing(geom1, 5)),
- ('salvis-visvalingam-' || i, geom2),
- ('salvis-visvalingam-' || i || '-chaikin', st_chaikinsmoothing(geom2, 5));
+ ('salvis-dp-' || i, geom1),
+ ('salvis-dp-' || i || '-chaikin', st_chaikinsmoothing(geom1, 5)),
+ ('salvis-vw-' || i, geom2),
+ ('salvis-vw-' || i || '-chaikin', st_chaikinsmoothing(geom2, 5));
end loop;
-- more than 220 doesn't work, because there is an exaggerated bend near