geonames_local 2.0.1 → 3.1.1
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.
- 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
|