geonames_local 2.0.1 → 3.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile +1 -1
- data/{LICENSE → MIT-LICENSE} +0 -0
- data/README.rdoc +1 -1
- data/geonames.yml +4 -3
- data/geonames_local.gemspec +4 -5
- data/lib/geonames_local/cli.rb +40 -27
- data/lib/geonames_local/config/geonames.sql +41 -46
- data/lib/geonames_local/config/geonames.yml +6 -5
- data/lib/geonames_local/data/dump.rb +15 -16
- data/lib/geonames_local/data/shp.rb +1 -1
- data/lib/geonames_local/features/road.rb +3 -3
- data/lib/geonames_local/features/spot.rb +38 -33
- data/lib/geonames_local/models/mongodb.rb +89 -140
- data/lib/geonames_local/models/postgis.rb +13 -15
- data/lib/geonames_local/models/tokyo.rb +6 -6
- data/lib/geonames_local/version.rb +1 -1
- metadata +25 -18
- data/.document +0 -5
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 2e73d4bb7dd75933118a18ad64f13563e47b64e5
|
4
|
+
data.tar.gz: fc75d8a753756a87433b16c9da287cb9bd9bc090
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 82c9f917f022ba89fe63b7cb817e04f4652ba37eaf651760cd5a1c4409a2d090cbf495b23e0117c9f7eedeb860da3f6164aff83f22ebd58be3d72d81ae5a2f2c
|
7
|
+
data.tar.gz: 50d6134373286472f0980f4e68046c355eba088c89311a2b3f0148ff4463284d0c0456d147f19dca033586e4cc1159900cca452e217680a378b12e1eb4e71bc7
|
data/Gemfile
CHANGED
data/{LICENSE → MIT-LICENSE}
RENAMED
File without changes
|
data/README.rdoc
CHANGED
@@ -9,8 +9,8 @@ No hit limit, fast as possible.
|
|
9
9
|
|
10
10
|
To use one adapter, install the corresponding gem:
|
11
11
|
|
12
|
+
MongoDB => mongoid, geopolitical (optional: mongo_ext)
|
12
13
|
PostgreSQL => pg
|
13
|
-
MongoDB => mongoid (optional: mongo_ext)
|
14
14
|
Tokyo => tokyocabinet
|
15
15
|
|
16
16
|
You will also need in your system:
|
data/geonames.yml
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
#
|
2
2
|
# Geonames Local Config Example
|
3
3
|
#
|
4
|
-
:store: mongodb
|
5
|
-
:codes: [br] # to store all countries informations in the countries table, just write [country]
|
4
|
+
:store: mongodb
|
6
5
|
:level: city
|
6
|
+
:nations: [br]
|
7
|
+
:locales: [pt, en]
|
7
8
|
:min_pop: 100000
|
8
9
|
:mapping:
|
9
10
|
:name: name
|
10
11
|
:geom: true
|
11
12
|
:db:
|
12
13
|
:host: localhost
|
13
|
-
:name:
|
14
|
+
:name: baccafe_development
|
14
15
|
:user:
|
15
16
|
:pass:
|
16
17
|
:purge: false
|
data/geonames_local.gemspec
CHANGED
@@ -8,23 +8,22 @@ Gem::Specification.new do |gem|
|
|
8
8
|
|
9
9
|
gem.authors = ["Marcos Piccinini"]
|
10
10
|
gem.default_executable = %q{geonames}
|
11
|
-
gem.description = %q{
|
11
|
+
gem.description = %q{Dumps geonames data to feed a local db}
|
12
12
|
gem.email = %q{x@nofxx.com}
|
13
|
+
gem.license = "MIT"
|
13
14
|
|
14
15
|
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
15
16
|
gem.files = `git ls-files`.split("\n")
|
16
17
|
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
18
|
gem.name = "geonames_local"
|
18
19
|
gem.require_paths = ["lib"]
|
19
|
-
gem.summary = %q{
|
20
|
-
|
20
|
+
gem.summary = %q{Dumps geonames data for local usage}
|
21
21
|
|
22
22
|
gem.extra_rdoc_files = [
|
23
|
-
"LICENSE",
|
23
|
+
"MIT-LICENSE",
|
24
24
|
"README.rdoc"
|
25
25
|
]
|
26
26
|
|
27
|
-
|
28
27
|
gem.post_install_message = %q{
|
29
28
|
Geonames Local
|
30
29
|
--------------
|
data/lib/geonames_local/cli.rb
CHANGED
@@ -16,13 +16,9 @@ module Geonames
|
|
16
16
|
options = {}
|
17
17
|
|
18
18
|
argv.options do |opts|
|
19
|
-
opts.banner =
|
20
|
-
Geonames Command Line Usage:
|
19
|
+
opts.banner = "Geonames Command Line Usage\n\n geonames <nation code(s)> <opts>\n\n\n"
|
21
20
|
|
22
|
-
geonames <country code(s)> <opts>
|
23
21
|
|
24
|
-
geonames
|
25
|
-
BANNER
|
26
22
|
opts.on("-l", "--level LEVEL", String, "The level of logging to report" ) { |level| options[:level] = level }
|
27
23
|
opts.on("-d", "--dump", "Dump DB before all" ) { options[:dump] = true }
|
28
24
|
opts.separator ""
|
@@ -34,7 +30,7 @@ BANNER
|
|
34
30
|
opts.on("--map TYPE", Array, "Use zone/road to import" ) { |s| options[:map] = s.map(&:to_sym) }
|
35
31
|
opts.on("--type TYPE", String, "Use zone/road to import" ) { |s| options[:type] = s }
|
36
32
|
opts.on("--city CITY", String, "Use city gid to import" ) { |s| options[:city] = s }
|
37
|
-
opts.on("--
|
33
|
+
opts.on("--nation NATION", String, "Use nation gid to import" ) { |s| options[:nation] = s }
|
38
34
|
opts.separator ""
|
39
35
|
opts.separator "Common Options:"
|
40
36
|
opts.on("-h", "--help", "Show this message" ) { puts opts; exit }
|
@@ -54,24 +50,37 @@ BANNER
|
|
54
50
|
end
|
55
51
|
options
|
56
52
|
end
|
53
|
+
|
57
54
|
private_class_method :parse_options
|
58
55
|
|
59
56
|
class << self
|
60
57
|
|
58
|
+
def load_config
|
59
|
+
if Opt[:config]
|
60
|
+
Opt.merge! YAML.load(File.read(Opt[:config]))
|
61
|
+
else
|
62
|
+
# Load config/geonames.yml if there's one
|
63
|
+
if File.exists?(cfg = File.join("config", "geonames.yml"))
|
64
|
+
Opt.merge! YAML.load(File.read(cfg))
|
65
|
+
else
|
66
|
+
raise
|
67
|
+
end
|
68
|
+
end
|
69
|
+
rescue
|
70
|
+
info "Cant't find config file"
|
71
|
+
exit
|
72
|
+
end
|
73
|
+
|
61
74
|
# Ugly but works?
|
62
75
|
def work(argv)
|
63
76
|
trap(:INT) { stop! }
|
64
77
|
trap(:TERM) { stop! }
|
65
78
|
Opt.merge! parse_options(argv)
|
66
|
-
|
67
|
-
|
68
|
-
Opt.merge! YAML.load(File.read(Opt[:config]))
|
79
|
+
if Opt[:locales].nil? || Opt[:locales].empty?
|
80
|
+
Opt[:locales] = ['en']
|
69
81
|
end
|
70
82
|
|
71
|
-
|
72
|
-
if File.exists?(cfg = File.join("config", "geonames.yml"))
|
73
|
-
Opt.merge! YAML.load(File.read(cfg))
|
74
|
-
end
|
83
|
+
load_config
|
75
84
|
|
76
85
|
if shp = Opt[:shp]
|
77
86
|
SHP.import(shp)
|
@@ -115,7 +124,7 @@ BANNER
|
|
115
124
|
# Export Data as CSV or JSON
|
116
125
|
#
|
117
126
|
if argv[0] =~ /csv|json/
|
118
|
-
Geonames::Export.new(
|
127
|
+
Geonames::Export.new(Nation.all).to_csv
|
119
128
|
|
120
129
|
#
|
121
130
|
# Do the magic! Import Geonames Data
|
@@ -124,24 +133,28 @@ BANNER
|
|
124
133
|
load_adapter(Opt[:store])
|
125
134
|
info "Using adapter #{Opt[:store]}.."
|
126
135
|
|
127
|
-
|
128
|
-
|
136
|
+
# Nations
|
137
|
+
if Opt[:nations].empty? || argv[0] =~ /coun|nati/
|
138
|
+
info "\nPopulating 'nations' database..."
|
139
|
+
dump = Geonames::Dump.new(:all, :dump)
|
129
140
|
info "\n---\nTotal #{dump.data.length} parsed."
|
130
141
|
|
131
|
-
info "Writing to DB"
|
132
|
-
Geonames::Models::
|
142
|
+
info "Writing to nations DB"
|
143
|
+
Geonames::Models::MongoWrapper.nations dump.data, Opt[:clean]
|
144
|
+
|
145
|
+
# Regions, Cities....
|
133
146
|
else
|
134
|
-
zip = Geonames::Dump.new(Opt[:
|
135
|
-
dump = Geonames::Dump.new(Opt[:
|
147
|
+
zip = Geonames::Dump.new(Opt[:nations], :zip).data
|
148
|
+
dump = Geonames::Dump.new(Opt[:nations], :dump).data
|
136
149
|
info "\n---\nTotal #{dump.size} parsed. #{zip.size} zips."
|
137
150
|
|
138
151
|
info "Join dump << zip"
|
139
152
|
dump = unify!(dump, zip).group_by(&:kind)
|
140
153
|
|
141
|
-
info "Writing
|
142
|
-
Geonames::Models::
|
143
|
-
info "Writing cities..."
|
144
|
-
Geonames::Models::City.from_batch dump[:city]
|
154
|
+
info "Writing to DB..."
|
155
|
+
Geonames::Models::MongoWrapper.batch dump, Opt[:clean]
|
156
|
+
# info "Writing cities..."
|
157
|
+
# Geonames::Models::City.from_batch dump[:city]
|
145
158
|
end
|
146
159
|
end
|
147
160
|
end
|
@@ -149,9 +162,9 @@ BANNER
|
|
149
162
|
def load_adapter(name)
|
150
163
|
begin
|
151
164
|
require "geonames_local/models/#{name}"
|
152
|
-
|
153
|
-
|
154
|
-
|
165
|
+
# rescue LoadError
|
166
|
+
# puts "Can't find adapter for #{name}"
|
167
|
+
# stop!
|
155
168
|
end
|
156
169
|
end
|
157
170
|
|
@@ -20,13 +20,13 @@ SET default_with_oids = false;
|
|
20
20
|
--
|
21
21
|
-- TOC entry 2245 (class 1259 OID 21665)
|
22
22
|
-- Dependencies: 2544 2545 2546 3 992
|
23
|
-
-- Name: cities; Type: TABLE; Schema: public; Owner: -; Tablespace:
|
23
|
+
-- Name: cities; Type: TABLE; Schema: public; Owner: -; Tablespace:
|
24
24
|
--
|
25
25
|
|
26
26
|
CREATE TABLE cities (
|
27
27
|
id integer NOT NULL,
|
28
|
-
|
29
|
-
|
28
|
+
nation_id integer NOT NULL,
|
29
|
+
region_id integer,
|
30
30
|
name character varying(255) NOT NULL,
|
31
31
|
gid integer,
|
32
32
|
zip integer,
|
@@ -72,7 +72,7 @@ ALTER TABLE cities ALTER COLUMN id SET DEFAULT nextval('cities_id_seq'::regclass
|
|
72
72
|
--
|
73
73
|
-- TOC entry 2548 (class 2606 OID 21670)
|
74
74
|
-- Dependencies: 2245 2245
|
75
|
-
-- Name: cities_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace:
|
75
|
+
-- Name: cities_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace:
|
76
76
|
--
|
77
77
|
|
78
78
|
ALTER TABLE ONLY cities
|
@@ -82,16 +82,16 @@ ALTER TABLE ONLY cities
|
|
82
82
|
--
|
83
83
|
-- TOC entry 2549 (class 1259 OID 21697)
|
84
84
|
-- Dependencies: 2245
|
85
|
-
-- Name:
|
85
|
+
-- Name: index_cities_on_nation_id; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
86
86
|
--
|
87
87
|
|
88
|
-
CREATE INDEX
|
88
|
+
CREATE INDEX index_cities_on_nation_id ON cities USING btree (nation_id);
|
89
89
|
|
90
90
|
|
91
91
|
--
|
92
92
|
-- TOC entry 2550 (class 1259 OID 21699)
|
93
93
|
-- Dependencies: 2245 1869
|
94
|
-
-- Name: index_cities_on_geom; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
94
|
+
-- Name: index_cities_on_geom; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
95
95
|
--
|
96
96
|
|
97
97
|
CREATE INDEX index_cities_on_geom ON cities USING gist (geom);
|
@@ -100,7 +100,7 @@ CREATE INDEX index_cities_on_geom ON cities USING gist (geom);
|
|
100
100
|
--
|
101
101
|
-- TOC entry 2551 (class 1259 OID 21695)
|
102
102
|
-- Dependencies: 2245
|
103
|
-
-- Name: index_cities_on_gid; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
103
|
+
-- Name: index_cities_on_gid; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
104
104
|
--
|
105
105
|
|
106
106
|
CREATE INDEX index_cities_on_gid ON cities USING btree (gid);
|
@@ -109,7 +109,7 @@ CREATE INDEX index_cities_on_gid ON cities USING btree (gid);
|
|
109
109
|
--
|
110
110
|
-- TOC entry 2552 (class 1259 OID 21694)
|
111
111
|
-- Dependencies: 2245
|
112
|
-
-- Name: index_cities_on_name; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
112
|
+
-- Name: index_cities_on_name; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
113
113
|
--
|
114
114
|
|
115
115
|
CREATE INDEX index_cities_on_name ON cities USING btree (name);
|
@@ -118,16 +118,16 @@ CREATE INDEX index_cities_on_name ON cities USING btree (name);
|
|
118
118
|
--
|
119
119
|
-- TOC entry 2553 (class 1259 OID 21698)
|
120
120
|
-- Dependencies: 2245
|
121
|
-
-- Name:
|
121
|
+
-- Name: index_cities_on_region_id; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
122
122
|
--
|
123
123
|
|
124
|
-
CREATE INDEX
|
124
|
+
CREATE INDEX index_cities_on_region_id ON cities USING btree (region_id);
|
125
125
|
|
126
126
|
|
127
127
|
--
|
128
128
|
-- TOC entry 2554 (class 1259 OID 21696)
|
129
129
|
-- Dependencies: 2245
|
130
|
-
-- Name: index_cities_on_zip; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
130
|
+
-- Name: index_cities_on_zip; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
131
131
|
--
|
132
132
|
|
133
133
|
CREATE INDEX index_cities_on_zip ON cities USING btree (zip);
|
@@ -155,10 +155,10 @@ SET default_with_oids = false;
|
|
155
155
|
--
|
156
156
|
-- TOC entry 2249 (class 1259 OID 21688)
|
157
157
|
-- Dependencies: 3
|
158
|
-
-- Name:
|
158
|
+
-- Name: nations; Type: TABLE; Schema: public; Owner: -; Tablespace:
|
159
159
|
--
|
160
160
|
|
161
|
-
CREATE TABLE
|
161
|
+
CREATE TABLE nations (
|
162
162
|
id integer NOT NULL,
|
163
163
|
name character varying(30) NOT NULL,
|
164
164
|
abbr character varying(2) NOT NULL
|
@@ -168,10 +168,10 @@ CREATE TABLE countries (
|
|
168
168
|
--
|
169
169
|
-- TOC entry 2248 (class 1259 OID 21686)
|
170
170
|
-- Dependencies: 3 2249
|
171
|
-
-- Name:
|
171
|
+
-- Name: nations_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
172
172
|
--
|
173
173
|
|
174
|
-
CREATE SEQUENCE
|
174
|
+
CREATE SEQUENCE nations_id_seq
|
175
175
|
START WITH 1
|
176
176
|
INCREMENT BY 1
|
177
177
|
NO MAXVALUE
|
@@ -182,10 +182,10 @@ CREATE SEQUENCE countries_id_seq
|
|
182
182
|
--
|
183
183
|
-- TOC entry 2548 (class 0 OID 0)
|
184
184
|
-- Dependencies: 2248
|
185
|
-
-- Name:
|
185
|
+
-- Name: nations_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
186
186
|
--
|
187
187
|
|
188
|
-
ALTER SEQUENCE
|
188
|
+
ALTER SEQUENCE nations_id_seq OWNED BY nations.id;
|
189
189
|
|
190
190
|
|
191
191
|
--
|
@@ -194,17 +194,17 @@ ALTER SEQUENCE countries_id_seq OWNED BY countries.id;
|
|
194
194
|
-- Name: id; Type: DEFAULT; Schema: public; Owner: -
|
195
195
|
--
|
196
196
|
|
197
|
-
ALTER TABLE
|
197
|
+
ALTER TABLE nations ALTER COLUMN id SET DEFAULT nextval('nations_id_seq'::regclass);
|
198
198
|
|
199
199
|
|
200
200
|
--
|
201
201
|
-- TOC entry 2545 (class 2606 OID 21693)
|
202
202
|
-- Dependencies: 2249 2249
|
203
|
-
-- Name:
|
203
|
+
-- Name: nations_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace:
|
204
204
|
--
|
205
205
|
|
206
|
-
ALTER TABLE ONLY
|
207
|
-
ADD CONSTRAINT
|
206
|
+
ALTER TABLE ONLY nations
|
207
|
+
ADD CONSTRAINT nations_pkey PRIMARY KEY (id);
|
208
208
|
|
209
209
|
|
210
210
|
--
|
@@ -229,12 +229,12 @@ SET default_with_oids = false;
|
|
229
229
|
--
|
230
230
|
-- TOC entry 2247 (class 1259 OID 21680)
|
231
231
|
-- Dependencies: 3
|
232
|
-
-- Name:
|
232
|
+
-- Name: regions; Type: TABLE; Schema: public; Owner: -; Tablespace:
|
233
233
|
--
|
234
234
|
|
235
|
-
CREATE TABLE
|
235
|
+
CREATE TABLE regions (
|
236
236
|
id integer NOT NULL,
|
237
|
-
|
237
|
+
nation_id integer NOT NULL,
|
238
238
|
name character varying(255) NOT NULL,
|
239
239
|
abbr character varying(2) NOT NULL,
|
240
240
|
gid integer
|
@@ -244,10 +244,10 @@ CREATE TABLE provinces (
|
|
244
244
|
--
|
245
245
|
-- TOC entry 2246 (class 1259 OID 21678)
|
246
246
|
-- Dependencies: 3 2247
|
247
|
-
-- Name:
|
247
|
+
-- Name: regions_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
248
248
|
--
|
249
249
|
|
250
|
-
CREATE SEQUENCE
|
250
|
+
CREATE SEQUENCE regions_id_seq
|
251
251
|
START WITH 1
|
252
252
|
INCREMENT BY 1
|
253
253
|
NO MAXVALUE
|
@@ -258,10 +258,10 @@ CREATE SEQUENCE provinces_id_seq
|
|
258
258
|
--
|
259
259
|
-- TOC entry 2552 (class 0 OID 0)
|
260
260
|
-- Dependencies: 2246
|
261
|
-
-- Name:
|
261
|
+
-- Name: regions_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
262
262
|
--
|
263
263
|
|
264
|
-
ALTER SEQUENCE
|
264
|
+
ALTER SEQUENCE regions_id_seq OWNED BY regions.id;
|
265
265
|
|
266
266
|
|
267
267
|
--
|
@@ -270,53 +270,53 @@ ALTER SEQUENCE provinces_id_seq OWNED BY provinces.id;
|
|
270
270
|
-- Name: id; Type: DEFAULT; Schema: public; Owner: -
|
271
271
|
--
|
272
272
|
|
273
|
-
ALTER TABLE
|
273
|
+
ALTER TABLE regions ALTER COLUMN id SET DEFAULT nextval('regions_id_seq'::regclass);
|
274
274
|
|
275
275
|
|
276
276
|
--
|
277
277
|
-- TOC entry 2549 (class 2606 OID 21685)
|
278
278
|
-- Dependencies: 2247 2247
|
279
|
-
-- Name:
|
279
|
+
-- Name: regions_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace:
|
280
280
|
--
|
281
281
|
|
282
|
-
ALTER TABLE ONLY
|
283
|
-
ADD CONSTRAINT
|
282
|
+
ALTER TABLE ONLY regions
|
283
|
+
ADD CONSTRAINT regions_pkey PRIMARY KEY (id);
|
284
284
|
|
285
285
|
|
286
286
|
--
|
287
287
|
-- TOC entry 2544 (class 1259 OID 21701)
|
288
288
|
-- Dependencies: 2247
|
289
|
-
-- Name:
|
289
|
+
-- Name: index_regions_on_abbr; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
290
290
|
--
|
291
291
|
|
292
|
-
CREATE INDEX
|
292
|
+
CREATE INDEX index_regions_on_abbr ON regions USING btree (abbr);
|
293
293
|
|
294
294
|
|
295
295
|
--
|
296
296
|
-- TOC entry 2545 (class 1259 OID 21703)
|
297
297
|
-- Dependencies: 2247
|
298
|
-
-- Name:
|
298
|
+
-- Name: index_regions_on_nation_id; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
299
299
|
--
|
300
300
|
|
301
|
-
CREATE INDEX
|
301
|
+
CREATE INDEX index_regions_on_nation_id ON regions USING btree (nation_id);
|
302
302
|
|
303
303
|
|
304
304
|
--
|
305
305
|
-- TOC entry 2546 (class 1259 OID 21702)
|
306
306
|
-- Dependencies: 2247
|
307
|
-
-- Name:
|
307
|
+
-- Name: index_regions_on_gid; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
308
308
|
--
|
309
309
|
|
310
|
-
CREATE INDEX
|
310
|
+
CREATE INDEX index_regions_on_gid ON regions USING btree (gid);
|
311
311
|
|
312
312
|
|
313
313
|
--
|
314
314
|
-- TOC entry 2547 (class 1259 OID 21700)
|
315
315
|
-- Dependencies: 2247
|
316
|
-
-- Name:
|
316
|
+
-- Name: index_regions_on_name; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
317
317
|
--
|
318
318
|
|
319
|
-
CREATE INDEX
|
319
|
+
CREATE INDEX index_regions_on_name ON regions USING btree (name);
|
320
320
|
|
321
321
|
|
322
322
|
-- Completed on 2010-03-19 05:45:19 BRT
|
@@ -324,8 +324,3 @@ CREATE INDEX index_provinces_on_name ON provinces USING btree (name);
|
|
324
324
|
--
|
325
325
|
-- PostgreSQL database dump complete
|
326
326
|
--
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
@@ -2,14 +2,15 @@
|
|
2
2
|
# Geonames Local Config Example
|
3
3
|
#
|
4
4
|
:store: mongodb
|
5
|
-
:codes: [br] # to store all countries informations in the countries table, just write [country]
|
6
5
|
:level: city
|
6
|
+
:nations: [br, us] # [] to populate nations database
|
7
|
+
:locales: [pt, en]
|
7
8
|
:mapping:
|
8
9
|
:name: name
|
9
10
|
:geom: true
|
10
11
|
:db:
|
11
12
|
:host: localhost
|
12
|
-
:dbname:
|
13
|
-
:user:
|
14
|
-
:password:
|
15
|
-
:purge: false
|
13
|
+
:dbname: geonames_local
|
14
|
+
# :user:
|
15
|
+
# :password:
|
16
|
+
# :purge: false
|
@@ -1,31 +1,30 @@
|
|
1
1
|
module Geonames
|
2
2
|
class Dump
|
3
|
+
# Geonames base URL
|
3
4
|
URL = "http://download.geonames.org/export/"
|
5
|
+
# Work temporary files
|
4
6
|
TMP = "/tmp/geonames/"
|
5
7
|
|
6
|
-
def initialize(
|
7
|
-
@codes = codes
|
8
|
+
def initialize(target, kind)
|
8
9
|
@kind = kind
|
9
10
|
@data = []
|
10
|
-
if
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
elsif codes == :country
|
15
|
-
countries
|
11
|
+
if target.respond_to? :each
|
12
|
+
target.each { |n| work(n) }
|
13
|
+
elsif target == :all
|
14
|
+
nations
|
16
15
|
end
|
17
16
|
end
|
18
17
|
|
19
|
-
def
|
20
|
-
info "\nDumping
|
21
|
-
file = get_file('
|
18
|
+
def nations
|
19
|
+
info "\nDumping nation database"
|
20
|
+
file = get_file('nation')
|
22
21
|
download file
|
23
22
|
parse file
|
24
23
|
end
|
25
24
|
|
26
|
-
def work
|
27
|
-
info "\nWorking on #{@kind} for #{
|
28
|
-
file = get_file(
|
25
|
+
def work nation
|
26
|
+
info "\nWorking on #{@kind} for #{nation}"
|
27
|
+
file = get_file(nation)
|
29
28
|
download file
|
30
29
|
uncompress file
|
31
30
|
parse file
|
@@ -35,8 +34,8 @@ module Geonames
|
|
35
34
|
@data
|
36
35
|
end
|
37
36
|
|
38
|
-
def get_file(
|
39
|
-
|
37
|
+
def get_file(nation)
|
38
|
+
nation == "nation" ? "countryInfo.txt" : "#{nation.upcase}.zip"
|
40
39
|
end
|
41
40
|
|
42
41
|
def download(file)
|
@@ -2,9 +2,9 @@ require "rubygems"
|
|
2
2
|
require "geo_ruby"
|
3
3
|
|
4
4
|
class Road
|
5
|
-
attr_reader :city, :
|
5
|
+
attr_reader :city, :region, :nation, :zone, :name, :geom, :kind, :table
|
6
6
|
|
7
|
-
def initialize(keys, vals,
|
7
|
+
def initialize(keys, vals, nation=nil, city=nil)
|
8
8
|
s = vals.split("\t")
|
9
9
|
r = {}
|
10
10
|
keys.each_with_index do |k, i|
|
@@ -16,7 +16,7 @@ class Road
|
|
16
16
|
@geom = parse_geom(r[:geom])
|
17
17
|
@kind = parse_kind(kind)
|
18
18
|
@city = city
|
19
|
-
@
|
19
|
+
@nation = nation
|
20
20
|
@table = :roads
|
21
21
|
end
|
22
22
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Geonames
|
2
2
|
class Spot
|
3
|
-
attr_accessor :gid, :name, :ascii, :lat, :lon, :
|
4
|
-
:code, :pop, :tz, :geom, :
|
3
|
+
attr_accessor :gid, :name, :ascii, :lat, :lon, :nation, :kind,
|
4
|
+
:code, :pop, :tz, :geom, :region, :zip, :abbr, :id
|
5
5
|
alias :x :lon
|
6
6
|
alias :y :lat
|
7
7
|
alias :geoname_id :gid
|
@@ -11,17 +11,20 @@ module Geonames
|
|
11
11
|
# = Geonames Spot
|
12
12
|
#
|
13
13
|
# Every geoname type will be parsed as a spot
|
14
|
+
#
|
14
15
|
def initialize(params = nil, kind = nil)
|
15
16
|
return unless params.instance_of? String
|
16
17
|
kind == :zip ? parse_zip(params) : parse(params)
|
17
|
-
if @kind == :
|
18
|
+
if @kind == :region
|
18
19
|
@name.gsub!(/Estado d\w\s/, "")
|
19
20
|
@abbr = get_abbr
|
20
21
|
end
|
21
22
|
end
|
22
23
|
|
23
|
-
#
|
24
|
+
#
|
25
|
+
# Geonames does not have region/state abbr..#fail!
|
24
26
|
# This works 75% of the time in brazil heh
|
27
|
+
#
|
25
28
|
def get_abbr
|
26
29
|
s = @name.split(" ")
|
27
30
|
if s.length > 1
|
@@ -33,32 +36,34 @@ module Geonames
|
|
33
36
|
|
34
37
|
#
|
35
38
|
# Parse Geonames Dump Export
|
36
|
-
|
39
|
+
#
|
40
|
+
def parse row
|
37
41
|
gid, @name, @ascii, @alternates, lat, lon, feat, kind,
|
38
|
-
|
39
|
-
|
40
|
-
|
42
|
+
@nation, cc2, @region, @code, adm3, adm4, @pop, @ele,
|
43
|
+
@gtop, @tz, @up = row.split(/\t/)
|
44
|
+
|
41
45
|
@gid = @geoname_id = gid.to_i
|
42
46
|
@kind = human_code(kind)
|
43
|
-
@province = adm1
|
44
|
-
@code = adm2
|
45
47
|
|
46
|
-
|
48
|
+
parse_geom(lat, lon)
|
49
|
+
# puts "#{@kind} - #{@code} - #{@region}"
|
47
50
|
end
|
48
51
|
|
49
52
|
#
|
50
53
|
# Parse Geonames Zip Export
|
54
|
+
#
|
51
55
|
def parse_zip(row)
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
# @code = adm1
|
56
|
+
nation, @zip, @name, a1, a1c, a2, @code, a3, a3c,
|
57
|
+
lat, lon, acc = row.split(/\t/)
|
58
|
+
|
56
59
|
@kind = :city
|
57
|
-
|
60
|
+
parse_geom(lat, lon)
|
61
|
+
# puts "#{row}\n---\n#{@kind} - #{@code} - #{@zip} #{lat}x#{lon}"
|
58
62
|
end
|
59
63
|
|
60
64
|
#
|
61
65
|
# Parse Geom to float or GeoRuby Point
|
66
|
+
#
|
62
67
|
def parse_geom(lat, lon)
|
63
68
|
@lat, @lon = lat.to_f, lon.to_f
|
64
69
|
|
@@ -82,32 +87,32 @@ module Geonames
|
|
82
87
|
# Translate geonames ADMx to models
|
83
88
|
def human_code(code)
|
84
89
|
case code
|
85
|
-
when 'ADM1' then :
|
90
|
+
when 'ADM1' then :region
|
86
91
|
when 'ADM2', 'ADM3', 'ADM4' then :city
|
87
|
-
|
92
|
+
else :other
|
88
93
|
end
|
89
94
|
end
|
90
95
|
|
91
96
|
class << self
|
92
97
|
|
93
|
-
|
94
|
-
|
95
|
-
|
98
|
+
def nearest(x,y)
|
99
|
+
from_hash(Adapter.find_near(@coll, x, y, 1)[0])
|
100
|
+
end
|
96
101
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
102
|
+
def from_hash(hsh)
|
103
|
+
spot = self.new
|
104
|
+
hsh.each { |key, val| spot.instance_variable_set("@"+key, val) }
|
105
|
+
spot.geom = GeoRuby::SimpleFeatures::Point.from_x_y(*spot.geom)
|
106
|
+
spot
|
107
|
+
end
|
103
108
|
|
104
|
-
|
105
|
-
|
106
|
-
|
109
|
+
def set_coll(name)
|
110
|
+
@coll = name
|
111
|
+
end
|
107
112
|
|
108
|
-
|
109
|
-
|
110
|
-
|
113
|
+
def collection
|
114
|
+
@coll
|
115
|
+
end
|
111
116
|
end
|
112
117
|
end
|
113
118
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'mongoid'
|
2
2
|
require 'mongoid_geospatial'
|
3
|
+
require 'geopolitical/helpers'
|
3
4
|
|
4
5
|
Mongoid.configure do |config|
|
5
6
|
#config.master = Mongo::Connection.new.db("symbolize_test")
|
@@ -8,173 +9,121 @@ end
|
|
8
9
|
|
9
10
|
module Geonames
|
10
11
|
module Models
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
field :zip, type: Integer
|
25
|
-
field :geom, type: Point, spatial: true
|
26
|
-
|
27
|
-
belongs_to :province
|
28
|
-
belongs_to :country, index: true
|
29
|
-
# has_many :hoods
|
30
|
-
|
31
|
-
before_validation :set_defaults
|
32
|
-
|
33
|
-
validates :name, :country, presence: true
|
34
|
-
validates :name, :uniqueness => { :scope => :province_id }
|
35
|
-
|
36
|
-
index name: 1
|
37
|
-
index slug: 1
|
38
|
-
index geom: '2d'
|
39
|
-
|
40
|
-
#spatial_index :geom
|
41
|
-
|
42
|
-
scope :ordered, order_by(name: 1)
|
43
|
-
|
44
|
-
def set_defaults
|
45
|
-
self.country ||= province.try(:country)
|
46
|
-
self.slug ||= name.try(:downcase) # don't use slugize
|
47
|
-
end
|
48
|
-
|
49
|
-
def self.search(search, page)
|
50
|
-
cities = search ? where(:field => /#{search}/i) : all
|
51
|
-
cities.page(page)
|
52
|
-
end
|
53
|
-
|
54
|
-
def <=> other
|
55
|
-
self.name <=> other.name
|
56
|
-
end
|
57
|
-
|
58
|
-
def to_s
|
59
|
-
"#{name}/#{abbr}"
|
60
|
-
end
|
61
|
-
|
62
|
-
def self.from_batch data
|
63
|
-
data.each do |city|
|
64
|
-
info "Writing city #{city.name}"
|
65
|
-
next unless city.country
|
66
|
-
city = new.parse(city)
|
67
|
-
city.country = city.province.country
|
68
|
-
city.save
|
12
|
+
require 'geopolitical/../../app/models/hood'
|
13
|
+
require 'geopolitical/../../app/models/city'
|
14
|
+
require 'geopolitical/../../app/models/region'
|
15
|
+
require 'geopolitical/../../app/models/nation'
|
16
|
+
module MongoWrapper
|
17
|
+
|
18
|
+
class << self
|
19
|
+
|
20
|
+
def nations data, clean
|
21
|
+
Nation.delete_all # if clean
|
22
|
+
data.each do |row|
|
23
|
+
create Nation, parse_nation(row) rescue nil
|
24
|
+
end
|
69
25
|
end
|
70
|
-
end
|
71
26
|
|
72
|
-
def parse(spot)
|
73
|
-
self.name, self.ascii = spot.name, spot.ascii
|
74
|
-
self.code, self.gid = spot.code, spot.gid
|
75
|
-
self.province = Province.find_by(code: spot.province)
|
76
|
-
self.geom = [spot.lon, spot.lat]
|
77
|
-
self.abbr = province.abbr
|
78
|
-
self
|
79
|
-
end
|
80
27
|
|
81
|
-
|
28
|
+
def batch data, clean = false
|
29
|
+
[Region, City].each(&:delete_all) #if clean
|
82
30
|
|
31
|
+
@regions, @cities = data[:region], data[:city]
|
32
|
+
@regions.each { |r| create Region, parse_region(r) }
|
33
|
+
@cities.each { |c| create City, parse_city(c) }
|
34
|
+
end
|
83
35
|
|
84
|
-
|
85
|
-
|
86
|
-
|
36
|
+
def create klass, data
|
37
|
+
klass.create! data
|
38
|
+
rescue => e
|
39
|
+
info "Prob com spot #{klass}, #{data} #{e}"
|
40
|
+
end
|
87
41
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
42
|
+
def translate txt
|
43
|
+
name_i18n = Opt[:locales].reduce({}) do |h, l|
|
44
|
+
h.merge({ l => txt })
|
45
|
+
end
|
46
|
+
end
|
93
47
|
|
94
|
-
belongs_to :country
|
95
|
-
has_many :cities
|
96
48
|
|
97
|
-
|
98
|
-
|
49
|
+
def parse_nation row
|
50
|
+
abbr, iso3, ison, fips, name, capital, area, pop, continent,
|
51
|
+
tld, cur_code, cur_name, phone, pos_code, pos_regex,
|
52
|
+
langs, gid, neighbours = row.split(/\t/)
|
53
|
+
info "Nation: #{name}/#{abbr}"
|
54
|
+
# info "#{row}"
|
55
|
+
# info "------------------------"
|
56
|
+
{
|
57
|
+
name_translations: translate(name),
|
58
|
+
zip: pos_code, cash: cur_code, gid: gid,
|
59
|
+
abbr: abbr, slug: name.downcase, code: iso3, lang: langs
|
60
|
+
}
|
61
|
+
end
|
99
62
|
|
100
|
-
index name: 1
|
101
|
-
index codes: 1
|
102
63
|
|
103
|
-
|
64
|
+
def parse_region s
|
65
|
+
nation = Nation.find_by(abbr: /#{s.nation}/i)
|
66
|
+
info "Region: #{s.name} / #{s.abbr}"
|
67
|
+
{
|
68
|
+
name_translations: translate(s.name),
|
69
|
+
gid: s.gid, abbr: s.abbr,
|
70
|
+
nation: nation, code: s.region
|
71
|
+
}
|
72
|
+
end
|
104
73
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
74
|
+
def parse_city s
|
75
|
+
region = Region.find_by(code: s.region)
|
76
|
+
slug = City.new(slug: s.ascii).slug
|
77
|
+
attempt = slug.dup
|
78
|
+
try = 1
|
79
|
+
until City.where(slug: attempt.downcase).first.nil?
|
80
|
+
attempt = "#{slug}-#{region.abbr}-#{try}"
|
81
|
+
try += 1
|
82
|
+
break if try > 7
|
83
|
+
end
|
84
|
+
|
85
|
+
info s.inspect
|
86
|
+
info "City: #{s.zip} | #{slug} - #{s.name} / #{region.try(:abbr)}"
|
87
|
+
{
|
88
|
+
name_translations: translate(s.name),
|
89
|
+
slug: attempt, gid: s.gid, code: s.code,
|
90
|
+
souls: s.pop, geom: [s.lon, s.lat],
|
91
|
+
region: region, abbr: region.abbr, zip: s.zip # tz
|
92
|
+
}
|
112
93
|
end
|
113
|
-
end
|
114
94
|
|
115
|
-
def parse(spot)
|
116
|
-
self.code, self.name = spot.province, spot.name
|
117
|
-
self.gid = spot.gid
|
118
|
-
self
|
119
95
|
end
|
120
|
-
|
121
96
|
end
|
122
97
|
|
123
98
|
|
124
|
-
class
|
125
|
-
include Mongoid::Document
|
126
|
-
store_in :collection => "countries"
|
99
|
+
# class Nation < Geonames::Spot
|
127
100
|
|
128
|
-
field :gid, type: Integer # geonames id
|
129
|
-
field :name, type: String
|
130
|
-
field :abbr, type: String
|
131
|
-
field :code # optional phone/whatever code
|
132
101
|
|
133
|
-
|
134
|
-
|
102
|
+
# def parse row
|
103
|
+
# end
|
135
104
|
|
136
|
-
|
105
|
+
# def to_hash
|
106
|
+
# { "gid" => @gid.to_s, "name" => @name, "kind" => "nation", "code" => @code}
|
107
|
+
# end
|
137
108
|
|
138
|
-
|
139
|
-
|
109
|
+
# def export
|
110
|
+
# [@gid, @code, @name]
|
111
|
+
# end
|
140
112
|
|
141
|
-
|
113
|
+
# def export_header
|
114
|
+
# ["gid", "code", "name"]
|
115
|
+
# end
|
116
|
+
# end
|
142
117
|
|
143
118
|
|
144
|
-
def parse row
|
145
|
-
self.abbr, @iso3, @ison, @fips, self.name, @capital, @area, @pop, continent, tld,
|
146
|
-
currency, phone, postal, langs, gid, neighbours = row.split(/\t/)
|
147
|
-
self
|
148
|
-
end
|
149
119
|
|
150
|
-
|
151
|
-
|
152
|
-
new.parse(spot).save
|
153
|
-
end
|
154
|
-
end
|
120
|
+
# class Zip
|
121
|
+
# include Mongoid::Document
|
155
122
|
|
156
|
-
|
157
|
-
|
158
|
-
end
|
123
|
+
# field :code
|
124
|
+
# belongs_to :city
|
159
125
|
|
160
|
-
|
161
|
-
[@gid, @code, @name]
|
162
|
-
end
|
163
|
-
|
164
|
-
def export_header
|
165
|
-
["gid", "code", "name"]
|
166
|
-
end
|
167
|
-
end
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
class Zip
|
172
|
-
include Mongoid::Document
|
173
|
-
|
174
|
-
field :code
|
175
|
-
belongs_to :city
|
176
|
-
|
177
|
-
end
|
126
|
+
# end
|
178
127
|
|
179
128
|
end
|
180
129
|
end
|
@@ -1,19 +1,19 @@
|
|
1
1
|
module Geonames
|
2
2
|
module Models
|
3
|
-
module
|
3
|
+
#module Postgis
|
4
4
|
|
5
5
|
class City < ActiveRecord::Base
|
6
6
|
attr_accessor :x, :y, :z
|
7
7
|
|
8
|
-
belongs_to :
|
9
|
-
belongs_to :
|
8
|
+
belongs_to :region
|
9
|
+
belongs_to :nation
|
10
10
|
|
11
|
-
validates_presence_of :
|
11
|
+
validates_presence_of :nation
|
12
12
|
validates_presence_of :name
|
13
|
-
# validates_uniqueness_of :name, :scope => :
|
13
|
+
# validates_uniqueness_of :name, :scope => :region_id
|
14
14
|
|
15
15
|
def abbr
|
16
|
-
|
16
|
+
region.try(:abbr) || nation.abbr
|
17
17
|
end
|
18
18
|
|
19
19
|
def geom=(val)
|
@@ -25,22 +25,22 @@ module Geonames
|
|
25
25
|
|
26
26
|
# Instantiate self.geom as a Point
|
27
27
|
def validation
|
28
|
-
self.
|
28
|
+
self.nation ||= region.nation
|
29
29
|
unless !@x || !@y || @x == "" || @y == ""
|
30
30
|
self.geom = Point.from_x_y(@x.to_f, @y.to_f)
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
class
|
35
|
+
class Region < ActiveRecord::Base
|
36
36
|
has_many :cities
|
37
|
-
belongs_to :
|
37
|
+
belongs_to :nation
|
38
38
|
|
39
|
-
validates_uniqueness_of :name, :abbr, :scope => :
|
39
|
+
validates_uniqueness_of :name, :abbr, :scope => :nation_id
|
40
40
|
end
|
41
41
|
|
42
|
-
class
|
43
|
-
has_many :
|
42
|
+
class Nation < ActiveRecord::Base
|
43
|
+
has_many :regions
|
44
44
|
has_many :cities
|
45
45
|
validates_presence_of :name, :abbr
|
46
46
|
validates_uniqueness_of :name, :abbr
|
@@ -51,8 +51,6 @@ module Geonames
|
|
51
51
|
end
|
52
52
|
|
53
53
|
|
54
|
-
end
|
54
|
+
#end
|
55
55
|
end
|
56
56
|
end
|
57
|
-
|
58
|
-
|
@@ -2,11 +2,11 @@ module Geonames
|
|
2
2
|
module Models
|
3
3
|
module Tokyo
|
4
4
|
|
5
|
-
class
|
5
|
+
class Nation
|
6
6
|
attr_accessor :code, :name, :gid, :iso, :capital, :pop, :currency
|
7
7
|
|
8
8
|
def self.all
|
9
|
-
Tokyo.new.all({ :kind => "
|
9
|
+
Tokyo.new.all({ :kind => "nation" }).map do |c|
|
10
10
|
new(c)
|
11
11
|
end
|
12
12
|
end
|
@@ -46,11 +46,11 @@ module Geonames
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def cities
|
49
|
-
# qry.addcond("
|
49
|
+
# qry.addcond("nation", TBDQRY::QSTREQ, @code)
|
50
50
|
end
|
51
51
|
|
52
52
|
def to_hash
|
53
|
-
# { "gid" => @gid.to_s, "name" => @name, "kind" => "
|
53
|
+
# { "gid" => @gid.to_s, "name" => @name, "kind" => "nation", "code" => @code, "currency" => @currency}
|
54
54
|
{ "gid" => @gid.to_s, "iso" => @iso, "iso3" => @iso3, "iso_num" => @ison, "fips" => @fips,
|
55
55
|
"name" => @name, "capital" => @capital, "area" => @area, "population" => @pop,
|
56
56
|
"continent" => @continent, "tld" => @tld, "currency_code" => @currency, "currency_name" => @currency_name,
|
@@ -68,11 +68,11 @@ module Geonames
|
|
68
68
|
|
69
69
|
end
|
70
70
|
end
|
71
|
-
class
|
71
|
+
class Region
|
72
72
|
attr_accessor :code, :name, :gid
|
73
73
|
|
74
74
|
def self.all
|
75
|
-
Tokyo.new.all({ :kind => "
|
75
|
+
Tokyo.new.all({ :kind => "region" }).map do |c|
|
76
76
|
new(c)
|
77
77
|
end
|
78
78
|
end
|
metadata
CHANGED
@@ -1,29 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: geonames_local
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 3.1.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Marcos Piccinini
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-09-05 00:00:00.000000000 Z
|
13
12
|
dependencies: []
|
14
|
-
description:
|
13
|
+
description: Dumps geonames data to feed a local db
|
15
14
|
email: x@nofxx.com
|
16
15
|
executables:
|
17
16
|
- geonames
|
18
17
|
extensions: []
|
19
18
|
extra_rdoc_files:
|
20
|
-
- LICENSE
|
19
|
+
- MIT-LICENSE
|
21
20
|
- README.rdoc
|
22
21
|
files:
|
23
|
-
- .document
|
24
22
|
- .gitignore
|
25
23
|
- Gemfile
|
26
|
-
- LICENSE
|
24
|
+
- MIT-LICENSE
|
27
25
|
- README.rdoc
|
28
26
|
- Rakefile
|
29
27
|
- bin/geonames
|
@@ -63,31 +61,40 @@ files:
|
|
63
61
|
- task/benchmark.rb
|
64
62
|
- task/benchmark_cabinet.rb
|
65
63
|
homepage: http://github.com/nofxx/geonames_local
|
66
|
-
licenses:
|
67
|
-
|
68
|
-
|
69
|
-
|
64
|
+
licenses:
|
65
|
+
- MIT
|
66
|
+
metadata: {}
|
67
|
+
post_install_message: |2
|
68
|
+
|
69
|
+
Geonames Local
|
70
|
+
--------------
|
71
|
+
|
72
|
+
To use the adapter, install the corresponding gem:
|
73
|
+
|
74
|
+
PostgreSQL => pg
|
75
|
+
MongoDB => mongoid (optional: mongo_ext)
|
76
|
+
Tokyo => tokyocabinet
|
77
|
+
|
78
|
+
Have fun because:
|
70
79
|
rdoc_options: []
|
71
80
|
require_paths:
|
72
81
|
- lib
|
73
82
|
required_ruby_version: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
83
|
requirements:
|
76
|
-
- -
|
84
|
+
- - '>='
|
77
85
|
- !ruby/object:Gem::Version
|
78
86
|
version: '0'
|
79
87
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
|
-
none: false
|
81
88
|
requirements:
|
82
|
-
- -
|
89
|
+
- - '>='
|
83
90
|
- !ruby/object:Gem::Version
|
84
91
|
version: '0'
|
85
92
|
requirements: []
|
86
93
|
rubyforge_project:
|
87
|
-
rubygems_version:
|
94
|
+
rubygems_version: 2.0.7
|
88
95
|
signing_key:
|
89
|
-
specification_version:
|
90
|
-
summary:
|
96
|
+
specification_version: 4
|
97
|
+
summary: Dumps geonames data for local usage
|
91
98
|
test_files:
|
92
99
|
- spec/geonames_local/adapters/mongodb_spec.rb
|
93
100
|
- spec/geonames_local/adapters/postgis_spec.rb
|