# HG changeset patch # User Matti Hamalainen # Date 1401738750 -10800 # Node ID c12e422a543a77481d5cecdde1538230ba3abb5d # Parent 7eee54638b0f96d0e228c82c08aec22ac2c95152 FMI data parsing kinda almost works. It is horrible, though. XML ... :Q diff -r 7eee54638b0f -r c12e422a543a fetch_weather.pl --- a/fetch_weather.pl Mon Jun 02 21:44:04 2014 +0300 +++ b/fetch_weather.pl Mon Jun 02 22:52:30 2014 +0300 @@ -364,6 +364,33 @@ my $xml = XMLin($res->decoded_content, KeyAttr => { server => 'name' }, ForceArray => [ 'server', 'address' ]); + + my $time_base = time(); + + foreach my $item (@{$xml->{"wfs:member"}}) + { + my $fitem = $item->{"omso:GridSeriesObservation"}; + if (defined($fitem->{"om:phenomenonTime"}{"gml:TimePeriod"})) + { + $time_base = str2time($fitem->{"om:phenomenonTime"}{"gml:TimePeriod"}{"gml:endPosition"}); + } + my $fname = $fitem->{"om:featureOfInterest"}{"sams:SF_SpatialSamplingFeature"}{"sams:shape"}{"gml:MultiPoint"}{"gml:pointMember"}{"gml:Point"}{"gml:name"}; + + my $fres = $fitem->{"om:result"}{"gmlcov:MultiPointCoverage"}{"gml:rangeSet"}{"gml:DataBlock"}{"gml:doubleOrNilReasonTupleList"}; + + ### TODO XXX HALARM - ei ota viimeista arvoa, kuten pitais + if ($fres =~ /([\+\-]?\d+\.?\d*)\s+([\+\-]?\d+\.?\d*)/) + { + my ($ftemp, $fhumid) = ($1, $2); + $weatherdata->{$fname} = [ + $time_base, + $ftemp, + "", + "", + $fhumid, + ]; + } + } } }