def parseUPS5(strUPS, datum=Datums.WGS84, Ups=Ups, falsed=True, name=''): '''Parse a string representing a UPS coordinate, consisting of C{"[zone][band] pole easting northing"} where B{C{zone}} is pseudo zone C{"00"|"0"|""} and C{band} is C{'A'|'B'|'Y'|'Z'|''}. @arg strUPS: A UPS coordinate (C{str}). @kwarg datum: Optional datum to use (L{Datum}). @kwarg Ups: Optional class to return the UPS coordinate (L{Ups}) or C{None}. @kwarg falsed: Both B{C{easting}} and B{C{northing}} are falsed (C{bool}). @kwarg name: Optional B{C{Ups}} name (C{str}). @return: The UPS coordinate (B{C{Ups}}) or a L{UtmUps5Tuple}C{(zone, hemipole, easting, northing, band)} if B{C{Ups}} is C{None}. The C{hemipole} is the C{'N'|'S'} pole, the UPS projection top/center. @raise UPSError: Invalid B{C{strUPS}}. ''' try: u = strUPS.lstrip() if not u.startswith(_UPS_ZONE_STR): raise ValueError z, p, e, n, B = _parseUTMUPS(u) if z != _UPS_ZONE or (B and B not in _Bands): raise ValueError except (AttributeError, TypeError, ValueError): raise InvalidError(strUPS=strUPS, Error=UPSError) r = UtmUps5Tuple(z, p, e, n, B) if Ups is None else \ Ups(z, p, e, n, band=B, falsed=falsed, datum=datum) return _xnamed(r, name)
def _parseUTM5(strUTM, Error): '''(INTERNAL) Parse a string representing a UTM coordinate, consisting of C{"zone[band] hemisphere easting northing"}, see L{parseETM5} and L{parseUTM5}. ''' try: z, h, e, n, B = _parseUTMUPS(strUTM) if _UTM_ZONE_MIN <= z <= _UTM_ZONE_MAX and \ (B in _Bands or not B): return UtmUps5Tuple(z, h, e, n, B) except ValueError: pass raise Error('%s invalid: %r' % ('strUTM', strUTM))