def format(self, mapobj, file_name="", fill=True): """The segmentation routines require a disk file to be used for paging segments in and out of memory. This routine formats the file open for write on file descriptor fd for use as a segment file. """ if file_name == "": file_name = libgis.G_tempfile() mapobj.temp_file = open(file_name, "w") size = ctypes.sizeof(RTYPE[mapobj.mtype]["ctypes"]) if fill: libseg.Segment_format( mapobj.temp_file.fileno(), self.rows(), self.cols(), self.srows, self.scols, size, ) else: libseg.Segment_format_nofill( mapobj.temp_file.fileno(), self.rows(), self.cols(), self.srows, self.scols, size, ) # TODO: why should I close and then re-open it? mapobj.temp_file.close()
def open(self, mapobj): """Open a segment it is necessary to pass a RasterSegment object. """ self.val = RTYPE[mapobj.mtype]['grass def']() size = ctypes.sizeof(RTYPE[mapobj.mtype]['ctypes']) file_name = libgis.G_tempfile() libseg.Segment_open(self.c_seg, file_name, self.rows(), self.cols(), self.srows, self.scols, size, self.nseg()) self.flush()