Source code for safe.storage.layer

"""**Class Layer**
"""

from safe.common.utilities import verify
from projection import Projection


[docs]class Layer: """Common class for geospatial layers """ def __init__(self, name=None, projection=None, keywords=None, style_info=None, sublayer=None): """Common constructor for all types of layers See docstrings for class Raster and class Vector for details. """ # Name msg = ('Specified name must be a string or None. ' 'I got %s with type %s' % (name, str(type(name))[1:-1])) verify(isinstance(name, basestring) or name is None, msg) self.name = name # Projection self.projection = Projection(projection) # Keywords if keywords is None: self.keywords = {} else: msg = ('Specified keywords must be either None or a ' 'dictionary. I got %s' % keywords) verify(isinstance(keywords, dict), msg) self.keywords = keywords # Style info if style_info is None: self.style_info = {} else: msg = ('Specified style_info must be either None or a ' 'dictionary. I got %s' % style_info) verify(isinstance(style_info, dict), msg) self.style_info = style_info # Defaults self.sublayer = sublayer self.filename = None self.data = None def __ne__(self, other): """Override '!=' to allow comparison with other projection objecs """ return not self == other def get_name(self): return self.name def set_name(self, name): self.name = name def get_filename(self): return self.filename
[docs] def get_projection(self, proj4=False): """Return projection of this layer as a string """ return self.projection.get_projection(proj4)
[docs] def get_keywords(self, key=None): """Return a copy of the keywords dictionary Args: * key (optional): If specified value will be returned for key only """ if key is None: return self.keywords.copy() else: if key in self.keywords: return self.keywords[key] else: msg = ('Keyword %s does not exist in %s: Options are ' '%s' % (key, self.get_name(), self.keywords.keys())) raise Exception(msg)
[docs] def get_style_info(self): """Return style_info dictionary """ return self.style_info
[docs] def get_impact_summary(self): """Return 'impact_summary' keyword if present. Otherwise ''. """ if 'impact_summary' in self.keywords: return self.keywords['impact_summary'] else: return '' # Layer properties used to identify their types
@property def is_inasafe_spatial_object(self): return True @property def is_raster(self): if 'Raster' in str(self.__class__): return True else: return False @property def is_vector(self): if 'Vector' in str(self.__class__): return True else: return False