node-gdal-async icon indicating copy to clipboard operation
node-gdal-async copied to clipboard

Unable to get `vsimem` file buffer

Open wandergis opened this issue 2 years ago • 3 comments

like python gdal binding lib:

from osgeo import gdal

filep = "/vsimem/foo.tif"

# get the file size
stat = gdal.VSIStatL(filep, gdal.VSI_STAT_SIZE_FLAG)

# open file
vsifile = gdal.VSIFOpenL(filep, 'r')

# read entire contents
vsimem_content = gdal.VSIFReadL(1, stat.size, vsifile)

wandergis avatar May 23 '23 12:05 wandergis

There are no file operations in Node.js, however you can still retrieve the file in a Buffer by calling vsimem.release: https://mmomtchev.github.io/node-gdal-async/#vsimem

Here is an extract from the unit test:

// Create an in-memory dataset
const size = 64
const ds = gdal.open('/vsimem/temp1.tiff', 'w', 'GTiff', size, size, 1, gdal.GDT_Byte)
const data = new Uint8Array(size * size)
for (let i = 0; i < data.length; i ++) data[i] = Math.round(Math.random() * 256)
ds.bands.get(1).pixels.write(0, 0, ds.rasterSize.x, ds.rasterSize.y, data)
ds.close()

// Happens here
const buffer = gdal.vsimem.release('/vsimem/temp1.tiff')
assert.instanceOf(buffer, Buffer)

mmomtchev avatar May 24 '23 17:05 mmomtchev

What about the file header? Or doesn't exist.

zy6p avatar May 25 '23 07:05 zy6p

What do you mean by the file header?

mmomtchev avatar May 25 '23 12:05 mmomtchev