1 |
# 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 |
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 |
|
19 |
if interval / 1000 > 1: |
20 |
interval = long(interval / 1000) |
21 |
unit = 'km' |
22 |
else: |
23 |
interval = long(interval) |
24 |
unit = 'm' |
25 |
|
26 |
return interval, unit |
27 |
|
28 |
def roundInterval(d): |
29 |
"""Round float.""" |
30 |
if d<.001: |
31 |
interval = long(d*10000)/10000.0 |
32 |
return interval, "%.4f" % interval |
33 |
if d<.01: |
34 |
interval = long(d*1000)/1000.0 |
35 |
return interval, "%.3f" % interval |
36 |
if d<.1: |
37 |
interval = long(d*100)/100.0 |
38 |
return interval, "%.2f" % interval |
39 |
if d<1: |
40 |
interval = long(d*10)/10.0 |
41 |
return interval, "%.1f" % interval |
42 |
if d<10: |
43 |
return long(d), "%d" % d |
44 |
if d<100: |
45 |
interval = long(d/10) * 10 |
46 |
return interval, "%d" % interval |
47 |
if d<1000: |
48 |
interval = long(d/100) * 100 |
49 |
return interval, "%d" % interval |
50 |
if d<10000: |
51 |
interval = long(d/1000) * 1000 |
52 |
return interval, "%d" % interval |
53 |
if d<100000: |
54 |
interval = long(d/10000) * 10000 |
55 |
return interval, "%d" % interval |
56 |
|
57 |
return -1, '' |
58 |
|