~tim-clicks/sahana-eden/minor

« back to all changes in this revision

Viewing changes to modules/geopy/format.py

  • Committer: Fran Boon
  • Date: 2010-02-19 01:03:42 UTC
  • Revision ID: flavour@partyvibe.com-20100219010342-gkgpxt681ikz6xd8
Include geopy, amend to look for simplejson in gluon not django, add OSM geocoder from tcarobruce

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
from geopy import units
 
2
 
 
3
# Unicode characters for symbols that appear in coordinate strings.
 
4
DEGREE = unichr(176)
 
5
PRIME = unichr(8242)
 
6
DOUBLE_PRIME = unichr(8243)
 
7
ASCII_DEGREE = ''
 
8
ASCII_PRIME = "'"
 
9
ASCII_DOUBLE_PRIME = '"'
 
10
LATIN1_DEGREE = chr(176)
 
11
HTML_DEGREE = '°'
 
12
HTML_PRIME = '′'
 
13
HTML_DOUBLE_PRIME = '″'
 
14
XML_DECIMAL_DEGREE = '°'
 
15
XML_DECIMAL_PRIME = '′'
 
16
XML_DECIMAL_DOUBLE_PRIME = '″'
 
17
XML_HEX_DEGREE = '&xB0;'
 
18
XML_HEX_PRIME = '&x2032;'
 
19
XML_HEX_DOUBLE_PRIME = '&x2033;'
 
20
ABBR_DEGREE = 'deg'
 
21
ABBR_ARCMIN = 'arcmin'
 
22
ABBR_ARCSEC = 'arcsec'
 
23
 
 
24
DEGREES_FORMAT = "%(degrees)d%(deg)s %(minutes)d%(arcmin)s %(seconds)s%(arcsec)s"
 
25
UNICODE_SYMBOLS = {'deg': DEGREE, 'arcmin': PRIME, 'arcsec': DOUBLE_PRIME}
 
26
ASCII_SYMBOLS = {'deg': ASCII_DEGREE, 'arcmin': ASCII_PRIME, 'arcsec': ASCII_DOUBLE_PRIME}
 
27
LATIN1_SYMBOLS = {'deg': LATIN1_DEGREE, 'arcmin': ASCII_PRIME, 'arcsec': ASCII_DOUBLE_PRIME}
 
28
HTML_SYMBOLS = {'deg': HTML_DEGREE, 'arcmin': HTML_PRIME, 'arcsec': HTML_DOUBLE_PRIME}
 
29
XML_SYMBOLS = {'deg': XML_DECIMAL_DEGREE, 'arcmin': XML_DECIMAL_PRIME, 'arcsec': XML_DECIMAL_DOUBLE_PRIME}
 
30
ABBR_SYMBOLS = {'deg': ABBR_DEGREE, 'arcmin': ABBR_ARCMIN, 'arcsec': ABBR_ARCSEC}
 
31
 
 
32
def format_degrees(degrees, format=DEGREES_FORMAT, symbols=ASCII_SYMBOLS):
 
33
    arcminutes = units.arcminutes(degrees=degrees - int(degrees))
 
34
    arcseconds = units.arcseconds(arcminutes=arcminutes - int(arcminutes))
 
35
    format_dict = dict(
 
36
        symbols,
 
37
        degrees=degrees,
 
38
        minutes=abs(arcminutes),
 
39
        seconds=abs(arcseconds)
 
40
    )
 
41
    return format % format_dict
 
42
 
 
43
DISTANCE_FORMAT = "%(magnitude)s%(unit)s"
 
44
DISTANCE_UNITS = {
 
45
    'km': lambda d: d,
 
46
    'm': lambda d: units.meters(kilometers=d),
 
47
    'mi': lambda d: units.miles(kilometers=d),
 
48
    'ft': lambda d: units.feet(kilometers=d),
 
49
    'nm': lambda d: units.nautical(kilometers=d),
 
50
    'nmi': lambda d: units.nautical(kilometers=d)
 
51
}
 
52
def format_distance(kilometers, format=DISTANCE_FORMAT, unit='km'):
 
53
    magnitude = DISTANCE_UNITS[unit](kilometers)
 
54
    return format % {'magnitude': magnitude, 'unit': unit}
 
55
 
 
56
_DIRECTIONS = [
 
57
    ('north', 'N'),
 
58
    ('north by east', 'NbE'),
 
59
    ('north-northeast', 'NNE'),
 
60
    ('northeast by north', 'NEbN'),
 
61
    ('northeast', 'NE'),
 
62
    ('northeast by east', 'NEbE'),
 
63
    ('east-northeast', 'ENE'),
 
64
    ('east by north', 'EbN'),
 
65
    ('east', 'E'),
 
66
    ('east by south', 'EbS'),
 
67
    ('east-southeast', 'ESE'),
 
68
    ('southeast by east', 'SEbE'),
 
69
    ('southeast', 'SE'),
 
70
    ('southeast by south', 'SEbS'),
 
71
]
 
72
DIRECTIONS, DIRECTIONS_ABBR = zip(*_DIRECTIONS)
 
73
ANGLE_DIRECTIONS = dict((n * 11.25, d) for n, d in enumerate(DIRECTIONS))
 
74
ANGLE_DIRECTIONS_ABBR = dict((n * 11.25, d) for n, d in enumerate(DIRECTIONS_ABBR))
 
75
 
 
76
def format_direction(degrees):
 
77
    pass
 
 
b'\\ No newline at end of file'