From ad0c1c0f5cde722cf22b443774c9a25873a5c691 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Motiejus=20Jak=C5=A1tys?= Date: Wed, 19 May 2021 22:57:49 +0300 Subject: [PATCH] add parameter table --- bib.bib | 30 ++++++++++++++++++++++++++ mj-msc.tex | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ wm.sql | 2 +- 3 files changed, 93 insertions(+), 1 deletion(-) diff --git a/bib.bib b/bib.bib index 02bad4a..e409c85 100644 --- a/bib.bib +++ b/bib.bib @@ -182,3 +182,33 @@ issn={1436-5081}, doi={10.1007/BF01742852}, } + +@online{mappingunits, + author={Aileen Buckley}, + title={Guidelines for minimum size for text and symbols on maps}, + year={2008}, + month={1}, + day={16}, + url={https://www.esri.com/arcgis-blog/products/product/mapping/guidelines-for-minimum-size-for-text-and-symbols-on-maps/}, + organization={Esri}, + urldate={2021-05-03}, +} + +@online{cartoucheMinimalDimensions, + author={CartouCHe}, + title={Cartographic Design for Screen Maps}, + subtitle={Minimum Dimensions}, + year={2012}, + month={1}, + day={26}, + url={http://www.e-cartouche.ch/content_reg/cartouche/cartdesign/en/html/GenRules_learningObject3.html}, + organization={CartouCHe}, + urldate={2021-05-03}, +} + +@online{epsg3857, + author={MapTiler Team}, + title={WGS 84 / Pseudo-Mercator}, + url={https://epsg.io/3857}, + urldate={2021-05-03}, +} diff --git a/mj-msc.tex b/mj-msc.tex index d1fb73c..e32abc6 100644 --- a/mj-msc.tex +++ b/mj-msc.tex @@ -16,6 +16,7 @@ \usepackage[toc,page,title]{appendix} \usepackage{caption} \usepackage{subcaption} +\usepackage{dcolumn} \usepackage{gensymb} \usepackage{units} \usepackage{varwidth} @@ -545,6 +546,66 @@ NOTE: explain how different river segments are merged into a single line. This is not explained in the {\WM} paper, but is a necessary prerequisite. This is implemented in \texttt{aggregate-rivers.sql}. +\subsection{Bend scaling and dimensions} +\label{sec:bend-scaling-and-dimensions} + +{\WM} accepts a single input parameter: the diameter of a half-circle. If the +bend's adjusted size (explained in detail in +section~\onpage{sec:shape-of-a-bend}) is greater than the area of the +half-circle, then the bend will be left untouched. If the bend's adjusted size +is smaller than the area of the provided half-circle, the bend will be +simplified: either exaggerated, combined or eliminated. + +The half-circle's diameter depends on the desired scale of the target map: it +should be small enough to retain small but visible bends, + +The extent of line simplification depends on the desired target scale. +Simplification should be more aggressive for smaller target scales, and +less aggressive for larger scales. This section goes through the process +of finding the correct variable to {\WM} algorithm. + +What is the minimal, but still eligible figure that can should be displayed on +the map? + +According to \titlecite{cartoucheMinimalDimensions}, the map is typically held +at a distance of 30cm. Recommended minimum symbol size given viewing distance +of 45cm (1.5 feet) is 1.5mm, as analyzed in \titlecite{mappingunits}. + +In our case, our target is line bend, rather than a symbol. Assume 1.5mm is a +diameter of the bend. A semi-circle of 1.5mm diameter is depicted in +figure~\ref{fig:half-circle}. In other words, a bend of this size or larger, +when adjusted to scale, will not be generalized. + +\begin{figure}[h] + \centering + \begin{tikzpicture}[x=1mm,y=1mm] + \draw[] (-10, 0) -- (-.75,0) arc (225:-45:.75) -- (10, 0); + \end{tikzpicture} + \caption{Smallest feature that will be not generalized.} + \label{fig:half-circle} +\end{figure} + +{\WM} algorithm does not have a notion of scale, but it does have a notion of +distance. Assuming measurement units in projected coordinate system are meters +(for example, \titlecite{epsg3857}), conversion is depicted in +table~\ref{table:scale-halfcirlce-diameter}. + +\newcolumntype{d}[1]{D{.}{.}{#1} } +\begin{table}[h] + \centering + \begin{tabular}{|c @{:}l | D{.}{.}{1} |} + \hline + \multicolumn{2}{|c|}{Scale} & \multicolumn{1}{c|}{Diameter (m)} \\ \hline + 1 & 10000 & 15 \\ \hline + 1 & 25000 & 37.5 \\ \hline + 1 & 50000 & 50 \\ \hline + 1 & 250000 & 250 \\ \hline + \end{tabular} + \caption{{\WM} parameter table for popular scales.} + \label{table:scale-halfcirlce-diameter} +\end{table} + + \subsection{Definition of a Bend} \label{sec:definition-of-a-bend} @@ -754,6 +815,7 @@ Other than that, once this section is implemented, each bend will have a list of properties, upon which actions later will be performed. \subsection{Shape of a Bend} +\label{sec:shape-of-a-bend} This section introduces \textsc{adjusted size}, which trivially derives from \textsc{compactness index} $cmp$ and shape's area $A$: diff --git a/wm.sql b/wm.sql index 9a30abd..c5135da 100644 --- a/wm.sql +++ b/wm.sql @@ -627,7 +627,7 @@ begin bends = wm_detect_bends(lines[i], dbgname, gen); bends = wm_fix_gentle_inflections(bends, dbgname, gen); - select * from wm_self_crossing(bends) into bends, mutated; + select * from wm_self_crossing(bends, dbgname, gen) into bends, mutated; if mutated then lines[i] = st_linemerge(st_union(bends));