dwml Gem Version Build Status Code Climate

An opinionated parser for NOAA's Digital Weather Markup Language (DWML).

Requirements

  • ruby >= 2.5.x

Usage

In your Gemfile:

gem 'dwml', '~>1.2'

In your application:

output = DWML.new(nokogiri_xml_doc).process

The output will look something like this:

    {:product=>
      {:title=>"NOAA's National Weather Service Forecast Data",
       :field=>"meteorological",
       :category=>"forecast",
       :creation_date=>Thu, 05 Mar 2020 18:49:42 UTC +00:00},
     :source=>
      {:product_center=>
        "Meteorological Development Laboratory - Product Generation Branch",
       :more_information=>"https://graphical.weather.gov/xml/",
       :disclaimer=>"http://www.nws.noaa.gov/disclaimer.html",
       :credit=>"https://www.weather.gov/",
       :credit_logo=>"https://www.weather.gov/logorequest",
       :feedback=>"https://www.weather.gov/contact"},
     :parameters=>
      {"point1"=>
        {:latitude=>38.99,
         :longitude=>-77.01,
         :temperature=>
          {:maximum=>
            {:name=>"Daily Maximum Temperature",
             :values=>
              [{:value=>48.0,
                :start_time=>Sat, 07 Mar 2020 12:00:00 UTC +00:00,
                :unit=>"Fahrenheit",
                :end_time=>Sun, 08 Mar 2020 00:00:00 UTC +00:00},
               {:value=>59.0,
                :start_time=>Sun, 08 Mar 2020 12:00:00 UTC +00:00,
                :unit=>"Fahrenheit",
                :end_time=>Mon, 09 Mar 2020 00:00:00 UTC +00:00},
               {:value=>68.0,
                :start_time=>Mon, 09 Mar 2020 12:00:00 UTC +00:00,
                :unit=>"Fahrenheit",
                :end_time=>Tue, 10 Mar 2020 00:00:00 UTC +00:00},
               {:value=>66.0,
                :start_time=>Tue, 10 Mar 2020 12:00:00 UTC +00:00,
                :unit=>"Fahrenheit",
                :end_time=>Wed, 11 Mar 2020 00:00:00 UTC +00:00},
               {:value=>62.0,
                :start_time=>Wed, 11 Mar 2020 12:00:00 UTC +00:00,
                :unit=>"Fahrenheit",
                :end_time=>Thu, 12 Mar 2020 00:00:00 UTC +00:00}]},
           :minimum=>
            {:name=>"Daily Minimum Temperature",
             :values=>
              [{:value=>35.0,
                :start_time=>Sat, 07 Mar 2020 00:00:00 UTC +00:00,
                :unit=>"Fahrenheit",
                :end_time=>Sat, 07 Mar 2020 13:00:00 UTC +00:00},
               {:value=>31.0,
                :start_time=>Sun, 08 Mar 2020 01:00:00 UTC +00:00,
                :unit=>"Fahrenheit",
                :end_time=>Sun, 08 Mar 2020 13:00:00 UTC +00:00},
               {:value=>40.0,
                :start_time=>Mon, 09 Mar 2020 00:00:00 UTC +00:00,
                :unit=>"Fahrenheit",
                :end_time=>Mon, 09 Mar 2020 13:00:00 UTC +00:00},
               {:value=>51.0,
                :start_time=>Tue, 10 Mar 2020 00:00:00 UTC +00:00,
                :unit=>"Fahrenheit",
                :end_time=>Tue, 10 Mar 2020 13:00:00 UTC +00:00},
               {:value=>48.0,
                :start_time=>Wed, 11 Mar 2020 00:00:00 UTC +00:00,
                :unit=>"Fahrenheit",
                :end_time=>Wed, 11 Mar 2020 13:00:00 UTC +00:00}]}}}}}

FAQ

Where do I get DWML documents from?

You can download them directly from the National Digital Forecast Database (NDFD) Digital Weather Markup Language (DWML) Generator.