def parseUPS5(strUPS, datum=Datums.WGS84, Ups=Ups, falsed=True, name=NN): '''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}}. ''' z, p, e, n, B = _parseUTMUPS5(strUPS, _UPS_ZONE_STR, Error=UPSError) if z != _UPS_ZONE or (B and B not in _Bands): raise UPSError(strUPS=strUPS, zone=z, band=B) r = UtmUps5Tuple(z, p, e, n, B, Error=UPSError) if Ups is None else \ Ups(z, p, e, n, band=B, falsed=falsed, datum=datum) return _xnamed(r, name, force=True)
def _parseUTM5(strUTM, datum, Xtm, falsed, Error=UTMError): # imported by .etm '''(INTERNAL) Parse a string representing a UTM coordinate, consisting of C{"zone[band] hemisphere easting northing"}, see L{parseETM5} and L{parseUTM5}. ''' z, h, e, n, B = _parseUTMUPS5(strUTM, None, Error=Error) if _UTM_ZONE_MIN > z or z > _UTM_ZONE_MAX or (B and B not in _Bands): raise Error(strUTM=strUTM, zone=z, band=B) r = UtmUps5Tuple(z, h, e, n, B, Error=Error) if Xtm is None else \ Xtm(z, h, e, n, band=B, datum=datum, falsed=falsed) return r