geonames 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Binary file
@@ -3,7 +3,7 @@ require 'date'
3
3
 
4
4
  SPEC = Gem::Specification.new do |s|
5
5
  s.name = "geonames"
6
- s.version = "0.2.0"
6
+ s.version = "0.2.1"
7
7
  s.author = "Adam Wisniewski"
8
8
  s.email = "adamw@tbcn.ca"
9
9
  s.date = s.date = Date.today.to_s
@@ -29,6 +29,7 @@ require 'postal_code_search_criteria'
29
29
  require 'timezone'
30
30
  require 'country_subdivision'
31
31
  require 'wikipedia_article'
32
+ require 'intersection'
32
33
 
33
34
  module Geonames
34
35
 
@@ -18,7 +18,24 @@
18
18
 
19
19
  module Geonames
20
20
  class Intersection
21
-
21
+ attr :street_1
22
+ attr :street_2
23
+ attr :latitude
24
+ attr :longitude
25
+ attr :distance
26
+ attr :postal_code
27
+ attr :place_name
28
+ attr :country_code
29
+ attr :admin_code_1
30
+ attr :admin_name_2
31
+ attr :admin_code_2
32
+ attr :admin_name_1
33
+
34
+ attr_writer :street_1, :street_2
35
+ attr_writer :postal_code, :place_name, :country_code
36
+ attr_writer :latitude, :longitude, :admin_name_1
37
+ attr_writer :admin_code_1, :admin_name_2, :admin_code_2
38
+ attr_writer :distance
22
39
  end
23
40
  end
24
41
 
@@ -1,6 +1,7 @@
1
1
  #=============================================================================
2
2
  #
3
3
  # Copyright 2007 Adam Wisniewski <adamw@tbcn.ca>
4
+ # Contributions by Andrew Turner, High Earth Orbit
4
5
  #
5
6
  # Licensed under the Apache License, Version 2.0 (the "License"); you may not
6
7
  # use this file except in compliance with the License. You may obtain a copy of
@@ -19,15 +20,19 @@
19
20
  require 'geonames'
20
21
  require 'pp'
21
22
 
23
+ # get the nearest intersection
24
+ intersection = Geonames::WebService.find_nearest_intersection 40.7574053333333, -73.9734773333333
25
+ puts intersection.street_1 #=> Park Ave
26
+ puts intersection.street_2 #=> E 51st St
27
+
22
28
  # get wikipedia articles by lat / long
23
- # articles_nearby = Geonames::WebService.findNearbyWikipedia :lat => 43.900120387, :long => -78.882869834
24
- # p articles_nearby
29
+ articles_nearby = Geonames::WebService.find_nearby_wikipedia :lat => 43.900120387, :long => -78.882869834
30
+ p articles_nearby
25
31
 
26
32
  # get wikipedia articles by bounding box
27
- articles_nearby = Geonames::WebService.findBoundingBoxWikipedia :north => 43.900120387, :east => -78.882869834, :south => 43.82, :west => 79.0
33
+ articles_nearby = Geonames::WebService.find_bounding_box_wikipedia :north => 43.900120387, :east => -78.882869834, :south => 43.82, :west => 79.0
28
34
  p articles_nearby
29
35
 
30
- Process.exit
31
36
  # get list of places near by longitude/longitude location
32
37
  places_nearby = Geonames::WebService.find_nearby_place_name 43.900120387, -78.882869834
33
38
  p places_nearby
@@ -1,6 +1,7 @@
1
1
  #=============================================================================
2
2
  #
3
3
  # Copyright 2007 Adam Wisniewski <adamw@tbcn.ca>
4
+ # Contributions by Andrew Turner, High Earth Orbit
4
5
  #
5
6
  # Licensed under the Apache License, Version 2.0 (the "License"); you may not
6
7
  # use this file except in compliance with the License. You may obtain a copy of
@@ -16,7 +17,6 @@
16
17
  #
17
18
  #=============================================================================
18
19
 
19
-
20
20
  module Geonames
21
21
  class WebService
22
22
  def WebService.get_element_child_text( element, child )
@@ -69,11 +69,11 @@ module Geonames
69
69
  article.longitude = WebService::get_element_child_float( element, 'lng' )
70
70
  article.thumbnail_img = WebService::get_element_child_text( element, 'thumbnailImg' )
71
71
  article.distance = WebService::get_element_child_float( element, 'distance' )
72
-
72
+
73
73
  return article
74
74
 
75
75
  end
76
-
76
+
77
77
  def WebService.element_to_toponym ( element )
78
78
  toponym = Toponym.new
79
79
 
@@ -96,6 +96,27 @@ module Geonames
96
96
 
97
97
  end
98
98
 
99
+ def WebService.element_to_intersection ( element )
100
+ intersection = Intersection.new
101
+
102
+ intersection.street_1 = WebService::get_element_child_text( element, 'street1' )
103
+ intersection.street_2 = WebService::get_element_child_text( element, 'street2' )
104
+ intersection.admin_code_1 = WebService::get_element_child_text( element, 'adminCode1' )
105
+ intersection.admin_code_1 = WebService::get_element_child_text( element, 'adminCode1' )
106
+ intersection.admin_code_2 = WebService::get_element_child_text( element, 'adminCode2' )
107
+ intersection.admin_name_1 = WebService::get_element_child_text( element, 'adminName1' )
108
+ intersection.admin_name_2 = WebService::get_element_child_text( element, 'adminName2' )
109
+ intersection.country_code = WebService::get_element_child_text( element, 'countryCode' )
110
+ intersection.distance = WebService::get_element_child_float( element, 'distance' )
111
+ intersection.longitude = WebService::get_element_child_float( element, 'lat' )
112
+ intersection.latitude = WebService::get_element_child_float( element, 'lng' )
113
+ intersection.place_name = WebService::get_element_child_text( element, 'name' )
114
+ intersection.postal_code = WebService::get_element_child_text( element, 'postalcode' )
115
+
116
+ return intersection
117
+
118
+ end
119
+
99
120
  def WebService.postal_code_search( postal_code, place_name, country_code )
100
121
  postal_code_sc = PostalCodeSearchCriteria.new
101
122
  postal_code_sc.postal_code = postal_code
@@ -183,6 +204,34 @@ module Geonames
183
204
 
184
205
  end
185
206
 
207
+ def WebService.find_nearest_intersection( lat, long )
208
+
209
+ url = Geonames::GEONAMES_SERVER + "/findNearestIntersection?a=a"
210
+
211
+ url = url + "&lat=" + lat.to_s
212
+ url = url + "&lng=" + long.to_s
213
+
214
+ uri = URI.parse(url)
215
+
216
+ req = Net::HTTP::Get.new(uri.path + '?' + uri.query)
217
+
218
+ res = Net::HTTP.start( uri.host, uri.port ) { |http|
219
+ http.request( req )
220
+ }
221
+
222
+ doc = REXML::Document.new res.body
223
+
224
+ intersection = []
225
+ doc.elements.each("geonames/intersection") do |element|
226
+
227
+ intersection = WebService::element_to_intersection( element )
228
+
229
+ end
230
+
231
+ return intersection
232
+
233
+ end
234
+
186
235
  def WebService.timezone( lat, long )
187
236
  timezone = Timezone.new
188
237
 
@@ -212,8 +261,13 @@ module Geonames
212
261
  end
213
262
 
214
263
  def WebService.findNearbyWikipedia( hashes )
264
+ # here for backwards compatibility
265
+ WebService.find_nearby_wikipedia( hashes )
266
+ end
267
+
268
+ def WebService.find_nearby_wikipedia( hashes )
215
269
  articles = Array.new
216
-
270
+
217
271
  lat = hashes[:lat]
218
272
  long = hashes[:long]
219
273
  lang = hashes[:lang]
@@ -254,10 +308,15 @@ module Geonames
254
308
  return articles
255
309
 
256
310
  end
257
-
311
+
258
312
  def WebService.findBoundingBoxWikipedia( hashes )
313
+ # here for backwards compatibility
314
+ WebService.find_bounding_box_wikipedia( hashes )
315
+ end
316
+
317
+ def WebService.find_bounding_box_wikipedia( hashes )
259
318
  articles = Array.new
260
-
319
+
261
320
  north = hashes[:north]
262
321
  east = hashes[:east]
263
322
  south = hashes[:south]
@@ -294,7 +353,7 @@ module Geonames
294
353
 
295
354
  return articles
296
355
 
297
- end
356
+ end
298
357
 
299
358
  def WebService.country_subdivision ( lat, long )
300
359
  country_subdivision = CountrySubdivision.new
@@ -426,9 +485,9 @@ module Geonames
426
485
 
427
486
  return toponym_sr
428
487
  end
429
-
430
-
488
+
431
489
  end
432
490
  end
433
491
 
434
-
492
+ #alias WebService.find_nearby_wikipedia findNearbyWikipedia
493
+ #alias find_bounding_box_wikipedia findBoundingBoxWikipedia
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
3
3
  specification_version: 1
4
4
  name: geonames
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.2.0
7
- date: 2007-04-01 00:00:00 -04:00
6
+ version: 0.2.1
7
+ date: 2007-04-02 00:00:00 -04:00
8
8
  summary: Ruby library for Geonames Web Services (http://www.geonames.org/export/)
9
9
  require_paths:
10
10
  - lib