docs: def get_mask_from_raster(rasterfile, outmaskfile, keep_nodata=False):
          """Generate mask data from a given raster data.
  
          Args:
              rasterfile: raster file path.
              outmaskfile: output mask file path.
  
          Returns:
              Raster object of mask data.
          """
          raster_r = RasterUtilClass.read_raster(rasterfile)
          xsize = raster_r.nCols
          ysize = raster_r.nRows
          nodata_value = raster_r.noDataValue
          srs = raster_r.srs
          x_min = raster_r.xMin
          y_max = raster_r.yMax
          dx = raster_r.dx
          data = raster_r.data
  
          if not keep_nodata:
              i_min = ysize - 1
              i_max = 0
              j_min = xsize - 1
              j_max = 0
              for i in range(ysize):
                  for j in range(xsize):
                      if abs(data[i][j] - nodata_value) > DELTA:
                          i_min = min(i, i_min)
                          i_max = max(i, i_max)
                          j_min = min(j, j_min)
                          j_max = max(j, j_max)
  
              # print(i_min, i_max, j_min, j_max)
              y_size_mask = i_max - i_min + 1
              x_size_mask = j_max - j_min + 1
              x_min_mask = x_min + j_min * dx
              y_max_mask = y_max - i_min * dx
          else:
              y_size_mask = ysize
              x_size_mask = xsize
              x_min_mask = x_min
              y_max_mask = y_max
              i_min = 0
              j_min = 0
          print('%dx%d -> %dx%d' % (xsize, ysize, x_size_mask, y_size_mask))
  
          mask = numpy.zeros((y_size_mask, x_size_mask))
  
          for i in range(y_size_mask):
              for j in range(x_size_mask):
                  if abs(data[i + i_min][j + j_min] - nodata_value) > DELTA:
                      mask[i][j] = 1
                  else:
                      mask[i][j] = DEFAULT_NODATA
  
          mask_geotrans = [x_min_mask, dx, 0, y_max_mask, 0, -dx]
          RasterUtilClass.write_gtiff_file(outmaskfile, y_size_mask, x_size_mask, mask,
                                           mask_geotrans, srs, DEFAULT_NODATA, GDT_Int32)
          return Raster(y_size_mask, x_size_mask, mask, DEFAULT_NODATA, mask_geotrans, srs)