basins.py 1.95 KB
Newer Older
class Basin(object):

    def __init__(self, shortname, fullname, coordinates=None):
        self._shortname = shortname
        self._fullname = fullname
        if coordinates:
            self._coordinates = coordinates
        else:
            self._coordinates = [0, 0, 0, 0]

    @property
    def shortname(self):
        return self._shortname

    @property
    def fullname(self):
        return self._fullname

    @property
    def min_lon(self):
        return self._coordinates[0]

    @property
    def max_lon(self):
        return self._coordinates[1]

    @property
    def min_lat(self):
        return self._coordinates[2]

    @property
    def max_lat(self):
        return self._coordinates[3]

    @property
    def lon(self):
        return self._coordinates[0:2]

    @property
    def lat(self):
        return self._coordinates[2:]


class Basins(object):
    Global = Basin('glob', 'Global_Ocean')
    Atlantic = Basin('Atl', 'Atlantic_Ocean')
    NorthAtlantic = Basin('NAtl', 'North_Atlantic_Ocean')
    TropicalAtlantic = Basin('TAtl', 'Tropical_Atlantic_Ocean')
    Pacific = Basin('Pac', 'Pacific_Ocean')
    NorthPacific = Basin('NPac', 'North_Pacific_Ocean')
    TropicalPacific = Basin('TPac', 'Tropical_Pacific_Ocean')
    IndoPacific = Basin('IndPac', 'Indo_Pacific_Ocean')
    Indian = Basin('Ind', 'Indian_Ocean')
    TropicalIndian = Basin('TInd', 'Tropical_Indian_Ocean')
    Antarctic = Basin('Anta', 'Antarctic_Ocean')
    Arctic = Basin('Arct', 'Arctic_Ocean')
        if isinstance(basin, Basin):
            return basin
        for name in cls.__dict__.keys():
            if name.startswith('_'):
                continue
            # noinspection PyCallByClass
            value = cls.__getattribute__(cls, name)
            if isinstance(value, Basin):
                if basin.lower() in [value.shortname.lower(), value.fullname.lower()]:
                    return value
        return None