danlooo / DGGS.jl

Discrete Global Grid System for Julia
GNU Affero General Public License v3.0
8 stars 2 forks source link

Open individual layers and arrays #92

Closed danlooo closed 3 months ago

danlooo commented 3 months ago

Each band in each resolution is stored separately. Thus, it might be nice having functions open_dggs_array and open_dggs_layer. However, this comes with difficulties in inferring attributes and dimension names, see 2150c26a8af77a6ee774eb3a74e6205266b550ac

julia> base_path = "https://s3.bgc-jena.mpg.de:9000/dggs/sresa1b_ncar_ccsm3-example"
"https://s3.bgc-jena.mpg.de:9000/dggs/sresa1b_ncar_ccsm3-example"

julia> a = open_dggs_array("$base_path/3/tas")
DGGSArray
Name:           tas
Long name:      air_temperature
Units:          K
(:Dim_1, :Dim_2, :Dim_3, :Dim_4) 
Axes:
        Dim_1 Sampled{Int64} ForwardOrdered Regular DimensionalData.Dimensions.Lookups.Points
wrapping: Base.OneTo(4)
        Dim_2 Sampled{Int64} ForwardOrdered Regular DimensionalData.Dimensions.Lookups.Points
wrapping: Base.OneTo(4)
        Dim_3 Sampled{Int64} ForwardOrdered Regular DimensionalData.Dimensions.Lookups.Points
wrapping: Base.OneTo(12)
        Dim_4 Sampled{Int64} ForwardOrdered Regular DimensionalData.Dimensions.Lookups.Points
wrapping: Base.OneTo(1)

julia> l = open_dggs_layer("$base_path/3")
DGGSLayer
DGGS: isea 4 ⬢
Level: 3
Bands: 
  :tas (:Time)  
  :ua (:plev, :Time)  
  :pr (:Time)  
  :area  

julia> p = open_dggs_pyramid("$base_path")
DGGSPyramid
DGGS: isea 4 ⬢
Levels: Integer[5, 4, 6, 2, 3]
Bands: 
  :tas (:Time) air_temperature K
  :ua (:plev, :Time) eastward_wind m s-1
  :pr (:Time) precipitation_flux kg m-2 s-1
  :area Surface area meter2