Posts mit dem Label csv werden angezeigt. Alle Posts anzeigen
Posts mit dem Label csv werden angezeigt. Alle Posts anzeigen

Tutorial - Wetterdaten Diagramme mit amcharts - Teil 2.2 - Textdateien CSV

Teil 2.2 - Textdateien CSV



Achtung: Neue und aktualisierte Versionen der Tutorials finden Sie hier:

http://www.pscl.ch



.csv Dateien lassen sich auf verschiedene Arten einbinden. Hier wird eine flexible PHP Variante vorgestellt, falls Datum und Werte umformatiert werden müssen.




1. Beispiel Quelldatei:


z.B. "data.csv"

01.11.2013;00:00;26.0;88;1000.5
01.11.2013;00:05;26.0;82;1000.6
01.11.2013;00:10;25.9;85;1000.7
01.11.2013;00:15;25.5;87;1000.2
...




2. Das PHP Script


Um diese Datei in ein vom amchart lesbares Format umzuwandeln, verwenden wir ein PHP Script welches ähnlich aufgebaut ist, wie das Datenbank Import Script aus Teil 3.1:


<?php

//Dateiname der Importdatei
$dateiname = "data.csv";

//Start Datenzeile der Importdatei
$startzeile = 1;


//Die Import Datei öffnen
if (($handle = fopen("$dateiname", "r")) !== FALSE) 
{

  //2 zähler
  $lcin = 0;
  $lcout = 0;

  //Jede Zeile abarbeiten (Hier das csv Trennzeichen anpassen ";")
  while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) 
  {

    //zeilenzähler Importdatei erhöhen
    $lcin++;

    //importdatei zeilen überspringen
    if($lcin >= $startzeile) 
    {
    
    //kein komma in Ausgabe Zeile 1
    if ($lcout != 0)
    {
       echo ", \n";
    }
    //komma ab zeile 2
    $lcout = 1;
   
   // datum und Zeit zerlegen 
   //Spalten $data[0][1] und Trennzeichen anpassen ". :")
   $splitDate = explode(".", $data[0]);
   $splitTime = explode(":", $data[1]);
   
   // Datum und Zeit neuen Variablen zuweisen
   // Variablen zuweisen (Spalten anpassen: "splitDate[0][1][2]")   
   $csvYear = $splitDate[2];
   $csvMonth = $splitDate[1];
   $csvDay = $splitDate[0];
   $csvHour = $splitTime[0];
   $csvMinute = $splitTime[1];
   
   // Timestamp erstellen
   $ts = strtotime("$csvYear-$csvMonth-$csvDay $csvHour:$csvMinute");
   
   // Ein Timestamp lässt sich einfacher formatieren. zb. "2013-11-25 00:00"
   // $jsDate2 = date('"Y-m-d H:i"', $ts);

   
   // Date Format erstellen (js date object). zb. "new Date(2013,10,25,0,0)"

   $jsYear = date('Y', $ts); // 2013
   $jsMonth = date('n',$ts)-1; // 10 (js month start with 0)
   $jsDay = date('j', $ts); // 25 (ohne führende null)
   $jsHour = date('G', $ts); // 0 (ohne führende null)
   $jsMinute = intval(date('i', $ts)); // 0 (ohne führende null)

   $jsDate = "new Date($jsYear,$jsMonth,$jsDay,$jsHour,$jsMinute)";
   

   //Werte mit komma als Dezimalzeichen sollten auf punkt geändert werden mit
   //$data[2] = str_replace(",", ".", "$data[2]");


   // Ausgabe Datenzeile für amcharts "new Date(2013,10,25,0,0),t:1.0,etc)
   // Spalten an Werte anpassen z.b Temp in Spalte 3 "$data[2]"

   echo "{date: $jsDate,t:".$data[2].",h:".$data[3].",p:".$data[4]."}";

    }
   
  }

// Import Datei schliessen
fclose($handle);
}
?>


Das Script sollte folgendes ausgeben:

{date: new Date(2013,10,1,0,0),t:26,0,h:88,p:1000.5}, 
{date: new Date(2013,10,1,0,5),t:26,0,h:82,p:1000.6}, 
{date: new Date(2013,10,1,0,10),t:25,9,h:85,p:1000.7}, 
{date: new Date(2013,10,1,0,15),t:25,5,h:87,p:1000.2}