def set_roughness(self,
                      roughness=None,
                      land_use_grid=None,
                      land_use_grid_id=None,
                      land_use_to_roughness_table=None):
        """
        ADD ROUGHNESS FROM LAND COVER
        See: http://www.gsshawiki.com/Project_File:Overland_Flow_%E2%80%93_Required
        """
        if roughness is not None:
            self.project_manager.setCard('MANNING_N', str(roughness))
        elif land_use_grid is not None and (land_use_grid_id is not None \
                or land_use_to_roughness_table is not None):
            # make sure paths are absolute as the working directory changes
            land_use_grid = os.path.abspath(land_use_grid)
            if land_use_to_roughness_table is not None:
                land_use_to_roughness_table = os.path.abspath(land_use_to_roughness_table)

            mapTableFile = MapTableFile(project_file=self.project_manager)
            mapTableFile.addRoughnessMapFromLandUse("roughness",
                                                    self.db_session,
                                                    land_use_grid,
                                                    land_use_to_roughness_table=land_use_to_roughness_table,
                                                    land_use_grid_id=land_use_grid_id)
        else:
            raise ValueError("Need to either set 'roughness', or need "
                             "to set values from land use grid ...")