Weather Diary: Difference between revisions

From Cumulus Wiki
Jump to navigationJump to search
2,603 bytes added ,  10:17, 10 August 2020
m
(3 intermediate revisions by the same user not shown)
Line 14: Line 14:


This file can be opened as a text file, but there are database file readers that can open this sort of file and display them in a spreadsheet like format (or even convert them to formats like CSV).  It is possible to upload this file, or a transformed version of it, onto your webspace and write coding to display the contents, see [https://cumulus.hosiene.co.uk/viewtopic.php?p=83883#p83883 Cumulus Weather Diary].
This file can be opened as a text file, but there are database file readers that can open this sort of file and display them in a spreadsheet like format (or even convert them to formats like CSV).  It is possible to upload this file, or a transformed version of it, onto your webspace and write coding to display the contents, see [https://cumulus.hosiene.co.uk/viewtopic.php?p=83883#p83883 Cumulus Weather Diary].
==How to view the contents on a web page==
The php script included in [[File:Cumulus 1 Weather Diary PHP reader.zip]] will read the Cumulus 1 weather diary and output it to a web page.  Although that script is not in English, it is possible to translate the text, and it is possible to modify the script in various ways. For example, in one modification I made it combine the multiple entries possible for one day into a single "worst case" output and in another modification I supply it with a date and it only outputs records for that date as shown below:
<pre>$fh = fopen($snowDiary, 'r');
if ($fh == FALSE)
{
echo 'ERROR - cannot access weather diary';
}else{
if($debug) echo 'Success, database ' . $snowDiary . ' is open' . PHP_EOL;
$data = fread($fh, filesize($snowDiary));
fclose($fh);
$converted = iconv("Windows-1250", "UTF-8//IGNORE", $data);
$xml = simplexml_load_string($converted);
$dayArray = array();
$oldKey = '';
foreach ($xml->xpath('//ROW') as $item)
{
$key = substr($item['EntryDate'],0,4) . '-' . substr($item['EntryDate'],4,2) . '-' . substr($item['EntryDate'],6,2);
if($key > $rowMetDayStamp) break;
$falling = $item['SnowFalling'] == 'TRUE' ? 1 : 0;
$lying = $item['SnowLying'] == 'TRUE' ? 1 : 0;
$depth = $item['SnowDepth'];
if($key == $oldKey)  // update to another record for same day, retain worse boolean for falling and lying
{
$falling = $oldFalling == 1 ? 1 : $falling;
$lying = $oldLying == 1 ? 1 : $lying;
$depth = ($depth - $oldDepth) > 0 ? $depth  : $oldDepth;
}
$Entry = $item['Entry'];
// novel to SPAWS
$oldFalling = $falling;
$oldLying = $lying;
$oldDepth = $depth;
$oldKey = $key;
} // end of loop through XML records
if($key == $rowMetDayStamp)
{
$snowKnown = true;
if ($debug)
{
echo ' ----- Found entry in weather diary for ' . $englishProcessingDate . $lf;
}
goto snowDone;
}
if($debug) echo ' ----- NO entry in Cumulus 1 weather diary for ' . $englishProcessingDate . $lf . '============================' . $lf;
$snowKnown = false;
$Entry = Null; // Other variables were previously set to values appropriate for the lowest temperature
goto snowDone;
}// end snow diary file processing</pre>


==How to edit the contents==
==How to edit the contents==
Line 34: Line 84:
For any more information you need to read the [[Log.xml|Log.xml file]] and process that as indicated on referenced page.
For any more information you need to read the [[Log.xml|Log.xml file]] and process that as indicated on referenced page.


= Cumulus MX implementation =
= Cumulus 1 and MX diary differences =


There are a number of differences between the Cumulus 1 and MX implemenations. Please read more at [https://cumulus.hosiene.co.uk/viewtopic.php?f=36&t=17919&p=139854&hilit=weather+diary#p139854 Weather Diary (C1 and MX Differences)]
There are a number of differences between the Cumulus 1 and MX implemenations. Please read more at [https://cumulus.hosiene.co.uk/viewtopic.php?f=36&t=17919&p=139854&hilit=weather+diary#p139854 Weather Diary (C1 and MX Differences)]
=MX weather diary =
The MX weather diary is stored in a table called '''DiaryData''' in a SQLite3 database in a file called [[diary.db]].


== How to edit the MX Weather Diary ==
== How to edit the MX Weather Diary ==
Line 50: Line 104:
The weather diary is stored in [[diary.db|a sqLite database]] and that can be easily accessed by any ODBC software e.g. Libre Office. It can also be accessed using PDO instructions in PHP Hypertext Preprocessor.
The weather diary is stored in [[diary.db|a sqLite database]] and that can be easily accessed by any ODBC software e.g. Libre Office. It can also be accessed using PDO instructions in PHP Hypertext Preprocessor.


Here is an example in a PHP 7.3 (there are changes for PHP 7.4) script of accessing any one day ($rowMetDayStamp in yyyy-mm-dd format):
Here is an example in a PHP 7.3 (there are changes for PHP 7.4) script (modification of script available in [[File:Snow diary.zip]]) of accessing any one day ($rowMetDayStamp in yyyy-mm-dd format):
<pre>$diary = 'sqlite:' . $snowDiary; // Parameter to identify a SQLite database puts a prefix in front of file path
<pre>$diary = 'sqlite:' . $snowDiary; // Parameter to identify a SQLite database puts a prefix in front of file path
$dbhandle = new PDO($diary);  // connect to db
$dbhandle = new PDO($diary);  // connect to db
5,838

edits

Navigation menu