public function createGeoAnalysis($description, $analysis_level, $map_file, $map_top_level, $use_flags, $gen_details) {
		try{
			Database::beginTransaction();
		
			Database::prepare(
				'INSERT INTO `##maj_geodispersion`'.
				' (majgd_file, majgd_descr, majgd_sublevel, majgd_map, majgd_toplevel, majgd_useflagsgen, majgd_detailsgen)'.
				' VALUES (:gedcom_id, :description, :analysis_level, :map, :map_top_level, :use_flags, :gen_details)'
			)->execute(array(
				'gedcom_id' => $this->tree->getTreeId(),
				'description' => $description,
				'analysis_level' => $analysis_level,
				'use_flags' => $use_flags ? 'yes' : 'no',
				'gen_details' => $gen_details,
				'map' => $map_file,
				'map_top_level' => $map_top_level        
			));
			
			$id = Database::lastInsertId();			
			$ga = $this->getGeoAnalysis($id, false);
			
			Database::commit();
		}
		catch(\Exception $ex) {
			Database::rollback();
			$ga = null;
			Log::addErrorLog('A new Geo Analysis failed to be created. Transaction rollbacked. Parameters ['.$description.', '.$analysis_level.','.$map_file.','.$map_top_level.','.$use_flags.', '.$gen_details.']. Exception: '.$ex->getMessage());
		}
		return $ga;
    }