2018-02-16 20:38:21 +00:00
|
|
|
import axi
|
|
|
|
import sys
|
|
|
|
|
|
|
|
def prepare():
|
|
|
|
d = axi.Drawing.load(sys.argv[1])
|
|
|
|
print len(d.paths)
|
|
|
|
print 'transforming'
|
|
|
|
d = d.rotate_and_scale_to_fit(12, 8.5)
|
|
|
|
print 'sorting'
|
|
|
|
d = d.sort_paths()
|
|
|
|
print 'joining'
|
|
|
|
d = d.join_paths(0.01)
|
|
|
|
print len(d.paths)
|
|
|
|
print 'simplifying'
|
|
|
|
d = d.simplify_paths(0.005)
|
|
|
|
print 'rendering'
|
|
|
|
im = d.render(
|
|
|
|
scale=109 * 1, line_width=0.3/25.4,
|
2018-02-19 22:12:10 +00:00
|
|
|
show_axi_bounds=False, use_axi_bounds=False)
|
2018-02-16 20:38:21 +00:00
|
|
|
im.write_to_png('isolines.png')
|
|
|
|
d.dump('isolines.axi')
|
|
|
|
|
|
|
|
def vertical_stack(ds, spacing=0, center=True):
|
|
|
|
result = axi.Drawing()
|
|
|
|
y = 0
|
|
|
|
for d in ds:
|
|
|
|
x = 0
|
|
|
|
if center:
|
|
|
|
x = -d.width / 2
|
|
|
|
d = d.origin().translate(x, y)
|
|
|
|
result.add(d)
|
|
|
|
y += d.height + spacing
|
|
|
|
return result
|
|
|
|
|
|
|
|
def title():
|
|
|
|
d1 = axi.Drawing(axi.text('Topography of', axi.METEOROLOGY))
|
|
|
|
d1 = d1.scale_to_fit_height(0.25)
|
|
|
|
d2 = axi.Drawing(axi.text('Vancouver Island', axi.METEOROLOGY))
|
|
|
|
d2 = d2.scale_to_fit_height(0.375)
|
|
|
|
d = vertical_stack([d1, d2], 0.125, False)
|
|
|
|
d = d.join_paths(0.01)
|
|
|
|
d = d.simplify_paths(0.001)
|
|
|
|
d = d.move(0, 8.5, 0, 1)
|
|
|
|
return d
|
|
|
|
|
|
|
|
def main():
|
|
|
|
d = axi.Drawing.load(sys.argv[1])
|
|
|
|
d.add(title())
|
|
|
|
im = d.render(
|
|
|
|
scale=109 * 1, line_width=0.3/25.4,
|
|
|
|
show_axi_bounds=False, use_axi_bounds=False)
|
|
|
|
im.write_to_png('out.png')
|
|
|
|
d.dump('out.axi')
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
2018-02-19 22:12:10 +00:00
|
|
|
prepare()
|
|
|
|
# main()
|