barometer 0.7.3 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/.travis.yml +7 -0
- data/LICENSE +1 -1
- data/{README.rdoc → README.md} +124 -110
- data/Rakefile +1 -21
- data/TODO +8 -9
- data/barometer.gemspec +20 -19
- data/bin/barometer +36 -83
- data/lib/barometer.rb +13 -11
- data/lib/barometer/base.rb +10 -10
- data/lib/barometer/data.rb +1 -1
- data/lib/barometer/data/distance.rb +25 -25
- data/lib/barometer/data/geo.rb +9 -9
- data/lib/barometer/data/local_datetime.rb +24 -20
- data/lib/barometer/data/local_time.rb +13 -13
- data/lib/barometer/data/location.rb +6 -6
- data/lib/barometer/data/pressure.rb +24 -24
- data/lib/barometer/data/speed.rb +28 -28
- data/lib/barometer/data/sun.rb +7 -7
- data/lib/barometer/data/temperature.rb +29 -29
- data/lib/barometer/data/units.rb +9 -9
- data/lib/barometer/data/zone.rb +19 -19
- data/lib/barometer/formats.rb +1 -1
- data/lib/barometer/formats/coordinates.rb +7 -7
- data/lib/barometer/formats/format.rb +6 -6
- data/lib/barometer/formats/geocode.rb +5 -5
- data/lib/barometer/formats/icao.rb +6 -6
- data/lib/barometer/formats/postalcode.rb +3 -3
- data/lib/barometer/formats/short_zipcode.rb +2 -2
- data/lib/barometer/formats/weather_id.rb +10 -10
- data/lib/barometer/formats/woe_id.rb +20 -20
- data/lib/barometer/formats/zipcode.rb +3 -3
- data/lib/barometer/key_file_parser.rb +20 -0
- data/lib/barometer/measurements/measurement.rb +32 -32
- data/lib/barometer/measurements/result.rb +39 -39
- data/lib/barometer/measurements/result_array.rb +12 -12
- data/lib/barometer/query.rb +15 -15
- data/lib/barometer/services.rb +3 -3
- data/lib/barometer/translations/icao_country_codes.yml +20 -20
- data/lib/barometer/translations/weather_country_codes.yml +1 -1
- data/lib/barometer/translations/zone_codes.yml +2 -2
- data/lib/barometer/version.rb +3 -0
- data/lib/barometer/weather.rb +27 -27
- data/lib/barometer/weather_services/noaa.rb +314 -3
- data/lib/barometer/weather_services/service.rb +32 -30
- data/lib/barometer/weather_services/weather_bug.rb +35 -33
- data/lib/barometer/weather_services/wunderground.rb +31 -29
- data/lib/barometer/weather_services/yahoo.rb +36 -35
- data/lib/barometer/web_services/geocode.rb +5 -7
- data/lib/barometer/web_services/noaa_station_id.rb +53 -0
- data/lib/barometer/web_services/placemaker.rb +11 -13
- data/lib/barometer/web_services/timezone.rb +5 -7
- data/lib/barometer/web_services/weather_id.rb +4 -6
- data/lib/barometer/web_services/web_service.rb +4 -4
- data/spec/barometer_spec.rb +25 -27
- data/spec/cassettes/Barometer.json +1 -0
- data/spec/cassettes/Query.json +1 -0
- data/spec/cassettes/Query_Format_Coordinates.json +1 -0
- data/spec/cassettes/Query_Format_Geocode.json +1 -0
- data/spec/cassettes/Query_Format_WeatherID.json +1 -0
- data/spec/cassettes/Query_Format_WoeID.json +1 -0
- data/spec/cassettes/WeatherService.json +1 -0
- data/spec/cassettes/WeatherService_Noaa.json +1 -0
- data/spec/cassettes/WeatherService_WeatherBug.json +1 -0
- data/spec/cassettes/WeatherService_Wunderground.json +1 -0
- data/spec/cassettes/WeatherService_Yahoo.json +1 -0
- data/spec/cassettes/WebService_Geocode.json +1 -0
- data/spec/cassettes/WebService_NoaaStation.json +1 -0
- data/spec/data/distance_spec.rb +60 -60
- data/spec/data/geo_spec.rb +23 -23
- data/spec/data/local_datetime_spec.rb +44 -44
- data/spec/data/local_time_spec.rb +47 -47
- data/spec/data/location_spec.rb +16 -16
- data/spec/data/pressure_spec.rb +61 -61
- data/spec/data/speed_spec.rb +69 -69
- data/spec/data/sun_spec.rb +25 -25
- data/spec/data/temperature_spec.rb +68 -68
- data/spec/data/units_spec.rb +21 -21
- data/spec/data/zone_spec.rb +35 -35
- data/spec/formats/coordinates_spec.rb +27 -27
- data/spec/formats/format_spec.rb +17 -25
- data/spec/formats/geocode_spec.rb +23 -31
- data/spec/formats/icao_spec.rb +26 -32
- data/spec/formats/postalcode_spec.rb +22 -28
- data/spec/formats/short_zipcode_spec.rb +20 -26
- data/spec/formats/weather_id_spec.rb +57 -67
- data/spec/formats/woe_id_spec.rb +59 -59
- data/spec/formats/zipcode_spec.rb +39 -47
- data/spec/key_file_parser_spec.rb +28 -0
- data/spec/measurements/measurement_spec.rb +79 -133
- data/spec/measurements/result_array_spec.rb +23 -38
- data/spec/measurements/result_spec.rb +100 -128
- data/spec/query_spec.rb +83 -100
- data/spec/spec_helper.rb +24 -6
- data/spec/weather_services/noaa_spec.rb +179 -0
- data/spec/weather_services/services_spec.rb +28 -36
- data/spec/weather_services/weather_bug_spec.rb +57 -77
- data/spec/weather_services/wunderground_spec.rb +36 -65
- data/spec/weather_services/yahoo_spec.rb +38 -60
- data/spec/weather_spec.rb +79 -79
- data/spec/web_services/geocode_spec.rb +7 -11
- data/spec/web_services/noaa_station_id_spec.rb +33 -0
- data/spec/web_services/placemaker_spec.rb +7 -12
- data/spec/web_services/web_services_spec.rb +3 -9
- metadata +214 -163
- data/VERSION.yml +0 -5
- data/lib/barometer/weather_services/google.rb +0 -142
- data/lib/barometer/weather_services/weather_dot_com.rb +0 -279
- data/spec/fakeweb_helper.rb +0 -179
- data/spec/fixtures/formats/weather_id/90210.xml +0 -7
- data/spec/fixtures/formats/weather_id/from_USGA0028.xml +0 -3
- data/spec/fixtures/formats/weather_id/ksfo.xml +0 -1
- data/spec/fixtures/formats/weather_id/manhattan.xml +0 -7
- data/spec/fixtures/formats/weather_id/new_york.xml +0 -1
- data/spec/fixtures/formats/weather_id/the_hills.xml +0 -1
- data/spec/fixtures/geocode/40_73_v3.json +0 -497
- data/spec/fixtures/geocode/90210_v3.json +0 -63
- data/spec/fixtures/geocode/T5B4M9_v3.json +0 -68
- data/spec/fixtures/geocode/atlanta_v3.json +0 -58
- data/spec/fixtures/geocode/calgary_ab_v3.json +0 -58
- data/spec/fixtures/geocode/ksfo_v3.json +0 -73
- data/spec/fixtures/geocode/newyork_ny_v3.json +0 -58
- data/spec/fixtures/services/google/calgary_ab.xml +0 -1
- data/spec/fixtures/services/placemaker/T5B4M9.xml +0 -65
- data/spec/fixtures/services/placemaker/atlanta.xml +0 -65
- data/spec/fixtures/services/placemaker/coords.xml +0 -65
- data/spec/fixtures/services/placemaker/ksfo.xml +0 -65
- data/spec/fixtures/services/placemaker/new_york.xml +0 -65
- data/spec/fixtures/services/placemaker/the_hills.xml +0 -65
- data/spec/fixtures/services/placemaker/w615702.xml +0 -47
- data/spec/fixtures/services/weather_bug/90210_current.xml +0 -93
- data/spec/fixtures/services/weather_bug/90210_forecast.xml +0 -76
- data/spec/fixtures/services/weather_dot_com/90210.xml +0 -1
- data/spec/fixtures/services/wunderground/current_calgary_ab.xml +0 -9
- data/spec/fixtures/services/wunderground/forecast_calgary_ab.xml +0 -13
- data/spec/fixtures/services/yahoo/90210.xml +0 -3
- data/spec/weather_services/google_spec.rb +0 -181
- data/spec/weather_services/weather_dot_com_spec.rb +0 -224
@@ -1,76 +0,0 @@
|
|
1
|
-
<?xml version="1.0"?>
|
2
|
-
<aws:weather xmlns:aws="http://www.aws.com/aws">
|
3
|
-
<aws:api version="2.0"/>
|
4
|
-
<aws:WebURL>http://weather.weatherbug.com/CA/Beverly Hills-weather/local-forecast/7-day-forecast.html?ZCode=Z5546&Units=1</aws:WebURL>
|
5
|
-
<aws:forecasts type="Detailed" date="6/2/2011 3:22:00 AM">
|
6
|
-
<aws:location>
|
7
|
-
<aws:city>Beverly Hills</aws:city>
|
8
|
-
<aws:state>CA</aws:state>
|
9
|
-
<aws:zip>90210</aws:zip>
|
10
|
-
<aws:zone>CA041</aws:zone>
|
11
|
-
</aws:location>
|
12
|
-
<aws:forecast>
|
13
|
-
<aws:title alttitle="THU">Thursday</aws:title>
|
14
|
-
<aws:short-prediction>Sunny</aws:short-prediction>
|
15
|
-
<aws:image isNight="0" icon="cond007.gif">http://deskwx.weatherbug.com/images/Forecast/icons/cond007.gif</aws:image>
|
16
|
-
<aws:description>Thursday</aws:description>
|
17
|
-
<aws:prediction>Sunny. Highs in the upper 60s to mid 70s. West winds 15 to 25 mph in the afternoon.</aws:prediction>
|
18
|
-
<aws:high units="&deg;C">24</aws:high>
|
19
|
-
<aws:low units="&deg;C">11</aws:low>
|
20
|
-
</aws:forecast>
|
21
|
-
<aws:forecast>
|
22
|
-
<aws:title alttitle="FRI">Friday</aws:title>
|
23
|
-
<aws:short-prediction>Sunny</aws:short-prediction>
|
24
|
-
<aws:image isNight="0" icon="cond007.gif">http://deskwx.weatherbug.com/images/Forecast/icons/cond007.gif</aws:image>
|
25
|
-
<aws:description>Friday</aws:description>
|
26
|
-
<aws:prediction>Sunny. Highs from around 70 at the beaches to around 80 inland. Southwest winds around 15 mph in the afternoon.</aws:prediction>
|
27
|
-
<aws:high units="&deg;C">26</aws:high>
|
28
|
-
<aws:low units="&deg;C">12</aws:low>
|
29
|
-
</aws:forecast>
|
30
|
-
<aws:forecast>
|
31
|
-
<aws:title alttitle="SAT">Saturday</aws:title>
|
32
|
-
<aws:short-prediction>Partly Cloudy</aws:short-prediction>
|
33
|
-
<aws:image isNight="0" icon="cond003.gif">http://deskwx.weatherbug.com/images/Forecast/icons/cond003.gif</aws:image>
|
34
|
-
<aws:description>Saturday</aws:description>
|
35
|
-
<aws:prediction>Partly cloudy in the morning then becoming mostly cloudy. Highs in the upper 60s to mid 70s.</aws:prediction>
|
36
|
-
<aws:high units="&deg;C">24</aws:high>
|
37
|
-
<aws:low units="&deg;C">12</aws:low>
|
38
|
-
</aws:forecast>
|
39
|
-
<aws:forecast>
|
40
|
-
<aws:title alttitle="SUN">Sunday</aws:title>
|
41
|
-
<aws:short-prediction>Mostly Cloudy</aws:short-prediction>
|
42
|
-
<aws:image isNight="0" icon="cond024.gif">http://deskwx.weatherbug.com/images/Forecast/icons/cond024.gif</aws:image>
|
43
|
-
<aws:description>Sunday</aws:description>
|
44
|
-
<aws:prediction>Mostly cloudy with a 20 percent chance of showers. Highs in the mid 60s to around 70.</aws:prediction>
|
45
|
-
<aws:high units="&deg;C">23</aws:high>
|
46
|
-
<aws:low units="&deg;C">12</aws:low>
|
47
|
-
</aws:forecast>
|
48
|
-
<aws:forecast>
|
49
|
-
<aws:title alttitle="MON">Monday</aws:title>
|
50
|
-
<aws:short-prediction>Partly Cloudy</aws:short-prediction>
|
51
|
-
<aws:image isNight="0" icon="cond003.gif">http://deskwx.weatherbug.com/images/Forecast/icons/cond003.gif</aws:image>
|
52
|
-
<aws:description>Monday</aws:description>
|
53
|
-
<aws:prediction>Partly cloudy in the morning then becoming mostly sunny. Highs in the mid 60s to lower 70s.</aws:prediction>
|
54
|
-
<aws:high units="&deg;C">23</aws:high>
|
55
|
-
<aws:low units="&deg;C">13</aws:low>
|
56
|
-
</aws:forecast>
|
57
|
-
<aws:forecast>
|
58
|
-
<aws:title alttitle="TUE">Tuesday</aws:title>
|
59
|
-
<aws:short-prediction>Mostly Sunny</aws:short-prediction>
|
60
|
-
<aws:image isNight="0" icon="cond026.gif">http://deskwx.weatherbug.com/images/Forecast/icons/cond026.gif</aws:image>
|
61
|
-
<aws:description>Tuesday</aws:description>
|
62
|
-
<aws:prediction>Mostly clear. Lows in the mid to upper 50s. Highs in the upper 60s to mid 70s.</aws:prediction>
|
63
|
-
<aws:high units="&deg;C">24</aws:high>
|
64
|
-
<aws:low units="&deg;C">13</aws:low>
|
65
|
-
</aws:forecast>
|
66
|
-
<aws:forecast>
|
67
|
-
<aws:title alttitle="WED">Wednesday</aws:title>
|
68
|
-
<aws:short-prediction>Mostly Sunny</aws:short-prediction>
|
69
|
-
<aws:image isNight="0" icon="cond026.gif">http://deskwx.weatherbug.com/images/Forecast/icons/cond026.gif</aws:image>
|
70
|
-
<aws:description>Wednesday</aws:description>
|
71
|
-
<aws:prediction>Night through morning low clouds and fog...otherwise mostly clear. Lows in the mid to upper 50s. Highs in the upper 60s to mid 70s.</aws:prediction>
|
72
|
-
<aws:high units="&deg;C">24</aws:high>
|
73
|
-
<aws:low units="&deg;C">--</aws:low>
|
74
|
-
</aws:forecast>
|
75
|
-
</aws:forecasts>
|
76
|
-
</aws:weather>
|
@@ -1 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?> <!-- This document is intended only for use by authorized licensees of The --> <!-- Weather Channel. Unauthorized use is prohibited. Copyright 1995-2011, --> <!-- The Weather Channel Interactive, Inc. All Rights Reserved. --> <weather ver="2.0"> <head> <locale>en_US</locale> <form>MEDIUM</form> <ut>C</ut> <ud>km</ud> <us>km/h</us> <up>mb</up> <ur>mm</ur> </head> <loc id="90210"> <dnam>Beverly Hills, CA (90210)</dnam> <tm>3:32 PM</tm> <lat>34.10</lat> <lon>-118.41</lon> <sunr>5:43 AM</sunr> <suns>8:00 PM</suns> <zone>-7</zone> </loc> <lnks type="prmo"> <link pos="1"> <l>http://www.weather.com/allergies?par=xoap&site=textlink&cm_ven=XOAP&cm_cat=TextLink&cm_pla=Link1&cm_ite=Allergies</l> <t>Local Pollen Reports</t> </link> <link pos="2"> <l>http://www.weather.com/flights?par=xoap&site=textlink&cm_ven=XOAP&cm_cat=TextLink&cm_pla=Link2&cm_ite=BusinessTraveler</l> <t>Airport Conditions</t> </link> <link pos="3"> <l>http://www.weather.com/garden?par=xoap&site=textlink&cm_ven=XOAP&cm_cat=TextLink&cm_pla=Link3&cm_ite=Garden</l> <t>Lawn and Garden Weather</t> </link> <link pos="4"> <l>http://www.weather.com/traffic?par=xoap&site=textlink&cm_ven=XOAP&cm_cat=TextLink&cm_pla=Link4&cm_ite=Traffic</l> <t>Rush Hour Traffic</t> </link> </lnks> <cc> <lsup>6/1/11 2:51 PM PDT</lsup> <obst>Santa Monica, CA</obst> <tmp>17</tmp> <flik>17</flik> <t>Fair</t> <icon>34</icon> <bar> <r>1017.9</r> <d>falling</d> </bar> <wind> <s>14</s> <gust>N/A</gust> <d>230</d> <t>SW</t> </wind> <hmid>65</hmid> <vis>16.1</vis> <uv> <i>8</i> <t>Very High</t> </uv> <dewp>10</dewp> <moon> <icon>0</icon> <t>New</t> </moon> </cc> <dayf> <lsup>6/1/11 2:09 PM PDT</lsup> <day d="0" t="Wednesday" dt="Jun 1"> <hi>N/A</hi> <low>12</low> <sunr>5:43 AM</sunr> <suns>8:00 PM</suns> <part p="d"> <icon>44</icon> <t>N/A</t> <wind> <s>N/A</s> <gust>N/A</gust> <d>N/A</d> <t>N/A</t> </wind> <bt>N/A</bt> <ppcp>0</ppcp> <hmid>N/A</hmid> </part> <part p="n"> <icon>31</icon> <t>Clear</t> <wind> <s>16</s> <gust>N/A</gust> <d>343</d> <t>NNW</t> </wind> <bt>Clear</bt> <ppcp>0</ppcp> <hmid>62</hmid> </part> </day> <day d="1" t="Thursday" dt="Jun 2"> <hi>23</hi> <low>12</low> <sunr>5:43 AM</sunr> <suns>8:01 PM</suns> <part p="d"> <icon>34</icon> <t>Mostly Sunny</t> <wind> <s>21</s> <gust>N/A</gust> <d>215</d> <t>SW</t> </wind> <bt>M Sunny</bt> <ppcp>0</ppcp> <hmid>42</hmid> </part> <part p="n"> <icon>31</icon> <t>Clear</t> <wind> <s>16</s> <gust>N/A</gust> <d>357</d> <t>N</t> </wind> <bt>Clear</bt> <ppcp>0</ppcp> <hmid>53</hmid> </part> </day> <day d="2" t="Friday" dt="Jun 3"> <hi>24</hi> <low>13</low> <sunr>5:43 AM</sunr> <suns>8:01 PM</suns> <part p="d"> <icon>32</icon> <t>Sunny</t> <wind> <s>16</s> <gust>N/A</gust> <d>181</d> <t>S</t> </wind> <bt>Sunny</bt> <ppcp>0</ppcp> <hmid>36</hmid> </part> <part p="n"> <icon>29</icon> <t>Partly Cloudy</t> <wind> <s>8</s> <gust>N/A</gust> <d>184</d> <t>S</t> </wind> <bt>P Cloudy</bt> <ppcp>20</ppcp> <hmid>55</hmid> </part> </day> <day d="3" t="Saturday" dt="Jun 4"> <hi>20</hi> <low>13</low> <sunr>5:43 AM</sunr> <suns>8:02 PM</suns> <part p="d"> <icon>30</icon> <t>Partly Cloudy</t> <wind> <s>14</s> <gust>N/A</gust> <d>180</d> <t>S</t> </wind> <bt>P Cloudy</bt> <ppcp>20</ppcp> <hmid>59</hmid> </part> <part p="n"> <icon>33</icon> <t>Mostly Clear</t> <wind> <s>6</s> <gust>N/A</gust> <d>217</d> <t>SW</t> </wind> <bt>M Clear</bt> <ppcp>0</ppcp> <hmid>67</hmid> </part> </day> <day d="4" t="Sunday" dt="Jun 5"> <hi>21</hi> <low>12</low> <sunr>5:42 AM</sunr> <suns>8:02 PM</suns> <part p="d"> <icon>39</icon> <t>Scattered Showers</t> <wind> <s>16</s> <gust>N/A</gust> <d>214</d> <t>SW</t> </wind> <bt>Sct Showers</bt> <ppcp>30</ppcp> <hmid>63</hmid> </part> <part p="n"> <icon>31</icon> <t>Clear</t> <wind> <s>6</s> <gust>N/A</gust> <d>264</d> <t>W</t> </wind> <bt>Clear</bt> <ppcp>0</ppcp> <hmid>65</hmid> </part> </day> </dayf> </weather>
|
@@ -1,9 +0,0 @@
|
|
1
|
-
<current_observation> <credit>Weather Underground NOAA Weather Station</credit> <credit_URL>http://wunderground.com/</credit_URL> <termsofservice link="http://www.wunderground.com/members/tos.asp#api" /> <image> <url>http://icons-pe.wxug.com/graphics/wu2/logo_130x80.png</url> <title>Weather Underground</title> <link>http://wunderground.com/</link> </image> <display_location> <full>Calgary, Alberta</full> <city>Calgary</city> <state>AB</state> <state_name>Alberta</state_name> <country>CA</country> <country_iso3166>CA</country_iso3166> <zip>00000</zip> <latitude>51.11999893</latitude> <longitude>-114.01999664</longitude> <elevation>1084.00000000 ft</elevation> </display_location> <observation_location> <full>Calgary, </full> <city>Calgary</city> <state></state> <country>CA</country> <country_iso3166>CA</country_iso3166> <latitude>51.11999893</latitude> <longitude>-114.01999664</longitude> <elevation>3556 ft</elevation> </observation_location> <station_id>CYYC</station_id> <observation_time>Last Updated on June 1, 4:00 PM MDT</observation_time> <observation_time_rfc822>Wed, 01 Jun 2011 22:00:00 GMT</observation_time_rfc822> <observation_epoch>1306965600</observation_epoch> <local_time>June 1, 4:46 PM MDT</local_time> <local_time_rfc822>Wed, 01 Jun 2011 22:46:38 GMT</local_time_rfc822> <local_epoch>1306968398</local_epoch> <weather>Mostly Cloudy</weather> <temperature_string>63 F (17 C)</temperature_string> <temp_f>63</temp_f> <temp_c>17</temp_c> <relative_humidity>48%</relative_humidity> <wind_string>From the SE at 16 MPH </wind_string> <wind_dir>SE</wind_dir> <wind_degrees>140</wind_degrees> <wind_mph>16</wind_mph> <wind_gust_mph></wind_gust_mph> <pressure_string>29.85 in (1011 mb)</pressure_string> <pressure_mb>1011</pressure_mb> <pressure_in>29.85</pressure_in> <dewpoint_string>43 F (6 C)</dewpoint_string> <dewpoint_f>43</dewpoint_f> <dewpoint_c>6</dewpoint_c>
|
2
|
-
|
3
|
-
<heat_index_string>NA</heat_index_string> <heat_index_f>NA</heat_index_f> <heat_index_c>NA</heat_index_c>
|
4
|
-
|
5
|
-
<windchill_string>NA</windchill_string> <windchill_f>NA</windchill_f> <windchill_c>NA</windchill_c>
|
6
|
-
|
7
|
-
<visibility_mi>30.0</visibility_mi> <visibility_km>48.3</visibility_km> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/mostlycloudy.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/mostlycloudy.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/mostlycloudy.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/mostlycloudy.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/mostlycloudy.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/mostlycloudy.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/mostlycloudy.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/mostlycloudy.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/mostlycloudy.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/mostlycloudy.gif</icon_url> </icon_set> </icons> <icon_url_base>http://icons-pe.wxug.com/graphics/conds/</icon_url_base> <icon_url_name>.GIF</icon_url_name> <icon>mostlycloudy</icon> <forecast_url>http://www.wunderground.com/global/stations/71877.html</forecast_url> <history_url>http://www.wunderground.com/history/airport/CYYC/2011/6/1/DailyHistory.html</history_url> <ob_url>http://www.wunderground.com/cgi-bin/findweather/getForecast?query=51.11999893,-114.01999664</ob_url> </current_observation>
|
8
|
-
|
9
|
-
<!-- 0.075:0 -->
|
@@ -1,13 +0,0 @@
|
|
1
|
-
<?xml version="1.0" ?> <forecast> <termsofservice link="http://www.wunderground.com/members/tos.asp#api" /> <txt_forecast> <date>6:00 AM MDT</date> <number></number> <forecastday> <period>0</period> <icon>chancetstorms</icon> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/chancetstorms.gif</icon_url> </icon_set> </icons> <title>June 1, 2011</title> <fcttext>Chance of a Thunderstorm. High 15&deg;C (59&deg;F). Winds 21 kph SE</fcttext> <pop>30</pop> </forecastday> <forecastday> <period>1</period> <icon>chancerain</icon> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/chancerain.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/chancerain.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/chancerain.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/chancerain.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/chancerain.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/chancerain.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/chancerain.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/chancerain.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/chancerain.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/chancerain.gif</icon_url> </icon_set> </icons> <title>June 2, 2011</title> <fcttext>Chance of Rain. High 16&deg;C (60&deg;F). Winds 18 kph North</fcttext> <pop>30</pop> </forecastday> <forecastday> <period>2</period> <icon>chancetstorms</icon> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/chancetstorms.gif</icon_url> </icon_set> </icons> <title>June 3, 2011</title> <fcttext>Chance of a Thunderstorm. High 16&deg;C (60&deg;F). Winds 21 kph North</fcttext> <pop>30</pop> </forecastday> <forecastday> <period>3</period> <icon>chancerain</icon> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/chancerain.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/chancerain.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/chancerain.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/chancerain.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/chancerain.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/chancerain.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/chancerain.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/chancerain.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/chancerain.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/chancerain.gif</icon_url> </icon_set> </icons> <title>June 4, 2011</title> <fcttext>Chance of Rain. High 15&deg;C (59&deg;F). Winds 18 kph SSE</fcttext> <pop>30</pop> </forecastday> <forecastday> <period>4</period> <icon>chancerain</icon> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/chancerain.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/chancerain.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/chancerain.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/chancerain.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/chancerain.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/chancerain.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/chancerain.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/chancerain.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/chancerain.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/chancerain.gif</icon_url> </icon_set> </icons> <title>June 5, 2011</title> <fcttext>Chance of Rain. High 24&deg;C (75&deg;F). Winds 7 kph WNW</fcttext> <pop>20</pop> </forecastday> <forecastday> <period>5</period> <icon>chancerain</icon> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/chancerain.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/chancerain.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/chancerain.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/chancerain.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/chancerain.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/chancerain.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/chancerain.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/chancerain.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/chancerain.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/chancerain.gif</icon_url> </icon_set> </icons> <title>June 6, 2011</title> <fcttext>Chance of Rain. High 18&deg;C (64&deg;F). Winds 10 kph East</fcttext> <pop>20</pop> </forecastday> </txt_forecast> <simpleforecast> <forecastday> <period>1</period> <date> <epoch>1306983600</epoch> <pretty_short>9:00 PM MDT</pretty_short> <pretty>9:00 PM MDT on June 01, 2011</pretty> <day>1</day> <month>6</month> <year>2011</year> <yday>151</yday> <hour>21</hour> <min>00</min> <sec>0</sec> <isdst>1</isdst> <monthname>June</monthname> <weekday_short></weekday_short> <weekday>Wednesday</weekday> <ampm>PM</ampm> <tz_short>MDT</tz_short> <tz_long>America/Edmonton</tz_long> </date> <high> <fahrenheit>61</fahrenheit> <celsius>16</celsius> </high> <low> <fahrenheit>45</fahrenheit> <celsius>7</celsius> </low> <conditions>Chance of a Thunderstorm</conditions> <icon>chancetstorms</icon> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/chancetstorms.gif</icon_url> </icon_set> </icons> <skyicon>mostlycloudy</skyicon> <pop>30</pop> </forecastday>
|
2
|
-
|
3
|
-
<forecastday> <period>2</period> <date> <epoch>1307070000</epoch> <pretty_short>9:00 PM MDT</pretty_short> <pretty>9:00 PM MDT on June 02, 2011</pretty> <day>2</day> <month>6</month> <year>2011</year> <yday>152</yday> <hour>21</hour> <min>00</min> <sec>0</sec> <isdst>1</isdst> <monthname>June</monthname> <weekday_short></weekday_short> <weekday>Thursday</weekday> <ampm>PM</ampm> <tz_short>MDT</tz_short> <tz_long>America/Edmonton</tz_long> </date> <high> <fahrenheit>64</fahrenheit> <celsius>18</celsius> </high> <low> <fahrenheit>45</fahrenheit> <celsius>7</celsius> </low> <conditions>Chance of Rain</conditions> <icon>chancerain</icon> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/chancerain.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/chancerain.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/chancerain.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/chancerain.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/chancerain.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/chancerain.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/chancerain.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/chancerain.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/chancerain.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/chancerain.gif</icon_url> </icon_set> </icons> <skyicon>cloudy</skyicon> <pop>30</pop> </forecastday>
|
4
|
-
|
5
|
-
<forecastday> <period>3</period> <date> <epoch>1307156400</epoch> <pretty_short>9:00 PM MDT</pretty_short> <pretty>9:00 PM MDT on June 03, 2011</pretty> <day>3</day> <month>6</month> <year>2011</year> <yday>153</yday> <hour>21</hour> <min>00</min> <sec>0</sec> <isdst>1</isdst> <monthname>June</monthname> <weekday_short></weekday_short> <weekday>Friday</weekday> <ampm>PM</ampm> <tz_short>MDT</tz_short> <tz_long>America/Edmonton</tz_long> </date> <high> <fahrenheit>61</fahrenheit> <celsius>16</celsius> </high> <low> <fahrenheit>36</fahrenheit> <celsius>2</celsius> </low> <conditions>Chance of a Thunderstorm</conditions> <icon>chancetstorms</icon> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/chancetstorms.gif</icon_url> </icon_set> </icons> <skyicon>partlycloudy</skyicon> <pop>40</pop> </forecastday>
|
6
|
-
|
7
|
-
<forecastday> <period>4</period> <date> <epoch>1307242800</epoch> <pretty_short>9:00 PM MDT</pretty_short> <pretty>9:00 PM MDT on June 04, 2011</pretty> <day>4</day> <month>6</month> <year>2011</year> <yday>154</yday> <hour>21</hour> <min>00</min> <sec>0</sec> <isdst>1</isdst> <monthname>June</monthname> <weekday_short></weekday_short> <weekday>Saturday</weekday> <ampm>PM</ampm> <tz_short>MDT</tz_short> <tz_long>America/Edmonton</tz_long> </date> <high> <fahrenheit>54</fahrenheit> <celsius>12</celsius> </high> <low> <fahrenheit>43</fahrenheit> <celsius>6</celsius> </low> <conditions>Chance of Rain</conditions> <icon>chancerain</icon> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/chancerain.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/chancerain.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/chancerain.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/chancerain.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/chancerain.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/chancerain.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/chancerain.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/chancerain.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/chancerain.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/chancerain.gif</icon_url> </icon_set> </icons> <skyicon>cloudy</skyicon> <pop>20</pop> </forecastday>
|
8
|
-
|
9
|
-
<forecastday> <period>5</period> <date> <epoch>1307329200</epoch> <pretty_short>9:00 PM MDT</pretty_short> <pretty>9:00 PM MDT on June 05, 2011</pretty> <day>5</day> <month>6</month> <year>2011</year> <yday>155</yday> <hour>21</hour> <min>00</min> <sec>0</sec> <isdst>1</isdst> <monthname>June</monthname> <weekday_short></weekday_short> <weekday>Sunday</weekday> <ampm>PM</ampm> <tz_short>MDT</tz_short> <tz_long>America/Edmonton</tz_long> </date> <high> <fahrenheit>70</fahrenheit> <celsius>21</celsius> </high> <low> <fahrenheit>46</fahrenheit> <celsius>8</celsius> </low> <conditions>Partly Cloudy</conditions> <icon>partlycloudy</icon> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/partlycloudy.gif</icon_url> </icon_set> </icons> <skyicon>partlycloudy</skyicon> <pop>0</pop> </forecastday>
|
10
|
-
|
11
|
-
<forecastday> <period>6</period> <date> <epoch>1307415600</epoch> <pretty_short>9:00 PM MDT</pretty_short> <pretty>9:00 PM MDT on June 06, 2011</pretty> <day>6</day> <month>6</month> <year>2011</year> <yday>156</yday> <hour>21</hour> <min>00</min> <sec>0</sec> <isdst>1</isdst> <monthname>June</monthname> <weekday_short></weekday_short> <weekday>Monday</weekday> <ampm>PM</ampm> <tz_short>MDT</tz_short> <tz_long>America/Edmonton</tz_long> </date> <high> <fahrenheit>64</fahrenheit> <celsius>18</celsius> </high> <low> <fahrenheit>52</fahrenheit> <celsius>11</celsius> </low> <conditions>Fog</conditions> <icon>partlycloudy</icon> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/partlycloudy.gif</icon_url> </icon_set> </icons> <skyicon>partlycloudy</skyicon> <pop>0</pop> </forecastday>
|
12
|
-
|
13
|
-
</simpleforecast> <moon_phase> <percentIlluminated>0</percentIlluminated> <ageOfMoon>0</ageOfMoon> <current_time> <hour>16</hour> <minute>48</minute> </current_time> <sunset> <hour>21</hour> <minute>41</minute> </sunset> <sunrise> <hour>5</hour> <minute>26</minute> </sunrise> </moon_phase> </forecast>
|
@@ -1,3 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <rss version="2.0" xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"> <channel>
|
2
|
-
|
3
|
-
<title>Yahoo! Weather - Beverly Hills, CA</title> <link>http://us.rd.yahoo.com/dailynews/rss/weather/Beverly_Hills__CA/*http://weather.yahoo.com/forecast/USCA0090_c.html</link> <description>Yahoo! Weather for Beverly Hills, CA</description> <language>en-us</language> <lastBuildDate>Wed, 01 Jun 2011 2:50 pm PDT</lastBuildDate> <ttl>60</ttl> <yweather:location city="Beverly Hills" region="CA" country="US"/> <yweather:units temperature="C" distance="km" pressure="mb" speed="km/h"/> <yweather:wind chill="17" direction="230" speed="14.48" /> <yweather:atmosphere humidity="65" visibility="16.09" pressure="1017.8" rising="2" /> <yweather:astronomy sunrise="5:42 am" sunset="7:57 pm"/> <image> <title>Yahoo! Weather</title> <width>142</width> <height>18</height> <link>http://weather.yahoo.com</link> <url>http://l.yimg.com/a/i/brand/purplelogo//uh/us/news-wea.gif</url> </image> <item> <title>Conditions for Beverly Hills, CA at 2:50 pm PDT</title> <geo:lat>34.08</geo:lat> <geo:long>-118.4</geo:long> <link>http://us.rd.yahoo.com/dailynews/rss/weather/Beverly_Hills__CA/*http://weather.yahoo.com/forecast/USCA0090_c.html</link> <pubDate>Wed, 01 Jun 2011 2:50 pm PDT</pubDate> <yweather:condition text="Fair" code="34" temp="17" date="Wed, 01 Jun 2011 2:50 pm PDT" /> <description><![CDATA[ <img src="http://l.yimg.com/a/i/us/we/52/34.gif"/><br /> <b>Current Conditions:</b><br /> Fair, 17 C<BR /> <BR /><b>Forecast:</b><BR /> Wed - Clear. High: 21 Low: 12<br /> Thu - Mostly Sunny. High: 23 Low: 12<br /> <br /> <a href="http://us.rd.yahoo.com/dailynews/rss/weather/Beverly_Hills__CA/*http://weather.yahoo.com/forecast/USCA0090_c.html">Full Forecast at Yahoo! Weather</a><BR/><BR/> (provided by <a href="http://www.weather.com" >The Weather Channel</a>)<br/> ]]></description> <yweather:forecast day="Wed" date="1 Jun 2011" low="12" high="21" text="Clear" code="31" /> <yweather:forecast day="Thu" date="2 Jun 2011" low="12" high="23" text="Mostly Sunny" code="34" /> <guid isPermaLink="false">USCA0090_2011_06_01_14_50_PDT</guid> </item> </channel> </rss> <!-- api8.weather.ac4.yahoo.com uncompressed/chunked Wed Jun 1 15:44:05 PDT 2011 -->
|
@@ -1,181 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
-
include Barometer
|
3
|
-
|
4
|
-
describe "Google" do
|
5
|
-
|
6
|
-
before(:each) do
|
7
|
-
@accepted_formats = [:zipcode, :postalcode, :geocode]
|
8
|
-
@base_uri = "http://google.com"
|
9
|
-
end
|
10
|
-
|
11
|
-
describe "the class methods" do
|
12
|
-
|
13
|
-
it "defines accepted_formats" do
|
14
|
-
WeatherService::Google._accepted_formats.should == @accepted_formats
|
15
|
-
end
|
16
|
-
|
17
|
-
it "defines source_name" do
|
18
|
-
WeatherService::Google._source_name.should == :google
|
19
|
-
end
|
20
|
-
|
21
|
-
# it "defines base_uri" do
|
22
|
-
# Barometer::Google.base_uri.should == @base_uri
|
23
|
-
# end
|
24
|
-
|
25
|
-
it "defines get_all" do
|
26
|
-
WeatherService::Google.respond_to?("_fetch").should be_true
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
describe "building the current data" do
|
32
|
-
|
33
|
-
it "defines the build method" do
|
34
|
-
WeatherService::Google.respond_to?("_build_current").should be_true
|
35
|
-
end
|
36
|
-
|
37
|
-
it "requires Hash input" do
|
38
|
-
lambda { WeatherService::Google._build_current }.should raise_error(ArgumentError)
|
39
|
-
lambda { WeatherService::Google._build_current({}) }.should_not raise_error(ArgumentError)
|
40
|
-
end
|
41
|
-
|
42
|
-
it "returns Measurement::Current object" do
|
43
|
-
current = WeatherService::Google._build_current({})
|
44
|
-
current.is_a?(Measurement::Result).should be_true
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|
48
|
-
|
49
|
-
describe "building the forecast data" do
|
50
|
-
|
51
|
-
it "defines the build method" do
|
52
|
-
WeatherService::Google.respond_to?("_build_forecast").should be_true
|
53
|
-
end
|
54
|
-
|
55
|
-
it "requires Hash input" do
|
56
|
-
lambda { WeatherService::Google._build_forecast }.should raise_error(ArgumentError)
|
57
|
-
lambda { WeatherService::Google._build_forecast({}) }.should_not raise_error(ArgumentError)
|
58
|
-
end
|
59
|
-
|
60
|
-
it "returns Array object" do
|
61
|
-
current = WeatherService::Google._build_forecast({})
|
62
|
-
current.is_a?(Measurement::ResultArray).should be_true
|
63
|
-
end
|
64
|
-
|
65
|
-
end
|
66
|
-
|
67
|
-
describe "building the location data" do
|
68
|
-
|
69
|
-
it "defines the build method" do
|
70
|
-
WeatherService::Google.respond_to?("_build_location").should be_true
|
71
|
-
end
|
72
|
-
|
73
|
-
it "requires Barometer::Geo input" do
|
74
|
-
geo = Data::Geo.new({})
|
75
|
-
lambda { WeatherService::Google._build_location(nil,{}) }.should raise_error(ArgumentError)
|
76
|
-
lambda { WeatherService::Google._build_location(nil,geo) }.should_not raise_error(ArgumentError)
|
77
|
-
end
|
78
|
-
|
79
|
-
it "returns Barometer::Location object" do
|
80
|
-
geo = Data::Geo.new({})
|
81
|
-
location = WeatherService::Google._build_location(nil,geo)
|
82
|
-
location.is_a?(Data::Location).should be_true
|
83
|
-
end
|
84
|
-
|
85
|
-
end
|
86
|
-
|
87
|
-
# describe "building the timezone" do
|
88
|
-
#
|
89
|
-
# it "defines the build method" do
|
90
|
-
# Barometer::Google.respond_to?("build_timezone").should be_true
|
91
|
-
# end
|
92
|
-
#
|
93
|
-
# it "requires Hash input" do
|
94
|
-
# lambda { Barometer::Google.build_timezone }.should raise_error(ArgumentError)
|
95
|
-
# lambda { Barometer::Google.build_timezone({}) }.should_not raise_error(ArgumentError)
|
96
|
-
# end
|
97
|
-
#
|
98
|
-
# end
|
99
|
-
|
100
|
-
describe "when measuring" do
|
101
|
-
|
102
|
-
before(:each) do
|
103
|
-
@query = Barometer::Query.new("Calgary,AB")
|
104
|
-
@measurement = Barometer::Measurement.new
|
105
|
-
end
|
106
|
-
|
107
|
-
describe "all" do
|
108
|
-
|
109
|
-
it "responds to _measure" do
|
110
|
-
Barometer::WeatherService::Google.respond_to?("_measure").should be_true
|
111
|
-
end
|
112
|
-
|
113
|
-
it "requires a Barometer::Measurement object" do
|
114
|
-
lambda { Barometer::WeatherService::Google._measure(nil, @query) }.should raise_error(ArgumentError)
|
115
|
-
lambda { Barometer::WeatherService::Google._measure("invalid", @query) }.should raise_error(ArgumentError)
|
116
|
-
|
117
|
-
lambda { Barometer::WeatherService::Google._measure(@measurement, @query) }.should_not raise_error(ArgumentError)
|
118
|
-
end
|
119
|
-
|
120
|
-
it "requires a Barometer::Query query" do
|
121
|
-
lambda { Barometer::WeatherService::Google._measure }.should raise_error(ArgumentError)
|
122
|
-
lambda { Barometer::WeatherService::Google._measure(@measurement, 1) }.should raise_error(ArgumentError)
|
123
|
-
|
124
|
-
lambda { Barometer::WeatherService::Google._measure(@measurement, @query) }.should_not raise_error(ArgumentError)
|
125
|
-
end
|
126
|
-
|
127
|
-
it "returns a Barometer::Measurement object" do
|
128
|
-
result = Barometer::WeatherService::Google._measure(@measurement, @query)
|
129
|
-
result.is_a?(Barometer::Measurement).should be_true
|
130
|
-
result.current.is_a?(Measurement::Result).should be_true
|
131
|
-
result.forecast.is_a?(Measurement::ResultArray).should be_true
|
132
|
-
end
|
133
|
-
|
134
|
-
end
|
135
|
-
|
136
|
-
end
|
137
|
-
|
138
|
-
# describe "overall data correctness" do
|
139
|
-
#
|
140
|
-
# before(:each) do
|
141
|
-
# @query = Barometer::Query.new("Calgary,AB")
|
142
|
-
# @query.preferred = "Calgary,AB"
|
143
|
-
# @measurement = Barometer::Measurement.new
|
144
|
-
#
|
145
|
-
# FakeWeb.register_uri(:get,
|
146
|
-
# "http://api.wunderground.com/auto/wui/geo/WXCurrentObXML/index.xml?query=#{CGI.escape(@query.preferred)}",
|
147
|
-
# :body => File.read(File.join(File.dirname(__FILE__),
|
148
|
-
# 'fixtures',
|
149
|
-
# 'current_calgary_ab.xml')
|
150
|
-
# )
|
151
|
-
# )
|
152
|
-
# FakeWeb.register_uri(:get,
|
153
|
-
# "http://api.wunderground.com/auto/wui/geo/ForecastXML/index.xml?query=#{CGI.escape(@query.preferred)}",
|
154
|
-
# :body => File.read(File.join(File.dirname(__FILE__),
|
155
|
-
# 'fixtures',
|
156
|
-
# 'forecast_calgary_ab.xml')
|
157
|
-
# )
|
158
|
-
# )
|
159
|
-
# end
|
160
|
-
#
|
161
|
-
# # TODO: complete this
|
162
|
-
# it "should correctly build the data" do
|
163
|
-
# result = Barometer::Wunderground._measure(@measurement, @query)
|
164
|
-
#
|
165
|
-
# # build timezone
|
166
|
-
# @measurement.timezone.timezone.should == "America/Edmonton"
|
167
|
-
#
|
168
|
-
# time = Time.local(2009, 4, 23, 18, 00, 0)
|
169
|
-
# rise = Time.local(time.year, time.month, time.day, 6, 23)
|
170
|
-
# set = Time.local(time.year, time.month, time.day, 20, 45)
|
171
|
-
# sun_rise = @measurement.timezone.tz.local_to_utc(rise)
|
172
|
-
# sun_set = @measurement.timezone.tz.local_to_utc(set)
|
173
|
-
#
|
174
|
-
# # build current
|
175
|
-
# @measurement.current.sun.rise.should == sun_rise
|
176
|
-
# @measurement.current.sun.set.should == sun_set
|
177
|
-
# end
|
178
|
-
#
|
179
|
-
# end
|
180
|
-
|
181
|
-
end
|
@@ -1,224 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
-
include Barometer
|
3
|
-
|
4
|
-
describe "WeatherDotCom" do
|
5
|
-
|
6
|
-
before(:each) do
|
7
|
-
@accepted_formats = [:short_zipcode, :weather_id]
|
8
|
-
end
|
9
|
-
|
10
|
-
describe "the class methods" do
|
11
|
-
|
12
|
-
it "defines accepted_formats" do
|
13
|
-
WeatherService::WeatherDotCom._accepted_formats.should == @accepted_formats
|
14
|
-
end
|
15
|
-
|
16
|
-
it "defines source_name" do
|
17
|
-
WeatherService::WeatherDotCom._source_name.should == :weather_dot_com
|
18
|
-
end
|
19
|
-
|
20
|
-
it "defines get_all" do
|
21
|
-
WeatherService::WeatherDotCom.respond_to?("_fetch").should be_true
|
22
|
-
end
|
23
|
-
|
24
|
-
it "defines _requires_keys?" do
|
25
|
-
WeatherService::WeatherDotCom.respond_to?("_requires_keys?").should be_true
|
26
|
-
WeatherService::WeatherDotCom._requires_keys?.should be_true
|
27
|
-
end
|
28
|
-
|
29
|
-
it "defines _has_keys?" do
|
30
|
-
WeatherService::WeatherDotCom.respond_to?("_has_keys?").should be_true
|
31
|
-
WeatherService::WeatherDotCom._has_keys?.should be_false
|
32
|
-
WeatherService::WeatherDotCom.keys = { :partner => WEATHER_PARTNER_KEY, :license => WEATHER_LICENSE_KEY }
|
33
|
-
WeatherService::WeatherDotCom._has_keys?.should be_true
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
37
|
-
|
38
|
-
describe "building the current data" do
|
39
|
-
|
40
|
-
it "defines the build method" do
|
41
|
-
WeatherService::WeatherDotCom.respond_to?("_build_current").should be_true
|
42
|
-
end
|
43
|
-
|
44
|
-
it "requires Hash input" do
|
45
|
-
lambda { WeatherService::WeatherDotCom._build_current }.should raise_error(ArgumentError)
|
46
|
-
lambda { WeatherService::WeatherDotCom._build_current({}) }.should_not raise_error(ArgumentError)
|
47
|
-
end
|
48
|
-
|
49
|
-
it "returns Measurement::Current object" do
|
50
|
-
current = WeatherService::WeatherDotCom._build_current({})
|
51
|
-
current.is_a?(Measurement::Result).should be_true
|
52
|
-
end
|
53
|
-
|
54
|
-
end
|
55
|
-
|
56
|
-
describe "building the forecast data" do
|
57
|
-
|
58
|
-
it "defines the build method" do
|
59
|
-
WeatherService::WeatherDotCom.respond_to?("_build_forecast").should be_true
|
60
|
-
end
|
61
|
-
|
62
|
-
it "requires Hash input" do
|
63
|
-
lambda { WeatherService::WeatherDotCom._build_forecast }.should raise_error(ArgumentError)
|
64
|
-
lambda { WeatherService::WeatherDotCom._build_forecast({}) }.should_not raise_error(ArgumentError)
|
65
|
-
end
|
66
|
-
|
67
|
-
it "returns Array object" do
|
68
|
-
current = WeatherService::WeatherDotCom._build_forecast({})
|
69
|
-
current.is_a?(Array).should be_true
|
70
|
-
end
|
71
|
-
|
72
|
-
end
|
73
|
-
|
74
|
-
describe "building the location data" do
|
75
|
-
|
76
|
-
it "defines the build method" do
|
77
|
-
WeatherService::WeatherDotCom.respond_to?("_build_location").should be_true
|
78
|
-
end
|
79
|
-
|
80
|
-
it "requires Hash input" do
|
81
|
-
lambda { WeatherService::WeatherDotCom._build_location }.should raise_error(ArgumentError)
|
82
|
-
lambda { WeatherService::WeatherDotCom._build_location({}) }.should_not raise_error(ArgumentError)
|
83
|
-
end
|
84
|
-
|
85
|
-
it "requires Barometer::Geo input" do
|
86
|
-
geo = Data::Geo.new({})
|
87
|
-
lambda { WeatherService::WeatherDotCom._build_location({}, {}) }.should raise_error(ArgumentError)
|
88
|
-
lambda { WeatherService::WeatherDotCom._build_location({}, geo) }.should_not raise_error(ArgumentError)
|
89
|
-
end
|
90
|
-
|
91
|
-
it "returns Barometer::Location object" do
|
92
|
-
location = WeatherService::WeatherDotCom._build_location({})
|
93
|
-
location.is_a?(Data::Location).should be_true
|
94
|
-
end
|
95
|
-
|
96
|
-
end
|
97
|
-
|
98
|
-
describe "building the sun data" do
|
99
|
-
|
100
|
-
it "defines the build method" do
|
101
|
-
WeatherService::WeatherDotCom.respond_to?("_build_sun").should be_true
|
102
|
-
end
|
103
|
-
|
104
|
-
it "requires Hash input" do
|
105
|
-
lambda { WeatherService::WeatherDotCom._build_sun }.should raise_error(ArgumentError)
|
106
|
-
lambda { WeatherService::WeatherDotCom._build_sun({}) }.should_not raise_error(ArgumentError)
|
107
|
-
end
|
108
|
-
|
109
|
-
it "returns Barometer::Sun object" do
|
110
|
-
sun = WeatherService::WeatherDotCom._build_sun({})
|
111
|
-
sun.is_a?(Data::Sun).should be_true
|
112
|
-
end
|
113
|
-
|
114
|
-
end
|
115
|
-
|
116
|
-
describe "when measuring" do
|
117
|
-
|
118
|
-
before(:each) do
|
119
|
-
@query = Barometer::Query.new("90210")
|
120
|
-
@measurement = Barometer::Measurement.new
|
121
|
-
end
|
122
|
-
|
123
|
-
describe "all" do
|
124
|
-
|
125
|
-
it "responds to _measure" do
|
126
|
-
WeatherService::WeatherDotCom.respond_to?("_measure").should be_true
|
127
|
-
end
|
128
|
-
|
129
|
-
it "requires a Barometer::Measurement object" do
|
130
|
-
lambda { WeatherService::WeatherDotCom._measure(nil, @query) }.should raise_error(ArgumentError)
|
131
|
-
lambda { WeatherService::WeatherDotCom._measure("invalid", @query) }.should raise_error(ArgumentError)
|
132
|
-
|
133
|
-
lambda { WeatherService::WeatherDotCom._measure(@measurement, @query) }.should_not raise_error(ArgumentError)
|
134
|
-
end
|
135
|
-
|
136
|
-
it "requires a Barometer::Query query" do
|
137
|
-
lambda { WeatherService::WeatherDotCom._measure }.should raise_error(ArgumentError)
|
138
|
-
lambda { WeatherService::WeatherDotCom._measure(@measurement, 1) }.should raise_error(ArgumentError)
|
139
|
-
|
140
|
-
lambda { WeatherService::WeatherDotCom._measure(@measurement, @query) }.should_not raise_error(ArgumentError)
|
141
|
-
end
|
142
|
-
|
143
|
-
it "returns a Barometer::Measurement object" do
|
144
|
-
result = WeatherService::WeatherDotCom._measure(@measurement, @query)
|
145
|
-
result.is_a?(Barometer::Measurement).should be_true
|
146
|
-
result.current.is_a?(Measurement::Result).should be_true
|
147
|
-
result.forecast.is_a?(Measurement::ResultArray).should be_true
|
148
|
-
end
|
149
|
-
|
150
|
-
end
|
151
|
-
|
152
|
-
end
|
153
|
-
|
154
|
-
describe "overall data correctness" do
|
155
|
-
|
156
|
-
before(:each) do
|
157
|
-
@query = Barometer::Query.new("90210")
|
158
|
-
@measurement = Barometer::Measurement.new
|
159
|
-
end
|
160
|
-
|
161
|
-
it "should correctly build the data" do
|
162
|
-
result = WeatherService::WeatherDotCom._measure(@measurement, @query)
|
163
|
-
|
164
|
-
# build current
|
165
|
-
@measurement.current.humidity.to_i.should == 65
|
166
|
-
@measurement.current.icon.should == "34"
|
167
|
-
@measurement.current.condition.should == "Fair"
|
168
|
-
@measurement.current.temperature.to_i.should == 17
|
169
|
-
@measurement.current.dew_point.to_i.should == 10
|
170
|
-
@measurement.current.wind_chill.to_i.should == 17
|
171
|
-
@measurement.current.wind.to_i.should == 14
|
172
|
-
@measurement.current.wind.degrees.to_i.should == 230
|
173
|
-
@measurement.current.wind.direction.should == "SW"
|
174
|
-
@measurement.current.pressure.to_f.should == 1017.9
|
175
|
-
@measurement.current.visibility.to_f.should == 16.1
|
176
|
-
|
177
|
-
# build sun
|
178
|
-
@measurement.current.sun.rise.to_s.should == "05:43 am"
|
179
|
-
@measurement.current.sun.set.to_s.should == "08:00 pm"
|
180
|
-
|
181
|
-
# builds location
|
182
|
-
@measurement.location.name.should == "Beverly Hills, CA (90210)"
|
183
|
-
@measurement.location.latitude.to_f.should == 34.10
|
184
|
-
@measurement.location.longitude.to_f.should == -118.41
|
185
|
-
|
186
|
-
# builds forecasts
|
187
|
-
@measurement.forecast.size.should == 10
|
188
|
-
|
189
|
-
# day
|
190
|
-
@measurement.forecast[0].valid_start_date.should == Date.parse("Jun 1 7:00 am")
|
191
|
-
@measurement.forecast[0].valid_end_date.should == Date.parse("Jun 1 6:59:59 pm")
|
192
|
-
@measurement.forecast[0].condition.should == "N/A"
|
193
|
-
@measurement.forecast[0].icon.should == "44"
|
194
|
-
@measurement.forecast[0].high.should be_nil
|
195
|
-
@measurement.forecast[0].low.to_i.should == 12
|
196
|
-
@measurement.forecast[0].pop.to_i.should == 0
|
197
|
-
@measurement.forecast[0].humidity.to_i.should == 0
|
198
|
-
|
199
|
-
@measurement.forecast[0].wind.should be_nil
|
200
|
-
@measurement.forecast[0].wind.to_i.should be_nil
|
201
|
-
@measurement.forecast[0].wind.degrees.to_i.should == 0
|
202
|
-
@measurement.forecast[0].wind.direction.should == "N/A"
|
203
|
-
|
204
|
-
@measurement.forecast[0].sun.rise.to_s.should == "05:43 am"
|
205
|
-
@measurement.forecast[0].sun.set.to_s.should == "08:00 pm"
|
206
|
-
|
207
|
-
# night
|
208
|
-
@measurement.forecast[1].should_not be_nil
|
209
|
-
@measurement.forecast[1].valid_start_date.should == Date.parse("Jun 1 7:00 pm")
|
210
|
-
@measurement.forecast[1].valid_end_date.should == Date.parse("Jun 2 6:59:59 am")
|
211
|
-
@measurement.forecast[1].condition.should == "Clear"
|
212
|
-
@measurement.forecast[1].icon.should == "31"
|
213
|
-
@measurement.forecast[1].pop.to_i.should == 0
|
214
|
-
@measurement.forecast[1].humidity.to_i.should == 62
|
215
|
-
|
216
|
-
@measurement.forecast[1].wind.should_not be_nil
|
217
|
-
@measurement.forecast[1].wind.to_i.should == 16
|
218
|
-
@measurement.forecast[1].wind.degrees.to_i.should == 343
|
219
|
-
@measurement.forecast[1].wind.direction.should == "NNW"
|
220
|
-
end
|
221
|
-
|
222
|
-
end
|
223
|
-
|
224
|
-
end
|