class RasterRowIO(RasterRow): """Raster_row_cache_access": The same as "Raster_row_access" but uses the ROWIO library for cached row access """ def __init__(self, name, *args, **kargs): self.rowio = RowIO() super(RasterRowIO, self).__init__(name, *args, **kargs) def open(self, mode=None, mtype=None, overwrite=False): """Open the raster if exist or created a new one. :param mode: specify if the map will be open with read or write mode ('r', 'w') :type mode: str :param type: if a new map is open, specify the type of the map(`CELL`, `FCELL`, `DCELL`) :type type: str :param overwrite: use this flag to set the overwrite mode of existing raster maps :type overwrite: bool """ super(RasterRowIO, self).open(mode, mtype, overwrite) self.rowio.open(self._fd, self._rows, self._cols, self.mtype) @must_be_open def close(self): """Function to close the raster""" self.rowio.release() libraster.Rast_close(self._fd) # update rows and cols attributes self._rows = None self._cols = None self._fd = None @must_be_open def get_row(self, row, row_buffer=None): """This method returns the row using: * the read mode and * `rowcache` method :param row: the number of row to obtain :type row: int :param row_buffer: Specify the Buffer object that will be instantiate :type row_buffer: Buffer object """ if row_buffer is None: row_buffer = Buffer((self._cols,), self.mtype) rowio_buf = librowio.Rowio_get(ctypes.byref(self.rowio.c_rowio), row) ctypes.memmove(row_buffer.p, rowio_buf, self.rowio.row_size) return row_buffer
class RasterRowIO(RasterRow): """Raster_row_cache_access": The same as "Raster_row_access" but uses the ROWIO library for cached row access """ def __init__(self, name, *args, **kargs): self.rowio = RowIO() super(RasterRowIO, self).__init__(name, *args, **kargs) def open(self, mode=None, mtype=None, overwrite=False): """Open the raster if exist or created a new one. :param mode: specify if the map will be open with read or write mode ('r', 'w') :type mode: str :param type: if a new map is open, specify the type of the map(`CELL`, `FCELL`, `DCELL`) :type type: str :param overwrite: use this flag to set the overwrite mode of existing raster maps :type overwrite: bool """ super(RasterRowIO, self).open(mode, mtype, overwrite) self.rowio.open(self._fd, self._rows, self._cols, self.mtype) @must_be_open def close(self): """Function to close the raster""" self.rowio.release() libraster.Rast_close(self._fd) # update rows and cols attributes self._rows = None self._cols = None self._fd = None @must_be_open def get_row(self, row, row_buffer=None): """This method returns the row using: * the read mode and * `rowcache` method :param row: the number of row to obtain :type row: int :param row_buffer: Specify the Buffer object that will be instantiate :type row_buffer: Buffer object """ if row_buffer is None: row_buffer = Buffer((self._cols, ), self.mtype) rowio_buf = librowio.Rowio_get(ctypes.byref(self.rowio.c_rowio), row) ctypes.memmove(row_buffer.p, rowio_buf, self.rowio.row_size) return row_buffer