@@ -4,24 +4,33 @@ to_zarrtype, zopen, Compressor
44struct ZarrDataset
55 g:: ZGroup
66end
7- ZarrDataset (g:: String ;mode= " r" ) = ZarrDataset (zopen (g,mode,fill_as_missing= true ))
7+ ZarrDataset (g:: String ;mode= " r" ) = ZarrDataset (zopen (g,mode,fill_as_missing= false ))
88
99get_var_dims (ds:: ZarrDataset ,name) = reverse (ds[name]. attrs[" _ARRAY_DIMENSIONS" ])
1010get_varnames (ds:: ZarrDataset ) = collect (keys (ds. g. arrays))
11- get_var_attrs (ds:: ZarrDataset , name) = ds[name]. attrs
11+ function get_var_attrs (ds:: ZarrDataset , name)
12+ # We add the fill value to the attributes to be consistent with NetCDF
13+ a = ds[name]
14+ if a. metadata. fill_value != = nothing
15+ merge (ds[name]. attrs,Dict (" _FillValue" => a. metadata. fill_value))
16+ else
17+ ds[name]. attrs
18+ end
19+ end
1220get_global_attrs (ds:: ZarrDataset ) = ds. g. attrs
1321Base. getindex (ds:: ZarrDataset , i) = ds. g[i]
1422Base. haskey (ds:: ZarrDataset ,k) = haskey (ds. g,k)
1523
16- function add_var (p:: ZarrDataset , T:: Type{>:Missing} , varname, s, dimnames, attr; kwargs... )
17- S = Base. nonmissingtype (T)
18- add_var (p,S, varname, s, dimnames, attr; fill_value = defaultfillval (S), kwargs... )
19- end
24+ # function add_var(p::ZarrDataset, T::Type{>:Missing}, varname, s, dimnames, attr; kwargs...)
25+ # S = Base.nonmissingtype(T)
26+ # add_var(p,S, varname, s, dimnames, attr; fill_value = defaultfillval(S), fill_as_missing=true , kwargs...)
27+ # end
2028
2129function add_var (p:: ZarrDataset , T:: Type , varname, s, dimnames, attr;
22- chunksize= s, kwargs... )
30+ chunksize= s, fill_as_missing = false , kwargs... )
2331 attr2 = merge (attr,Dict (" _ARRAY_DIMENSIONS" => reverse (collect (dimnames))))
24- za = zcreate (T, p. g, varname,s... ;fill_as_missing= true ,attrs= attr2,chunks= chunksize,kwargs... )
32+ fv = get (attr," _FillValue" ,get (attr," missing_value" ,default_fillvalue (T)))
33+ za = zcreate (T, p. g, varname,s... ;fill_as_missing,attrs= attr2,chunks= chunksize,kwargs... )
2534 za
2635end
2736
@@ -40,6 +49,6 @@ backendlist[:zarr] = ZarrDataset
4049push! (backendregex, r" (.zarr$)|(.zarr/$)" => ZarrDataset)
4150
4251allow_parallel_write (:: ZarrDataset ) = true
43- allow_missings (:: ZarrDataset ) = true
52+ allow_missings (:: ZarrDataset ) = false
4453to_dataset (g:: ZGroup ; kwargs... ) = ZarrDataset (g)
4554iscompressed (a:: ZArray{<:Any,<:Any,<:Compressor} ) = true
0 commit comments