geo_concerns 0.0.1 → 0.0.2
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 +4 -4
- data/.rubocop.yml +2 -0
- data/README.md +6 -1
- data/app/models/concerns/geo_concerns/file_set/derivatives.rb +5 -5
- data/app/models/concerns/geo_concerns/image_file_behavior.rb +1 -1
- data/app/models/concerns/geo_concerns/raster_file_behavior.rb +1 -1
- data/app/models/concerns/geo_concerns/vector_file_behavior.rb +1 -1
- data/app/processors/geo_concerns/processors/base_geo_processor.rb +44 -34
- data/app/processors/geo_concerns/processors/gdal.rb +49 -0
- data/app/processors/geo_concerns/processors/ogr.rb +19 -0
- data/app/processors/geo_concerns/processors/raster/aig.rb +13 -17
- data/app/processors/geo_concerns/processors/raster/base.rb +15 -49
- data/app/processors/geo_concerns/processors/raster/dem.rb +14 -31
- data/app/processors/geo_concerns/processors/raster/info.rb +52 -0
- data/app/processors/geo_concerns/processors/raster/processor.rb +0 -1
- data/app/processors/geo_concerns/processors/vector/base.rb +16 -42
- data/app/processors/geo_concerns/processors/vector/processor.rb +0 -1
- data/app/processors/geo_concerns/processors/vector/shapefile.rb +2 -2
- data/app/processors/geo_concerns/processors/zip.rb +2 -4
- data/geo_concerns.gemspec +7 -8
- data/lib/geo_concerns/version.rb +1 -1
- data/spec/controllers/image_works_controller_spec.rb +16 -0
- data/spec/processors/geo_concerns/processors/base_geo_processor_spec.rb +29 -25
- data/spec/processors/geo_concerns/processors/gdal_spec.rb +59 -0
- data/spec/processors/geo_concerns/processors/ogr_spec.rb +36 -0
- data/spec/processors/geo_concerns/processors/raster/aig_spec.rb +12 -5
- data/spec/processors/geo_concerns/processors/raster/base_spec.rb +15 -47
- data/spec/processors/geo_concerns/processors/raster/dem_spec.rb +14 -10
- data/spec/processors/geo_concerns/processors/raster/info_spec.rb +35 -0
- data/spec/processors/geo_concerns/processors/vector/base_spec.rb +15 -28
- data/spec/processors/geo_concerns/processors/vector/shapefile_spec.rb +1 -1
- metadata +37 -42
@@ -4,7 +4,7 @@ describe GeoConcerns::Processors::Raster::Base do
|
|
4
4
|
let(:output_file) { 'output/geo.png' }
|
5
5
|
let(:file_name) { 'files/geo.tif' }
|
6
6
|
let(:label) {}
|
7
|
-
let(:options) { {
|
7
|
+
let(:options) { { output_size: '150 150', label: label } }
|
8
8
|
|
9
9
|
subject { described_class.new(file_name, {}) }
|
10
10
|
|
@@ -26,61 +26,29 @@ describe GeoConcerns::Processors::Raster::Base do
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
-
describe '#
|
30
|
-
it '
|
31
|
-
expect(subject.class).to
|
32
|
-
expect(File).to receive(:unlink).with("#{output_file}.aux.xml")
|
33
|
-
subject.class.encode_raster(file_name, options, output_file)
|
29
|
+
describe '#encode_queue' do
|
30
|
+
it 'returns an array of command name symbols' do
|
31
|
+
expect(subject.class.encode_queue).to include :translate
|
34
32
|
end
|
35
33
|
end
|
36
34
|
|
37
|
-
describe '#
|
38
|
-
it '
|
39
|
-
expect(subject.class).to
|
40
|
-
expect(FileUtils).to receive(:rm_rf)
|
41
|
-
subject.class.reproject_raster(file_name, options, output_file)
|
35
|
+
describe '#reproject_queue' do
|
36
|
+
it 'returns an array of command name symbols' do
|
37
|
+
expect(subject.class.reproject_queue).to include :warp
|
42
38
|
end
|
43
39
|
end
|
44
40
|
|
45
|
-
describe '#
|
46
|
-
it '
|
47
|
-
expect(subject.class.
|
48
|
-
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
describe '#compress' do
|
53
|
-
it 'returns a gdal_translate command with a compress option' do
|
54
|
-
expect(subject.class.compress(file_name, options, output_file))
|
55
|
-
.to include('gdal_translate', 'COMPRESS=LZW')
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
describe '#get_raster_min_max' do
|
60
|
-
let(:min_max) { subject.class.get_raster_min_max(info_string) }
|
61
|
-
|
62
|
-
context 'when a string has computed min and max' do
|
63
|
-
let(:info_string) { 'Band 1 Block=256x16 Type=Float32 Computed Min/Max=2.054,11.717 ' }
|
64
|
-
|
65
|
-
it 'returns with formatted text' do
|
66
|
-
expect(min_max).to eq('2.054 11.717')
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
context 'when a string does not have a computed min and max' do
|
71
|
-
let(:info_string) { 'Band 1 Block=256x16 Type=Float32' }
|
72
|
-
|
73
|
-
it 'returns with formatted text' do
|
74
|
-
expect(min_max).to eq('')
|
75
|
-
end
|
41
|
+
describe '#encode_raster' do
|
42
|
+
it 'runs commands to encode the raster thumbnail' do
|
43
|
+
expect(subject.class).to receive(:run_commands)
|
44
|
+
subject.class.encode_raster(file_name, options, output_file)
|
76
45
|
end
|
77
46
|
end
|
78
47
|
|
79
|
-
describe '#
|
80
|
-
it '
|
81
|
-
expect(
|
82
|
-
|
83
|
-
expect(subject.class.gdalinfo(file_name)).to eq('info')
|
48
|
+
describe '#reproject_raster' do
|
49
|
+
it 'runs commands to reproject the raster' do
|
50
|
+
expect(subject.class).to receive(:run_commands)
|
51
|
+
subject.class.reproject_raster(file_name, options, output_file)
|
84
52
|
end
|
85
53
|
end
|
86
54
|
end
|
@@ -3,24 +3,28 @@ require 'spec_helper'
|
|
3
3
|
describe GeoConcerns::Processors::Raster::Dem do
|
4
4
|
let(:output_file) { 'output/geo.png' }
|
5
5
|
let(:file_name) { 'files/geo.dem' }
|
6
|
-
let(:options) { {
|
7
|
-
output_size: '150 150',
|
8
|
-
label: :thumbnail }
|
6
|
+
let(:options) { { output_size: '150 150', label: :thumbnail }
|
9
7
|
}
|
10
8
|
|
11
9
|
subject { described_class.new(file_name, {}) }
|
12
10
|
|
13
|
-
describe '#
|
14
|
-
it 'returns
|
15
|
-
expect(subject.class.
|
16
|
-
|
11
|
+
describe '#encode_queue' do
|
12
|
+
it 'returns an array of command name symbols' do
|
13
|
+
expect(subject.class.encode_queue).to include :hillshade
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '#reproject_queue' do
|
18
|
+
it 'returns an array of command name symbols' do
|
19
|
+
expect(subject.class.reproject_queue).to include :hillshade
|
17
20
|
end
|
18
21
|
end
|
19
22
|
|
20
23
|
describe '#hillshade' do
|
21
|
-
it '
|
22
|
-
|
23
|
-
|
24
|
+
it 'executes a gdal hillshade command' do
|
25
|
+
command = "gdaldem hillshade -q -of GTiff \"files/geo.dem\" output/geo.png"
|
26
|
+
expect(subject.class).to receive(:execute).with command
|
27
|
+
subject.class.hillshade(file_name, output_file, options)
|
24
28
|
end
|
25
29
|
end
|
26
30
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'open3'
|
3
|
+
|
4
|
+
describe GeoConcerns::Processors::Raster::Info do
|
5
|
+
let(:path) { 'test.tif' }
|
6
|
+
let(:info_doc) { read_test_data_fixture('gdalinfo.txt') }
|
7
|
+
|
8
|
+
subject { described_class.new(path) }
|
9
|
+
|
10
|
+
context 'when initializing a new info class' do
|
11
|
+
it 'shells out to gdalinfo and sets the doc variable to the output string' do
|
12
|
+
expect(Open3).to receive(:capture3).with("gdalinfo -mm #{path}")
|
13
|
+
.and_return([info_doc, '', ''])
|
14
|
+
expect(subject.doc).to eq(info_doc)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'after intialization' do
|
19
|
+
before do
|
20
|
+
allow(subject).to receive(:doc).and_return(info_doc)
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '#min_max' do
|
24
|
+
it 'returns with min and max values' do
|
25
|
+
expect(subject.min_max).to eq('354.000 900.000')
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe '#size' do
|
30
|
+
it 'returns raster size' do
|
31
|
+
expect(subject.size).to eq('310 266')
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -4,7 +4,7 @@ describe GeoConcerns::Processors::Vector::Base do
|
|
4
4
|
let(:output_file) { 'output/geo.png' }
|
5
5
|
let(:file_name) { 'files/geo.zip' }
|
6
6
|
let(:label) {}
|
7
|
-
let(:options) { {
|
7
|
+
let(:options) { { output_size: '150 150', label: label } }
|
8
8
|
|
9
9
|
subject { described_class.new(file_name, {}) }
|
10
10
|
|
@@ -26,42 +26,29 @@ describe GeoConcerns::Processors::Vector::Base do
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
-
describe '#
|
30
|
-
it '
|
31
|
-
expect(subject.class).to
|
32
|
-
expect(File).to receive(:unlink)
|
33
|
-
expect(File).to receive(:unlink).with("#{output_file}.aux.xml")
|
34
|
-
subject.class.encode_vector(file_name, options, output_file)
|
29
|
+
describe '#encode_queue' do
|
30
|
+
it 'returns an array of command name symbols' do
|
31
|
+
expect(subject.class.encode_queue).to include :rasterize
|
35
32
|
end
|
36
33
|
end
|
37
34
|
|
38
|
-
describe '#
|
39
|
-
it '
|
40
|
-
expect(subject.class).to
|
41
|
-
expect(subject.class).to receive(:zip)
|
42
|
-
expect(FileUtils).to receive(:rm_rf)
|
43
|
-
subject.class.reproject_vector(file_name, options, output_file)
|
35
|
+
describe '#reproject_queue' do
|
36
|
+
it 'returns an array of command name symbols' do
|
37
|
+
expect(subject.class.reproject_queue).to include :zip
|
44
38
|
end
|
45
39
|
end
|
46
40
|
|
47
|
-
describe '#
|
48
|
-
it '
|
49
|
-
expect(subject.class.
|
50
|
-
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
describe '#reproject' do
|
55
|
-
it 'returns a ogr2ogr command' do
|
56
|
-
expect(subject.class.reproject(file_name, options, output_file))
|
57
|
-
.to include('ogr2ogr', 'ESRI Shapefile')
|
41
|
+
describe '#encode_vector' do
|
42
|
+
it 'runs commands to encode the raster thumbnail' do
|
43
|
+
expect(subject.class).to receive(:run_commands)
|
44
|
+
subject.class.encode_vector(file_name, options, output_file)
|
58
45
|
end
|
59
46
|
end
|
60
47
|
|
61
|
-
describe '#
|
62
|
-
it '
|
63
|
-
expect(subject.class.
|
64
|
-
|
48
|
+
describe '#reproject_vector' do
|
49
|
+
it 'runs commands to reproject the raster' do
|
50
|
+
expect(subject.class).to receive(:run_commands)
|
51
|
+
subject.class.reproject_vector(file_name, options, output_file)
|
65
52
|
end
|
66
53
|
end
|
67
54
|
end
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe GeoConcerns::Processors::Vector::Shapefile do
|
4
4
|
let(:output_file) { 'output/geo.png' }
|
5
5
|
let(:file_name) { 'files/Shapefile.zip' }
|
6
|
-
let(:options) { {
|
6
|
+
let(:options) { { output_size: '150 150', label: :thumbnail } }
|
7
7
|
|
8
8
|
subject { described_class.new(file_name, {}) }
|
9
9
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: geo_concerns
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Griffin
|
@@ -12,50 +12,36 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2016-
|
15
|
+
date: 2016-05-05 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
|
-
- !ruby/object:Gem::Dependency
|
18
|
-
name: rails
|
19
|
-
requirement: !ruby/object:Gem::Requirement
|
20
|
-
requirements:
|
21
|
-
- - "~>"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 4.2.6
|
24
|
-
type: :runtime
|
25
|
-
prerelease: false
|
26
|
-
version_requirements: !ruby/object:Gem::Requirement
|
27
|
-
requirements:
|
28
|
-
- - "~>"
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
version: 4.2.6
|
31
17
|
- !ruby/object:Gem::Dependency
|
32
18
|
name: curation_concerns
|
33
19
|
requirement: !ruby/object:Gem::Requirement
|
34
20
|
requirements:
|
35
21
|
- - "~>"
|
36
22
|
- !ruby/object:Gem::Version
|
37
|
-
version: 0.14.0.
|
23
|
+
version: 0.14.0.pre4
|
38
24
|
type: :runtime
|
39
25
|
prerelease: false
|
40
26
|
version_requirements: !ruby/object:Gem::Requirement
|
41
27
|
requirements:
|
42
28
|
- - "~>"
|
43
29
|
- !ruby/object:Gem::Version
|
44
|
-
version: 0.14.0.
|
30
|
+
version: 0.14.0.pre4
|
45
31
|
- !ruby/object:Gem::Dependency
|
46
32
|
name: leaflet-rails
|
47
33
|
requirement: !ruby/object:Gem::Requirement
|
48
34
|
requirements:
|
49
|
-
- - "
|
35
|
+
- - "~>"
|
50
36
|
- !ruby/object:Gem::Version
|
51
|
-
version: '0'
|
37
|
+
version: '0.7'
|
52
38
|
type: :runtime
|
53
39
|
prerelease: false
|
54
40
|
version_requirements: !ruby/object:Gem::Requirement
|
55
41
|
requirements:
|
56
|
-
- - "
|
42
|
+
- - "~>"
|
57
43
|
- !ruby/object:Gem::Version
|
58
|
-
version: '0'
|
44
|
+
version: '0.7'
|
59
45
|
- !ruby/object:Gem::Dependency
|
60
46
|
name: sqlite3
|
61
47
|
requirement: !ruby/object:Gem::Requirement
|
@@ -88,30 +74,30 @@ dependencies:
|
|
88
74
|
name: engine_cart
|
89
75
|
requirement: !ruby/object:Gem::Requirement
|
90
76
|
requirements:
|
91
|
-
- - "
|
77
|
+
- - "~>"
|
92
78
|
- !ruby/object:Gem::Version
|
93
|
-
version: '0'
|
79
|
+
version: '0.8'
|
94
80
|
type: :development
|
95
81
|
prerelease: false
|
96
82
|
version_requirements: !ruby/object:Gem::Requirement
|
97
83
|
requirements:
|
98
|
-
- - "
|
84
|
+
- - "~>"
|
99
85
|
- !ruby/object:Gem::Version
|
100
|
-
version: '0'
|
86
|
+
version: '0.8'
|
101
87
|
- !ruby/object:Gem::Dependency
|
102
88
|
name: solr_wrapper
|
103
89
|
requirement: !ruby/object:Gem::Requirement
|
104
90
|
requirements:
|
105
|
-
- - "
|
91
|
+
- - "~>"
|
106
92
|
- !ruby/object:Gem::Version
|
107
|
-
version: '0'
|
93
|
+
version: '0.10'
|
108
94
|
type: :development
|
109
95
|
prerelease: false
|
110
96
|
version_requirements: !ruby/object:Gem::Requirement
|
111
97
|
requirements:
|
112
|
-
- - "
|
98
|
+
- - "~>"
|
113
99
|
- !ruby/object:Gem::Version
|
114
|
-
version: '0'
|
100
|
+
version: '0.10'
|
115
101
|
- !ruby/object:Gem::Dependency
|
116
102
|
name: fcrepo_wrapper
|
117
103
|
requirement: !ruby/object:Gem::Requirement
|
@@ -158,30 +144,30 @@ dependencies:
|
|
158
144
|
name: rubocop
|
159
145
|
requirement: !ruby/object:Gem::Requirement
|
160
146
|
requirements:
|
161
|
-
- - "
|
147
|
+
- - "~>"
|
162
148
|
- !ruby/object:Gem::Version
|
163
|
-
version: '0'
|
149
|
+
version: '0.39'
|
164
150
|
type: :development
|
165
151
|
prerelease: false
|
166
152
|
version_requirements: !ruby/object:Gem::Requirement
|
167
153
|
requirements:
|
168
|
-
- - "
|
154
|
+
- - "~>"
|
169
155
|
- !ruby/object:Gem::Version
|
170
|
-
version: '0'
|
156
|
+
version: '0.39'
|
171
157
|
- !ruby/object:Gem::Dependency
|
172
158
|
name: rubocop-rspec
|
173
159
|
requirement: !ruby/object:Gem::Requirement
|
174
160
|
requirements:
|
175
|
-
- - "
|
161
|
+
- - "~>"
|
176
162
|
- !ruby/object:Gem::Version
|
177
|
-
version:
|
163
|
+
version: 1.4.1
|
178
164
|
type: :development
|
179
165
|
prerelease: false
|
180
166
|
version_requirements: !ruby/object:Gem::Requirement
|
181
167
|
requirements:
|
182
|
-
- - "
|
168
|
+
- - "~>"
|
183
169
|
- !ruby/object:Gem::Version
|
184
|
-
version:
|
170
|
+
version: 1.4.1
|
185
171
|
- !ruby/object:Gem::Dependency
|
186
172
|
name: factory_girl
|
187
173
|
requirement: !ruby/object:Gem::Requirement
|
@@ -200,16 +186,16 @@ dependencies:
|
|
200
186
|
name: capybara
|
201
187
|
requirement: !ruby/object:Gem::Requirement
|
202
188
|
requirements:
|
203
|
-
- - "
|
189
|
+
- - "~>"
|
204
190
|
- !ruby/object:Gem::Version
|
205
|
-
version: '
|
191
|
+
version: '2.7'
|
206
192
|
type: :development
|
207
193
|
prerelease: false
|
208
194
|
version_requirements: !ruby/object:Gem::Requirement
|
209
195
|
requirements:
|
210
|
-
- - "
|
196
|
+
- - "~>"
|
211
197
|
- !ruby/object:Gem::Version
|
212
|
-
version: '
|
198
|
+
version: '2.7'
|
213
199
|
description: 'Rails engine for Hydra Geo models. Built around Curation Concerns engine. '
|
214
200
|
email:
|
215
201
|
- jrgriffiniii@gmail.com
|
@@ -281,10 +267,13 @@ files:
|
|
281
267
|
- app/presenters/geo_concerns/raster_work_show_presenter.rb
|
282
268
|
- app/presenters/geo_concerns/vector_work_show_presenter.rb
|
283
269
|
- app/processors/geo_concerns/processors/base_geo_processor.rb
|
270
|
+
- app/processors/geo_concerns/processors/gdal.rb
|
271
|
+
- app/processors/geo_concerns/processors/ogr.rb
|
284
272
|
- app/processors/geo_concerns/processors/raster.rb
|
285
273
|
- app/processors/geo_concerns/processors/raster/aig.rb
|
286
274
|
- app/processors/geo_concerns/processors/raster/base.rb
|
287
275
|
- app/processors/geo_concerns/processors/raster/dem.rb
|
276
|
+
- app/processors/geo_concerns/processors/raster/info.rb
|
288
277
|
- app/processors/geo_concerns/processors/raster/processor.rb
|
289
278
|
- app/processors/geo_concerns/processors/vector.rb
|
290
279
|
- app/processors/geo_concerns/processors/vector/base.rb
|
@@ -417,9 +406,12 @@ files:
|
|
417
406
|
- spec/presenters/raster_work_show_presenter_spec.rb
|
418
407
|
- spec/presenters/vector_work_show_presenter_spec.rb
|
419
408
|
- spec/processors/geo_concerns/processors/base_geo_processor_spec.rb
|
409
|
+
- spec/processors/geo_concerns/processors/gdal_spec.rb
|
410
|
+
- spec/processors/geo_concerns/processors/ogr_spec.rb
|
420
411
|
- spec/processors/geo_concerns/processors/raster/aig_spec.rb
|
421
412
|
- spec/processors/geo_concerns/processors/raster/base_spec.rb
|
422
413
|
- spec/processors/geo_concerns/processors/raster/dem_spec.rb
|
414
|
+
- spec/processors/geo_concerns/processors/raster/info_spec.rb
|
423
415
|
- spec/processors/geo_concerns/processors/raster/processor_spec.rb
|
424
416
|
- spec/processors/geo_concerns/processors/vector/base_spec.rb
|
425
417
|
- spec/processors/geo_concerns/processors/vector/processor_spec.rb
|
@@ -503,9 +495,12 @@ test_files:
|
|
503
495
|
- spec/presenters/raster_work_show_presenter_spec.rb
|
504
496
|
- spec/presenters/vector_work_show_presenter_spec.rb
|
505
497
|
- spec/processors/geo_concerns/processors/base_geo_processor_spec.rb
|
498
|
+
- spec/processors/geo_concerns/processors/gdal_spec.rb
|
499
|
+
- spec/processors/geo_concerns/processors/ogr_spec.rb
|
506
500
|
- spec/processors/geo_concerns/processors/raster/aig_spec.rb
|
507
501
|
- spec/processors/geo_concerns/processors/raster/base_spec.rb
|
508
502
|
- spec/processors/geo_concerns/processors/raster/dem_spec.rb
|
503
|
+
- spec/processors/geo_concerns/processors/raster/info_spec.rb
|
509
504
|
- spec/processors/geo_concerns/processors/raster/processor_spec.rb
|
510
505
|
- spec/processors/geo_concerns/processors/vector/base_spec.rb
|
511
506
|
- spec/processors/geo_concerns/processors/vector/processor_spec.rb
|