Package projet

Source Code of projet.DonneesAgreg

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/

package projet;
import colormap.Colormap;
import isovaleur.*;
import java.util.ArrayList;
import java.util.Iterator;

/**
*
* @author lotfi
*/
public class DonneesAgreg {
    private Colormap colormap;
    private ArrayList<DonneesGeo> donneesGeo;
    private ArrayList<DonneesGeo> donneesGeoInterp;
    private double delta = 0.1;
    private double latMin;
    private double latMax;
    private double lonMin;
    private double lonMax;
    //On prend 3 isovaleurs
    private ArrayList<Segment> iso1;
    private ArrayList<Segment> iso2;
    private ArrayList<Segment> iso3;
    private ArrayList<ArrayList<Segment>> isos2;
    private ArrayList<ArrayList<Segment>> isos3;
    public DonneesAgreg(){
        this.colormap = new Colormap();
        this.donneesGeo = new ArrayList<DonneesGeo>();
        this.donneesGeoInterp = new ArrayList<DonneesGeo>();
        iso1 = new ArrayList<>();
        iso2 = new ArrayList<>();
        iso3 = new ArrayList<>();
        isos2 = new ArrayList<ArrayList<Segment>>();
        isos3 = new ArrayList<ArrayList<Segment>>();
    }
    /**
     * Ajout d'une valeur de la concentration à un instant du mois
     * @param ville: ville pour laquelle la concentration passée en paramètre a été enregistrée
     * @param concentration: concentration pour cette ville 
     */
    public void ajoutConcentration(String ville, Integer concentration){
        //recherche de la ville dans la liste des données
        Iterator<DonneesGeo> it = this.getDonneesGeo().iterator();
        while(it.hasNext()){
            DonneesGeo donnee = it.next();
            if(donnee.getName().equals(ville))
                donnee.ajoutConcentration(concentration);
        }
    }

   
    /**
     * Initialisation de la dimension de la colormap
     * donneesGeo doit avoir été initialisé
     */
    public void initColorMap(){
        int lat, lon;
        //double latMin, latMax, lonMin, lonMax;
        setLatMin(InterShepard.latitudeMin(this.getDonneesGeo()))  ;
        setLatMax(InterShepard.latitudeMax(this.getDonneesGeo()));
        setLonMin(InterShepard.longitudeMin(this.getDonneesGeo()));
        setLonMax(InterShepard.longitudeMax(this.getDonneesGeo()));
        int height = (int)Math.floor((getLatMax() - getLatMin()) / getDelta()) ;
        int width =(int)Math.floor((getLonMax() - getLonMin()) / getDelta()) + 1;
        this.getColormap().generateData(width, height );
        Iterator<DonneesGeo> it = this.getDonneesGeoInterp().iterator();
        while(it.hasNext()){
            DonneesGeo donnee = it.next();
            lat =(int)Math.floor((donnee.getLattitude() - getLatMin()) / this.getDelta());
            lon =(int)Math.floor((donnee.getLongitude() - getLonMin()) / this.getDelta()) ;
            this.getColormap().insertValue(lat , lon , donnee.getConcentration());
           
        }
       
        this.getColormap().initXi(2);
        this.getColormap().generateRgb();
    }
   
    /**
     * Interpole les valeurs de concentration par pas de 0.001
     */
    public void completeDonneesGeo(){
        this.setLatMin(InterShepard.latitudeMin(this.getDonneesGeo())) ;
        this.setLonMin(InterShepard.longitudeMin(this.getDonneesGeo()));
        this.setLatMax(InterShepard.latitudeMax(this.getDonneesGeo()));
        this.setLonMax(InterShepard.longitudeMax(this.getDonneesGeo()));
        for(double i = getLatMin(); i <= getLatMax() ; i+= getDelta()){
            for(double j = getLonMin(); j <= getLonMax(); j+= getDelta()){
                DonneesGeo d = new DonneesGeo(i,j,400 * Math.random());
                double conc = InterShepard.calculDeF(d, getDonneesGeo());
                d.setConcentration(conc);
                this.getDonneesGeoInterp().add(d);
            }
        }
    }
    /**
     * Génération des isovaleurs, une fois que toutes les données sont initialisées(colormat, ...)
     */
   
    public void generateIso(){
        ArrayList<Segment> isoval2 = new ArrayList<Segment> ();
        ArrayList<Segment> isoval3 = new ArrayList<Segment>();
        Isovaleur.determinerSigne(this.getColormap().getData(), ( this.getColormap().valMax() + 2 * this.getColormap().valMin()) / 3.0);
        setIso1(Isovaleur.creerSegments(this.getColormap().getData(), ( this.getColormap().valMax() + 2 * this.getColormap().valMin()) / 3.0, getLatMin(), getLonMin(), getDelta()));
        Isovaleur.determinerSigne(this.getColormap().getData(), (this.getColormap().valMax() + this.getColormap().valMin()) / 2.0);
        setIso2(Isovaleur.creerSegments(this.getColormap().getData(), (this.getColormap().valMax() + this.getColormap().valMin()) / 2.0, getLatMin(), getLonMin(), getDelta()));
        isoval3 = Isovaleur.creerSegments(this.getColormap().getData(), (2 * this.getColormap().valMax() + this.getColormap().valMin()) / 3.0, getLatMin(), getLonMin(), getDelta());
        Isovaleur.determinerSigne(this.getColormap().getData(), (2 * this.getColormap().valMax() + this.getColormap().valMin()) / 3.0);
        setIso3(Isovaleur.creerSegments(this.getColormap().getData(), (2 * this.getColormap().valMax() + this.getColormap().valMin()) / 3.0, getLatMin(), getLonMin(), getDelta()));
        //Isovaleur.afficherSegments(iso3);
        getIsos2().add(isoval2);
        getIsos3().add(isoval3);
    }  
   
    /**
     * Génération de toutes les images et isovaleurs
     */
    public void generateImages(String imageName){
        for (int i = 0; i < this.getDonneesGeo().get(0).getConcentrationsHoraires().size(); i++){
            Iterator<DonneesGeo> it = this.getDonneesGeo().iterator();
            while(it.hasNext()){
                DonneesGeo donnees = it.next();
                donnees.setConcentration(donnees.getConcentrationsHoraires().get(i));
           }
            completeDonneesGeo();
            initColorMap();
           // generateIso();
            this.getColormap().createImageFile("images/" + imageName + i + ".png");
        }
    }
   
    /**
     * @return the colormap
     */
   
    public Colormap getColormap() {
        return colormap;
    }

    /**
     * @param colormap the colormap to set
     */
    public void setColormap(Colormap colormap) {
        this.colormap = colormap;
    }

    /**
     * @return the donneesGeo
     */
    public ArrayList<DonneesGeo> getDonneesGeo() {
        return donneesGeo;
    }

    /**
     * @param donneesGeo the donneesGeo to set
     */
    public void setDonneesGeo(ArrayList<DonneesGeo> donneesGeo) {
        this.donneesGeo = donneesGeo;
    }

    /**
     * @return the donneesGeoInterp
     */
    public ArrayList<DonneesGeo> getDonneesGeoInterp() {
        return donneesGeoInterp;
    }

    /**
     * @param donneesGeoInterp the donneesGeoInterp to set
     */
    public void setDonneesGeoInterp(ArrayList<DonneesGeo> donneesGeoInterp) {
        this.donneesGeoInterp = donneesGeoInterp;
    }

    /**
     * @return the delta
     */
    public double getDelta() {
        return delta;
    }

    /**
     * @param delta the delta to set
     */
    public void setDelta(double delta) {
        this.delta = delta;
    }

    /**
     * @return the latMin
     */
    public double getLatMin() {
        return latMin;
    }

    /**
     * @param latMin the latMin to set
     */
    public void setLatMin(double latMin) {
        this.latMin = latMin;
    }

    /**
     * @return the latMax
     */
    public double getLatMax() {
        return latMax;
    }

    /**
     * @param latMax the latMax to set
     */
    public void setLatMax(double latMax) {
        this.latMax = latMax;
    }

    /**
     * @return the lonMin
     */
    public double getLonMin() {
        return lonMin;
    }

    /**
     * @param lonMin the lonMin to set
     */
    public void setLonMin(double lonMin) {
        this.lonMin = lonMin;
    }

    /**
     * @return the lonMax
     */
    public double getLonMax() {
        return lonMax;
    }

    /**
     * @param lonMax the lonMax to set
     */
    public void setLonMax(double lonMax) {
        this.lonMax = lonMax;
    }

    /**
     * @return the iso1
     */
    public ArrayList<Segment> getIso1() {
        return iso1;
    }

    /**
     * @param iso1 the iso1 to set
     */
    public void setIso1(ArrayList<Segment> iso1) {
        this.iso1 = iso1;
    }

    /**
     * @return the iso2
     */
    public ArrayList<Segment> getIso2() {
        return iso2;
    }

    /**
     * @param iso2 the iso2 to set
     */
    public void setIso2(ArrayList<Segment> iso2) {
        this.iso2 = iso2;
    }

    /**
     * @return the iso3
     */
    public ArrayList<Segment> getIso3() {
        return iso3;
    }

    /**
     * @param iso3 the iso3 to set
     */
    public void setIso3(ArrayList<Segment> iso3) {
        this.iso3 = iso3;
    }

    /**
     * @return the isos2
     */
    public ArrayList<ArrayList<Segment>> getIsos2() {
        return isos2;
    }

    /**
     * @param isos2 the isos2 to set
     */
    public void setIsos2(ArrayList<ArrayList<Segment>> isos2) {
        this.isos2 = isos2;
    }

    /**
     * @return the isos3
     */
    public ArrayList<ArrayList<Segment>> getIsos3() {
        return isos3;
    }

    /**
     * @param isos3 the isos3 to set
     */
    public void setIsos3(ArrayList<ArrayList<Segment>> isos3) {
        this.isos3 = isos3;
    }
   
}
TOP

Related Classes of projet.DonneesAgreg

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.