add rectangle

This commit is contained in:
Motiejus Jakštys 2020-05-26 17:18:12 +03:00
parent dc6046fc68
commit 6d3fcd2ff0
2 changed files with 18 additions and 6 deletions

View File

@ -22,15 +22,15 @@ endef
define gpkg2pdf define gpkg2pdf
$(1).pdf: $(1).gpkg $(1).pdf: $(1).gpkg
./layer2img.py --size=$(2) --infile=$(1).gpkg --outfile $(1).pdf ./layer2img.py $(2) --infile=$(1).gpkg --outfile $(1).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,52x15)) $(eval $(call gpkg2pdf,sinewave,--size=52x15))
$(eval $(call gpkg2pdf,zeimena,148x210)) $(eval $(call gpkg2pdf,zeimena,--size=148x210 --rect $(CROSSING)))
sinewave.gpkg: sinewave.py sinewave.gpkg: sinewave.py
./sinewave.py ./sinewave.py

View File

@ -5,6 +5,7 @@ import argparse
import geopandas import geopandas
import psycopg2 import psycopg2
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import matplotlib.patches as patches
INCH = 25.4 # mm INCH = 25.4 # mm
@ -32,6 +33,9 @@ def parse_args():
parser.add_argument( parser.add_argument(
'--clip', type=float, nargs=4, '--clip', type=float, nargs=4,
metavar=('xmin', 'ymin', 'xmax', 'ymax')) metavar=('xmin', 'ymin', 'xmax', 'ymax'))
parser.add_argument(
'--rect', type=float, nargs=4, help="Overlay a rectangle",
metavar=('xmin', 'ymin', 'xmax', 'ymax'))
return parser.parse_args() return parser.parse_args()
@ -45,9 +49,17 @@ def main():
f = geopandas.read_file(args.infile) f = geopandas.read_file(args.infile)
fig, ax = plt.subplots() fig, ax = plt.subplots()
f.plot(ax=ax, figsize=args.size) f.plot(ax=ax, figsize=args.size)
if args.clip: if c := args.clip:
ax.set_xlim(left=args.clip[0], right=args.clip[2]) ax.set_xlim(left=c[0], right=c[2])
ax.set_ylim(bottom=args.clip[1], top=args.clip[3]) ax.set_ylim(bottom=c[1], top=c[3])
if r := args.rect:
w, h = r[2] - r[0], r[3] - r[1]
rect = patches.Rectangle(
(r[0], r[1]),
w, h,
linewidth=1,edgecolor='r',facecolor='none')
ax.add_patch(rect)
ax.axis('off') ax.axis('off')
ax.margins(0, 0) ax.margins(0, 0)
fig.tight_layout(0) fig.tight_layout(0)