Open a raster file with read and write permissions in rasterio
Amine Aboufirass <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
|
|