1
from geopy import units
3
# Unicode characters for symbols that appear in coordinate strings.
6
DOUBLE_PRIME = unichr(8243)
9
ASCII_DOUBLE_PRIME = '"'
10
LATIN1_DEGREE = chr(176)
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;'
21
ABBR_ARCMIN = 'arcmin'
22
ABBR_ARCSEC = 'arcsec'
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}
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))
38
minutes=abs(arcminutes),
39
seconds=abs(arcseconds)
41
return format % format_dict
43
DISTANCE_FORMAT = "%(magnitude)s%(unit)s"
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)
52
def format_distance(kilometers, format=DISTANCE_FORMAT, unit='km'):
53
magnitude = DISTANCE_UNITS[unit](kilometers)
54
return format % {'magnitude': magnitude, 'unit': unit}
58
('north by east', 'NbE'),
59
('north-northeast', 'NNE'),
60
('northeast by north', 'NEbN'),
62
('northeast by east', 'NEbE'),
63
('east-northeast', 'ENE'),
64
('east by north', 'EbN'),
66
('east by south', 'EbS'),
67
('east-southeast', 'ESE'),
68
('southeast by east', 'SEbE'),
70
('southeast by south', 'SEbS'),
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))
76
def format_direction(degrees):
b'\\ No newline at end of file'