def _dms_formatter(latitude, longitude, mode, unistr=False): """Generate a human readable DM/DMS location string. :param float latitude: Location's latitude :param float longitude: Location's longitude :param str mode: Coordinate formatting system to use :param bool unistr: Whether to use extended character set """ if unistr: chars = ('°', '′', '″') else: chars = ('°', "'", '"') latitude_dms = tuple(map(abs, utils.to_dms(latitude, mode))) longitude_dms = tuple(map(abs, utils.to_dms(longitude, mode))) text = [] if mode == 'dms': text.append('%%02i%s%%02i%s%%02i%s' % chars % latitude_dms) else: text.append('%%02i%s%%05.2f%s' % chars[:2] % latitude_dms) text.append('S' if latitude < 0 else 'N') if mode == 'dms': text.append(', %%03i%s%%02i%s%%02i%s' % chars % longitude_dms) else: text.append(', %%03i%s%%05.2f%s' % chars[:2] % longitude_dms) text.append('W' if longitude < 0 else 'E') return text
def nmea_longitude(longitude): """Generate a NMEA-formatted longitude pair. :param float longitude: Longitude to convert :rtype: ``tuple`` :return: NMEA-formatted longitude values """ return ('%03i%07.4f' % utils.to_dms(abs(longitude), 'dm'), 'E' if longitude >= 0 else 'W')
def nmea_latitude(latitude): """Generate a NMEA-formatted latitude pair. :param float latitude: Latitude to convert :rtype: ``tuple`` :return: NMEA-formatted latitude values """ return ('%02i%07.4f' % utils.to_dms(abs(latitude), 'dm'), 'N' if latitude >= 0 else 'S')
def test_to_dms_error(): with raises(ValueError, message='Unknown style type None'): to_dms(-0.221, style=None)
def test_to_dms_style(): assert to_dms(-0.221, style='dm') == (0, -13.26)
def test_to_dms(angle, result): assert to_dms(angle) == result
def test_to_dms(): expect(to_dms(52.015)) == (52, 0, 54.0) expect(to_dms(-0.221)) == (0, -13, -15.600000000000023) expect(to_dms(-0.221, style='dm')) == (0, -13.26) with expect.raises(ValueError, 'Unknown style type None'): to_dms(-0.221, style=None)