wip chaikin
This commit is contained in:
parent
c452e595f0
commit
0131ef85d1
@ -2,6 +2,7 @@ CROSSING = 622916 6109267 626066 6111487 # xmin ymin xmax ymax
|
|||||||
ZEIMENA_TOLERANCES = 128 256 512 1024 2048 4096
|
ZEIMENA_TOLERANCES = 128 256 512 1024 2048 4096
|
||||||
SINEWAVE_TOLERANCES = 2 16 32
|
SINEWAVE_TOLERANCES = 2 16 32
|
||||||
CROSSING_TOLERANCES = 64 128 256
|
CROSSING_TOLERANCES = 64 128 256
|
||||||
|
CHAIKIN_CROSSING_TOLERANCES = 128 256
|
||||||
SINEWAVE_SIZE = 120x48
|
SINEWAVE_SIZE = 120x48
|
||||||
GEN1 = $(addsuffix .pdf, \
|
GEN1 = $(addsuffix .pdf, \
|
||||||
$(addprefix sinewave2_douglas_,$(SINEWAVE_TOLERANCES)) \
|
$(addprefix sinewave2_douglas_,$(SINEWAVE_TOLERANCES)) \
|
||||||
@ -13,12 +14,15 @@ GEN2 = $(addsuffix .pdf, \
|
|||||||
$(addprefix overlaid_zeimena_visvalingam_,$(CROSSING_TOLERANCES)) \
|
$(addprefix overlaid_zeimena_visvalingam_,$(CROSSING_TOLERANCES)) \
|
||||||
$(addprefix overlaid_sinewave2_douglas_,$(SINEWAVE_TOLERANCES)) \
|
$(addprefix overlaid_sinewave2_douglas_,$(SINEWAVE_TOLERANCES)) \
|
||||||
$(addprefix overlaid_sinewave2_visvalingam_,$(SINEWAVE_TOLERANCES)))
|
$(addprefix overlaid_sinewave2_visvalingam_,$(SINEWAVE_TOLERANCES)))
|
||||||
|
GEN3 = $(addsuffix .pdf, \
|
||||||
|
$(addprefix overlaid_chaikin_zeimena_douglas_,$(CHAIKIN_CROSSING_TOLERANCES)) \
|
||||||
|
$(addprefix overlaid_chaikin_zeimena_visvalingam_,$(CHAIKIN_CROSSING_TOLERANCES)))
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: mj-referatas.pdf mj-prezentacija.pdf
|
all: mj-referatas.pdf mj-prezentacija.pdf
|
||||||
|
|
||||||
mj-referatas.pdf: mj-referatas.tex version.tex bib.bib zeimena.pdf \
|
mj-referatas.pdf: mj-referatas.tex version.tex bib.bib zeimena.pdf \
|
||||||
sinewave1.pdf sinewave2.pdf crossing.pdf $(GEN1) $(GEN2)
|
sinewave1.pdf sinewave2.pdf crossing.pdf $(GEN1) $(GEN2) $(GEN3)
|
||||||
latexmk -shell-escape -g -pdf $<
|
latexmk -shell-escape -g -pdf $<
|
||||||
|
|
||||||
mj-prezentacija.pdf: mj-prezentacija.tex ../../misc/Logo_vilniaus_universitetas.png \
|
mj-prezentacija.pdf: mj-prezentacija.tex ../../misc/Logo_vilniaus_universitetas.png \
|
||||||
@ -48,6 +52,12 @@ define algo2overlay
|
|||||||
overlaid_$(1)_$(2)_%.pdf: layer2img.py db/.faux_$(1)_$(2)_%
|
overlaid_$(1)_$(2)_%.pdf: layer2img.py db/.faux_$(1)_$(2)_%
|
||||||
./layer2img.py $(3) --group1-table=$(1) --group2-table=$(1)_$(2)_$$* \
|
./layer2img.py $(3) --group1-table=$(1) --group2-table=$(1)_$(2)_$$* \
|
||||||
--outfile $$@
|
--outfile $$@
|
||||||
|
chaikin_overlaid_$(1)_$(2)_$(3)_%.pdf: layer2img.py db/.chaikin_$(1)_$(2)_%
|
||||||
|
./layer2img.py $(3) \
|
||||||
|
--group1-table=$(1) \
|
||||||
|
--group2-table=$(1)_$(2)_$$* \
|
||||||
|
--group3-table=chaikin_$(1)_$(2)_$$* \
|
||||||
|
--outfile $$@
|
||||||
endef
|
endef
|
||||||
define gpkg2pdf
|
define gpkg2pdf
|
||||||
$(1): $(2) ./layer2img.py
|
$(1): $(2) ./layer2img.py
|
||||||
|
@ -139,3 +139,14 @@
|
|||||||
year={1991},
|
year={1991},
|
||||||
publisher={Longman Scientific \& Technical London}
|
publisher={Longman Scientific \& Technical London}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@article{chaikin1974algorithm,
|
||||||
|
title={An algorithm for high-speed curve generation},
|
||||||
|
author={Chaikin, George Merrill},
|
||||||
|
journal={Computer graphics and image processing},
|
||||||
|
volume={3},
|
||||||
|
number={4},
|
||||||
|
pages={346--349},
|
||||||
|
year={1974},
|
||||||
|
publisher={Elsevier}
|
||||||
|
}
|
||||||
|
13
II/Referatas/chaikin.sql
Normal file
13
II/Referatas/chaikin.sql
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
DROP TABLE IF EXISTS :tbl;
|
||||||
|
|
||||||
|
CREATE TABLE :tbl (
|
||||||
|
fid serial NOT NULL,
|
||||||
|
geom geometry(MULTILINESTRING, 3346)
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO :tbl (geom) (
|
||||||
|
SELECT
|
||||||
|
ST_ChaikinSmoothing (geom, 3) AS geoms
|
||||||
|
FROM
|
||||||
|
:src);
|
||||||
|
|
@ -148,8 +148,14 @@ are often used for line generalization:
|
|||||||
|
|
||||||
\item \cite{visvalingam1993line} via
|
\item \cite{visvalingam1993line} via
|
||||||
\href{https://postgis.net/docs/ST_SimplifyVW.html}{PostGIS SimplifyVW}.
|
\href{https://postgis.net/docs/ST_SimplifyVW.html}{PostGIS SimplifyVW}.
|
||||||
|
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
|
Since both algorithms produce jaggy output lines, it is worthwhile to process
|
||||||
|
those through a widely available \cite{chaikin1974algorithm} smoothing
|
||||||
|
algorithm via \href{https://postgis.net/docs/ST_ChaikinSmoothing.html}{PostGIS
|
||||||
|
ChaikinSmoothing}.
|
||||||
|
|
||||||
Review of the available algorithms will be followed by desiderata for a
|
Review of the available algorithms will be followed by desiderata for a
|
||||||
possible open-source addition. In the end, we will issue a recommendation,
|
possible open-source addition. In the end, we will issue a recommendation,
|
||||||
which algorithm can be picked up and implemented by an avid GIS developer.
|
which algorithm can be picked up and implemented by an avid GIS developer.
|
||||||
@ -251,10 +257,10 @@ a large circle, ilustrated in figure~\ref{fig:blunt-bent}.
|
|||||||
\label{fig:blunt-bent}
|
\label{fig:blunt-bent}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
Once zoomed in to the river crossing area with {\DP} and {\VW} applied, it becomes apparent that both large
|
Once zoomed in to the river crossing area with {\DP} and {\VW} applied, it
|
||||||
blunts are normalized to single lines, the shape becomes jagged and unpleasant
|
becomes apparent that both large blunts are normalized to single lines, the
|
||||||
for the eye. See table~\ref{tab:comparison-crossing} on
|
shape becomes jagged and unpleasant for the eye. See
|
||||||
page~\pageref{tab:comparison-crossing}.
|
table~\ref{tab:comparison-crossing} on page~\pageref{tab:comparison-crossing}.
|
||||||
|
|
||||||
\begin{figure}[h]
|
\begin{figure}[h]
|
||||||
\renewcommand{\tabularxcolumn}[1]{>{\center\small}m{#1}}
|
\renewcommand{\tabularxcolumn}[1]{>{\center\small}m{#1}}
|
||||||
@ -280,6 +286,31 @@ page~\pageref{tab:comparison-crossing}.
|
|||||||
\label{tab:comparison-crossing}
|
\label{tab:comparison-crossing}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
|
As the reader may observe, the output lines, especially with higher tolerances,
|
||||||
|
are jaggy. Higher-tolerance jaggy outputs from {\VW} and {\DP}, passed through Chaikin,
|
||||||
|
are displayed in table~\ref{tab:chaikin-crossing} on
|
||||||
|
page~\page{tab:chaikin-crossing}.
|
||||||
|
|
||||||
|
\begin{figure}[h]
|
||||||
|
\renewcommand{\tabularxcolumn}[1]{>{\center\small}m{#1}}
|
||||||
|
\begin{tabularx}{\textwidth}{ p{2.1cm} | X | X | }
|
||||||
|
Tolerance DP/VW &
|
||||||
|
Douglas \& Peucker &
|
||||||
|
Visvalingam-Whyatt \tabularnewline \hline
|
||||||
|
|
||||||
|
128/16384 &
|
||||||
|
\includegraphics[width=\linewidth]{chaikin_overlaid_zeimena_douglas_128} &
|
||||||
|
\includegraphics[width=\linewidth]{chaikin_overlaid_zeimena_visvalingam_128} \tabularnewline \hline
|
||||||
|
|
||||||
|
256/65536 &
|
||||||
|
\includegraphics[width=\linewidth]{chaikin_overlaid_zeimena_douglas_256} &
|
||||||
|
\includegraphics[width=\linewidth]{chaikin_overlaid_zeimena_visvalingam_256} \tabularnewline \hline
|
||||||
|
|
||||||
|
\end{tabularx}
|
||||||
|
\caption{Chaikin-smoothened {\DP} and {\VW} on river crossing area}
|
||||||
|
\label{tab:chaikin-crossing}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
There is another issue on the wishlist beyond jaggyness and loss of large bents
|
There is another issue on the wishlist beyond jaggyness and loss of large bents
|
||||||
-- combining close bends to larger ones.
|
-- combining close bends to larger ones.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user