knmi 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +43 -0
- data/VERSION +1 -1
- data/knmi.gemspec +2 -2
- data/lib/knmi.rb +27 -7
- metadata +3 -3
data/README.rdoc
CHANGED
@@ -25,6 +25,49 @@ Please Note the disclaimer included in the header!
|
|
25
25
|
= Dependancies
|
26
26
|
* httparty >= 0.7.4
|
27
27
|
|
28
|
+
= Data
|
29
|
+
Please note that the data must be converted from fixnum to float, I will include a method to take care of this in my next version.
|
30
|
+
|
31
|
+
YYYYMMDD = Date (YYYY=year MM=month DD=day)
|
32
|
+
DDVEC = Vector mean wind direction in degrees (360=north, 90=east, 180=south, 270=west, 0=calm/variable)
|
33
|
+
FHVEC = Vector mean windspeed (in 0.1 m/s)
|
34
|
+
FG = Daily mean windspeed (in 0.1 m/s)
|
35
|
+
FHX = Maximum hourly mean windspeed (in 0.1 m/s)
|
36
|
+
FHXH = Hourly division in which FHX was measured
|
37
|
+
FHN = Minimum hourly mean windspeed (in 0.1 m/s)
|
38
|
+
FHNH = Hourly division in which FHN was measured
|
39
|
+
FXX = Maximum wind gust (in 0.1 m/s)
|
40
|
+
FXXH = Hourly division in which FXX was measured
|
41
|
+
TG = Daily mean temperature in (0.1 degrees Celsius)
|
42
|
+
TN = Minimum temperature (in 0.1 degrees Celsius)
|
43
|
+
TNH = Hourly division in which TN was measured
|
44
|
+
TX = Maximum temperature (in 0.1 degrees Celsius)
|
45
|
+
TXH = Hourly division in which TX was measured
|
46
|
+
T10N = Minimum temperature at 10 cm above surface (in 0.1 degrees Celsius)
|
47
|
+
T10NH = 6-hourly division in which T10N was measured; 6=0-6 UT, 12=6-12 UT, 18=12-18 UT, 24=18-24
|
48
|
+
SQ = Sunshine duration (in 0.1 hour) calculated from global radiation (-1 for <0.05 hour)
|
49
|
+
SP = Percentage of maximum potential sunshine duration
|
50
|
+
Q = Global radiation (in J/cm2)
|
51
|
+
DR = Precipitation duration (in 0.1 hour)
|
52
|
+
RH = Daily precipitation amount (in 0.1 mm) (-1 for <0.05 mm)
|
53
|
+
RHX = Maximum hourly precipitation amount (in 0.1 mm) (-1 for <0.05 mm)
|
54
|
+
RHXH = Hourly division in which RHX was measured
|
55
|
+
PG = Daily mean sea level pressure (in 0.1 hPa) calculated from 24 hourly values
|
56
|
+
PX = Maximum hourly sea level pressure (in 0.1 hPa)
|
57
|
+
PXH = Hourly division in which PX was measured
|
58
|
+
PN = Minimum hourly sea level pressure (in 0.1 hPa)
|
59
|
+
PNH = Hourly division in which PN was measured
|
60
|
+
VVN = Minimum visibility; 0: <100 m, 1:100-200 m, 2:200-300 m,..., 49:4900-5000 m, 50:5-6 km, 56:6-7 km, 57:7-8 km,..., 79:29-30 km, 80:30-35 km, 81:35-40 km,..., 89: >70 k
|
61
|
+
VVNH = Hourly division in which VVN was measured
|
62
|
+
VVX = Maximum visibility; 0: <100 m, 1:100-200 m, 2:200-300 m,..., 49:4900-5000 m, 50:5-6 km, 56:6-7 km, 57:7-8 km,..., 79:29-30 km, 80:30-35 km, 81:35-40 km,..., 89: >70 k
|
63
|
+
VVXH = Hourly division in which VVX was measured
|
64
|
+
NG = Mean daily cloud cover (in octants, 9=sky invisible)
|
65
|
+
UG = Daily mean relative atmospheric humidity (in percents)
|
66
|
+
UX = Maximum relative atmospheric humidity (in percents)
|
67
|
+
UXH = Hourly division in which UX was measured
|
68
|
+
UN = Minimum relative atmospheric humidity (in percents)
|
69
|
+
UNH = Hourly division in which UN was measured
|
70
|
+
EV24 = Potential evapotranspiration (Makkink) (in 0.1 mm
|
28
71
|
|
29
72
|
= List of Recorded Parameters and group name
|
30
73
|
When entering parameters in method call use groupname for collection of variables of use individual parameter names
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.4
|
data/knmi.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{knmi}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["bullfight"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-05-02}
|
13
13
|
s.description = %q{A set of methods to query the KNMI HTTP get form for daily climate data and select a variety of measured parameters, from available stations, in a json style array of hashes, and if necessary convert to csv.}
|
14
14
|
s.email = %q{p.schmitz@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
data/lib/knmi.rb
CHANGED
@@ -101,18 +101,35 @@ class KNMI
|
|
101
101
|
#varlist = res[(7+nstn)..(6 + nstn + nvars)]
|
102
102
|
#colheader = res[(8 + nstn + nvars)]
|
103
103
|
#header = res[0..(9 + nstn + nvars)]
|
104
|
-
#stations = res[5..(4+nstn)]
|
105
|
-
#stations = stations.join.tr("\s+", "")
|
106
|
-
#stations = stations.tr("#", "")
|
107
|
-
#stations = stations.tr(":", "")
|
108
|
-
#stations = CSV.parse( stations, {:col_sep => "\t"} )
|
109
104
|
def parse(response, station_number, vars)
|
110
105
|
# Line Index Numbers
|
111
106
|
nstn = [station_number].flatten.length
|
112
107
|
vars, nvars = check_variables(vars)
|
113
|
-
|
114
|
-
#
|
108
|
+
|
109
|
+
# Split lines into array
|
115
110
|
response = response.split(/\n/)
|
111
|
+
|
112
|
+
# Get Station Details
|
113
|
+
stations = response[5..(4+nstn)]
|
114
|
+
stations = stations.join.tr("\t", "\s")
|
115
|
+
stations = stations.tr("#", "")
|
116
|
+
stations = stations.tr(":", "")
|
117
|
+
stations = CSV.parse( stations, {:col_sep => "\s"} )
|
118
|
+
stations = stations.map {|row| row.map {|cell| cell.to_s } }
|
119
|
+
st_header = [:station_code, :lng, :lat, :elev, :name]
|
120
|
+
stations = stations.map {|row| Hash[*st_header.zip(row).flatten] }
|
121
|
+
|
122
|
+
# Get Variable Details
|
123
|
+
varlist = response[(7+nstn)..(6 + nstn + nvars)]
|
124
|
+
varlist = varlist.join
|
125
|
+
varlist = varlist.gsub(/# /, "")
|
126
|
+
varlist = varlist.gsub(/\s{2,}/, "")
|
127
|
+
varlist = varlist.gsub(/;/, "\r")
|
128
|
+
varlist = CSV.parse( varlist, {:col_sep => "= "} )
|
129
|
+
vr_header = [:var, :description]
|
130
|
+
varlist = varlist.map {|row| Hash[*vr_header.zip(row).flatten] }
|
131
|
+
|
132
|
+
# Get and clean data
|
116
133
|
response = response[(8 + nstn + nvars)..response.length]
|
117
134
|
response = response.join.tr("\s+", "")
|
118
135
|
response = response.tr("#", "")
|
@@ -123,6 +140,7 @@ class KNMI
|
|
123
140
|
string_data = response.map {|row| row.map {|cell| cell.to_s } }
|
124
141
|
data = string_data.map {|row| Hash[*header.zip(row).flatten] }
|
125
142
|
|
143
|
+
return {:stations => stations, :variables => varlist, :data => data}
|
126
144
|
end
|
127
145
|
end # End Private
|
128
146
|
|
@@ -133,6 +151,7 @@ class KNMI
|
|
133
151
|
# station_number = [210, 212]
|
134
152
|
# vars = "TG"
|
135
153
|
# res = KNMIdaily.get_station( station_number, vars )
|
154
|
+
# output {:stations => {:}}
|
136
155
|
def self.get_station(station_number, vars = "")
|
137
156
|
query = station(station_number) + "&" + variables(vars)
|
138
157
|
puts query
|
@@ -172,6 +191,7 @@ class KNMI
|
|
172
191
|
|
173
192
|
def self.to_csv(filename, response)
|
174
193
|
CSV.open(filename, "wb") do |csv|
|
194
|
+
response[:data]
|
175
195
|
csv << response[0].keys
|
176
196
|
response[(1..(response.length - 1))].each do |line|
|
177
197
|
csv << line.values
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: knmi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.
|
5
|
+
version: 0.1.4
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- bullfight
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-05-02 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: shoulda
|
@@ -101,7 +101,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
101
101
|
requirements:
|
102
102
|
- - ">="
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
hash: -
|
104
|
+
hash: -3374246845192166730
|
105
105
|
segments:
|
106
106
|
- 0
|
107
107
|
version: "0"
|