fsspec / fsspec/kerchunk

Driver for ENVI binary

Open
#226 8 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
366
Forks
96
Avg merge
24m
Merged PRs (30d)
1

Description

A common format for imaging spectroscopy (a.k.a., hyperspectral) data is so-called "ENVI binary" (GDAL Driver; Library of Congress description . The format is super simple — just a plain text header file (see "Details" below; the most important fields for reading the values are the dimensions — "samples", "lines", "bands"; the interleave, a.k.a., dimension order; the data type, and the header offset; everything else is just metadata) and an uncompressed binary data cube (just a binary array of numbers).

The simplicity of the format makes it super easy to read. Locally, the binary can be loaded directly into a Numpy memmap. Alternatively, for actual reading, here is an example of some pretty simple code I wrote once to manually do HTTP range-gets to read parts of one of these files from an S3 bucket; most of this is just arithmetic to figure out exactly which bytes I want given the structure of the file:

def get_pixel(s3path, line, sample):
    bucket, key = s3path.split("/", 1)
    # From hdr file
    nsamples = 13739
    nlines = 12023
    nbands = 425

    # Retrieve the complete lines
    linestart = line * nsamples * nbands
    istart = linestart + sample
    iend = istart + nsamples*nbands
    resp = s3.get_object(Bucket=bucket, Key=key, Range=f'bytes={istart*4}-{iend*4-1}')
    barray_all = resp["Body"].read()
    
    # For each line, skip all but the exact pixel I want
    barray = b''.join([barray_all[(i*4*nsamples):(i*4*nsamples+4)] for i in range(nbands)])
    result = np.frombuffer(barray, np.float32).copy()
    return result

It seems like it should be relatively straightforward to get this format to work with Kerchunk. I can take a stab at this myself, but I wanted to open this issue for your awareness and in case this is something that has a trivial and/or already existing implementation. If not, any advice you can give for doing this efficiently would be very helpful!

You can grab some test ENVI binary data here: https://avng.jpl.nasa.gov/pub/PBrodrick/isofit/test_data.zip (~1 GB uncompressed).

ENVI
description = {
  AVIRIS-NG Measured Radiances in uW nm-1 cm-2 sr-1}
samples = 648
lines   = 3609
bands   = 425
header offset = 0
file type = ENVI Standard
data type = 4
interleave = bil
sensor type = Unknown
byte order = 0
map info = {UTM, 1.000, 1.000, 581226.667, 7916192.564, 5.2000000000e+000, 5.2000000000e+000, 4, North, WGS-84, units=Meters, rotation=42.00000000}
coordinate system string = {PROJCS["UTM_Zone_4N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-159.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]}
wavelength units = Nanometers
data ignore value = -9.99900000e+003
wavelength = {
  376.859985,  381.869995,  386.880005,  391.890015,  396.890015,  401.899994,
  406.910004,  411.920013,  416.929993,  421.940002,  426.950012,  431.959991,
  436.959991,  441.970001,  446.980011,  451.989990,  457.000000,  462.010010,
  467.019989,  472.019989,  477.029999,  482.040009,  487.049988,  492.059998,
  497.070007,  502.079987,  507.089996,  512.090027,  517.099976,  522.109985,
  527.119995,  532.130005,  537.140015,  542.150024,  547.150024,  552.159973,
  557.169983,  562.179993,  567.190002,  572.200012,  577.210022,  582.219971,
  587.219971,  592.229980,  597.239990,  602.250000,  607.260010,  612.270020,
  617.280029,  622.280029,  627.289978,  632.299988,  637.309998,  642.320007,
  647.330017,  652.340027,  657.349976,  662.349976,  667.359985,  672.369995,
  677.380005,  682.390015,  687.400024,  692.409973,  697.409973,  702.419983,
  707.429993,  712.440002,  717.450012,  722.460022,  727.469971,  732.479980,
  737.479980,  742.489990,  747.500000,  752.510010,  757.520020,  762.530029,
  767.539978,  772.539978,  777.549988,  782.559998,  787.570007,  792.580017,
  797.590027,  802.599976,  807.609985,  812.609985,  817.619995,  822.630005,
  827.640015,  832.650024,  837.659973,  842.669983,  847.669983,  852.679993,
  857.690002,  862.700012,  867.710022,  872.719971,  877.729980,  882.739990,
  887.739990,  892.750000,  897.760010,  902.770020,  907.780029,  912.789978,
  917.799988,  922.809998,  927.809998,  932.820007,  937.830017,  942.840027,
  947.849976,  952.859985,  957.869995,  962.869995,  967.880005,  972.890015,
  977.900024,  982.909973,  987.919983,  992.929993,  997.940002, 1002.940002,
 1007.950012, 1012.960022, 1017.969971, 1022.979980, 1027.989990, 1033.000000,
 1038.000000, 1043.010010, 1048.020020, 1053.030029, 1058.040039, 1063.050049,
 1068.060059, 1073.069946, 1078.069946, 1083.079956, 1088.089966, 1093.099976,
 1098.109985, 1103.119995, 1108.130005, 1113.130005, 1118.140015, 1123.150024,
 1128.160034, 1133.170044, 1138.180054, 1143.189941, 1148.199951, 1153.199951,
 1158.209961, 1163.219971, 1168.229980, 1173.239990, 1178.250000, 1183.260010,
 1188.260010, 1193.270020, 1198.280029, 1203.290039, 1208.300049, 1213.310059,
 1218.319946, 1223.329956, 1228.329956, 1233.339966, 1238.349976, 1243.359985,
 1248.369995, 1253.380005, 1258.390015, 1263.390015, 1268.400024, 1273.410034,
 1278.420044, 1283.430054, 1288.439941, 1293.449951, 1298.459961, 1303.459961,
 1308.469971, 1313.479980, 1318.489990, 1323.500000, 1328.510010, 1333.520020,
 1338.520020, 1343.530029, 1348.540039, 1353.550049, 1358.560059, 1363.569946,
 1368.579956, 1373.589966, 1378.589966, 1383.599976, 1388.609985, 1393.619995,
 1398.630005, 1403.640015, 1408.650024, 1413.650024, 1418.660034, 1423.670044,
 1428.680054, 1433.689941, 1438.699951, 1443.709961, 1448.719971, 1453.719971,
 1458.729980, 1463.739990, 1468.750000, 1473.760010, 1478.770020, 1483.780029,
 1488.780029, 1493.790039, 1498.800049, 1503.810059, 1508.819946, 1513.829956,
 1518.839966, 1523.849976, 1528.849976, 1533.859985, 1538.869995, 1543.880005,
 1548.890015, 1553.900024, 1558.910034, 1563.910034, 1568.920044, 1573.930054,
 1578.939941, 1583.949951, 1588.959961, 1593.969971, 1598.979980, 1603.979980,
 1608.989990, 1614.000000, 1619.010010, 1624.020020, 1629.030029, 1634.040039,
 1639.040039, 1644.050049, 1649.060059, 1654.069946, 1659.079956, 1664.089966,
 1669.099976, 1674.109985, 1679.109985, 1684.119995, 1689.130005, 1694.140015,
 1699.150024, 1704.160034, 1709.170044, 1714.170044, 1719.180054, 1724.189941,
 1729.199951, 1734.209961, 1739.219971, 1744.229980, 1749.239990, 1754.239990,
 1759.250000, 1764.260010, 1769.270020, 1774.280029, 1779.290039, 1784.300049,
 1789.300049, 1794.310059, 1799.319946, 1804.329956, 1809.339966, 1814.349976,
 1819.359985, 1824.369995, 1829.369995, 1834.380005, 1839.390015, 1844.400024,
 1849.410034, 1854.420044, 1859.430054, 1864.439941, 1869.439941, 1874.449951,
 1879.459961, 1884.469971, 1889.479980, 1894.489990, 1899.500000, 1904.500000,
 1909.510010, 1914.520020, 1919.530029, 1924.540039, 1929.550049, 1934.560059,
 1939.569946, 1944.569946, 1949.579956, 1954.589966, 1959.599976, 1964.609985,
 1969.619995, 1974.630005, 1979.630005, 1984.640015, 1989.650024, 1994.660034,
 1999.670044, 2004.680054, 2009.689941, 2014.699951, 2019.699951, 2024.709961,
 2029.719971, 2034.729980, 2039.739990, 2044.750000, 2049.760010, 2054.760010,
 2059.770020, 2064.780029, 2069.790039, 2074.800049, 2079.810059, 2084.820068,
 2089.830078, 2094.830078, 2099.840088, 2104.850098, 2109.860107, 2114.870117,
 2119.879883, 2124.889893, 2129.889893, 2134.899902, 2139.909912, 2144.919922,
 2149.929932, 2154.939941, 2159.949951, 2164.959961, 2169.959961, 2174.969971,
 2179.979980, 2184.989990, 2190.000000, 2195.010010, 2200.020020, 2205.020020,
 2210.030029, 2215.040039, 2220.050049, 2225.060059, 2230.070068, 2235.080078,
 2240.090088, 2245.090088, 2250.100098, 2255.110107, 2260.120117, 2265.129883,
 2270.139893, 2275.149902, 2280.149902, 2285.159912, 2290.169922, 2295.179932,
 2300.189941, 2305.199951, 2310.209961, 2315.219971, 2320.219971, 2325.229980,
 2330.239990, 2335.250000, 2340.260010, 2345.270020, 2350.280029, 2355.280029,
 2360.290039, 2365.300049, 2370.310059, 2375.320068, 2380.330078, 2385.340088,
 2390.350098, 2395.350098, 2400.360107, 2405.370117, 2410.379883, 2415.389893,
 2420.399902, 2425.409912, 2430.409912, 2435.419922, 2440.429932, 2445.439941,
 2450.449951, 2455.459961, 2460.469971, 2465.479980, 2470.479980, 2475.489990,
 2480.500000, 2485.510010, 2490.520020, 2495.530029, 2500.540039}
bbl = {
 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
 1, 1, 1, 1, 1, 1, 1, 1, 1}
crosstrack scatter file = /home/winstono/isat-ang2017/ang/cal/data/20170125_via_ang20160925t182412_crf
flat field file = /home/winstono/isat-ang2017/ang/cal/data/20170320_ang20170313_BLUSS_avg_rows300-340_ff
spectral scatter file = /home/winstono/isat-ang2017/ang/cal/data/20170125_via_ang20160925t182412_srf
wavelength file = /home/winstono/isat-ang2017/ang/cal/data/20170320_ang20170228_wavelength_fit_full.txt
radiance version = v2.0
rcc file = /home/winstono/isat-ang2017/ang/cal/data/20170508_ang20170327_avg_rows300-340_UVCorr2_Ivanpah.rcc
smoothing factors = {
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0}
bad pixel map = /home/winstono/isat-ang2017/ang/cal/data/ANGv5_bad
correction factors = {
 1.026544, 0.975609, 0.969727, 1.029656, 0.988967, 1.018973, 1.017577, 
 1.004838, 1.00897, 1.016186, 1.018273, 0.9931, 1.005246, 0.99209, 0.991851, 
 0.997428, 1.003766, 0.983309, 1.00745, 1.008428, 1.015393, 1.001143, 
 0.99794, 1.005876, 1.004355, 0.996202, 1.013719, 1.01524, 0.992923, 
 1.008044, 1.001407, 1.001327, 1.004922, 1.004549, 1.003052, 0.995904, 
 0.99239, 0.996899, 0.995087, 1.011138, 1.015578, 1.000515, 0.983446, 
 0.980761, 0.988457, 0.995277, 1.001243, 0.992967, 0.995833, 1.000739, 
 1.007824, 1.01108, 1.004426, 1.000608, 0.995232, 0.996956, 0.996814, 
 1.000766, 0.997363, 0.998798, 0.998295, 1.000719, 1.000319, 0.999109, 
 0.998789, 1.001744, 1.002922, 0.999334, 0.992669, 0.999882, 0.999448, 
 0.998319, 0.998913, 0.997763, 0.999898, 1.001954, 1.002668, 0.999585, 
 0.997927, 0.996933, 1.000254, 0.997913, 0.997695, 0.997922, 1.000295, 
 1.001383, 0.999606, 0.999615, 0.997771, 0.996955, 0.998591, 0.999429, 
 1.000634, 0.99842, 0.999864, 0.997419, 1.002974, 1.002455, 0.99388, 
 1.005576, 1.007569, 1.002015, 1.00082, 1.001783, 0.994083, 0.999588, 
 1.001613, 1.000794, 1.007976, 1.017154, 1.011573, 0.959617, 0.99013, 
 1.016944, 1.005255, 0.99956, 0.993014, 0.995478, 1.004184, 1.004365, 
 0.998866, 0.997478, 0.998864, 1.000198, 1.001026, 1.012818, 1.00887, 
 1.002622, 0.991704, 0.99439, 0.994025, 0.993853, 0.993512, 0.992114, 
 0.994353, 0.997018, 1.00731, 1.016144, 1.021373, 1.008439, 1.001351, 
 1.003774, 1.006404, 1.007656, 1.003898, 0.988812, 0.977122, 0.976738, 
 0.970548, 0.992323, 1.002309, 1.021262, 1.040737, 1.030007, 0.994501, 
 0.983827, 0.986601, 0.992799, 0.989428, 0.990848, 0.994948, 1.003233, 
 1.000544, 1.002387, 1.002951, 1.008943, 1.001937, 1.0, 1.000199, 0.99942, 
 1.000686, 0.996346, 0.999698, 1.004726, 1.013203, 1.031735, 1.070986, 
 1.124351, 1.124366, 1.071024, 1.032369, 1.0, 0.978471, 0.961271, 0.951125, 
 0.94224, 0.948668, 0.945691, 0.949896, 0.94118, 0.942367, 0.937963, 
 0.933965, 0.940542, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.049066, 0.998691, 1.004708, 1.022777, 1.032565, 1.019317, 
 1.008745, 1.016784, 0.996097, 1.00895, 1.015296, 1.015971, 0.997986, 
 1.003107, 0.989448, 0.982836, 0.992775, 1.006434, 1.011912, 0.996632, 
 0.993527, 0.993835, 1.001602, 0.999094, 1.001361, 1.002821, 1.0, 0.996195, 
 0.998547, 1.005623, 1.009702, 1.019359, 1.03181, 1.026902, 1.02219, 
 1.021165, 1.021439, 1.019507, 1.011553, 1.007719, 0.997928, 0.99925, 
 0.995913, 0.993325, 0.998542, 1.004434, 1.001799, 1.002388, 1.002471, 
 0.989743, 0.999623, 1.001244, 1.005697, 0.996956, 0.997879, 1.000352, 
 0.999578, 0.998633, 0.995279, 0.995565, 0.995618, 0.994672, 0.995092, 
 1.013101, 1.005043, 0.999838, 1.005662, 0.997329, 1.000979, 0.997206, 
 0.997364, 0.99712, 1.013492, 0.99689, 0.994616, 1.001993, 0.975311, 
 1.023498, 1.0, 1.017604, 1.005243, 0.998621, 1.201321, 1.0, 1.0, 1.0, 1.0, 
 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 
 1.008026, 0.930517, 1.130575, 1.04995, 1.100582, 1.107349, 1.104479, 
 0.976991, 0.98455, 1.0213, 1.003581, 0.987331, 0.986703, 0.986082, 
 1.003758, 1.04593, 1.053078, 1.075534, 1.07393, 0.956494, 0.944168, 
 0.957104, 0.973998, 0.977388, 0.992751, 1.011782, 1.010359, 1.001183, 
 1.014152, 0.999397, 0.98972, 0.986854, 0.98902, 0.988449, 0.982488, 
 0.986148, 1.008809, 1.006432, 1.005187, 0.998986, 0.990348, 0.98851, 
 0.995412, 0.999075, 1.006345, 1.010067, 0.998997, 1.002425, 0.998917, 
 0.999995, 0.999388, 1.000087, 0.998517, 0.998554, 0.997518, 1.007376, 
 1.000557, 1.002869, 0.999265, 0.999976, 0.998917, 0.999386, 1.000019, 
 0.999052, 1.000542, 1.000959, 0.9996, 1.013352, 1.009027, 0.992849, 
 0.991391, 0.994493, 0.989809, 1.002201, 1.003178, 1.005953, 0.999522, 
 0.984077, 1.012673, 1.005727, 0.985077, 0.99504, 1.007871, 1.013276, 
 1.018331, 1.010026, 0.997215, 0.989224, 1.000441, 1.003543, 0.994868, 
 0.993009, 0.983359, 0.988463, 0.9938, 0.996888, 0.991734, 0.988354, 
 0.971664, 0.976911, 1.008247, 1.034915, 0.977875, 1.032142, 1.018619, 
 0.961711, 1.00908, 1.060654, 1.047971, 1.037051, 1.058743, 1.028421, 
 0.992166, 0.928429, 0.926041, 1.0}

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the ENVI header details and the get_pixel Python example, then inspect the supplied test_data.zip sample to understand the binary layout. Done should mean Kerchunk can represent the header-defined dimensions, interleave, data type, offset, and metadata for efficient access, with behavior validated against the sample data.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, numpy, python
Domain
cloud, data-engineering
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.