I am trying to write a function which will help me construct a
rasterio memory file and return the dataset reader object so I can then play around with it as needed. I am trying to avoid
with statements because I would like to allow the user to read and write as they deem necessary. This is what I have so far:
from rasterio import mask, features, warp from rasterio.io import MemoryFile import rasterio import numpy as np def create_memory_file(data, west_bound, north_bound, cellsize, driver='AAIGrid'): #data is a numpy array dtype = data.dtype shape = data.shape transform = rasterio.transform.from_origin(west_bound, north_bound, cellsize, cellsize) memfile = MemoryFile() dataset = memfile.open(driver=driver, width= shape, height = shape, transform=transform, count=1, dtype = dtype) dataset.write(data,1) return dataset def close_memory_file(memfile): memfile.close() data = np.array([[1,2,3], [4,5,6], [7,8,9]]) memfile = create_memory_file(data, 0, 2, 0.5) memfile.read(1)
The last line throws an error:
Traceback (most recent call last): File "D:/11202750-002_RA2CE/Basis/common.py", line 214, in <module> memfile.read(1) File "rasterio\_io.pyx", line 209, in rasterio._io.DatasetReaderBase.read rasterio.errors.UnsupportedOperation: not readable
The memfile apparently only has write permissions because of the following:
>>> memfile <open BufferedDatasetWriter name='/vsimem/3c0572dd-a295-4f2b-a65d-22a404dd5d0f.' mode='w'> >>> memfile.mode 'w'
I have tried various combinations of adding
permissions=r+ to my
memfile.open() call but it won't allow this.
How can I add the read/write mode at the level of the