1 |
frank |
853 |
# Copyright (c) 2001, 2002 by Intevation GmbH |
2 |
|
|
# Authors: |
3 |
|
|
# Frank Koormann <[email protected]> |
4 |
|
|
# |
5 |
|
|
# This program is free software under the GPL (>=v2) |
6 |
|
|
# Read the file COPYING coming with Thuban for details. |
7 |
|
|
|
8 |
|
|
__version__ = "$Revision$" |
9 |
|
|
|
10 |
|
|
from Thuban import _ |
11 |
|
|
|
12 |
frank |
861 |
def deriveInterval(width, scale): |
13 |
|
|
"""Calculate scalebar interval and unit which fits width for scale.""" |
14 |
|
|
try: |
15 |
|
|
interval = width / scale |
16 |
|
|
except ZeroDivisionError: |
17 |
|
|
return -1, '' |
18 |
frank |
853 |
|
19 |
frank |
861 |
if interval / 1000 > 1: |
20 |
frank |
913 |
interval = long(interval / 1000) |
21 |
frank |
861 |
unit = 'km' |
22 |
|
|
else: |
23 |
frank |
913 |
interval = long(interval) |
24 |
frank |
861 |
unit = 'm' |
25 |
frank |
853 |
|
26 |
frank |
861 |
return interval, unit |
27 |
frank |
853 |
|
28 |
frank |
861 |
def roundInterval(d): |
29 |
|
|
"""Round float.""" |
30 |
|
|
if d<.001: |
31 |
frank |
913 |
interval = long(d*10000)/10000.0 |
32 |
frank |
861 |
return interval, "%.4f" % interval |
33 |
|
|
if d<.01: |
34 |
frank |
913 |
interval = long(d*1000)/1000.0 |
35 |
frank |
861 |
return interval, "%.3f" % interval |
36 |
|
|
if d<.1: |
37 |
frank |
913 |
interval = long(d*100)/100.0 |
38 |
frank |
861 |
return interval, "%.2f" % interval |
39 |
|
|
if d<1: |
40 |
frank |
913 |
interval = long(d*10)/10.0 |
41 |
frank |
861 |
return interval, "%.1f" % interval |
42 |
|
|
if d<10: |
43 |
frank |
913 |
return long(d), "%d" % d |
44 |
frank |
861 |
if d<100: |
45 |
frank |
913 |
interval = long(d/10) * 10 |
46 |
frank |
861 |
return interval, "%d" % interval |
47 |
|
|
if d<1000: |
48 |
frank |
913 |
interval = long(d/100) * 100 |
49 |
frank |
861 |
return interval, "%d" % interval |
50 |
|
|
if d<10000: |
51 |
frank |
913 |
interval = long(d/1000) * 1000 |
52 |
frank |
861 |
return interval, "%d" % interval |
53 |
|
|
if d<100000: |
54 |
frank |
913 |
interval = long(d/10000) * 10000 |
55 |
frank |
861 |
return interval, "%d" % interval |
56 |
frank |
853 |
|
57 |
frank |
861 |
return -1, '' |
58 |
frank |
853 |
|