def __init__(self, zone, en100k, easting, northing, band=NN, datum=Datums.WGS84, name=NN): '''New L{Mgrs} Military grid reference. @arg zone: 6° longitudinal zone (C{int}), 1..60 covering 180°W..180°E. @arg en100k: Two-letter EN digraph (C{str}), 100 km grid square. @arg easting: Easting (C{meter}), within 100 km grid square. @arg northing: Northing (C{meter}), within 100 km grid square. @kwarg band: Optional 8° latitudinal band (C{str}), C..X covering 80°S..84°N. @kwarg datum: Optional this reference's datum (L{Datum}, L{Ellipsoid}, L{Ellipsoid2} or L{a_f2Tuple}). @kwarg name: Optional name (C{str}). @raise MGRSError: Invalid MGRS grid reference, B{C{zone}}, B{C{en100k}}, B{C{easting}}, B{C{northing}} or B{C{band}}. @raise TypeError: Invalid B{C{datum}}. @example: >>> from pygeodesy import Mgrs >>> m = Mgrs('31U', 'DQ', 48251, 11932) # 31U DQ 48251 11932 ''' if name: self.name = name self._zone, self._band, self._bandLat = _to3zBlat( zone, band, MGRSError) try: en = str(en100k).upper() if len(en) != 2: raise IndexError # caught below self._en100k = en self._en100k2m() except IndexError: raise MGRSError(en100k=en100k) self._easting = Easting(easting, Error=MGRSError) self._northing = Northing(northing, Error=MGRSError) if datum not in (None, self._datum): self._datum = _ellipsoidal_datum(datum, name=name)
def __init__(self, zone, en100k, easting, northing, band='', datum=Datums.WGS84, name=''): '''New L{Mgrs} Military grid reference. @param zone: 6° longitudinal zone (C{int}), 1..60 covering 180°W..180°E. @param en100k: Two-letter EN digraph (C{str}), 100 km grid square. @param easting: Easting (C{meter}), within 100 km grid square. @param northing: Northing (C{meter}), within 100 km grid square. @keyword band: Optional 8° latitudinal band (C{str}), C..X covering 80°S..84°N. @keyword datum: Optional this reference's datum (L{Datum}). @keyword name: Optional name (C{str}). @raise MGRSError: Invalid MGRS grid reference, B{C{zone}}, B{C{en100k}} or B{C{band}}. @example: >>> from pygeodesy import Mgrs >>> m = Mgrs('31U', 'DQ', 48251, 11932) # 31U DQ 48251 11932 ''' if name: self.name = name self._zone, self._band, self._bandLat = _to3zBlat( zone, band, MGRSError) try: en = str(en100k).upper() if len(en) != 2: raise IndexError # caught below self._en100k = en self._en100k2m() except IndexError: raise MGRSError('%s invalid: %r' % ('en100k', en100k)) self._easting, self._northing = float(easting), float(northing) if self._datum != datum: self._datum = datum