Просмотр исходного кода

Tempstijgingsperiode

Hartstikke mooi man
Tom Remeeus 11 лет назад
Родитель
Сommit
e4e89d98a3
3 измененных файлов с 112 добавлено и 8 удалено
  1. 54 0
      LangsteTempStijgingPeriode.java
  2. 55 6
      StatisticsCalculator.java
  3. 3 2
      Weerstation.java

+ 54 - 0
LangsteTempStijgingPeriode.java

@@ -0,0 +1,54 @@
+import java.util.ArrayList;
+
+public class LangsteTempStijgingPeriode extends Grootheid
+{
+    private ArrayList<Double> list;
+    private Periode StijgingPeriode;
+    
+    //constructor
+    public LangsteTempStijgingPeriode(Measurement measurement1, ArrayList<Measurement> measurement2)
+    {
+        list = new ArrayList<Double>();
+        StijgingPeriode = new Periode("TempStijgingsperiode");
+        updateRecent(measurement1);
+        updatePeriod(measurement2);
+    }
+
+    
+    public void updateRecent(Measurement measurement1)
+    {
+        setCurrent(measurement1.getOutsideTemp());
+    }
+    
+    public void updatePeriod(ArrayList<Measurement> measurement2)
+    {
+        createList(measurement2);
+        calculateMaxMin(list);
+        
+        int[] index = StatisticsCalculator.langsteTempStijgingPeriode(list);
+        StijgingPeriode= Calculator.timeStampToPeriode( measurement2.get(index[0]).getDateStamp(), measurement2.get(index[1]).getDateStamp());
+    }
+    
+    public void display()
+    {
+        GUIboard.writePageToMatrix("Langste temp.stijging", StijgingPeriode.toString(), "");
+    }
+    
+    public void displayGraph()
+    {
+        display();
+    }
+    
+    private void createList(ArrayList<Measurement> measurement2)
+    {
+        if(!list.isEmpty())
+        {
+            list.clear();
+        }
+        
+        for(Measurement ms : measurement2)
+        {
+            list.add(ms.getOutsideTemp());
+        }
+    }
+}

+ 55 - 6
StatisticsCalculator.java

@@ -310,15 +310,64 @@ public class StatisticsCalculator {
     
     public static int[] langsteTempStijgingPeriode(ArrayList<Double> array)
     {
+        ArrayList<Double> maxTempDag = new ArrayList<Double>();
+        ArrayList<Integer> periodeLengteList = new ArrayList<Integer>();
+        ArrayList<Integer> periodeStartList = new ArrayList<Integer>();
+        
         int[] index = new int[2];
         int index1 = 0;
         int index2 = 0;
+        int indexStart = 0;
+        int indexEind = 1;
+        int periodeLengte = 0;
+        int i = 0;
+        double maxTemp = 0; 
         
-        //Code
+        //berekent maximale temp. per dag
+        for(double db : array)
+        {
+           i ++;
+           if(i % 1440 == 0)
+           {
+               maxTempDag.add(maxTemp);
+               maxTemp = 0;
+           }
+           
+           if(db > maxTemp) 
+           {
+               maxTemp = db;
+           }    
+        }        
+        
+        for(int t = 1; t < maxTempDag.size(); t ++)  //zoekt naar periodes van temp.stijgingen
+        { 
+            if (maxTempDag.get(t) > maxTempDag.get(t - 1))
+            {                
+                indexEind ++;
+            }
+            
+            if (maxTempDag.get(t) <= maxTempDag.get(t - 1))
+            {
+               periodeLengte = indexEind - indexStart;
+               periodeLengteList.add(periodeLengte);
+               periodeStartList.add(indexStart);
+               indexStart = indexEind;
+            }
+        } 
         
-        index[0] = index1;
-        index[1] = index2;
-        return index;
-    }
-    
+        Integer tempMax = Collections.max(periodeLengteList); //onthoudt de grootste periode van een temp.stijging
+        
+        for (int u = 0; u < periodeLengteList.size(); u ++) //pakt de index van de grootste periode
+        {
+            if (tempMax == periodeLengteList.get(u))
+            {
+                index1 = u;
+                index2 = tempMax - u;
+            }
+        }
+        
+        index[0] = index1 * 1440;
+        index[1] = index2 * 1440;
+        return index; 
+    }       
 }

+ 3 - 2
Weerstation.java

@@ -73,7 +73,7 @@ public class Weerstation {
         System.out.println("2 Years: " + periods.get(6));
         
         //Kies hier welke periode je wil laden, hij veranderd in een keer alles:
-        int periodeNr = 0;
+        int periodeNr = 1;
         
         weerstation1 = new WeerstationConnector();
         meting1 = weerstation1.getMostRecentMeasurement();
@@ -103,7 +103,8 @@ public class Weerstation {
         lstScreens.add(new Zonsterkte(meting1, meting2));           //Zonkracht
         lstScreens.add(new DewPoint(meting1, meting2));             //Dauwpunt
         lstScreens.add(new Sun(meting1));                           //Sunrise en Sunset
-        lstScreens.add(new LangsteZomerPeriode(meting1, meting2));  //Langste Zomerse Periode
+        lstScreens.add(new LangsteZomerPeriode(meting1, meting2));//Langste Zomerse Periode
+        lstScreens.add(new LangsteTempStijgingPeriode(meting1, meting2)); //Langste temperatuurstijging
         lstScreens.add(new LangsteRegenPeriode(meting1, meting2));  //Langste Regen Periode
         lstScreens.add(new MaximaleRegenPeriode(meting1, meting2)); //Totale regenval in een periode
         lstScreens.add(new GraadDagen(meting1, meting2));           //Aantal graaddagen in een periode