Home > Back-end >  Julia HTTP GET Headers not working as intended
Julia HTTP GET Headers not working as intended

Time:12-22

I would like to download a grib2 file data in a range, as done in this Python notebook: https://nbviewer.org/github/microsoft/AIforEarthDataSets/blob/main/data/noaa-hrrr.ipynb (see cell 5)

I have tried the following code, but it seems to download the whole GRIB file instead of the range:

using HTTP
url = "https://noaahrrr.blob.core.windows.net/hrrr/hrrr.20210513/conus/hrrr.t12z.wrfsfcf01.grib2"
range_start = 38448330
range_end   = 39758083
    
grib2_bytes = HTTP.request("GET", url; headers = Dict("Range" => Dict("bytes" => [range_start; range_end]) ) );

# save bytes to file
io = open("variable.grib2", "w");
write(io, grib2_bytes); # I can see the file is too big (148 MB)
close(io)

# rest of the code is just to read the data
# The downloaded file subset is a valid GRIB2 file.
using GRIB
f = GribFile("variable.grib2")
msg = Message(f)

CodePudding user response:

To mimic the python code you should use string interpolation:

range_start = 38448330
range_end   = 39758083

headers = Dict(
    "Range" => "bytes=$(range_start)-$(range_end)"
)
  • Related