Forked from HYCAR-Hydro / airGR
Source project has a limited visibility.
HoraireLeverCoucher.java 4.08 KiB
package pikelake.environment;
import java.io.File;
import java.util.Scanner;
import java.io.FileNotFoundException;
import pikelake.pikes.Pike;
import pikelake.pikes.PikesGroup;
import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess;
/**
 *		Classe qui lit le fichier contenant les horaires de lever et de coucher du soleil
 *		Ces horaires sont rangés a l'initialisation dans un tableau pour un acces plus rapide
 *		@author Guillaume GARBAY
 *		@version 1.0
public class HoraireLeverCoucher extends AquaNismsGroupProcess<Pike,PikesGroup> {
	// Tableaux contenant les horaires de lever et coucher du soleil ainsi que les phases du jour en fonction de la date
	public static int heureLeverCoucher[][][] = new int[2][32][13] ;	//	[0=lever, 1=coucher]	[jour]	[mois]	
	public static String phaseJournee[][][] = new String[32][13][25];	//	[jour]	[mois]	[heure]
	/**
	 *		Lis le fichier contenant les horaires de lever et de coucher du soleil
	 *		Remplis les tableaux heureLeverCoucher et phaseJournee
	 *		@param object L'ensemble des individus
	 *		@return /
	@Override
	public void doProcess (PikesGroup object) {
		// Variables qui recuperent les valeurs lues dans le fichier
		String temp[] = null, dateCompleteLever[] = null, dateCompleteCoucher[] = null;
		String jour = null, mois = null, heureLever = null, heureCoucher = null;
		// Fichier contenant les horaires de lever et de coucher du soleil
		String filePath = "data/input/leshorairesdusoleil.csv";    	
		Scanner scanner;
		try {
			scanner = new Scanner(new File(filePath));
			String line = scanner.nextLine();
			// On boucle sur chaque ligne detectée
			while (scanner.hasNextLine()) {
				line = scanner.nextLine();	// Lecture de la ligne
				temp = line.split(";");		// Decoupage de la ligne
				// Détermination heure de lever du soleil
				dateCompleteLever = temp[0].split("[/: ]+");
				dateCompleteCoucher = temp[1].split("[/: ]+");
					// Calcul date
				jour = dateCompleteLever[0];
				mois = dateCompleteLever[1];
					// Lever du soleil
				heureLever = dateCompleteLever[3];
					// Coucher du soleil
				heureCoucher = dateCompleteCoucher[3];
				heureLeverCoucher[0][Integer.parseInt(jour)][Integer.parseInt(mois)] = Integer.parseInt(heureLever);
				heureLeverCoucher[1][Integer.parseInt(jour)][Integer.parseInt(mois)] = Integer.parseInt(heureCoucher);				
			scanner.close(); // Fermeture du fichier
		} catch (FileNotFoundException e) {
			// Auto-generated catch block, erreur de lecture du fichier
			e.printStackTrace();
7172737475767778798081828384858687888990919293949596979899100101102103104105
// Remplissage du tableau qui determine la phase du jour avec les horaires lus dans le fichier for (int m=1; m<13 ;m++) for (int j=1; j<32; j++) for (int h=0; h<25; h++) { if (h > heureLeverCoucher[0][j][m] -2 & h < heureLeverCoucher[0][j][m] +2) phaseJournee[j][m][h] = "AUBE"; else if (h > heureLeverCoucher[0][j][m] +1 & h < heureLeverCoucher[1][j][m] -1) phaseJournee[j][m][h] = "JOUR"; else if (h > heureLeverCoucher[1][j][m] -2 & h < heureLeverCoucher[1][j][m] +2) phaseJournee[j][m][h] = "CREP"; else phaseJournee[j][m][h] = "NUIT"; } } /** * Retourne la phase du jour en fonction d'une date (jour+mois+heure) * @param jour Entier contenant le jour * @param mois Entier contenant le mois * @param heure Entier contenant l'heure * @return phaseJournee[jour][mois][heure] Chaine de caractère contenant la phase du jour */ public static String getPhase (int jour, int mois, int heure) { return phaseJournee[jour][mois][heure]; } /** * Retourne l'horaire de lever ou de coucher en fonction d'une date (jour+mois) * @param levercoucher Entier ou booleen 0=lever, 1=coucher * @param jour Entier contenant le jour * @param mois Entier contenant le mois * @return heureLeverCoucher[0=lever, 1=coucher][jour][mois] Entier representant l'heure du lever ou du coucher */ public int getHoraire (int levercoucher, int jour, int mois) { return heureLeverCoucher[levercoucher][jour][mois] ; } }