Views¶
A View is a combination of one or more Blocks. For instance:
from dask_geomodeling.raster import RasterFileSource, Group
source_1 = RasterFileSource("path/to/some/tiff")
source_2 = RasterFileSource("path/to/another/tiff")
view = Group(source_1, source_1)
View serialization¶
A View consists of several Block instances that reference each other. To serialize this we use Dask’s graph format. This graph format replaces the nested structure by a flat dictionary with internal references
Warning
A serialized view looks much alike a compute graph. Don’t get confused!
An example using the above view definition:
serialized_view = view.serialize()
{
"version": 2,
"graph": {
"RasterFileSource_300b56b278d49bea13eff68f8cf52f90": [
"dask_geomodeling.raster.sources.RasterFileSource",
"file:///path/to/some/tiff"
],
"RasterFileSource_9dc43c9bd98e2f9069e2b0c879d76cb1": [
"dask_geomodeling.raster.sources.RasterFileSource",
"file:///path/to/another/tiff"
],
"Group_0d0a99fe65bffe87dd045627c27bcbbb": [
"dask_geomodeling.raster.combine.Group",
"RasterFileSource_300b56b278d49bea13eff68f8cf52f90",
"RasterFileSource_9dc43c9bd98e2f9069e2b0c879d76cb1"
]
},
"name": "Group_0d0a99fe65bffe87dd045627c27bcbbb"
}
The above “view graph” contains all three operations that we defined together with their arguments. The names are automatically generated and contain a hash which is useful to uniquely determine the block. Also, we see the “name”, that points to the endpoint block.
To deserialize the view:
from dask_geomodeling.core import Block
view = Block.deserialize(serialized_view)
The methods Block.to_json
and Block.from_json
, or Block.get_graph
and dask_geomodeling.construct
serve the same purpose, but they in/output
different object types.