more consistent figure naming
This commit is contained in:
parent
164a20cf41
commit
63c052ecd3
96
Makefile
96
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
|
||||
|
56
mj-msc.tex
56
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}
|
||||
|
||||
|
||||
|
12
visuals.sql
12
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;
|
||||
|
Loading…
Reference in New Issue
Block a user