rafaqz / Rasters.jl

Raster manipulation for the Julia language
MIT License
212 stars 36 forks source link

"Error requiring ArchGDAL from GeoData" after using Circuitscape; using GeoData #66

Closed vlandau closed 4 years ago

vlandau commented 4 years ago

Here's the stack trace. It seems to trigger if I've run using Circuitscape prior to using GeoData

 Warning: Error requiring ArchGDAL from GeoData:
│ LoadError: UndefVarError: RasterDataset not defined
│ Stacktrace:
│  [1] getproperty(::Module, ::Symbol) at ./Base.jl:26
│  [2] top-level scope at /root/.julia/packages/GeoData/MVllE/src/sources/gdal.jl:92
│  [3] include(::Function, ::Module, ::String) at ./Base.jl:380
│  [4] include at ./Base.jl:368 [inlined]
│  [5] include(::String) at /root/.julia/packages/GeoData/MVllE/src/GeoData.jl:1
│  [6] top-level scope at /root/.julia/packages/GeoData/MVllE/src/GeoData.jl:80
│  [7] eval at ./boot.jl:331 [inlined]
│  [8] eval at /root/.julia/packages/GeoData/MVllE/src/GeoData.jl:1 [inlined]
│  [9] (::GeoData.var"#124#133")() at /root/.julia/packages/Requires/qy6zC/src/require.jl:85
│  [10] err(::Any, ::Module, ::String) at /root/.julia/packages/Requires/qy6zC/src/require.jl:42
│  [11] (::GeoData.var"#123#132")() at /root/.julia/packages/Requires/qy6zC/src/require.jl:84
│  [12] withpath(::Any, ::String) at /root/.julia/packages/Requires/qy6zC/src/require.jl:32
│  [13] (::GeoData.var"#122#131")() at /root/.julia/packages/Requires/qy6zC/src/require.jl:83
│  [14] listenpkg(::Any, ::Base.PkgId) at /root/.julia/packages/Requires/qy6zC/src/require.jl:15
│  [15] macro expansion at /root/.julia/packages/Requires/qy6zC/src/require.jl:81 [inlined]
│  [16] __init__() at /root/.julia/packages/GeoData/MVllE/src/GeoData.jl:78
│  [17] _include_from_serialized(::String, ::Array{Any,1}) at ./loading.jl:697
│  [18] _require_from_serialized(::String) at ./loading.jl:749
│  [19] _require(::Base.PkgId) at ./loading.jl:1040
│  [20] require(::Base.PkgId) at ./loading.jl:928
│  [21] require(::Module, ::Symbol) at ./loading.jl:923
│  [22] eval at ./boot.jl:331 [inlined]
│  [23] repleval(::Module, ::Expr) at /root/.julia/packages/Atom/ipSjf/src/repl.jl:196
│  [24] (::Atom.var"#242#244"{Module})() at /root/.julia/packages/Atom/ipSjf/src/repl.jl:223
│  [25] with_logstate(::Function, ::Any) at ./logging.jl:408
│  [26] with_logger at ./logging.jl:514 [inlined]
│  [27] evalrepl(::Module, ::String) at /root/.julia/packages/Atom/ipSjf/src/repl.jl:214
│  [28] top-level scope at /root/.julia/packages/Atom/ipSjf/src/repl.jl:259
│  [29] eval(::Module, ::Any) at ./boot.jl:331
│  [30] eval_user_input(::Any, ::REPL.REPLBackend) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.5/REPL/src/REPL.jl:134
│  [31] repl_backend_loop(::REPL.REPLBackend) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.5/REPL/src/REPL.jl:195
│  [32] start_repl_backend(::REPL.REPLBackend, ::Any) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.5/REPL/src/REPL.jl:180
│  [33] run_repl(::REPL.AbstractREPL, ::Any; backend_on_current_task::Bool) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.5/REPL/src/REPL.jl:292
│  [34] run_repl(::REPL.AbstractREPL, ::Any) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.5/REPL/src/REPL.jl:288
│  [35] (::Base.var"#806#808"{Bool,Bool,Bool,Bool})(::Module) at ./client.jl:399
│  [36] #invokelatest#1 at ./essentials.jl:710 [inlined]
│  [37] invokelatest at ./essentials.jl:709 [inlined]
│  [38] run_main_repl(::Bool, ::Bool, ::Bool, ::Bool, ::Bool) at ./client.jl:383
│  [39] exec_options(::Base.JLOptions) at ./client.jl:313
│  [40] _start() at ./client.jl:506
│ in expression starting at /root/.julia/packages/GeoData/MVllE/src/sources/gdal.jl:92
└ @ Requires ~/.julia/packages/Requires/qy6zC/src/require.jl:44
rafaqz commented 4 years ago

Whats your version of ArchGDAL? You need the latest one. I think that is the problem here.

One structural problem with GeoData at the moment is that it uses Requires.jl. So it can't work out packages dependencies and get you the correct ArchGDAL. The option is that it depends on ArchGDAL, NCDatasets and HDF5, which starts to get pretty heavy and slow to load, when your're probably only using one of those.

Honestly I'm holding our for movement on this: https://github.com/JuliaLang/Pkg.jl/issues/1285

Otherwise we may need write glue packages like GeoDataGDAL.jl, but trying to avoid that because the maintenance will be a huge headache.

And if you scroll down here, it looks like a fix is on the way: https://github.com/JuliaLang/Pkg.jl/issues/2005

Let me know if it works when you have the latest version, otherwise it may be another problem with the Requires.jl setup.

vlandau commented 4 years ago

I'm using ArchGDAL 0.4.1

rafaqz commented 4 years ago

Ok yeah there was a a lot of changes for 0.5 - mostly DiskArrays.jl backend (which is awesome). But you will need 0.5

rafaqz commented 4 years ago

Hopefully Pkg people will get this sorted for 1.6.

vlandau commented 4 years ago

Ah good to know! Thanks! Going to verify that it works then I'll close this.

rafaqz commented 4 years ago

Maybe leave it open, it's going to be a common issue I think...

vlandau commented 4 years ago

Should be fixed by #67 - close?