diff --git a/Makefile b/Makefile index 8c29330..61858b9 100644 --- a/Makefile +++ b/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/mj-msc.tex b/mj-msc.tex index 8ca781c..6d0b0dc 100644 --- a/mj-msc.tex +++ b/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} +This section visualizes the results, discusses robustness and issues of the +generalization, and suggests specific improvements. + +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 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} -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}: - -\begin{itemize} - \item 1:\numprint{50000}: 75. - \item 1:\numprint{250000}: 220. -\end{itemize} - \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/visuals.sql b/visuals.sql index b2bd618..680ec76 100644 --- a/visuals.sql +++ b/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