Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't write tif file - GridChunks has no field chunks #244

Closed
maxfreu opened this issue Jan 27, 2022 · 4 comments · Fixed by yeesian/ArchGDAL.jl#278
Closed

Can't write tif file - GridChunks has no field chunks #244

maxfreu opened this issue Jan 27, 2022 · 4 comments · Fixed by yeesian/ArchGDAL.jl#278

Comments

@maxfreu
Copy link
Contributor

maxfreu commented Jan 27, 2022

I just tried to save a tif file and realized I couldn't. The stack trace looks as follows. I think the DiskArrays dependency has to be updated to 0.3.0.

r = Raster(rand(256,256), dims=(X(1:256), Y(1:256)))
write("deleteme.tif", r)
ERROR: type GridChunks has no field chunks
Stacktrace:
  [1] getproperty(x::DiskArrays.GridChunks{2}, f::Symbol)
    @ Base ./Base.jl:33
  [2] eachchunk(ds::ArchGDAL.RasterDataset{Float64, ArchGDAL.Dataset})
    @ ArchGDAL ~/.julia/packages/ArchGDAL/4GDur/src/raster/array.jl:142
  [3] copyto!(dest::ArchGDAL.RasterDataset{Float64, ArchGDAL.Dataset}, bc::Base.Broadcast.Broadcasted{Nothing, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}, Base.OneTo{Int64}}, typeof(identity), Tuple{Matrix{Float64}}})
    @ DiskArrays ~/.julia/packages/DiskArrays/iCPtn/src/ops.jl:125
  [4] copyto!
    @ ./broadcast.jl:936 [inlined]
  [5] materialize!
    @ ./broadcast.jl:894 [inlined]
  [6] materialize!
    @ ./broadcast.jl:891 [inlined]
  [7] (::Rasters.var"#701#705"{ArchGDAL.RasterDataset{Float64, ArchGDAL.Dataset}})(O::Raster{Float64, 2, Tuple{X{DimensionalData.Dimensions.LookupArrays.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.LookupArrays.ForwardOrdered, DimensionalData.Dimensions.LookupArrays.Regular{Int64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}, Y{DimensionalData.Dimensions.LookupArrays.Sampled{Int64, StepRange{Int64, Int64}, DimensionalData.Dimensions.LookupArrays.ReverseOrdered, DimensionalData.Dimensions.LookupArrays.Regular{Int64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}}, Tuple{}, Matrix{Float64}, Symbol, DimensionalData.Dimensions.LookupArrays.NoMetadata, Float64})
    @ Rasters ~/.julia/packages/Rasters/mtxb3/src/sources/gdal.jl:274
  [8] open(f::Rasters.var"#701#705"{ArchGDAL.RasterDataset{Float64, ArchGDAL.Dataset}}, A::Raster{Float64, 2, Tuple{X{DimensionalData.Dimensions.LookupArrays.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.LookupArrays.ForwardOrdered, DimensionalData.Dimensions.LookupArrays.Regular{Int64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}, Y{DimensionalData.Dimensions.LookupArrays.Sampled{Int64, StepRange{Int64, Int64}, DimensionalData.Dimensions.LookupArrays.ReverseOrdered, DimensionalData.Dimensions.LookupArrays.Regular{Int64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}}, Tuple{}, Matrix{Float64}, Symbol, DimensionalData.Dimensions.LookupArrays.NoMetadata, Float64}; kw::Base.Iterators.Pairs{Symbol, Bool, Tuple{Symbol}, NamedTuple{(:write,), Tuple{Bool}}})
    @ Rasters ~/.julia/packages/Rasters/mtxb3/src/array.jl:159
  [9] #700
    @ ~/.julia/packages/Rasters/mtxb3/src/sources/gdal.jl:273 [inlined]
 [10] create(f::Rasters.var"#700#704"{Raster{Float64, 2, Tuple{X{DimensionalData.Dimensions.LookupArrays.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.LookupArrays.ForwardOrdered, DimensionalData.Dimensions.LookupArrays.Regular{Int64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}, Y{DimensionalData.Dimensions.LookupArrays.Sampled{Int64, StepRange{Int64, Int64}, DimensionalData.Dimensions.LookupArrays.ReverseOrdered, DimensionalData.Dimensions.LookupArrays.Regular{Int64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}}, Tuple{}, Matrix{Float64}, Symbol, DimensionalData.Dimensions.LookupArrays.NoMetadata, Float64}}, args::String; kwargs::Base.Iterators.Pairs{Symbol, Any, NTuple{6, Symbol}, NamedTuple{(:driver, :options, :width, :height, :nbands, :dtype), Tuple{ArchGDAL.Driver, Vector{String}, Int64, Int64, Int64, DataType}}})
    @ ArchGDAL ~/.julia/packages/ArchGDAL/4GDur/src/context.jl:267
 [11] _gdalwrite(filename::String, A::Raster{Float64, 2, Tuple{X{DimensionalData.Dimensions.LookupArrays.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.LookupArrays.ForwardOrdered, DimensionalData.Dimensions.LookupArrays.Regular{Int64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}, Y{DimensionalData.Dimensions.LookupArrays.Sampled{Int64, StepRange{Int64, Int64}, DimensionalData.Dimensions.LookupArrays.ReverseOrdered, DimensionalData.Dimensions.LookupArrays.Regular{Int64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}}, Tuple{}, Matrix{Float64}, Symbol, DimensionalData.Dimensions.LookupArrays.NoMetadata, Missing}, nbands::Int64; driver::String, compress::String, chunk::Nothing)
    @ Rasters ~/.julia/packages/Rasters/mtxb3/src/sources/gdal.jl:270
 [12] _gdalwrite
    @ ~/.julia/packages/Rasters/mtxb3/src/sources/gdal.jl:259 [inlined]
 [13] write(filename::String, ::Type{Rasters.GDALfile}, A::Raster{Float64, 2, Tuple{X{DimensionalData.Dimensions.LookupArrays.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.LookupArrays.ForwardOrdered, DimensionalData.Dimensions.LookupArrays.Regular{Int64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}, Y{DimensionalData.Dimensions.LookupArrays.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.LookupArrays.ForwardOrdered, DimensionalData.Dimensions.LookupArrays.Regular{Int64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}}, Tuple{}, Matrix{Float64}, Symbol, DimensionalData.Dimensions.LookupArrays.NoMetadata, Missing}; kw::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ Rasters ~/.julia/packages/Rasters/mtxb3/src/sources/gdal.jl:58
 [14] write(filename::String, ::Type{Rasters.GDALfile}, A::Raster{Float64, 2, Tuple{X{DimensionalData.Dimensions.LookupArrays.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.LookupArrays.ForwardOrdered, DimensionalData.Dimensions.LookupArrays.Regular{Int64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}, Y{DimensionalData.Dimensions.LookupArrays.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.LookupArrays.ForwardOrdered, DimensionalData.Dimensions.LookupArrays.Regular{Int64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}}, Tuple{}, Matrix{Float64}, Symbol, DimensionalData.Dimensions.LookupArrays.NoMetadata, Missing})
    @ Rasters ~/.julia/packages/Rasters/mtxb3/src/sources/gdal.jl:50
 [15] write(filename::String, A::Raster{Float64, 2, Tuple{X{DimensionalData.Dimensions.LookupArrays.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.LookupArrays.ForwardOrdered, DimensionalData.Dimensions.LookupArrays.Regular{Int64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}, Y{DimensionalData.Dimensions.LookupArrays.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.LookupArrays.ForwardOrdered, DimensionalData.Dimensions.LookupArrays.Regular{Int64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}}, Tuple{}, Matrix{Float64}, Symbol, DimensionalData.Dimensions.LookupArrays.NoMetadata, Missing}; kw::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ Rasters ~/.julia/packages/Rasters/mtxb3/src/write.jl:11
 [16] write(filename::String, A::Raster{Float64, 2, Tuple{X{DimensionalData.Dimensions.LookupArrays.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.LookupArrays.ForwardOrdered, DimensionalData.Dimensions.LookupArrays.Regular{Int64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}, Y{DimensionalData.Dimensions.LookupArrays.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.LookupArrays.ForwardOrdered, DimensionalData.Dimensions.LookupArrays.Regular{Int64}, DimensionalData.Dimensions.LookupArrays.Points, DimensionalData.Dimensions.LookupArrays.NoMetadata}}}, Tuple{}, Matrix{Float64}, Symbol, DimensionalData.Dimensions.LookupArrays.NoMetadata, Missing})
    @ Rasters ~/.julia/packages/Rasters/mtxb3/src/write.jl:11
 [17] top-level scope
    @ REPL[6]:1

[c9ce4bd3] ArchGDAL v0.8.1
[fbb218c0] BSON v0.3.4
[0703355e] DimensionalData v0.20.2
[3c3547ce] DiskArrays v0.2.13
[72696420] FileTrees v0.3.4
[fb6dc702] ForceCubeAccess v0.1.0 ~/.julia/dev/ForceCubeAccess
[add2ef01] GDAL v1.3.0
[e9467ef8] GLMakie v0.5.1
[c27321d9] Glob v1.3.0
[dc211083] Gnuplot v1.4.0
[a09fc81d] ImageCore v0.9.3
[ee78f7c6] Makie v0.16.2
[d96e819e] Parameters v0.12.3
[91a5bcdd] Plots v1.25.7
[c46f51b8] ProfileView v1.4.0
[3cb90ccd] RasterDataSources v0.5.3
[a3a2b9e3] Rasters v0.2.0 https://github.com/rafaqz/Rasters.jl#master
[28d57a85] Transducers v0.4.68
[04da0e3b] TypeTree v0.3.0

Julia Version 1.6.0
Commit f9720dc2eb (2021-03-24 12:55 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
CPU: Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-11.0.1 (ORCJIT, skylake)
Environment:
JULIA_EDITOR = code
JULIA_NUM_THREADS = 4
JULIA_PKG_SERVER = pkg.julialang.org

@rafaqz
Copy link
Owner

rafaqz commented Jan 27, 2022

Looks like ArchGDAL has done a minor version bump of DiskArrays.jl, and not removed compat for versions before 0.3. That bug is entirely between ArchGDAL and version 0.2.4 of DiskArrays, which is no longer supported but is still included in the ArchGDAL Project.toml.

Please make an issue over there to remove compat with disk arrays 0.2.4, and to remove the current ArchGDAL version from the julia registry.

@maxfreu
Copy link
Contributor Author

maxfreu commented Jan 27, 2022

Thanks, I never know who's to blame for what. Let's hope it gets fixed soon.

@rafaqz
Copy link
Owner

rafaqz commented Jan 27, 2022

For now you can manually fix ArchGDAL to a lower version

@rafaqz
Copy link
Owner

rafaqz commented Jan 27, 2022

Also you could just make a PR instead of hoping ;)

(I cant until tomorrow)

evetion referenced this issue in yeesian/ArchGDAL.jl Jan 28, 2022
@maxfreu maxfreu closed this as completed Feb 2, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants