diff --git a/IV/Makefile b/IV/Makefile index cf342dc..3403716 100644 --- a/IV/Makefile +++ b/IV/Makefile @@ -35,21 +35,21 @@ RIVERS = \ salvis-50k \ salvis-250k-10x \ salvis-grpk250-2x \ - 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-dp64-50k \ + salvis-vw64-50k \ + salvis-dpchaikin64-50k \ + salvis-vwchaikin64-50k \ + salvis-overlaid-dpchaikin64-50k \ + salvis-overlaid-vwchaikin64-50k \ + salvis-wm220-10x \ + salvis-wm220-2x \ salvis-wm-50k \ salvis-wm-50k-nw \ salvis-wm-50k-ne \ salvis-wm-overlaid-250k-zoom \ salvis-wm-grpk50 \ salvis-wm-grpk50-ne \ - salvis-wm-220 + salvis-wm220 ################################################################################ # FIGURES @@ -120,16 +120,16 @@ isolated-1-exaggerated_1COLOR = orange # 250K ################################################################################ -salvis-wm-250k-2x_1SELECT = wm_visuals where name='salvis-wm-220' -salvis-wm-250k-2x_WIDTHDIV = 2 +salvis-wm220-250k-2x_1SELECT = wm_visuals where name='salvis-wm220' +salvis-wm220-250k-2x_WIDTHDIV = 2 -salvis-wm-250k-10x_1SELECT = wm_visuals where name='salvis-wm-220' -salvis-wm-250k-10x_WIDTHDIV = 10 +salvis-wm220-250k-10x_1SELECT = wm_visuals where name='salvis-wm220' +salvis-wm220-250k-10x_WIDTHDIV = 10 salvis-250k-10x_1SELECT = wm_visuals where name='salvis-grpk10' salvis-250k-10x_WIDTHDIV = 10 -salvis-wm-overlaid-250k-zoom_1SELECT = wm_visuals where name='salvis-wm-220' +salvis-wm-overlaid-250k-zoom_1SELECT = wm_visuals where name='salvis-wm220' salvis-wm-overlaid-250k-zoom_2SELECT = wm_visuals where name='salvis-grpk10' salvis-wm-overlaid-250k-zoom_1COLOR = orange @@ -146,52 +146,52 @@ salvis-25k_WIDTHDIV = 1 salvis-50k_1SELECT = wm_visuals where name='salvis-grpk10' salvis-50k_WIDTHDIV = 2 -salvis-dp-64-50k_1SELECT = wm_visuals where name='salvis-dp-64' -salvis-dp-64-50k_WIDTHDIV = 2 +salvis-dp64-50k_1SELECT = wm_visuals where name='salvis-dp64' +salvis-dp64-50k_WIDTHDIV = 2 -salvis-vw-64-50k_1SELECT = wm_visuals where name='salvis-vw-64' -salvis-vw-64-50k_WIDTHDIV = 2 +salvis-vw64-50k_1SELECT = wm_visuals where name='salvis-vw64' +salvis-vw64-50k_WIDTHDIV = 2 -salvis-dp-64-chaikin-50k_2SELECT = wm_visuals where name='salvis-dp-chaikin-64' -salvis-dp-64-chaikin-50k_WIDTHDIV = 2 +salvis-dpchaikin64-50k_2SELECT = wm_visuals where name='salvis-dpchaikin64' +salvis-dpchaikin64-50k_WIDTHDIV = 2 -salvis-vw-64-chaikin-50k_2SELECT = wm_visuals where name='salvis-vw-chaikin-64' -salvis-vw-64-chaikin-50k_WIDTHDIV = 2 +salvis-vwchaikin64-50k_2SELECT = wm_visuals where name='salvis-vwchaikin64' +salvis-vwchaikin64-50k_WIDTHDIV = 2 -salvis-overlaid-dp-64-chaikin-50k_1SELECT = wm_visuals where name='salvis-dp-chaikin-64' -salvis-overlaid-dp-64-chaikin-50k_2SELECT = wm_visuals where name='salvis-grpk10' -salvis-overlaid-dp-64-chaikin-50k_1COLOR = orange -salvis-overlaid-dp-64-chaikin-50k_WIDTHDIV = 2 -salvis-overlaid-dp-64-chaikin-50k_QUADRANT = tl +salvis-overlaid-dpchaikin64-50k_1SELECT = wm_visuals where name='salvis-dpchaikin64' +salvis-overlaid-dpchaikin64-50k_2SELECT = wm_visuals where name='salvis-grpk10' +salvis-overlaid-dpchaikin64-50k_1COLOR = orange +salvis-overlaid-dpchaikin64-50k_WIDTHDIV = 2 +salvis-overlaid-dpchaikin64-50k_QUADRANT = tl -salvis-overlaid-vw-64-chaikin-50k_1SELECT = wm_visuals where name='salvis-vw-chaikin-64' -salvis-overlaid-vw-64-chaikin-50k_2SELECT = wm_visuals where name='salvis-grpk10' -salvis-overlaid-vw-64-chaikin-50k_1COLOR = orange -salvis-overlaid-vw-64-chaikin-50k_WIDTHDIV = 2 -salvis-overlaid-vw-64-chaikin-50k_QUADRANT = tl +salvis-overlaid-vwchaikin64-50k_1SELECT = wm_visuals where name='salvis-vwchaikin64' +salvis-overlaid-vwchaikin64-50k_2SELECT = wm_visuals where name='salvis-grpk10' +salvis-overlaid-vwchaikin64-50k_1COLOR = orange +salvis-overlaid-vwchaikin64-50k_WIDTHDIV = 2 +salvis-overlaid-vwchaikin64-50k_QUADRANT = tl -salvis-wm-50k_1SELECT = wm_visuals where name='salvis-wm-75' +salvis-wm-50k_1SELECT = wm_visuals where name='salvis-wm75' salvis-wm-50k_2SELECT = wm_visuals where name='salvis-grpk10' salvis-wm-50k_1COLOR = orange -salvis-wm-50k-nw_1SELECT = wm_visuals where name='salvis-wm-75' +salvis-wm-50k-nw_1SELECT = wm_visuals where name='salvis-wm75' salvis-wm-50k-nw_2SELECT = wm_visuals where name='salvis-grpk10' salvis-wm-50k-nw_1COLOR = orange salvis-wm-50k-nw_QUADRANT = tr -salvis-wm-50k-ne_1SELECT = wm_visuals where name='salvis-wm-75' +salvis-wm-50k-ne_1SELECT = wm_visuals where name='salvis-wm75' salvis-wm-50k-ne_2SELECT = wm_visuals where name='salvis-grpk10' salvis-wm-50k-ne_1COLOR = orange salvis-wm-50k-ne_QUADRANT = tl -salvis-wm-grpk50_1SELECT = wm_visuals where name='salvis-wm-75' +salvis-wm-grpk50_1SELECT = wm_visuals where name='salvis-wm75' salvis-wm-grpk50_2SELECT = wm_visuals where name='salvis-grpk50' salvis-wm-grpk50_3SELECT = wm_visuals where name='salvis-grpk10' salvis-wm-grpk50_1COLOR = orange salvis-wm-grpk50_2COLOR = green salvis-wm-grpk50_3LINESTYLE = dotted -salvis-wm-grpk50-ne_1SELECT = wm_visuals where name='salvis-wm-75' +salvis-wm-grpk50-ne_1SELECT = wm_visuals where name='salvis-wm75' salvis-wm-grpk50-ne_2SELECT = wm_visuals where name='salvis-grpk50' salvis-wm-grpk50-ne_3SELECT = wm_visuals where name='salvis-grpk10' salvis-wm-grpk50-ne_1COLOR = orange @@ -199,14 +199,14 @@ salvis-wm-grpk50-ne_2COLOR = green salvis-wm-grpk50-ne_3LINESTYLE = dotted salvis-wm-grpk50-ne_QUADRANT = tl -salvis-wm-220_1SELECT = wm_visuals where name='salvis-wm-220' -salvis-wm-220_WIDTHDIV = 2 +salvis-wm220_1SELECT = wm_visuals where name='salvis-wm220' +salvis-wm220_WIDTHDIV = 2 -label_wm-75 = Wang--Müller -label_vw-64 = Visvalingam--Whyatt -label_dp-64 = Douglas \& Peucker -label_vw-64-chaikin = $(label_vw-64) and Chaikin -label_dp-64-chaikin = $(label_dp-64) and Chaikin +label_wm75 = Wang--Müller +label_vw64 = Visvalingam--Whyatt +label_dp64 = Douglas \& Peucker +label_vw64chaikin = $(label_vw64) and Chaikin +label_dp64chaikin = $(label_dp64) and Chaikin legend_ = lower left legend_tr = lower right legend_tl = lower right @@ -225,10 +225,10 @@ salvis-$(1)-$(2)-50k$(3)_3LABEL = GRPK 1:\numprint{10000} salvis-$(1)-$(2)-50k$(3)_QUADRANT = $(3) salvis-$(1)-$(2)-50k$(3)_LEGEND = $(legend_$(3)) endef -$(foreach x,vw-64 dp-64 vw-chaikin-64 dp-chaikin-64,\ - $(eval $(call wm_vwdp50k,wm-75,$(x),)) \ - $(eval $(call wm_vwdp50k,wm-75,$(x),tl)) \ - $(eval $(call wm_vwdp50k,wm-75,$(x),tr)) \ +$(foreach x,vw64 dp64 vwchaikin64 dpchaikin64,\ + $(eval $(call wm_vwdp50k,wm75,$(x),)) \ + $(eval $(call wm_vwdp50k,wm75,$(x),tl)) \ + $(eval $(call wm_vwdp50k,wm75,$(x),tr)) \ ) define FIG_template diff --git a/IV/mj-msc.tex b/IV/mj-msc.tex index 32f7389..cfbc7a1 100644 --- a/IV/mj-msc.tex +++ b/IV/mj-msc.tex @@ -207,7 +207,7 @@ as well as more modern ones, which only theorize, but do not provide an implementation. \subsubsection{{\DP}, {\VW} and Chaikin's} -\label{sec:dp-vw-chaikin} +\label{sec:dp-vwchaikin} {\DP}\cite{douglas1973algorithms} and {\VW}\cite{visvalingam1993line} are "classical" line simplification computer graphics algorithms. They are @@ -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-dp-64-50k} + \includegraphics[width=\textwidth]{salvis-dp64-50k} \caption{Using {\DP}.} \end{subfigure} \hfill \begin{subfigure}[b]{.49\textwidth} - \includegraphics[width=\textwidth]{salvis-vw-64-50k} + \includegraphics[width=\textwidth]{salvis-vw64-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-dp-64-chaikin-50k} + \includegraphics[width=\textwidth]{salvis-dpchaikin64-50k} \caption{{\DP} and Chaikin's.} - \label{fig:salvis-dp-64-chaikin-50k} + \label{fig:salvis-dpchaikin64-50k} \end{subfigure} \hfill \begin{subfigure}[b]{.49\textwidth} - \includegraphics[width=\textwidth]{salvis-vw-64-chaikin-50k} + \includegraphics[width=\textwidth]{salvis-vwchaikin64-50k} \caption{{\VW} and Chaikin's.} - \label{fig:salvis-vw-64-chaikin-50k} + \label{fig:salvis-vwchaikin64-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-dp-64-chaikin-50k} + \includegraphics[width=\textwidth]{salvis-overlaid-dpchaikin64-50k} \caption{Original (fig.~\ref{fig:salvis-50k}) and simplified - (fig.~\ref{fig:salvis-dp-64-chaikin-50k}).} + (fig.~\ref{fig:salvis-dpchaikin64-50k}).} \end{subfigure} \hfill \begin{subfigure}[b]{.49\textwidth} - \includegraphics[width=\textwidth]{salvis-overlaid-vw-64-chaikin-50k} + \includegraphics[width=\textwidth]{salvis-overlaid-vwchaikin64-50k} \caption{Original (fig.~\ref{fig:salvis-50k}) and simplified - (fig.~\ref{fig:salvis-vw-64-chaikin-50k}.)} + (fig.~\ref{fig:salvis-vwchaikin64-50k}.)} \end{subfigure} \caption{Zoomed-in simplified and smoothened river and original.} @@ -499,7 +499,7 @@ wider cartographic society than proprietary ones. \subsubsection{Unfitness of Line Simplification Algorithms} -Section~\ref{sec:dp-vw-chaikin} illustrates the current gaps with line +Section~\ref{sec:dp-vwchaikin} illustrates the current gaps with line simplification algorithms for real rivers. To sum up, we highlight the following cartographic problems from our examples: @@ -1432,9 +1432,9 @@ sharp edges for others. \subsubsection{Large-scale (1:\numprint{250000})} \label{sec:analyzed-large-scale} -As visible in Figure~\ref{fig:salvis-wm-250k-10x}, for large-scale map, some of the +As visible in Figure~\ref{fig:salvis-wm220-10x}, for large-scale map, some of the resulting bends look significantly exaggerated. Why is that? -Figure~\ref{fig:salvis-wm-250k-overlaid-zoom} zooms in the large-scale +Figure~\ref{fig:salvis-wm220-overlaid-zoom} zooms in the large-scale simplification and overlays the original. \begin{figure}[ht] @@ -1447,18 +1447,18 @@ simplification and overlays the original. \hfill \begin{subfigure}[b]{.49\textwidth} \centering - \includegraphics[width=.2\textwidth]{salvis-wm-250k-10x} + \includegraphics[width=.2\textwidth]{salvis-wm220-10x} \caption{Simplified.} \end{subfigure} \caption{GDB10LT simplified with {\WM} for 1:\numprint{250000}.} - \label{fig:salvis-wm-250k-10x} + \label{fig:salvis-wm220-10x} \end{figure} \begin{figure}[ht] \centering \includegraphics[width=.8\textwidth]{salvis-wm-overlaid-250k-zoom} \caption{10x zoomed-in {\WM} for 1:\numprint{250000}.} - \label{fig:salvis-wm-250k-overlaid-zoom} + \label{fig:salvis-wm220-overlaid-zoom} \end{figure} A conglomeration of bends is visible, especially in top--right side of the @@ -1538,7 +1538,7 @@ exaggerated by our implementation. \subsubsection{Large-scale (1:\numprint{250000})} \label{sec:national-large-scale} -Figure~\ref{fig:salvis-wm-250k} illustrates the original grpk250LT and the +Figure~\ref{fig:salvis-wm220} illustrates the original grpk250LT and the {\WM}--simplified version. As section~\ref{sec:analyzed-large-scale} explains, the algorithm tries to exaggerate many bends to a great size. However, grpk250LT takes the opposite approach --- only the very basic shapes of the largest bends @@ -1555,11 +1555,11 @@ desired in section~\ref{sec:future-suggestions}. \hfill \begin{subfigure}[b]{.49\textwidth} \centering - \includegraphics[width=\textwidth]{salvis-wm-220} + \includegraphics[width=\textwidth]{salvis-wm220} \caption{{\WM}-simplified GDB10LT.} \end{subfigure} \caption{grpk250LT and {\WM}--simplified GDB10LT.} - \label{fig:salvis-wm-250k} + \label{fig:salvis-wm220} \end{figure} @@ -1571,41 +1571,41 @@ 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} + \includegraphics[width=\textwidth]{salvis-wm75-dp64-50k} \caption{{\DP} (green), {\WM} (orange) and original (black dotted) at 1:\numprint{50000}.} - \label{fig:salvis-wm-dp-50k} + \label{fig:salvis-wm75-dp64-50k} \end{figure} \begin{figure}[h!] - \includegraphics[width=\textwidth]{salvis-wm-dp-chaikin-50k} + \includegraphics[width=\textwidth]{salvis-wm75-dpchaikin64-50k} \caption{Chaikin--smoothened {\DP} (green), {\WM} (orange) and original (black dotted) at 1:\numprint{50000}.} - \label{fig:salvis-wm-dp-chaikin-50k} + \label{fig:salvis-wm75-dpchaikin64-50k} \end{figure} \begin{figure}[h!] - \includegraphics[width=\textwidth]{salvis-wm-vw-50k} + \includegraphics[width=\textwidth]{salvis-wm75-vw64-50k} \caption{{\VW} (green), {\WM} (orange) and original (black dotted) at 1:\numprint{50000}.} - \label{fig:salvis-wm-vw-50k} + \label{fig:salvis-wm75-vw64-50k} \end{figure} \begin{figure}[h!] - \includegraphics[width=\textwidth]{salvis-wm-vw-chaikin-50k} + \includegraphics[width=\textwidth]{salvis-wm75-vwchaikin64-50k} \caption{Chaikin--smoothened {\VW} (green), {\WM} (orange) and original (black dotted) at 1:\numprint{50000}.} - \label{fig:salvis-wm-vw-chaikin-50k} + \label{fig:salvis-wm75-vwchaikin64-50k} \end{figure} diff --git a/IV/visuals.sql b/IV/visuals.sql index f9d6720..89c6206 100644 --- a/IV/visuals.sql +++ b/IV/visuals.sql @@ -129,18 +129,18 @@ begin geom1 = st_simplify((select way from wm_visuals where name='salvis-grpk10'), i); geom2 = st_simplifyvw((select way from wm_visuals where name='salvis-grpk10'), i*i); insert into wm_visuals(name, way) values - ('salvis-dp-' || i, geom1), - ('salvis-dp-chaikin-' || i, st_chaikinsmoothing(geom1, 5)), - ('salvis-vw-' || i, geom2), - ('salvis-vw-chaikin-' || i, st_chaikinsmoothing(geom2, 5)); + ('salvis-dp' || i, geom1), + ('salvis-dpchaikin' || i, st_chaikinsmoothing(geom1, 5)), + ('salvis-vw' || i, geom2), + ('salvis-vwchaikin' || i, st_chaikinsmoothing(geom2, 5)); end loop; -- more than 220 doesn't work, because there is an exaggerated bend near -- Šalčia-Visinčia crossing, and it "exaggerates" to the -- other river. foreach i in array array[75, 220] loop - geom3 = st_simplifywm((select way from wm_visuals where name='salvis-grpk10'), i, 50, 'salvis-wm-' || i); + geom3 = st_simplifywm((select way from wm_visuals where name='salvis-grpk10'), i, 50, 'salvis-wm' || i); insert into wm_visuals(name, way) values - ('salvis-wm-' || i, geom3); + ('salvis-wm' || i, geom3); end loop; end $$ language plpgsql;