changeset 169:c12e422a543a

FMI data parsing kinda almost works. It is horrible, though. XML ... :Q
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 02 Jun 2014 22:52:30 +0300
parents 7eee54638b0f
children e4faa3746869
files fetch_weather.pl
diffstat 1 files changed, 27 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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,
+        ];
+      }
+    }
   }
 }