geo_coder 0.1.0
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/Gemfile +12 -0
- data/Gemfile.lock +32 -0
- data/History.txt +6 -0
- data/Makefile +13 -0
- data/Manifest.txt +18 -0
- data/README.rdoc +197 -0
- data/Rakefile +53 -0
- data/TODO.txt +8 -0
- data/VERSION +1 -0
- data/bin/build_indexes +8 -0
- data/bin/rebuild_cluster +22 -0
- data/bin/rebuild_metaphones +23 -0
- data/bin/tiger_import +59 -0
- data/demos/demo/app/ext/geocodewrap.rb +84 -0
- data/demos/demo/app/views/index.builder +13 -0
- data/demos/demo/app/views/index.erb +71 -0
- data/demos/demo/config.ru +12 -0
- data/demos/demo/config/bootstraps.rb +130 -0
- data/demos/demo/config/geoenvironment.rb +25 -0
- data/demos/demo/geocoder_helper.rb +12 -0
- data/demos/demo/geocom_geocode.rb +10 -0
- data/demos/demo/main.rb +3 -0
- data/demos/demo/rakefile.rb +17 -0
- data/demos/demo/tmp/restart.txt +0 -0
- data/demos/simpledemo/views/index.builder +13 -0
- data/demos/simpledemo/views/index.erb +69 -0
- data/demos/simpledemo/ws.rb +83 -0
- data/doc/Makefile +7 -0
- data/doc/html4css1.css +279 -0
- data/doc/lookup.rst +193 -0
- data/doc/parsing.rst +125 -0
- data/doc/voidspace.css +147 -0
- data/geo_coder.gemspec +172 -0
- data/lib/geocoder/us.rb +21 -0
- data/lib/geocoder/us/address.rb +290 -0
- data/lib/geocoder/us/constants.rb +670 -0
- data/lib/geocoder/us/database.rb +745 -0
- data/lib/geocoder/us/import.rb +181 -0
- data/lib/geocoder/us/import/tiger.rb +13 -0
- data/lib/geocoder/us/numbers.rb +58 -0
- data/navteq/README +4 -0
- data/navteq/convert.sql +37 -0
- data/navteq/navteq_import +39 -0
- data/navteq/prepare.sql +92 -0
- data/sql/cluster.sql +16 -0
- data/sql/convert.sql +80 -0
- data/sql/create.sql +37 -0
- data/sql/index.sql +12 -0
- data/sql/place.csv +104944 -0
- data/sql/place.sql +104948 -0
- data/sql/setup.sql +78 -0
- data/src/Makefile +13 -0
- data/src/README +14 -0
- data/src/liblwgeom/Makefile +75 -0
- data/src/liblwgeom/box2d.c +54 -0
- data/src/liblwgeom/lex.yy.c +4799 -0
- data/src/liblwgeom/liblwgeom.h +1405 -0
- data/src/liblwgeom/lwalgorithm.c +946 -0
- data/src/liblwgeom/lwalgorithm.h +52 -0
- data/src/liblwgeom/lwcircstring.c +759 -0
- data/src/liblwgeom/lwcollection.c +541 -0
- data/src/liblwgeom/lwcompound.c +118 -0
- data/src/liblwgeom/lwcurvepoly.c +86 -0
- data/src/liblwgeom/lwgeom.c +886 -0
- data/src/liblwgeom/lwgeom_api.c +2201 -0
- data/src/liblwgeom/lwgparse.c +1219 -0
- data/src/liblwgeom/lwgunparse.c +1054 -0
- data/src/liblwgeom/lwline.c +525 -0
- data/src/liblwgeom/lwmcurve.c +125 -0
- data/src/liblwgeom/lwmline.c +137 -0
- data/src/liblwgeom/lwmpoint.c +138 -0
- data/src/liblwgeom/lwmpoly.c +141 -0
- data/src/liblwgeom/lwmsurface.c +129 -0
- data/src/liblwgeom/lwpoint.c +439 -0
- data/src/liblwgeom/lwpoly.c +579 -0
- data/src/liblwgeom/lwsegmentize.c +1047 -0
- data/src/liblwgeom/lwutil.c +369 -0
- data/src/liblwgeom/measures.c +861 -0
- data/src/liblwgeom/postgis_config.h +93 -0
- data/src/liblwgeom/ptarray.c +847 -0
- data/src/liblwgeom/vsprintf.c +179 -0
- data/src/liblwgeom/wktparse.h +126 -0
- data/src/liblwgeom/wktparse.lex +74 -0
- data/src/liblwgeom/wktparse.tab.c +2353 -0
- data/src/liblwgeom/wktparse.tab.h +145 -0
- data/src/liblwgeom/wktparse.y +385 -0
- data/src/libsqlite3_geocoder/Makefile +22 -0
- data/src/libsqlite3_geocoder/Makefile.nix +15 -0
- data/src/libsqlite3_geocoder/Makefile.redhat +15 -0
- data/src/libsqlite3_geocoder/extension.c +121 -0
- data/src/libsqlite3_geocoder/extension.h +13 -0
- data/src/libsqlite3_geocoder/levenshtein.c +42 -0
- data/src/libsqlite3_geocoder/metaphon.c +278 -0
- data/src/libsqlite3_geocoder/util.c +37 -0
- data/src/libsqlite3_geocoder/wkb_compress.c +54 -0
- data/src/metaphone/Makefile +7 -0
- data/src/metaphone/README +49 -0
- data/src/metaphone/extension.c +37 -0
- data/src/metaphone/metaphon.c +251 -0
- data/src/shp2sqlite/Makefile +37 -0
- data/src/shp2sqlite/Makefile.nix +36 -0
- data/src/shp2sqlite/Makefile.redhat +35 -0
- data/src/shp2sqlite/dbfopen.c +1595 -0
- data/src/shp2sqlite/getopt.c +695 -0
- data/src/shp2sqlite/getopt.h +127 -0
- data/src/shp2sqlite/shapefil.h +500 -0
- data/src/shp2sqlite/shp2sqlite.c +1974 -0
- data/src/shp2sqlite/shpopen.c +1894 -0
- data/tests/address.rb +236 -0
- data/tests/benchmark.rb +20 -0
- data/tests/constants.rb +57 -0
- data/tests/data/address-sample.csv +52 -0
- data/tests/data/db-test.csv +57 -0
- data/tests/data/locations.csv +4 -0
- data/tests/database.rb +137 -0
- data/tests/generate.rb +34 -0
- data/tests/numbers.rb +46 -0
- data/tests/run.rb +11 -0
- metadata +237 -0
data/tests/address.rb
ADDED
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
$LOAD_PATH.unshift '../lib'
|
|
2
|
+
|
|
3
|
+
require 'test/unit'
|
|
4
|
+
require 'set'
|
|
5
|
+
require 'geocoder/us/address'
|
|
6
|
+
|
|
7
|
+
include Geocoder::US
|
|
8
|
+
|
|
9
|
+
class TestAddress < Test::Unit::TestCase
|
|
10
|
+
def test_new
|
|
11
|
+
addr = Address.new("1600 Pennsylvania Av., Washington DC")
|
|
12
|
+
assert_equal "1600 Pennsylvania Av, Washington DC", addr.text
|
|
13
|
+
end
|
|
14
|
+
def test_clean
|
|
15
|
+
fixtures = [
|
|
16
|
+
[ "cleaned text", "cleaned: text!" ],
|
|
17
|
+
[ "cleaned-text 2", "cleaned-text: #2?" ],
|
|
18
|
+
[ "it's working 1/2", "~it's working 1/2~" ],
|
|
19
|
+
[ "it's working, yes", "it's working, yes...?" ],
|
|
20
|
+
[ "it's working & well", "it's working & well?" ]
|
|
21
|
+
]
|
|
22
|
+
fixtures.each {|output, given|
|
|
23
|
+
assert_equal output, Address.new(given).text
|
|
24
|
+
}
|
|
25
|
+
end
|
|
26
|
+
def test_expand_numbers
|
|
27
|
+
num_list = ["5", "fifth", "five"]
|
|
28
|
+
num_list.each {|n|
|
|
29
|
+
addr = Address.new(n)
|
|
30
|
+
assert_equal num_list, addr.expand_numbers(n).to_a.sort
|
|
31
|
+
}
|
|
32
|
+
end
|
|
33
|
+
def test_city_parse
|
|
34
|
+
places = [
|
|
35
|
+
[ "New York, NY", "New York", "NY", "" ],
|
|
36
|
+
[ "NY", "", "NY", "" ],
|
|
37
|
+
[ "New York", "New York", "NY", "" ],
|
|
38
|
+
[ "Philadelphia", "Philadelphia", "", "" ],
|
|
39
|
+
[ "Philadelphia PA", "Philadelphia", "PA", "" ],
|
|
40
|
+
[ "Philadelphia, PA", "Philadelphia", "PA", "" ],
|
|
41
|
+
[ "Philadelphia, Pennsylvania", "Philadelphia", "PA", "" ],
|
|
42
|
+
[ "Philadelphia, Pennsylvania 19131", "Philadelphia", "PA", "19131" ],
|
|
43
|
+
[ "Philadelphia 19131", "Philadelphia", "", "19131" ],
|
|
44
|
+
[ "Pennsylvania 19131", "Pennsylvania", "PA", "19131" ], # kind of a misfeature
|
|
45
|
+
[ "19131", "", "", "19131" ],
|
|
46
|
+
[ "19131-9999", "", "", "19131" ],
|
|
47
|
+
]
|
|
48
|
+
for fixture in places
|
|
49
|
+
addr = Address.new fixture[0]
|
|
50
|
+
[:city, :state, :zip].zip(fixture[1..3]).each {|key,val|
|
|
51
|
+
result = addr.send key
|
|
52
|
+
result = [result.downcase] unless result.kind_of? Array
|
|
53
|
+
if result.empty?
|
|
54
|
+
assert_equal val, "", key.to_s + " test no result " + fixture.join("/")
|
|
55
|
+
else
|
|
56
|
+
assert result.member?(val.downcase), key.to_s + " test " + result.inspect + fixture.join("/")
|
|
57
|
+
end
|
|
58
|
+
}
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def test_po_box
|
|
63
|
+
addr_po = Address.new "PO Box 1111 Herndon VA 20171"
|
|
64
|
+
assert addr_po.po_box?, true
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def test_parse
|
|
70
|
+
addrs = [
|
|
71
|
+
{:text => "1600 Pennsylvania Av., Washington DC 20050",
|
|
72
|
+
:number => "1600",
|
|
73
|
+
:street => "Pennsylvania Ave",
|
|
74
|
+
:city => "Washington",
|
|
75
|
+
:state => "DC",
|
|
76
|
+
:zip => "20050"},
|
|
77
|
+
|
|
78
|
+
{:text => "1600 Pennsylvania, Washington DC",
|
|
79
|
+
:number => "1600",
|
|
80
|
+
:street => "Pennsylvania",
|
|
81
|
+
:city => "Washington",
|
|
82
|
+
:state => "DC"},
|
|
83
|
+
|
|
84
|
+
{:text => "1600 Pennsylvania Washington DC",
|
|
85
|
+
:number => "1600",
|
|
86
|
+
:street => "Pennsylvania Washington",
|
|
87
|
+
:city => "Pennsylvania Washington", # FIXME
|
|
88
|
+
:state => "DC"},
|
|
89
|
+
|
|
90
|
+
{:text => "1600 Pennsylvania Washington",
|
|
91
|
+
:number => "1600",
|
|
92
|
+
:street => "Pennsylvania",
|
|
93
|
+
:city => "Washington",
|
|
94
|
+
:state => "WA"}, # FIXME
|
|
95
|
+
|
|
96
|
+
{:text => "1600 Pennsylvania 20050",
|
|
97
|
+
:number => "1600",
|
|
98
|
+
:street => "Pennsylvania", # FIXME
|
|
99
|
+
:zip => "20050"},
|
|
100
|
+
|
|
101
|
+
{:text => "1600 Pennsylvania Av, 20050-9999",
|
|
102
|
+
:number => "1600",
|
|
103
|
+
:street => "Pennsylvania Ave",
|
|
104
|
+
:zip => "20050"},
|
|
105
|
+
|
|
106
|
+
{:text => "1005 Gravenstein Highway North, Sebastopol CA",
|
|
107
|
+
:number => "1005",
|
|
108
|
+
:street => "Gravenstein Hwy N",
|
|
109
|
+
:city => "Sebastopol",
|
|
110
|
+
:state => "CA"},
|
|
111
|
+
|
|
112
|
+
{:text => "100 N 7th St, Brooklyn",
|
|
113
|
+
:number => "100",
|
|
114
|
+
:street => "N 7 St",
|
|
115
|
+
:city => "Brooklyn"},
|
|
116
|
+
|
|
117
|
+
{:text => "100 N Seventh St, Brooklyn",
|
|
118
|
+
:number => "100",
|
|
119
|
+
:street => "N 7 St",
|
|
120
|
+
:city => "Brooklyn"},
|
|
121
|
+
|
|
122
|
+
{:text => "100 Central Park West, New York, NY",
|
|
123
|
+
:number => "100",
|
|
124
|
+
:street => "Central Park W",
|
|
125
|
+
:city => "New York",
|
|
126
|
+
:state => "NY"},
|
|
127
|
+
|
|
128
|
+
{:text => "100 Central Park West, 10010",
|
|
129
|
+
:number => "100",
|
|
130
|
+
:street => "Central Park W",
|
|
131
|
+
:zip => "10010"},
|
|
132
|
+
|
|
133
|
+
{:text => "1400 Avenue of the Americas, New York, NY 10019",
|
|
134
|
+
:number => "1400",
|
|
135
|
+
:street => "Ave of the Americas",
|
|
136
|
+
:city => "New York",
|
|
137
|
+
:state => "NY"},
|
|
138
|
+
|
|
139
|
+
{:text => "1400 Avenue of the Americas, New York",
|
|
140
|
+
:number => "1400",
|
|
141
|
+
:street => "Ave of the Americas",
|
|
142
|
+
:city => "New York"},
|
|
143
|
+
|
|
144
|
+
{:text => "1400 Ave of the Americas, New York",
|
|
145
|
+
:number => "1400",
|
|
146
|
+
:street => "Ave of the Americas",
|
|
147
|
+
:city => "New York"},
|
|
148
|
+
|
|
149
|
+
{:text => "1400 Av of the Americas, New York",
|
|
150
|
+
:number => "1400",
|
|
151
|
+
:street => "Ave of the Americas",
|
|
152
|
+
:city => "New York"},
|
|
153
|
+
|
|
154
|
+
{:text => "1400 Av of the Americas New York",
|
|
155
|
+
:number => "1400",
|
|
156
|
+
:street => "Ave of the Americas",
|
|
157
|
+
:city => "New York"},
|
|
158
|
+
|
|
159
|
+
]
|
|
160
|
+
for fixture in addrs
|
|
161
|
+
text = fixture.delete(:text)
|
|
162
|
+
addr = Address.new(text)
|
|
163
|
+
for key, val in fixture
|
|
164
|
+
result = addr.send key
|
|
165
|
+
if result.kind_of? Array
|
|
166
|
+
result.map! {|str| str.downcase}
|
|
167
|
+
assert result.member?(val.downcase), "#{text} (#{key}) = #{result.inspect}"
|
|
168
|
+
else
|
|
169
|
+
assert_equal val, result, "#{text} (#{key}) = #{result.inspect}"
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
def test_skip_parse
|
|
176
|
+
addresses = [
|
|
177
|
+
{:street => "1233 Main St", :city => "Springfield", :region => "VA", :postal_code => "12345", :final_number => "1233", :parsed_street => "main st"},
|
|
178
|
+
{:street => "somewhere Ln", :city => "Somewhere", :region => "WI", :postal_code => "22222", :number => "402", :parsed_street => "somewhere ln", :final_number => "402"},
|
|
179
|
+
]
|
|
180
|
+
for preparsed_address in addresses
|
|
181
|
+
address_for_geocode = Address.new preparsed_address
|
|
182
|
+
assert_equal preparsed_address[:parsed_street],address_for_geocode.street[0]
|
|
183
|
+
assert_equal preparsed_address[:final_number],address_for_geocode.number
|
|
184
|
+
assert_equal preparsed_address[:city],address_for_geocode.city[0]
|
|
185
|
+
assert_equal preparsed_address[:region],address_for_geocode.state
|
|
186
|
+
assert_equal preparsed_address[:postal_code],address_for_geocode.zip
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
def test_states_abbreviated_in_skip_parse
|
|
191
|
+
addresses = [
|
|
192
|
+
{:street => "123 Main St", :city => "Springfield", :region => "Virginia", :postal_code => "12345",:state_abbrev => "VA"},
|
|
193
|
+
{:street => "402 Somewhere Ln", :city => "Somewhere", :region => "WI", :postal_code => "22222", :state_abbrev => "WI"},
|
|
194
|
+
]
|
|
195
|
+
for preparsed_address in addresses
|
|
196
|
+
address_for_geocode = Address.new preparsed_address
|
|
197
|
+
assert_equal preparsed_address[:state_abbrev],address_for_geocode.state
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
def test_address_hash
|
|
203
|
+
addresses = [
|
|
204
|
+
{:address => "Herndon, VA", :place_check => ["herndon"]},
|
|
205
|
+
{:address => "Arlington, VA", :place_check => ["arlington"]}
|
|
206
|
+
]
|
|
207
|
+
for preparsed_address in addresses
|
|
208
|
+
address_for_geocode = Address.new preparsed_address
|
|
209
|
+
assert_equal preparsed_address[:place_check],address_for_geocode.city
|
|
210
|
+
end
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
def test_partial_address
|
|
214
|
+
addresses = [
|
|
215
|
+
{:street => "2200 Wilson Blvd", :postal_code => "22201"},
|
|
216
|
+
]
|
|
217
|
+
for preparsed_address in addresses
|
|
218
|
+
address_for_geocode = Address.new preparsed_address
|
|
219
|
+
assert_equal preparsed_address[:postal_code],address_for_geocode.zip
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
def test_country_parse
|
|
226
|
+
addresses = [
|
|
227
|
+
{:city => "Paris", :country => "FR"},
|
|
228
|
+
]
|
|
229
|
+
|
|
230
|
+
for preparsed_address in addresses
|
|
231
|
+
address_for_geocode = Address.new preparsed_address
|
|
232
|
+
assert_equal preparsed_address[:country],address_for_geocode.state
|
|
233
|
+
end
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
end
|
data/tests/benchmark.rb
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/ruby
|
|
2
|
+
|
|
3
|
+
require 'test/unit'
|
|
4
|
+
require 'geocoder/us/database'
|
|
5
|
+
require 'benchmark'
|
|
6
|
+
include Benchmark # we need the CAPTION and FMTSTR constants
|
|
7
|
+
|
|
8
|
+
db = Geocoder::US::Database.new("/mnt/tiger2008/geocoder.db")
|
|
9
|
+
|
|
10
|
+
n = 50
|
|
11
|
+
s = "1005 Gravenstein Hwy N, Sebastopol CA 95472"
|
|
12
|
+
a = Geocoder::US::Address.new(s)
|
|
13
|
+
|
|
14
|
+
print db.geocode(s)
|
|
15
|
+
|
|
16
|
+
Benchmark.bmbm do |x|
|
|
17
|
+
x.report("parse max_penalty=0") { n.times{a.parse(0)} }
|
|
18
|
+
x.report("parse max_penalty=1") { n.times{a.parse(1)} }
|
|
19
|
+
x.report("geocode") { n.times{db.geocode(s)} }
|
|
20
|
+
end
|
data/tests/constants.rb
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
$LOAD_PATH.unshift '../lib'
|
|
2
|
+
|
|
3
|
+
require 'test/unit'
|
|
4
|
+
require 'geocoder/us/constants'
|
|
5
|
+
|
|
6
|
+
include Geocoder::US
|
|
7
|
+
|
|
8
|
+
class TestConstants < Test::Unit::TestCase
|
|
9
|
+
def initialize (*args)
|
|
10
|
+
@map = Map[
|
|
11
|
+
"Abbreviation" => "abbr",
|
|
12
|
+
"Two words" => "2words",
|
|
13
|
+
"Some three words" => "3words"
|
|
14
|
+
]
|
|
15
|
+
super(*args)
|
|
16
|
+
end
|
|
17
|
+
def test_class_constructor
|
|
18
|
+
assert_kind_of Map, @map
|
|
19
|
+
assert_kind_of Hash, @map
|
|
20
|
+
end
|
|
21
|
+
def test_key
|
|
22
|
+
assert @map.key?( "Abbreviation" )
|
|
23
|
+
assert @map.key?( "abbreviation" )
|
|
24
|
+
assert !(@map.key? "abbreviation?")
|
|
25
|
+
assert @map.key?( "abbr" )
|
|
26
|
+
assert @map.key?( "Two words" )
|
|
27
|
+
assert @map.key?( "2words" )
|
|
28
|
+
end
|
|
29
|
+
def test_fetch
|
|
30
|
+
assert_equal "abbr", @map["Abbreviation"]
|
|
31
|
+
assert_equal "abbr", @map["abbreviation"]
|
|
32
|
+
assert_nil @map["abbreviation?"]
|
|
33
|
+
assert_equal "abbr", @map["abbr"]
|
|
34
|
+
assert_equal "2words", @map["Two words"]
|
|
35
|
+
assert_equal "2words", @map["2words"]
|
|
36
|
+
end
|
|
37
|
+
# def test_partial
|
|
38
|
+
# assert @map.partial?( "Abbreviation" )
|
|
39
|
+
# assert @map.partial?( "Two" )
|
|
40
|
+
# assert @map.partial?( "two" )
|
|
41
|
+
# assert !(@map.partial? "words")
|
|
42
|
+
# assert @map.partial?( "Some" )
|
|
43
|
+
# assert !(@map.partial? "words")
|
|
44
|
+
# assert @map.partial?( "Some three" )
|
|
45
|
+
# assert @map.partial?( "SOME THREE WORDS" )
|
|
46
|
+
# end
|
|
47
|
+
def test_constants
|
|
48
|
+
assert_kind_of Map, Directional
|
|
49
|
+
assert_kind_of Map, Prefix_Qualifier
|
|
50
|
+
assert_kind_of Map, Suffix_Qualifier
|
|
51
|
+
assert_kind_of Map, Prefix_Type
|
|
52
|
+
assert_kind_of Map, Suffix_Type
|
|
53
|
+
assert_kind_of Map, Unit_Type
|
|
54
|
+
assert_kind_of Map, Name_Abbr
|
|
55
|
+
assert_kind_of Map, State
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
address,number,predir,prequal,pretyp,street,suftyp,sufqual,sufdir,unittyp,unit,city,state,zip,lon,lat,count,comment
|
|
2
|
+
"93 NORTH 9TH STREET, BROOKLYN NY 11211",93,N,,,9th,St,,,,,Brooklyn,NY,11211,,,,
|
|
3
|
+
"380 WESTMINSTER ST, PROVIDENCE RI 02903",380,,,,Westminster,St,,,,,Providence,RI,02903,,,,
|
|
4
|
+
"177 MAIN STREET, LITTLETON NH 03561",177,,,,Main,St,,,,,Littleton,NH,03561,,,,
|
|
5
|
+
"202 HARLOW ST, BANGOR ME 04401",202,,,,Harlow,St,,,,,Bangor,ME,04401,,,,
|
|
6
|
+
"46 FRONT STREET, WATERVILLE, ME 04901",46,,,,Front,St,,,,,Waterville,ME,04901,,,,
|
|
7
|
+
"22 SUSSEX ST, HACKENSACK NJ 07601",22,,,,Sussex,St,,,,,Hackensack,NJ,07601,,,,
|
|
8
|
+
"75 OAK STREET, PATCHOGUE NY 11772",75,,,,Oak,St,,,,,Patchogue,NY,11772,,,,
|
|
9
|
+
"1 CLINTON AVE, ALBANY NY 12207",1,,,,Clinton,Ave,,,,,Albany,NY,12207,,,,
|
|
10
|
+
"7242 ROUTE 9, PLATTSBURGH NY 12901",7242,,,US Hwy,9,,,,,,Plattsburgh,NY,12901,,,,
|
|
11
|
+
"520 5TH AVE, MCKEESPORT PA 15132",520,,,,5th,Ave,,,,,McKeesport,PA,15132,,,,
|
|
12
|
+
"122 W 3RD STREET, GREENSBURG PA 15601",122,W,,,3rd,St,,,,,Greensburg,PA,15601,,,,
|
|
13
|
+
"901 UNIVERSITY DR, STATE COLLEGE PA 16801",901,,,,University,Dr,,,,,"State College",PA,16801,,,,
|
|
14
|
+
"240 W 3RD ST, WILLIAMSPORT PA 17701",240,W,,,3rd,St,,,,,Williamsport,PA,17701,,,,
|
|
15
|
+
"41 N 4TH ST, ALLENTOWN PA 18102",41,N,,,4th,St,,,,,Allentown,PA,18102,,,,
|
|
16
|
+
"2221 W. MARKET STREET, POTTSVILLE PA 17901",2221,W,,,Market,St,,,,,Pottsville,PA,17901,,,,
|
|
17
|
+
"337 BRIGHTSEAT ROAD, LANDOVER MD 20785",337,,,,Brightseat,Rd,,,,,Hyattsville,MD,20785,,,,"canonical place"
|
|
18
|
+
"101 CHESAPEAKE BLVD, ELKTON MD 21921",103,,,,Chesapeake,Blvd,,,,,Elkton,MD,21921,,,,"find nearest corner"
|
|
19
|
+
"2875 SABRE ST, VIRGINIA BEACH VA 23452",2809,,,,Sabre,St,,,,,"Virginia Beach",VA,23452,,,,"find nearest corner"
|
|
20
|
+
"324 COMMERCE ROAD, FARMVILLE VA 23901",324,,,,Commerce,St,,,,,Clarksville,VA,23927,,,,"nearby address; might be TIGER omission"
|
|
21
|
+
"1480 EAST MAIN STREET, WYTHEVILLE VA 24382",1480,W,,,Main,St,,,,,Wytheville,VA,24382,,,,"nearby address; TIGER omission"
|
|
22
|
+
"116 N JEFFERSON STREET, ROANOKE VA 24016",116,N,,,Jefferson,St,,,,,Roanoke,VA,24016,,,,
|
|
23
|
+
"50 MCDOWELL STREET, WELCH WV 24801",50,,,,"Mc Dowell",St,,,,,Welch,WV,24801,,,,
|
|
24
|
+
"146 EAST FIRST AVE, WILLIAMSON WV 25661",200,E,,,1st,Ave,,,,,Williamson,WV,25661,,,,"find nearest corner"
|
|
25
|
+
"1925 E MAIN ST, ALBEMARLE NC 28001",1925,E,,,Main,St,,,,,Albemarle,NC,28001,,,,
|
|
26
|
+
"1013 SPRING LANE, SANFORD NC 27330",1013,,,,Spring,Ln,,,,,Sanford,NC,27330,,,,
|
|
27
|
+
"145 ROWAN STREET, FAYETTEVILLE NC 28301",145,,,,Rowan,St,,,,,Fayetteville,NC,28301,,,,
|
|
28
|
+
"1420 MCCARTHY BLVD, NEW BERN NC 28562",1420,,,,McCarthy,Blvd,,,,,"New Bern",NC,28562,,,,
|
|
29
|
+
"115 ENTERPRISE COURT, GREENWOOD SC 29649",115,,,,Enterprise,Ct,,,,,Greenwood,SC,29649,,,,
|
|
30
|
+
"732 W 2ND ST, TIFTON GA 31794",732,,,,2nd,St,,W,,,Tifton,GA,31793,,,,"TIGER artifact"
|
|
31
|
+
"97 WEST OAK AVE, PANAMA CITY FL 32401",97,,,,Oak,Ave,,,,,"Panama City",FL,32401,,,,"predir is TIGER artifact"
|
|
32
|
+
"2276 WILTON DR, WILTON MANORS FL 33305",2276,,,,Wilton,Dr,,,,,"Fort Lauderdale",FL,33305,,,,"canonical place"
|
|
33
|
+
"203 SOUTH WALNUT ST, FLORENCE AL 35630",203,S,,,Walnut,St,,,,,Florence,AL,35630,,,,
|
|
34
|
+
"108 CENTER POINTE DR, CLARKSVILLE TN 37040",108,,,,"Center Pointe",Dr,,,,,Clarksville,TN,37040,,,,
|
|
35
|
+
"1800 OLD TROY RD, UNION CITY TN 38261",1800,,Old,,Troy,Rd,,,,,"Union City",TN,38261,,,,
|
|
36
|
+
"931 OLD SMITHVILLE HWY, MCMINNVILLE TN 37110",931,,Old,,Smithville,Rd,,,,,McMinnville,TN,37110,,,,
|
|
37
|
+
"1301 GREENE STREET, MARIETTA OH 45750",1301,,,,Greene,St,,,,,Marietta,OH,45750,,,,
|
|
38
|
+
"602 SOUTH MICHIGAN ST, SOUTH BEND IN 46601",602,S,,,Michigan,St,,,,,"South Bend",IN,46601,,,,
|
|
39
|
+
"500 NORTH A STREET, RICHMOND IN 47374",500,N,,,A,St,,,,,Richmond,IN,47374,,,,
|
|
40
|
+
"317 SOUTH DRAKE ROAD, KALAMAZOO MI 49009",317,S,,,Drake,Rd,,,,,Kalamazoo,MI,49009,,,,
|
|
41
|
+
"105 Amity Way, Wayne PA 19087",105,,,,Amity,Dr,,,,,Wayne,PA,19087,,,,
|
|
42
|
+
"305 W 45th St, New York NY 10036",305,W,,,45,St,,,,,"New York",NY,10036,,,,
|
|
43
|
+
"11839 Federalist Way, Fairfax VA 22030",11839,,,,Federalist,Way,,,,,Fairfax,VA,22030,,,,
|
|
44
|
+
"400 Monroe St, Hoboken, NJ 07030",400,,,,Monroe,St,,,,,Hoboken,NJ,07030,,,,
|
|
45
|
+
"101 West End Avenue, New York NY 10023",101,W,,,End,Ave,,,,,"New York",NY,10023,,,,"predir is TIGER artifact"
|
|
46
|
+
"2900 4TH AVE, BILLINGS MT 59101",2900,,,,4th,Ave,,N,,,Billings,MT,59101,,,,"returns 2 results"
|
|
47
|
+
"158 N SCOTT STREET, JOLIET IL 60432",158,N,,,Scott,St,,,,,Joliet,IL,60432,,,,
|
|
48
|
+
"1207 NETWORK CENTRE DR, EFFINGHAM IL 62401",1207,,,,"Network Centre",Dr,,,,,Effingham,IL,62401,,,,
|
|
49
|
+
"3555 SOUTHERN HILLS DR, SIOUX CITY IA 51106",3555,,,,"Southern Hills",Dr,,,,,"Sioux City",IA,51106,,,,
|
|
50
|
+
"300 E 3RD ST, NORTH PLATTE NE 69101",300,E,,,3rd,St,,,,,"North Platte",NE,69101,,,,
|
|
51
|
+
"115 N WEBB RD, GRAND ISLAND NE 68803",115,N,,,Webb,Rd,,,,,"Grand Island",NE,68803,,,,
|
|
52
|
+
"415 VALLEY VIEW DR, SCOTTSBLUFF NE 69361",501,,,,"Valley View",Dr,,,,,"Scotts Bluff",NE,69361,,,,"find nearest corner"
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"address","number","street","city","state","zip","lon","lat","count","comment"
|
|
2
|
+
"93 NORTH 9TH STREET, BROOKLYN NY 11211",93,N 9th St,Brooklyn,NY,11211,-73.95892,40.720361,1,
|
|
3
|
+
"380 WESTMINSTER ST, PROVIDENCE RI 02903",380,Westminster St,Providence,RI,02903,-71.414872,41.82126,1,
|
|
4
|
+
"177 MAIN STREET, LITTLETON NH 03561",177,Main St,Littleton,NH,03561,-71.77646,44.307516,1,range
|
|
5
|
+
"202 HARLOW ST, BANGOR ME 04401",202,Harlow St,Bangor,ME,04401,-68.773178,44.804885,1,
|
|
6
|
+
"46 FRONT STREET, WATERVILLE, ME 04901",46,Front St,Waterville,ME,04901,-69.628535,44.550875,1,
|
|
7
|
+
"22 SUSSEX ST, HACKENSACK NJ 07601",22,Sussex St,Hackensack,NJ,07601,-74.046952,40.880046,1,
|
|
8
|
+
"75 OAK STREET, PATCHOGUE NY 11772",75,Oak St,Patchogue,NY,11772,-73.011289,40.76813,1,
|
|
9
|
+
"1 CLINTON AVE, ALBANY NY 12207",1,Clinton Ave,Albany,NY,12207,-73.748853,42.653821,1,
|
|
10
|
+
"7242 ROUTE 9, PLATTSBURGH NY 12901",7242,US Hwy 9,Plattsburgh,NY,12901,-73.425181,44.741501,1,
|
|
11
|
+
"520 5TH AVE, MCKEESPORT PA 15132",520,5th Ave,McKeesport,PA,15132,-79.861617,40.351269,1,
|
|
12
|
+
"122 W 3RD STREET, GREENSBURG PA 15601",122,W 3rd St,Greensburg,PA,15601,-79.545833,40.29984,1,
|
|
13
|
+
"901 UNIVERSITY DR, STATE COLLEGE PA 16801",901,University Dr,State College,PA,16801,-77.845018,40.797574,1,
|
|
14
|
+
"240 W 3RD ST, WILLIAMSPORT PA 17701",240,W 3rd St,Williamsport,PA,17701,-77.004837,41.239267,1,
|
|
15
|
+
"41 N 4TH ST, ALLENTOWN PA 18102",41,N 4th St,Allentown,PA,18102,-75.465652,40.604528,1,
|
|
16
|
+
"2221 W. MARKET STREET, POTTSVILLE PA 17901",2221,W Market St,Pottsville,PA,17901,-76.22596,40.674952,1,
|
|
17
|
+
"337 BRIGHTSEAT ROAD, LANDOVER MD 20785",337,Brightseat Rd,Hyattsville,MD,20785,-76.850929,38.893382,1,canonical place
|
|
18
|
+
"101 CHESAPEAKE BLVD, ELKTON MD 21921",103,Chesapeake Blvd,Elkton,MD,21921,-75.787244,39.605795,1,find nearest corner
|
|
19
|
+
"2875 SABRE ST, VIRGINIA BEACH VA 23452",2809,Sabre St,Virginia Beach,VA,23452,-76.068511,36.822897,1,find nearest corner
|
|
20
|
+
"324 COMMERCE ROAD, FARMVILLE VA 23901",324,Commerce St,Clarksville,VA,23927,-78.55251,36.622205,1,nearby address; might be TIGER omission
|
|
21
|
+
"1480 EAST MAIN STREET, WYTHEVILLE VA 24382",1168,E Main St,Wytheville,VA,24382,-81.069279,36.951346,1,nearby address; TIGER omission
|
|
22
|
+
"116 N JEFFERSON STREET, ROANOKE VA 24016",116,N Jefferson St,Roanoke,VA,24016,-79.940484,37.274388,1,
|
|
23
|
+
"50 MCDOWELL STREET, WELCH WV 24801",50,Mc Dowell St,Welch,WV,24801,-81.58558,37.433227,1,
|
|
24
|
+
"146 EAST FIRST AVE, WILLIAMSON WV 25661",200,E 1st Ave,Williamson,WV,25661,-82.277028,37.670255,1,find nearest corner
|
|
25
|
+
"1925 E MAIN ST, ALBEMARLE NC 28001",1925,E Main St,Albemarle,NC,28001,-80.16389,35.348749,1,
|
|
26
|
+
"1013 SPRING LANE, SANFORD NC 27330",1013,Spring Ln,Sanford,NC,27330,-79.198602,35.487517,1,
|
|
27
|
+
"145 ROWAN STREET, FAYETTEVILLE NC 28301",145,Rowan St,Fayetteville,NC,28301,-78.878159,35.0577,1,
|
|
28
|
+
"1420 MCCARTHY BLVD, NEW BERN NC 28562",1420,McCarthy Blvd,New Bern,NC,28562,-77.094959,35.097715,1,
|
|
29
|
+
"115 ENTERPRISE COURT, GREENWOOD SC 29649",115,Enterprise Ct,Greenwood,SC,29649,-82.165438,34.217807,1,
|
|
30
|
+
"732 W 2ND ST, TIFTON GA 31794",732,W 2nd St,Tifton,GA,31793,-83.529553,31.457994,1,ZIP is wrong
|
|
31
|
+
"97 WEST OAK AVE, PANAMA CITY FL 32401",97,W Oak Ave,Panama City,FL,32401,-85.662232,30.155214,1,
|
|
32
|
+
"2276 WILTON DR, WILTON MANORS FL 33305",2276,Wilton Dr,Fort Lauderdale,FL,33305,-80.137418,26.157,1,canonical place
|
|
33
|
+
"203 SOUTH WALNUT ST, FLORENCE AL 35630",203,S Walnut St,Florence,AL,35630,-87.671379,34.800936,1,
|
|
34
|
+
"108 CENTER POINTE DR, CLARKSVILLE TN 37040",108,Center Pointe Dr,Clarksville,TN,37040,-87.308915,36.569738,1,
|
|
35
|
+
"1800 OLD TROY RD, UNION CITY TN 38261",1800,Old Troy Rd,Union City,TN,38261,-89.093706,36.417762,1,
|
|
36
|
+
"931 OLD SMITHVILLE HWY, MCMINNVILLE TN 37110",931,Old Smithville Rd,McMinnville,TN,37110,-85.788226,35.701451,1,
|
|
37
|
+
"1301 GREENE STREET, MARIETTA OH 45750",1301,Greene St,Marietta,OH,45750,-81.424821,39.426052,1,
|
|
38
|
+
"602 SOUTH MICHIGAN ST, SOUTH BEND IN 46601",602,S Michigan St,South Bend,IN,46601,-86.250221,41.669598,1,
|
|
39
|
+
"500 NORTH A STREET, RICHMOND IN 47374",500,N A St,Richmond,IN,47374,-84.89517,39.830625,1,
|
|
40
|
+
"317 SOUTH DRAKE ROAD, KALAMAZOO MI 49009",317,S Drake Rd,Kalamazoo,MI,49009,-85.648231,42.289145,1,
|
|
41
|
+
"105 Amity Way, Wayne PA 19087",105,Amity Dr,Wayne,PA,19087,-75.455493,40.076415,1,
|
|
42
|
+
"305 W 45th St, New York NY 10036",305,W 45 St,New York,NY,10036,-73.988479,40.759213,1,
|
|
43
|
+
"11839 Federalist Way, Fairfax VA 22030",11839,Federalist Way,Fairfax,VA,22030,-77.354157,38.850052,1,
|
|
44
|
+
"400 Monroe St, Hoboken, NJ 07030",400,Monroe St,Hoboken,NJ,07030,-74.038949,40.742849,1,
|
|
45
|
+
"101 West End Avenue, New York NY 10023",101,W End Ave,New York,NY,10023,-73.98815,40.774788,1,predir is TIGER artifact
|
|
46
|
+
"2900 4TH AVE, BILLINGS MT 59101",2900,4th Ave S,Billings,MT,59101,-108.501942,45.776389,2,returns 2 results
|
|
47
|
+
"158 N SCOTT STREET, JOLIET IL 60432",158,N Scott St,Joliet,IL,60432,-88.080155,41.526524,1,
|
|
48
|
+
"1207 NETWORK CENTRE DR, EFFINGHAM IL 62401",1207,Network Centre Dr,Effingham,IL,62401,-88.524714,39.145835,1,
|
|
49
|
+
"3555 SOUTHERN HILLS DR, SIOUX CITY IA 51106",3555,Southern Hills Dr,Sioux City,IA,51106,-96.353207,42.448741,1,
|
|
50
|
+
"300 E 3RD ST, NORTH PLATTE NE 69101",300,E 3rd St,North Platte,NE,69101,-100.761028,41.135235,1,
|
|
51
|
+
"115 N WEBB RD, GRAND ISLAND NE 68803",115,N Webb Rd,Grand Island,NE,68803,-98.378432,40.917192,1,
|
|
52
|
+
"415 VALLEY VIEW DR, SCOTTSBLUFF NE 69361",501,Valley View Dr,Scotts Bluff,NE,69361,-103.656078,41.879011,1,find nearest corner
|
|
53
|
+
"4018 W Ustick Rd, Meridian ID",4413,W Ustick Rd,Nampa,ID,83687,-116.479463,43.634111,1,street
|
|
54
|
+
"129 E Williams Field Rd, Gilbert AZ 85295",800,E Williams Field Rd,Gilbert,AZ,85295,-111.772768,33.306601,1,street
|
|
55
|
+
"2518 S Pacific Hwy, Medford OR",2499,S Pacific Hwy,Medford,OR,97501,-122.849335,42.301566,1,street
|
|
56
|
+
"1111 River Rd Apt A17, Edgewater NJ 07020",1111,River Rd,Edgewater,NJ,07020,-73.972523,40.832584,1,FIXME: parsing
|
|
57
|
+
"460 West St, Amherst MA 01002-2964",460,West St,Amherst,MA,01002,-72.519936,42.341085,1,address is all abbreviations
|
data/tests/database.rb
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
$LOAD_PATH.unshift '../lib'
|
|
2
|
+
|
|
3
|
+
require 'test/unit'
|
|
4
|
+
require 'geocoder/us/database'
|
|
5
|
+
require 'csv'
|
|
6
|
+
|
|
7
|
+
Base = File.dirname(__FILE__)
|
|
8
|
+
|
|
9
|
+
module Geocoder::US
|
|
10
|
+
Database_File = (
|
|
11
|
+
(ARGV[0] and !ARGV[0].empty?) ? ARGV[0] : "../geocoderdata/geocoder.db")
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class TestDatabase < Test::Unit::TestCase
|
|
15
|
+
def get_db
|
|
16
|
+
Geocoder::US::Database.new(Geocoder::US::Database_File, {:debug => true})
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def get_international_db
|
|
21
|
+
Geocoder::US::Database.new("/Users/katechapman/Desktop/geonames1.db", {:debug => true})
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def setup
|
|
25
|
+
@db = get_db
|
|
26
|
+
@db_intl = get_international_db
|
|
27
|
+
assert_not_nil @db_intl
|
|
28
|
+
assert_not_nil @db
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def test_load
|
|
32
|
+
return if @db.nil?
|
|
33
|
+
assert_kind_of Geocoder::US::Database, @db
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def test_zip
|
|
37
|
+
return if @db.nil?
|
|
38
|
+
[ {:city=>"Chicago", :zip=>"60601", :state=>"IL", :precision=>:zip,
|
|
39
|
+
:fips_county=>"17031", :lon=>"-87.68732", :lat=>"41.811929", :score => 0.714},
|
|
40
|
+
{:city=>"Philadelphia", :zip=>"19019", :state=>"PA", :precision=>:zip,
|
|
41
|
+
:fips_county=>"42101", :lon=>"-75.11787", :lat=>"40.001811", :score => 0.714}
|
|
42
|
+
].each {|record|
|
|
43
|
+
result = @db.geocode(record[:zip])
|
|
44
|
+
assert_equal result.length, 1
|
|
45
|
+
record.keys.each {|key| assert_equal record[key], result[0][key]}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def test_international_place
|
|
51
|
+
return if @db_intl.nil?
|
|
52
|
+
[ {:city=>"Paris", :state=>"FR"},
|
|
53
|
+
{:city=>"Paris", :state=>"FR"}
|
|
54
|
+
].each {|record|
|
|
55
|
+
result = @db_intl.geocode(record)
|
|
56
|
+
assert_equal result.length, 1
|
|
57
|
+
record.keys.each {|key| assert_equal record[key], result[0][key]}
|
|
58
|
+
}
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def test_place
|
|
62
|
+
return if @db.nil?
|
|
63
|
+
[ {:city=>"Chicago", :state=>"IL", :precision=>:city, :fips_county=>"17031", :score => 0.857},
|
|
64
|
+
{:city=>"Philadelphia", :state=>"PA", :precision=>:city, :fips_county=>"42101", :score => 0.857}
|
|
65
|
+
].each {|record|
|
|
66
|
+
result = @db.geocode(record[:city] + ", " + record[:state])
|
|
67
|
+
assert_equal result.length, 1
|
|
68
|
+
record.keys.each {|key| assert_equal record[key], result[0][key]}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def test_international_place
|
|
74
|
+
return if @db_intl.nil?
|
|
75
|
+
[ {:city=>"Kabul", :state=>"AF", :precision=>:city},
|
|
76
|
+
{:city=>"Paris", :state=>"FR", :precision=>:city}
|
|
77
|
+
].each {|record|
|
|
78
|
+
result = @db_intl.geocode({:city => record[:city] , :state => record[:state]})
|
|
79
|
+
puts result
|
|
80
|
+
assert_equal result.length, 1
|
|
81
|
+
record.keys.each {|key| assert_equal record[key], result[0][key]}
|
|
82
|
+
}
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def test_sample
|
|
86
|
+
return if @db.nil?
|
|
87
|
+
CSV.foreach(Base + "/data/db-test.csv", {:headers=>true}) do |row|
|
|
88
|
+
result = @db.geocode(row[0], true)
|
|
89
|
+
result[0][:count] = result.map{|a|[a[:lat], a[:lon]]}.to_set.length
|
|
90
|
+
fields = row.headers - ["comment", "address"]
|
|
91
|
+
fields.each {|f|
|
|
92
|
+
sample = row[f] || ""
|
|
93
|
+
given = result[0][f.to_sym] || ""
|
|
94
|
+
sample = sample.to_f if given.kind_of? Float or given.kind_of? Fixnum
|
|
95
|
+
assert_equal sample, given, "row: #{row.inspect}\nfield: #{f.inspect} sample: #{sample.inspect}, given: #{given.inspect}"
|
|
96
|
+
|
|
97
|
+
}
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def test_should_get_street_number_correctly
|
|
102
|
+
result = @db.geocode("460 West St, Amherst MA 01002-2964", true)
|
|
103
|
+
puts "all results=#{result.inspect}"
|
|
104
|
+
assert_equal '460', result[0][:number]
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def test_should_geocode_with_hash
|
|
108
|
+
result = @db.geocode({:street => "2200 Wilson Blvd", :city => "Arlington", :region => "VA", :postal_code => "22201"}, true)
|
|
109
|
+
result2 = @db.geocode("2200 Wilson Blvd, Arlington, VA 22201")
|
|
110
|
+
assert_equal result2,result
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def test_should_work_with_partial_hash
|
|
114
|
+
result = @db.geocode({:street => "2200 Wilson Blvd", :postal_code => "22201"})
|
|
115
|
+
assert_equal result[0][:precision],:range
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def test_weird_edge_case_explosion
|
|
119
|
+
result = @db.geocode({:street => "1410 Spring Hill Rd", :postal_code => "20221"})
|
|
120
|
+
result1 = @db.geocode(:street => "402 Valley View Ave", :postal_code => "12345")
|
|
121
|
+
assert_equal result[0][:precision],:zip
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def test_city_state_together
|
|
125
|
+
result = @db.geocode({:city => "Richmond", :state => "IN"})
|
|
126
|
+
assert_equal result[0][:precision],:city
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def test_state_street_together
|
|
130
|
+
result = @db.geocode({:region => "VA", :street => "14333 Lee Jackson Memorial Hwy"})
|
|
131
|
+
#assert_equal result[0][:precision],:range
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
end
|