本文整理匯總了Python中dask.array.store方法的典型用法代碼示例。如果您正苦於以下問題:Python array.store方法的具體用法?Python array.store怎麽用?Python array.store使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類dask.array
的用法示例。
在下文中一共展示了array.store方法的7個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: compute_writer_results
# 需要導入模塊: from dask import array [as 別名]
# 或者: from dask.array import store [as 別名]
def compute_writer_results(results):
"""Compute all the given dask graphs `results` so that the files are saved.
Args:
results (iterable): Iterable of dask graphs resulting from calls to
`scn.save_datasets(..., compute=False)`
"""
if not results:
return
sources, targets, delayeds = split_results(results)
# one or more writers have targets that we need to close in the future
if targets:
delayeds.append(da.store(sources, targets, compute=False))
if delayeds:
da.compute(delayeds)
if targets:
for target in targets:
if hasattr(target, 'close'):
target.close()
示例2: save_dataset
# 需要導入模塊: from dask import array [as 別名]
# 或者: from dask.array import store [as 別名]
def save_dataset(self, dataset, filename=None, fill_value=None,
compute=True, **kwargs):
"""Save the ``dataset`` to a given ``filename``.
This method must be overloaded by the subclass.
Args:
dataset (xarray.DataArray): Dataset to save using this writer.
filename (str): Optionally specify the filename to save this
dataset to. If not provided then `filename`
which can be provided to the init method will be
used and formatted by dataset attributes.
fill_value (int or float): Replace invalid values in the dataset
with this fill value if applicable to
this writer.
compute (bool): If `True` (default), compute and save the dataset.
If `False` return either a :doc:`dask:delayed`
object or tuple of (source, target). See the
return values below for more information.
**kwargs: Other keyword arguments for this particular writer.
Returns:
Value returned depends on `compute`. If `compute` is `True` then
the return value is the result of computing a
:doc:`dask:delayed` object or running :func:`dask.array.store`.
If `compute` is `False` then the returned value is either a
:doc:`dask:delayed` object that can be computed using
`delayed.compute()` or a tuple of (source, target) that should be
passed to :func:`dask.array.store`. If target is provided the the
caller is responsible for calling `target.close()` if the target
has this method.
"""
raise NotImplementedError(
"Writer '%s' has not implemented dataset saving" % (self.name, ))
示例3: save_image
# 需要導入模塊: from dask import array [as 別名]
# 或者: from dask.array import store [as 別名]
def save_image(self, img, filename=None, compute=True, **kwargs):
"""Save Image object to a given ``filename``.
Args:
img (trollimage.xrimage.XRImage): Image object to save to disk.
filename (str): Optionally specify the filename to save this
dataset to. It may include string formatting
patterns that will be filled in by dataset
attributes.
compute (bool): If `True` (default), compute and save the dataset.
If `False` return either a :doc:`dask:delayed`
object or tuple of (source, target). See the
return values below for more information.
**kwargs: Other keyword arguments to pass to this writer.
Returns:
Value returned depends on `compute`. If `compute` is `True` then
the return value is the result of computing a
:doc:`dask:delayed` object or running :func:`dask.array.store`.
If `compute` is `False` then the returned value is either a
:doc:`dask:delayed` object that can be computed using
`delayed.compute()` or a tuple of (source, target) that should be
passed to :func:`dask.array.store`. If target is provided the the
caller is responsible for calling `target.close()` if the target
has this method.
"""
raise NotImplementedError("Writer '%s' has not implemented image saving" % (self.name,))
示例4: _generate_tile_info
# 需要導入模塊: from dask import array [as 別名]
# 或者: from dask.array import store [as 別名]
def _generate_tile_info(self):
"""Get numbered tile metadata."""
x = self.x
y = self.y
ts = self.tile_shape
tc = self.tile_count
if self._tile_cache:
for tile_info in self._tile_cache:
yield tile_info
for ty in range(tc[0]):
for tx in range(tc[1]):
tile_id = self._tile_identifier(ty, tx)
tile_row_offset = ty * ts[0]
tile_column_offset = tx * ts[1]
# store tile data to an intermediate array
# the tile may be larger than the remaining data, handle that:
max_row_idx = min((ty + 1) * ts[0], self._rows) - (ty * ts[0])
max_col_idx = min((tx + 1) * ts[1], self._cols) - (tx * ts[1])
tile_slices = (slice(0, max_row_idx), slice(0, max_col_idx))
data_slices = (slice(ty * ts[0], (ty + 1) * ts[0]),
slice(tx * ts[1], (tx + 1) * ts[1]))
tmp_x = x[data_slices[1]]
tmp_y = y[data_slices[0]]
tile_info = TileInfo(
tc, self.image_shape, ts,
tile_row_offset, tile_column_offset, tile_id,
tmp_x, tmp_y, tile_slices, data_slices)
self._tile_cache.append(tile_info)
yield tile_info
示例5: write_raster
# 需要導入模塊: from dask import array [as 別名]
# 或者: from dask.array import store [as 別名]
def write_raster(path, array, **kwargs):
"""Write a dask array to a raster file
If array is 2d, write array on band 1.
If array is 3d, write data on each band
Arguments:
path {string} -- path of raster to write
array {dask.array.Array} -- band array
kwargs {dict} -- keyword arguments to delegate to rasterio.open
Examples:
# Write a single band raster
>> red_band = read_raster_band("test.tif", band=1)
>> write_raster("new.tif", red_band)
# Write a multiband raster
>> img = read_raster("test.tif")
>> new_img = process(img)
>> write_raster("new.tif", new_img)
"""
if len(array.shape) != 2 and len(array.shape) != 3:
raise TypeError('invalid shape (must be either 2d or 3d)')
if is_dask_collection(array):
with RasterioDataset(path, 'w', **kwargs) as dst:
da.store(array, dst, lock=True)
else:
with rasterio.open(path, 'w', **kwargs) as dst:
if len(array.shape) == 2:
dst.write(array, 1)
else:
dst.write(array)
示例6: to_geotiff
# 需要導入模塊: from dask import array [as 別名]
# 或者: from dask.array import store [as 別名]
def to_geotiff(arr, path='./output.tif', proj=None, spec=None, bands=None, **kwargs):
''' Write out a geotiff file of the image
Args:
path (str): path to write the geotiff file to, default is ./output.tif
proj (str): EPSG string of projection to reproject to
spec (str): if set to 'rgb', write out color-balanced 8-bit RGB tif
bands (list): list of bands to export. If spec='rgb' will default to RGB bands
Returns:
str: path the geotiff was written to'''
assert has_rasterio, "To create geotiff images please install rasterio"
try:
img_md = arr.rda.metadata["image"]
x_size = img_md["tileXSize"]
y_size = img_md["tileYSize"]
except (AttributeError, KeyError):
x_size = kwargs.get("chunk_size", 256)
y_size = kwargs.get("chunk_size", 256)
try:
tfm = kwargs['transform'] if 'transform' in kwargs else arr.affine
except:
tfm = None
dtype = arr.dtype.name if arr.dtype.name != 'int8' else 'uint8'
if spec is not None and spec.lower() == 'rgb':
assert arr.options.get('dra'), 'To write RGB geotiffs, create your image option with `dra=True`'
if bands is None:
bands = arr._rgb_bands
arr = arr[bands,...].astype(np.uint8)
dtype = 'uint8'
else:
if bands is not None:
arr = arr[bands,...]
meta = {
'width': arr.shape[2],
'height': arr.shape[1],
'count': arr.shape[0],
'dtype': dtype,
'driver': 'GTiff',
'transform': tfm
}
if proj is not None:
meta["crs"] = {'init': proj}
if "tiled" in kwargs and kwargs["tiled"]:
meta.update(blockxsize=x_size, blockysize=y_size, tiled="yes")
with rasterio.open(path, "w", **meta) as dst:
writer = rio_writer(dst)
result = store(arr, writer, compute=False)
result.compute(scheduler=threaded_get)
return path
示例7: save_datasets
# 需要導入模塊: from dask import array [as 別名]
# 或者: from dask.array import store [as 別名]
def save_datasets(self, datasets, compute=True, **kwargs):
"""Save all datasets to one or more files.
Subclasses can use this method to save all datasets to one single
file or optimize the writing of individual datasets. By default
this simply calls `save_dataset` for each dataset provided.
Args:
datasets (iterable): Iterable of `xarray.DataArray` objects to
save using this writer.
compute (bool): If `True` (default), compute all of the saves to
disk. If `False` then the return value is either
a :doc:`dask:delayed` object or two lists to
be passed to a :func:`dask.array.store` call.
See return values below for more details.
**kwargs: Keyword arguments to pass to `save_dataset`. See that
documentation for more details.
Returns:
Value returned depends on `compute` keyword argument. If
`compute` is `True` the value is the result of a either a
:func:`dask.array.store` operation or a :doc:`dask:delayed`
compute, typically this is `None`. If `compute` is `False` then
the result is either a :doc:`dask:delayed` object that can be
computed with `delayed.compute()` or a two element tuple of
sources and targets to be passed to :func:`dask.array.store`. If
`targets` is provided then it is the caller's responsibility to
close any objects that have a "close" method.
"""
results = []
for ds in datasets:
results.append(self.save_dataset(ds, compute=False, **kwargs))
if compute:
LOG.info("Computing and writing results...")
return compute_writer_results([results])
targets, sources, delayeds = split_results([results])
if delayeds:
# This writer had only delayed writes
return delayeds
else:
return targets, sources