本文整理汇总了Python中coverage_model.parameter.ParameterDictionary.keys方法的典型用法代码示例。如果您正苦于以下问题:Python ParameterDictionary.keys方法的具体用法?Python ParameterDictionary.keys怎么用?Python ParameterDictionary.keys使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类coverage_model.parameter.ParameterDictionary
的用法示例。
在下文中一共展示了ParameterDictionary.keys方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: SimplexCoverage
# 需要导入模块: from coverage_model.parameter import ParameterDictionary [as 别名]
# 或者: from coverage_model.parameter.ParameterDictionary import keys [as 别名]
class SimplexCoverage(AbstractCoverage):
"""
A concrete implementation of AbstractCoverage consisting of 2 domains (temporal and spatial)
and a collection of parameters associated with one or both of the domains. Each parameter is defined by a
ParameterContext object (provided via the ParameterDictionary) and has content represented by a concrete implementation
of the AbstractParameterValue class.
"""
def __init__(self, root_dir, persistence_guid, name=None, parameter_dictionary=None, temporal_domain=None, spatial_domain=None, mode=None, in_memory_storage=False, bricking_scheme=None, inline_data_writes=True, auto_flush_values=True):
"""
Constructor for SimplexCoverage
@param root_dir The root directory for storage of this coverage
@param persistence_guid The persistence uuid for this coverage
@param name The name of the coverage
@param parameter_dictionary a ParameterDictionary object expected to contain one or more valid ParameterContext objects
@param spatial_domain a concrete instance of AbstractDomain for the spatial domain component
@param temporal_domain a concrete instance of AbstractDomain for the temporal domain component
@param mode the file mode for the coverage; one of 'r', 'a', 'r+', or 'w'; defaults to 'r'
@param in_memory_storage if False (default), HDF5 persistence is used; otherwise, nothing is written to disk and all data is held in memory only
@param bricking_scheme the bricking scheme for the coverage; a dict of the form {'brick_size': #, 'chunk_size': #}
@param inline_data_writes if True (default), brick data is written as it is set; otherwise it is written out-of-band by worker processes or threads
@param auto_flush_values if True (default), brick data is flushed immediately; otherwise it is buffered until SimplexCoverage.flush_values() is called
"""
AbstractCoverage.__init__(self, mode=mode)
try:
# Make sure root_dir and persistence_guid are both not None and are strings
if not isinstance(root_dir, str) or not isinstance(persistence_guid, str):
raise TypeError('\'root_dir\' and \'persistence_guid\' must be instances of str')
root_dir = root_dir if not root_dir.endswith(persistence_guid) else os.path.split(root_dir)[0]
pth=os.path.join(root_dir, persistence_guid)
def _doload(self):
# Make sure the coverage directory exists
if not os.path.exists(pth):
raise SystemError('Cannot find specified coverage: {0}'.format(pth))
# All appears well - load it up!
self._persistence_layer = PersistenceLayer(root_dir, persistence_guid, mode=self.mode)
self.name = self._persistence_layer.name
self.spatial_domain = self._persistence_layer.sdom
self.temporal_domain = self._persistence_layer.tdom
self._range_dictionary = ParameterDictionary()
self._range_value = RangeValues()
self._bricking_scheme = self._persistence_layer.global_bricking_scheme
self._in_memory_storage = False
auto_flush_values = self._persistence_layer.auto_flush_values
inline_data_writes = self._persistence_layer.inline_data_writes
from coverage_model.persistence import PersistedStorage
for parameter_name in self._persistence_layer.parameter_metadata.keys():
md = self._persistence_layer.parameter_metadata[parameter_name]
pc = md.parameter_context
self._range_dictionary.add_context(pc)
s = PersistedStorage(md, self._persistence_layer.brick_dispatcher, dtype=pc.param_type.storage_encoding, fill_value=pc.param_type.fill_value, mode=self.mode, inline_data_writes=inline_data_writes, auto_flush=auto_flush_values)
self._range_value[parameter_name] = get_value_class(param_type=pc.param_type, domain_set=pc.dom, storage=s)
if name is None or parameter_dictionary is None:
# This appears to be a load
_doload(self)
else:
# This appears to be a new coverage
# Make sure name and parameter_dictionary are not None
if name is None or parameter_dictionary is None:
raise SystemError('\'name\' and \'parameter_dictionary\' cannot be None')
# Make sure the specified root_dir exists
if not in_memory_storage and not os.path.exists(root_dir):
raise SystemError('Cannot find specified \'root_dir\': {0}'.format(root_dir))
# If the coverage directory exists, load it instead!!
if os.path.exists(pth):
log.warn('The specified coverage already exists - performing load of \'{0}\''.format(pth))
_doload(self)
return
# We've checked everything we can - this is a new coverage!!!
# Check the mode - must be in 'a' for a new coverage
if self.mode != 'a':
self.mode = 'a'
self.name = name
if temporal_domain is None:
self.temporal_domain = GridDomain(GridShape('temporal',[0]), CRS.standard_temporal(), MutabilityEnum.EXTENSIBLE)
elif isinstance(temporal_domain, AbstractDomain):
self.temporal_domain = deepcopy(temporal_domain)
else:
raise TypeError('\'temporal_domain\' must be an instance of AbstractDomain')
if spatial_domain is None or isinstance(spatial_domain, AbstractDomain):
self.spatial_domain = deepcopy(spatial_domain)
#.........这里部分代码省略.........