Open a raster file with read and write permissions in rasterio

Amine Aboufirass
 

I have already asked this question in GIS stack exchange  and stack overflow but received no response:
 
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[1], height = shape[0], 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 `mode=r+`, `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 `open` statement?
 
 
  [1]: https://gis.stackexchange.com/questions/297562/open-a-raster-file-with-read-and-write-permissions-in-rasterio

Join main@rasterio.groups.io to automatically receive all group messages.