BUFR messages with multiple observations are split into one report per observation. Multiple observations of past weather (with different time periods) are allowed (not backwards compatible). A few minor bugs were fixed and several smaller improvements were made.
Starting with the next version, metaf2xml will split BUFR messages with multiple observations (i.e. taken at different times) and generate one report per observation. Therefore the callback function configured via start_cb() will possibly be called with data from more than one report during one call of parse_report() or process_bufr(). If the callback function does not process the data immediately (or at the latest at the end of a report) it needs to be made capable of storing multiple reports which need to be processed after parse_report()/process_bufr() finish.
The URL for fetching data from NOAA/IWS and NOAA/NWS was adapted, the search in data files was optimised and/or fixed. The friction coefficient for the runway state in METAR is allowed to be 0, all values are now decoded.
Processing of decoded BUFR messages was extended. BUFR decoding of section 4 (data) can be skipped depending on fields in BUFR sections 1..3 with Geo::BUFR 1.33+. Multiple observations in an AMDAR message are allowed. The pseudo-BUFR (text) format was improved. Missing BUFR values are not reported as unprocessed. The CGI script recognises BUFR report types (IOB, IUA, ...). Decoding of binary BUFR messages was moved to src2raw.pm. Precipitation and cloud information is shown as list in one field instead of using 1..3 fields in the summary. Many smaller improvements were made and a few minor bugs were fixed.
The processing of meteorological reports from aircrafts (AMDAR) was added. Several minor improvements were made and a few minor bugs were fixed.
Perl 5.10.1 or newer (was: 5.8.1) is required. BUFR processing was extended. The download of data from Ogimet and NOAA/NWS dataserver was adapted. Several smaller improvements were made.
To prevent the accidental download of old released files (e.g. via links on web sites providing outdated information about the project), Files will contain files for the latest release, only.
The next release will require Perl version 5.10.1 or newer. If you have to use an older version of Perl please tell me which version you need (via sourceforge.net ticket, forum, or message).
The processing of pre-analyzed BUFR messages was prepared. Pipe opens in the CGI script have been improved. Pod::Usage is used for the usage information. The Makefile was reduced to a bare minimum. The option -n (dry run) was added for install.pl. Several minor improvements were made and a few minor bugs were fixed.
The translation files were renamed from .xsl to .xml. The translation for weather was improved. The functions finish_cb() and finish_xml() of metaf2xml::parser were merged to finish(). Some minor bugs were fixed and some smaller improvements were made.
According to the plan (from 2010) for the migration from traditional alphanumeric codes (TAC) to BUFR (see www.wmo.int/pages/prog/www/WMOCodes/MigrationTDCF.html), the parallel distribution of SYNOP and BUOY as TAC and BUFR will stop in November. metaf2xml cannot decode BUFR, so it cannot be used to process SYNOP and BUOY messages encoded as BUFR. If you depend on having up-to-date SYNOP and BUOY information after the migration is completed please check alternative software (e.g. on the web site above).
The message prefixes SYNOP and BUOY are deprecated. TAF reports are now also fetched and displayed for mode summary. The QNH and temperature forecast for TAF is processed. Several minor improvements were made and a few minor bugs were fixed.
Five more groups are processed for SYNOP sections 3 and 9. The summary also shows the direction for wind gusts and the offset to the exact observation time. If a DB is used as message source, station information is also fetched from this DB. In the UIs, SYNOP stations are now distinguished by station type instead of source. The GUI demo now works with browsers based on WebKit. The check for the exact Perl module version was improved. Style information for the UI was moved to a CSS file. The installation script was improved. Some minor bugs were fixed anda few smaller improvements were made.
The module XML.pm was merged into parser.pm. XML output is now buffered. Changes to the standard effective from November were implemented. Many smaller improvements were made and a few minor bugs were fixed.
In the next version, the code from the module XML.pm will be merged into parser.pm. This simplifies some code and maintenance. This change also removes the "internal interface" between them, a variable containing the parsed data. The use of this variable other than by XML.pm was never intended and advised against, its structure undocumented and susceptible to changes without notice and backwards compatibility. If you are using this variable and need help with switching to the callback mechanism, please say so. In the request, please specify how the data should be provided to fit your software best, and if any of the examples in metaf2xml.pl comes close to your expected solution.
SAO processing was extended further. FMH rules are now used for cloud bases in METAR, TAF and SYNOP from the US. Many smaller improvements were made and a few minor bugs were fixed.
The source for messages can now also be an SQL database. SAO processing was extended. The Russian translation was improved (thanks to Roman Nikitin). The processing of SYNOP section 5 was extended for RU and LT. Yet another example callback function (producing XML) was added. There are a few other minor changes.
The number of errors raised for invalid groups in METAR and TAF was reduced significantly: more groups and variants are recognised, certain unrecognised groups are skipped. The processing of BUOY messages is now complete and Canadian automatic SAO are also processed. The option -x for metaf2xml.pl was renamed to -o; the option is honored now also by the example callback functions. A few minor bugs were fixed.
Groups in SYNOP section 5 from RU and some in BUOY section 4 are now processed. Parsing of METAR and TAF was extended. The CGI script and the user interface was adapted to NOAA/IWS going out of service. The documentation was extended. Another example callback function was added to metaf2xml.pl. A minor bug was fixed and there are a few other minor improvements.
This release extends parsing for BUOY and SYNOP messages. There are many smaller changes and other extensions.
Starting with release 1.47, there will be an additional commit containing the changes for the released package. Thus installable files for releases are now also accessible from a local Git clone or the link "snapshot" of the Git web interface at SourceForge. This commit will have the tag rVERSION (e.g. r1.47). Immediately after a release, the branch "unstable" will also point to this commit instead of a commit containing installable files for a dummy version "0.YYYYmmdd".
Starting with this release, the parsed data can be accessed via a callback function. Releases are now installed with a Perl script. The hourly temperature in METAR remarks is processed as an observed value, not an 1 hour average. Missing data for weather history (RABMM) and 24h min./max. temperature in METAR remarks is recognised. Many smaller changes and bugfixes have been made.
Until now, the only supported output format for the data was XML, as this was the project's original purpose. But one question was (implicitely) raised some time ago in a forum here, and now again in another forum: what if the data is needed in a different format? Conversion from XML was always possible, but the XML had to be created and parsed again even if the program using the data was also Perl. It was never really an option to use the return value of parse_report(): it is an internal interface, with a data structure cumbersome to process and prone to frequent changes.
This triggered the idea to add 2 functions to metaf2xml:XML (the name now doesn't fit exactly anymore). One function, start_cb(), is be used to hook up a callback function which is passed the same data in the same sequence used for writing the data as XML; in fact, the function to write the data as XML is now also a callback function. The callback function can then format, filter, and/or aggregate the data, and pass it to other functions. As an example, the callback function simpleDump() was added to metaf2xml.pl.
A preliminary version of this feature is in Git 'unstable', there may be some changes until it is released. You are invited to try it out, feedback is welcome.
Two small but nasty bugs were fixed.
metaf.pl and metafsrc2raw.pl now use the module src2raw.pm; less forking is now required. The source "Ogimet ship" can now be used to fetch ship data. The display of wind, pressure (change) and temperature in the summary was extended. Many smaller improvements and bugfixes were made.