cartodb-importer 0.2.13 → 0.2.14
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/lib/cartodb-importer/importer.rb +31 -1
- data/lib/cartodb-importer/version.rb +1 -1
- data/spec/import_spec.rb +37 -0
- metadata +22 -22
@@ -209,6 +209,36 @@ module CartoDB
|
|
209
209
|
end
|
210
210
|
end
|
211
211
|
|
212
|
+
#Now, if there is a ltitude and longitude column, lets create a the_geom for it
|
213
|
+
latitude_possible_names = "'latitude','lat','latitudedecimal','latitud','lati'"
|
214
|
+
longitude_possible_names = "'longitude','lon','lng','longitudedecimal','longitud','long'"
|
215
|
+
|
216
|
+
matching_latitude = nil
|
217
|
+
res = @db_connection["select column_name from information_schema.columns where table_name ='#{@suggested_name}'
|
218
|
+
and lower(column_name) in (#{latitude_possible_names}) LIMIT 1"]
|
219
|
+
if !res.first.nil?
|
220
|
+
matching_latitude= res.first[:column_name]
|
221
|
+
end
|
222
|
+
matching_longitude = nil
|
223
|
+
res = @db_connection["select column_name from information_schema.columns where table_name ='#{@suggested_name}'
|
224
|
+
and lower(column_name) in (#{longitude_possible_names}) LIMIT 1"]
|
225
|
+
if !res.first.nil?
|
226
|
+
matching_longitude= res.first[:column_name]
|
227
|
+
end
|
228
|
+
|
229
|
+
|
230
|
+
if matching_latitude and matching_longitude
|
231
|
+
#we know there is a latitude/longitude columns
|
232
|
+
@db_connection.run("SELECT AddGeometryColumn('#{@suggested_name}','the_geom',4326, 'POINT', 2);")
|
233
|
+
@db_connection.run("UPDATE \"#{@suggested_name}\" SET the_geom = ST_GeomFromText('POINT('|| \"#{matching_longitude}\" ||' '|| \"#{matching_latitude}\" ||')',4326)
|
234
|
+
WHERE \"#{matching_longitude}\" IS NOT NULL AND \"#{matching_latitude}\" IS NOT NULL AND \"#{matching_longitude}\"<>'' AND \"#{matching_latitude}\"<>''")
|
235
|
+
@db_connection.run("CREATE INDEX \"#{@suggested_name}_the_geom_gist\" ON \"#{@suggested_name}\" USING GIST (the_geom)")
|
236
|
+
end
|
237
|
+
|
238
|
+
|
239
|
+
|
240
|
+
|
241
|
+
|
212
242
|
@table_created = true
|
213
243
|
|
214
244
|
FileUtils.rm_rf(path)
|
@@ -253,7 +283,7 @@ module CartoDB
|
|
253
283
|
@db_connection.run("ALTER TABLE #{random_table_name} RENAME COLUMN the_geom TO the_geom_orig;")
|
254
284
|
geom_type = @db_connection["SELECT GeometryType(the_geom_orig) as type from #{random_table_name} LIMIT 1"].first[:type]
|
255
285
|
@db_connection.run("SELECT AddGeometryColumn('#{random_table_name}','the_geom',4326, '#{geom_type}', 2);")
|
256
|
-
@db_connection.run("UPDATE \"#{random_table_name}\" SET the_geom = ST_Transform(the_geom_orig, 4326)")
|
286
|
+
@db_connection.run("UPDATE \"#{random_table_name}\" SET the_geom = ST_Force_2D(ST_Transform(the_geom_orig, 4326))")
|
257
287
|
@db_connection.run("ALTER TABLE #{random_table_name} DROP COLUMN the_geom_orig")
|
258
288
|
@db_connection.run("CREATE INDEX \"#{random_table_name}_the_geom_gist\" ON \"#{random_table_name}\" USING GIST (the_geom)")
|
259
289
|
rescue Exception => msg
|
data/spec/import_spec.rb
CHANGED
@@ -333,4 +333,41 @@ describe CartoDB::Importer do
|
|
333
333
|
result.import_type.should == '.shp'
|
334
334
|
end
|
335
335
|
end
|
336
|
+
|
337
|
+
describe "Import KML" do
|
338
|
+
it "should import a KML ZIP file" do
|
339
|
+
importer = CartoDB::Importer.new :import_from_file => File.expand_path("../support/data/states.kml.zip", __FILE__),
|
340
|
+
:database => "cartodb_importer_test", :username => 'postgres', :password => '',
|
341
|
+
:host => 'localhost', :port => 5432
|
342
|
+
result = importer.import!
|
343
|
+
#result.rows_imported.should == 312
|
344
|
+
#result.import_type.should == '.shp'
|
345
|
+
end
|
346
|
+
end
|
347
|
+
|
348
|
+
describe "Import CSV with latidude/logitude" do
|
349
|
+
it "should import estaciones2.csv" do
|
350
|
+
importer = CartoDB::Importer.new :import_from_file => File.expand_path("../support/data/walmart.csv", __FILE__),
|
351
|
+
:database => "cartodb_importer_test", :username => 'postgres', :password => '',
|
352
|
+
:host => 'localhost', :port => 5432, :suggested_name => 'walmart'
|
353
|
+
result = importer.import!
|
354
|
+
result.name.should == 'walmart'
|
355
|
+
#result.rows_imported.should == 30
|
356
|
+
result.import_type.should == '.csv'
|
357
|
+
end
|
358
|
+
end
|
359
|
+
|
360
|
+
describe "Import CSV with lat/lon" do
|
361
|
+
it "should import estaciones2.csv" do
|
362
|
+
importer = CartoDB::Importer.new :import_from_file => File.expand_path("../support/data/walmart_latlon.csv", __FILE__),
|
363
|
+
:database => "cartodb_importer_test", :username => 'postgres', :password => '',
|
364
|
+
:host => 'localhost', :port => 5432, :suggested_name => 'walmart_latlon'
|
365
|
+
result = importer.import!
|
366
|
+
result.name.should == 'walmart_latlon'
|
367
|
+
#result.rows_imported.should == 30
|
368
|
+
result.import_type.should == '.csv'
|
369
|
+
end
|
370
|
+
end
|
371
|
+
|
372
|
+
|
336
373
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cartodb-importer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.14
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,11 +11,11 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2011-
|
14
|
+
date: 2011-10-03 00:00:00.000000000Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: pg
|
18
|
-
requirement: &
|
18
|
+
requirement: &70348306305600 !ruby/object:Gem::Requirement
|
19
19
|
none: false
|
20
20
|
requirements:
|
21
21
|
- - ~>
|
@@ -23,10 +23,10 @@ dependencies:
|
|
23
23
|
version: '0.11'
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
|
-
version_requirements: *
|
26
|
+
version_requirements: *70348306305600
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: sequel
|
29
|
-
requirement: &
|
29
|
+
requirement: &70348306288700 !ruby/object:Gem::Requirement
|
30
30
|
none: false
|
31
31
|
requirements:
|
32
32
|
- - ! '>='
|
@@ -34,10 +34,10 @@ dependencies:
|
|
34
34
|
version: '0'
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
|
-
version_requirements: *
|
37
|
+
version_requirements: *70348306288700
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
39
|
name: roo
|
40
|
-
requirement: &
|
40
|
+
requirement: &70348306287760 !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
43
|
- - ! '>='
|
@@ -45,10 +45,10 @@ dependencies:
|
|
45
45
|
version: '0'
|
46
46
|
type: :runtime
|
47
47
|
prerelease: false
|
48
|
-
version_requirements: *
|
48
|
+
version_requirements: *70348306287760
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
name: spreadsheet
|
51
|
-
requirement: &
|
51
|
+
requirement: &70348306287120 !ruby/object:Gem::Requirement
|
52
52
|
none: false
|
53
53
|
requirements:
|
54
54
|
- - ! '>='
|
@@ -56,10 +56,10 @@ dependencies:
|
|
56
56
|
version: '0'
|
57
57
|
type: :runtime
|
58
58
|
prerelease: false
|
59
|
-
version_requirements: *
|
59
|
+
version_requirements: *70348306287120
|
60
60
|
- !ruby/object:Gem::Dependency
|
61
61
|
name: google-spreadsheet-ruby
|
62
|
-
requirement: &
|
62
|
+
requirement: &70348306286400 !ruby/object:Gem::Requirement
|
63
63
|
none: false
|
64
64
|
requirements:
|
65
65
|
- - ! '>='
|
@@ -67,10 +67,10 @@ dependencies:
|
|
67
67
|
version: '0'
|
68
68
|
type: :runtime
|
69
69
|
prerelease: false
|
70
|
-
version_requirements: *
|
70
|
+
version_requirements: *70348306286400
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: rubyzip
|
73
|
-
requirement: &
|
73
|
+
requirement: &70348306285500 !ruby/object:Gem::Requirement
|
74
74
|
none: false
|
75
75
|
requirements:
|
76
76
|
- - ! '>='
|
@@ -78,10 +78,10 @@ dependencies:
|
|
78
78
|
version: '0'
|
79
79
|
type: :runtime
|
80
80
|
prerelease: false
|
81
|
-
version_requirements: *
|
81
|
+
version_requirements: *70348306285500
|
82
82
|
- !ruby/object:Gem::Dependency
|
83
83
|
name: builder
|
84
|
-
requirement: &
|
84
|
+
requirement: &70348306284860 !ruby/object:Gem::Requirement
|
85
85
|
none: false
|
86
86
|
requirements:
|
87
87
|
- - ! '>='
|
@@ -89,10 +89,10 @@ dependencies:
|
|
89
89
|
version: '0'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
|
-
version_requirements: *
|
92
|
+
version_requirements: *70348306284860
|
93
93
|
- !ruby/object:Gem::Dependency
|
94
94
|
name: rspec
|
95
|
-
requirement: &
|
95
|
+
requirement: &70348306284240 !ruby/object:Gem::Requirement
|
96
96
|
none: false
|
97
97
|
requirements:
|
98
98
|
- - ! '>='
|
@@ -100,10 +100,10 @@ dependencies:
|
|
100
100
|
version: '0'
|
101
101
|
type: :development
|
102
102
|
prerelease: false
|
103
|
-
version_requirements: *
|
103
|
+
version_requirements: *70348306284240
|
104
104
|
- !ruby/object:Gem::Dependency
|
105
105
|
name: mocha
|
106
|
-
requirement: &
|
106
|
+
requirement: &70348306283580 !ruby/object:Gem::Requirement
|
107
107
|
none: false
|
108
108
|
requirements:
|
109
109
|
- - ! '>='
|
@@ -111,10 +111,10 @@ dependencies:
|
|
111
111
|
version: '0'
|
112
112
|
type: :development
|
113
113
|
prerelease: false
|
114
|
-
version_requirements: *
|
114
|
+
version_requirements: *70348306283580
|
115
115
|
- !ruby/object:Gem::Dependency
|
116
116
|
name: ruby-debug19
|
117
|
-
requirement: &
|
117
|
+
requirement: &70348306282880 !ruby/object:Gem::Requirement
|
118
118
|
none: false
|
119
119
|
requirements:
|
120
120
|
- - ! '>='
|
@@ -122,7 +122,7 @@ dependencies:
|
|
122
122
|
version: '0'
|
123
123
|
type: :development
|
124
124
|
prerelease: false
|
125
|
-
version_requirements: *
|
125
|
+
version_requirements: *70348306282880
|
126
126
|
description: Import CSV, SHP, and other files with data into a PostgreSQL table
|
127
127
|
email:
|
128
128
|
- andrew@vizzuality.com
|