better sine wave

This commit is contained in:
Motiejus Jakštys 2020-05-26 18:33:03 +03:00
parent 56090d23e3
commit b73f71eb82
4 changed files with 25 additions and 25 deletions

View File

@ -1,6 +1,6 @@
CROSSING=622916.858 6109272.561 626066.858 6111492.561 # xmin ymin xmax ymax CROSSING=622916.858 6109272.561 626066.858 6111492.561 # xmin ymin xmax ymax
ZEIMENA_TOLERANCES = 100 125 250 500 1000 2000 4000 ZEIMENA_TOLERANCES = 100 125 250 500 1000 2000 4000
SINEWAVE_TOLERANCES = 1 2 3 4 SINEWAVE_TOLERANCES = 1 20 30 40
GEN = $(addsuffix .pdf, \ GEN = $(addsuffix .pdf, \
$(addprefix sinewave-douglas-,$(SINEWAVE_TOLERANCES)) \ $(addprefix sinewave-douglas-,$(SINEWAVE_TOLERANCES)) \
$(addprefix sinewave-visvalingam-,$(SINEWAVE_TOLERANCES)) \ $(addprefix sinewave-visvalingam-,$(SINEWAVE_TOLERANCES)) \
@ -22,17 +22,17 @@ crossing-$(1)-$(2)-%.pdf: layer2img.py db/.faux_$(1)-$(2)-%
endef endef
define gpkg2pdf define gpkg2pdf
$(2): $(1) $(2).pdf: $(1).gpkg
./layer2img.py $(3) --infile=$(1) --outfile $(2) ./layer2img.py $(3) --infile=$(1).gpkg --outfile $(2).pdf
endef endef
$(eval $(call algo2img,sinewave,douglas,52x12)) $(eval $(call algo2img,sinewave,douglas,52x12))
$(eval $(call algo2img,sinewave,visvalingam,52x12)) $(eval $(call algo2img,sinewave,visvalingam,52x12))
$(eval $(call algo2img,zeimena,douglas,52x74)) $(eval $(call algo2img,zeimena,douglas,52x74))
$(eval $(call algo2img,zeimena,visvalingam,52x74)) $(eval $(call algo2img,zeimena,visvalingam,52x74))
$(eval $(call gpkg2pdf,sinewave.gpkg,sinewave.pdf,--size=52x15)) $(eval $(call gpkg2pdf,sinewave,sinewave,--size=52x15))
$(eval $(call gpkg2pdf,zeimena.gpkg,zeimena.pdf,--size=148x210 --rect $(CROSSING))) $(eval $(call gpkg2pdf,zeimena,zeimena,--size=148x210 --rect $(CROSSING)))
$(eval $(call gpkg2pdf,zeimena.gpkg,crossing.pdf,--size=105x74 --clip $(CROSSING))) $(eval $(call gpkg2pdf,zeimena,crossing,--size=105x74 --clip $(CROSSING)))
sinewave.gpkg: sinewave.py sinewave.gpkg: sinewave.py
./sinewave.py ./sinewave.py

View File

@ -12,7 +12,6 @@ INCH = 25.4 # mm
def plt_size(string): def plt_size(string):
if not string: if not string:
# using default matplotlib dimensions
return None return None
try: try:
w, h = string.split("x") w, h = string.split("x")
@ -48,7 +47,8 @@ def main():
else: else:
f = geopandas.read_file(args.infile) f = geopandas.read_file(args.infile)
fig, ax = plt.subplots() fig, ax = plt.subplots()
fig.set_size_inches(args.size) if args.size:
fig.set_size_inches(args.size)
f.plot(ax=ax) f.plot(ax=ax)
if c := args.clip: if c := args.clip:
ax.set_xlim(left=c[0], right=c[2]) ax.set_xlim(left=c[0], right=c[2])

View File

@ -257,25 +257,25 @@ page~\pageref{tab:comparison-sinewave}.
\begin{figure}[h] \begin{figure}[h]
\renewcommand{\tabularxcolumn}[1]{>{\center\small}m{#1}} \renewcommand{\tabularxcolumn}[1]{>{\center\small}m{#1}}
\begin{tabularx}{\textwidth}{ p{1.5cm} | X | X | } \begin{tabularx}{\textwidth}{ p{1.5cm} | X | X | }
Tolerance DP/VW & Tolerance DP/VW &
Douglas \& Peucker & Douglas \& Peucker &
Visvalingam-Whyatt \tabularnewline \hline Visvalingam-Whyatt \tabularnewline \hline
1/1 & 1/1 &
\includegraphics[width=\linewidth]{sinewave-douglas-1} & \includegraphics[width=\linewidth]{sinewave-douglas-1} &
\includegraphics[width=\linewidth]{sinewave-visvalingam-1} \tabularnewline \hline \includegraphics[width=\linewidth]{sinewave-visvalingam-1} \tabularnewline \hline
2/4 & 20/400 &
\includegraphics[width=\linewidth]{sinewave-douglas-2} & \includegraphics[width=\linewidth]{sinewave-douglas-20} &
\includegraphics[width=\linewidth]{sinewave-visvalingam-2} \tabularnewline \hline \includegraphics[width=\linewidth]{sinewave-visvalingam-20} \tabularnewline \hline
3/9 & 30/900 &
\includegraphics[width=\linewidth]{sinewave-douglas-3} & \includegraphics[width=\linewidth]{sinewave-douglas-30} &
\includegraphics[width=\linewidth]{sinewave-visvalingam-3} \tabularnewline \hline \includegraphics[width=\linewidth]{sinewave-visvalingam-30} \tabularnewline \hline
4/16 & 40/1600 &
\includegraphics[width=\linewidth]{sinewave-douglas-4} & \includegraphics[width=\linewidth]{sinewave-douglas-40} &
\includegraphics[width=\linewidth]{sinewave-visvalingam-4} \tabularnewline \hline \includegraphics[width=\linewidth]{sinewave-visvalingam-40} \tabularnewline \hline
\end{tabularx} \end{tabularx}
\caption{{\DP} and {\VW} on example wave} \caption{{\DP} and {\VW} on example wave}

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 = 10 TAIL_LEN = 7
SINE_LEN = 7 SINE_LEN = 7
TAILS = np.zeros(int(TAIL_LEN / INTERVAL)) TAILS = np.zeros(int(TAIL_LEN / INTERVAL))
@ -17,7 +17,7 @@ def main():
amplitude = (np.sin(sin_range * pi / 2) + 1)*2 amplitude = (np.sin(sin_range * pi / 2) + 1)*2
y = np.concatenate([TAILS, amplitude, TAILS]) y = np.concatenate([TAILS, amplitude, TAILS])
x = np.arange(-TAIL_LEN - pi/4, SINE_LEN + TAIL_LEN, INTERVAL) x = np.arange(-TAIL_LEN - pi/4, SINE_LEN + TAIL_LEN, INTERVAL)
lines = LineString(zip(x, y)) lines = LineString(zip(x*10, y*10))
geom = MultiLineString([lines]) geom = MultiLineString([lines])
df = gpd.GeoDataFrame(crs=CRS(3346)) df = gpd.GeoDataFrame(crs=CRS(3346))
df['geometry'] = None df['geometry'] = None