example bends generalized

This commit is contained in:
Motiejus Jakštys 2020-05-26 13:56:26 +03:00
parent 94f0e54ea6
commit 6d1dd019d7
4 changed files with 38 additions and 19 deletions

View File

@ -4,7 +4,7 @@ GEN = $(addsuffix .pdf, \
$(addprefix zeimena-visvalingam-,$(TOLERANCES))) $(addprefix zeimena-visvalingam-,$(TOLERANCES)))
mj-referatas.pdf: mj-referatas.tex version.tex bib.bib zeimena-pretty.pdf \ mj-referatas.pdf: mj-referatas.tex version.tex bib.bib zeimena-pretty.pdf \
sinewave-douglas-100.pdf $(GEN) sinewave.pdf sinewave-douglas-5.pdf $(GEN)
latexmk -g -pdf $< latexmk -g -pdf $<
define algo2img define algo2img
@ -16,13 +16,16 @@ $(1)-$(2)-$(3).pdf: layer2img.py db/.faux_$(1)-$(2)-$(3)
./layer2img.py --table=$(1)_$(2)_$(3) --size=52x74 --outfile $(1)-$(2)-$(3).pdf ./layer2img.py --table=$(1)_$(2)_$(3) --size=52x74 --outfile $(1)-$(2)-$(3).pdf
endef endef
$(eval $(call algo2img,sinewave,douglas,100)) $(eval $(call algo2img,sinewave,douglas,5))
$(foreach t,$(TOLERANCES),$(eval $(call algo2img,zeimena,douglas,$(t)))) $(foreach t,$(TOLERANCES),$(eval $(call algo2img,zeimena,douglas,$(t))))
$(foreach t,$(TOLERANCES),$(eval $(call algo2img,zeimena,visvalingam,$(t)))) $(foreach t,$(TOLERANCES),$(eval $(call algo2img,zeimena,visvalingam,$(t))))
sinewave.gpkg: sinewave.py sinewave.gpkg: sinewave.py
./sinewave.py ./sinewave.py
sinewave.pdf: sinewave.gpkg
./layer2img.py --size=52x15 --infile=$< --outfile=$@
db/.faux_ready: zeimena.gpkg sinewave.gpkg managedb db/.faux_ready: zeimena.gpkg sinewave.gpkg managedb
-./managedb stop; rm -fr db -./managedb stop; rm -fr db
./managedb init ./managedb init

View File

@ -45,6 +45,14 @@
publisher={John Wiley and Sons} publisher={John Wiley and Sons}
} }
@article{miuller1995generalization,
title={Generalization-state of the art and issues},
author={Miuller, JC and Weibel, R and Lagrange, J and {\"E}alge, F},
journal={GIS and Generalisation: Methodology and Practice},
pages={3--17},
year={1995}
}
@inproceedings{mcmaster1992generalization, @inproceedings{mcmaster1992generalization,
title={Generalization in digital cartography}, title={Generalization in digital cartography},
author={McMaster, Robert Brainerd and Shea, K Stuart}, author={McMaster, Robert Brainerd and Shea, K Stuart},

View File

@ -52,6 +52,16 @@ connect rivers first to a single polylines:
ideal hypothesis: mueller algorithm + topology may fully realize cartographic generalization tasks. ideal hypothesis: mueller algorithm + topology may fully realize cartographic generalization tasks.
what scales and what distances? what scales and what distances?
= Intro: Aktualumas
FOSS nėra realizuotas tinkamas kartografinio realizavimo algoritmas (23 sakiniai). Kad kartografai turėtų
įrankį upių generalizavimui.
Bazė: imame tai, ką dabar turi kartografai įrankių paletėj.
Imti mažus upės vingius. Paimti mažas atkarpėles ir palyginti su originalia.
Todėl, kad nėra kilpų.
\fi \fi
\author{Motiejus Jakštys} \author{Motiejus Jakštys}
@ -203,11 +213,11 @@ retained.
To sum up, both {\VW} and {\DP} simplify the lines, but their cartographic To sum up, both {\VW} and {\DP} simplify the lines, but their cartographic
output poorly represents lines and bends. Where to look for better output? output poorly represents lines and bends. Where to look for better output?
\section{Suggested alternative} \subsection{Combining bends}
\label{sec:suggested_alternative}
{\WM} observed how professional cartographers are simplifying rivers and encoded it Consecutive small bends should be combined into larger bends, and that is one
to an algorithm which can be implemented by a computer. of the least developed aspects of automatic line generalization, according to
\cite{miuller1995generalization}. {\WM} encoded this process to an algorithm.
Imagine there are two small bends close to each other, similar to Imagine there are two small bends close to each other, similar to
figure~\ref{pic:example-bend} on page~\pageref{pic:example-bend}, and one needs figure~\ref{pic:example-bend} on page~\pageref{pic:example-bend}, and one needs
@ -216,22 +226,20 @@ straight line, but too small to retain both and retain their complexity.
\begin{figure}[h] \begin{figure}[h]
\centering \centering
\begin{tikzpicture}[xscale=.5] \includegraphics[width=52mm]{sinewave}
\draw (-4,-1) -- (-1, -1);
\draw (-1,-1) cos (0,0) sin (1,1) cos (2,0) sin (3,-1) cos (4,0) sin (5,1) cos(6,0) sin (7,-1);
\draw (7,-1) -- (10, -1);
\end{tikzpicture}
\caption{Example river bend that should be generalized} \caption{Example river bend that should be generalized}
\label{pic:example-bend} \label{pic:sinewave}
\end{figure} \end{figure}
We would imagine When one applies {\DP} to figure~\ref{pic:sinewave}, either both bends remain,
or become a straight line.
\begin{itemize} \begin{figure}[h]
\item Describe algorithm by {\WM}. \centering
\item Explain how outputs will differ. \includegraphics[width=52mm]{sinewave-douglas-5}
\item Explain implementation plan? \caption{Example bend, generalized}
\end{itemize} \label{pic:sinewave-douglas-5}
\end{figure}
\section{Related Work and future suggestions} \section{Related Work and future suggestions}
\label{sec:related_work} \label{sec:related_work}

View File

@ -6,7 +6,7 @@ import geopandas as gpd
from shapely.geometry import LineString, MultiLineString from shapely.geometry import LineString, MultiLineString
INTERVAL = 0.1 INTERVAL = 0.1
TAIL_LEN = 4 TAIL_LEN = 10
SINE_LEN = 7 SINE_LEN = 7
TAILS = np.zeros(int(TAIL_LEN / INTERVAL)) TAILS = np.zeros(int(TAIL_LEN / INTERVAL))