|
1 | 1 | module SentinelDataSource |
2 | | -using DimensionalData: DimTree |
| 2 | +using DimensionalData: DimTree, DimArray |
3 | 3 | using Zarr: zopen |
4 | 4 | using ZarrDatasets: ZarrDataset |
5 | 5 | using CommonDataModel: CommonDataModel as CDM |
6 | | -using Rasters:Raster |
| 6 | +using Rasters: Rasters |
7 | 7 |
|
8 | 8 | export open_tree |
9 | 9 |
|
10 | 10 | open_tree(path::AbstractString) = open_tree(ZarrDataset(path)) |
11 | 11 |
|
12 | 12 | function open_tree(dataset::ZarrDataset) |
13 | | - stem = DimTree() |
14 | | - groupnames = CDM.groupnames(dataset) |
15 | | - varnames = CDM.varnames(dataset) |
16 | | - alldimnames = nesteddimnames(dataset) |
17 | | - for v in setdiff(varnames, alldimnames) |
18 | | - setindex!(stem, Raster(CDM.variable(dataset, v), lazy=true),Symbol(v)) |
| 13 | + @time "stem" stem = DimTree() |
| 14 | + @time "groups" groupnames = CDM.groupnames(dataset) |
| 15 | + @time "vars" varnames = CDM.varnames(dataset) |
| 16 | + @time "dims" alldimnames = nesteddimnames(dataset) |
| 17 | + @time "forvar" for v in setdiff(varnames, alldimnames) |
| 18 | + @time "var" var = CDM.variable(dataset, v) |
| 19 | + @time "vardims" vardims = Rasters._dims(var) |
| 20 | + @time "meta" metadata_out = Rasters._metadata(var) |
| 21 | + @time "missing" missingval_out = Rasters._read_missingval_pair(var, metadata_out, Rasters.nokw) |
| 22 | + @time "mod" mod = Rasters._mod(eltype(var), metadata_out, missingval_out;scaled=true, coerce=true) |
| 23 | + @time "vardata" vardata = Rasters._maybe_modify(var, mod) |
| 24 | + @time "set" setindex!(stem, DimArray(vardata, vardims),Symbol(v)) |
19 | 25 | end |
20 | | - for g in groupnames |
| 26 | + @time "forg" for g in groupnames |
21 | 27 | setindex!(stem, open_tree(CDM.group(dataset, g)),Symbol(g)) |
22 | 28 | end |
23 | 29 | stem |
|
0 commit comments