geo_concerns 0.0.10 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -0
- data/.travis.yml +8 -4
- data/README.md +23 -8
- data/app/controllers/concerns/geo_concerns/messenger_behavior.rb +29 -0
- data/app/jobs/delivery_job.rb +15 -2
- data/app/jobs/geoblacklight_job.rb +10 -0
- data/app/models/concerns/geo_concerns/file_set/derivatives.rb +11 -9
- data/app/models/concerns/geo_concerns/solr_document_behavior.rb +5 -0
- data/app/presenters/geo_concerns/geo_concerns_show_presenter.rb +1 -1
- data/app/processors/geo_concerns/processors/base_geo_processor.rb +9 -24
- data/app/processors/geo_concerns/processors/image.rb +59 -0
- data/app/processors/geo_concerns/processors/ogr.rb +1 -1
- data/app/processors/geo_concerns/processors/raster.rb +18 -3
- data/app/processors/geo_concerns/processors/raster/base.rb +1 -0
- data/app/processors/geo_concerns/processors/rendering.rb +79 -0
- data/app/processors/geo_concerns/processors/vector.rb +16 -3
- data/app/processors/geo_concerns/processors/vector/base.rb +3 -2
- data/app/processors/geo_concerns/processors/vector/info.rb +21 -3
- data/app/services/geo_concerns/delivery/geoserver.rb +43 -6
- data/app/services/geo_concerns/discovery/abstract_document.rb +2 -1
- data/app/services/geo_concerns/discovery/document_builder.rb +2 -3
- data/app/services/geo_concerns/discovery/document_builder/basic_metadata_builder.rb +13 -2
- data/app/services/geo_concerns/discovery/document_builder/date_builder.rb +2 -0
- data/app/services/geo_concerns/discovery/document_builder/document_path.rb +12 -7
- data/app/services/geo_concerns/discovery/document_builder/references_builder.rb +20 -1
- data/app/services/geo_concerns/discovery/document_builder/spatial_builder.rb +2 -0
- data/app/services/geo_concerns/discovery/document_builder/wxs.rb +81 -0
- data/app/services/geo_concerns/discovery/geoblacklight_document.rb +9 -3
- data/app/services/geo_concerns/events_generator.rb +25 -0
- data/app/services/geo_concerns/events_generator/base_events_generator.rb +22 -0
- data/app/services/geo_concerns/events_generator/composite_generator.rb +18 -0
- data/app/services/geo_concerns/events_generator/geoblacklight_event_generator.rb +44 -0
- data/app/services/geo_concerns/events_generator/geoserver_event_generator.rb +30 -0
- data/app/services/geo_concerns/local_messaging_client.rb +18 -0
- data/app/services/geo_concerns/rabbit_messaging_client.rb +38 -0
- data/app/values/geo_concerns/time_period.rb +4 -5
- data/app/views/geo_concerns/_attribute_rows.html.erb +1 -0
- data/app/views/geo_concerns/_form_additional_information.html.erb +1 -0
- data/app/views/geo_concerns/file_sets/actions/_default_actions.html.erb +1 -1
- data/app/views/geo_concerns/file_sets/actions/_image_actions.html.erb +1 -1
- data/app/views/geo_concerns/file_sets/actions/_metadata_actions.html.erb +1 -1
- data/app/views/geo_concerns/file_sets/actions/_raster_actions.html.erb +2 -2
- data/app/views/geo_concerns/file_sets/actions/_vector_actions.html.erb +2 -2
- data/app/views/geo_concerns/file_sets/media_display/_geo.html.erb +2 -1
- data/docker-compose-full.yml +30 -0
- data/docker-compose.yml +4 -5
- data/geo_concerns.gemspec +5 -4
- data/lib/generators/geo_concerns/install_generator.rb +19 -25
- data/lib/generators/geo_concerns/templates/config/geoblacklight.yml +12 -0
- data/lib/generators/geo_concerns/templates/config/geoserver.yml +2 -0
- data/lib/generators/geo_concerns/templates/config/initializers/geoblacklight_config.rb +13 -0
- data/lib/generators/geo_concerns/templates/config/initializers/messaging_config.rb +34 -0
- data/lib/generators/geo_concerns/templates/config/initializers/simpler_tiles.rb +65 -0
- data/lib/generators/geo_concerns/templates/config/messaging.yml +15 -0
- data/lib/generators/geo_concerns/templates/config/simpler_tiles.yml +24 -0
- data/lib/generators/geo_concerns/templates/controllers/curation_concerns/file_sets_controller.rb +1 -0
- data/lib/generators/geo_concerns/templates/controllers/curation_concerns/image_works_controller.rb +1 -0
- data/lib/generators/geo_concerns/templates/controllers/curation_concerns/raster_works_controller.rb +1 -0
- data/lib/generators/geo_concerns/templates/controllers/curation_concerns/vector_works_controller.rb +1 -0
- data/lib/geo_concerns/version.rb +1 -1
- data/run-docker.sh +11 -1
- data/spec/controllers/file_sets_controller_spec.rb +50 -0
- data/spec/jobs/delivery_job_spec.rb +30 -7
- data/spec/models/concerns/geo_concerns/file_set/derivatives_spec.rb +9 -3
- data/spec/models/solr_document_spec.rb +6 -0
- data/spec/processors/geo_concerns/processors/base_geo_processor_spec.rb +15 -22
- data/spec/processors/geo_concerns/processors/image_spec.rb +71 -0
- data/spec/processors/geo_concerns/processors/rendering_spec.rb +64 -0
- data/spec/processors/geo_concerns/processors/vector/base_spec.rb +1 -1
- data/spec/processors/geo_concerns/processors/vector/info_spec.rb +10 -1
- data/spec/services/geo_concerns/delivery/geoserver_spec.rb +30 -6
- data/spec/services/{derivative_path_spec.rb → geo_concerns/derivative_path_spec.rb} +0 -0
- data/spec/services/geo_concerns/discovery/document_builder/wxs_spec.rb +69 -0
- data/spec/services/geo_concerns/discovery/document_builder_spec.rb +48 -32
- data/spec/services/geo_concerns/discovery/geoblacklight_document_spec.rb +1 -0
- data/spec/services/geo_concerns/events_generator/geoblacklight_event_generator_spec.rb +87 -0
- data/spec/services/geo_concerns/events_generator/geoserver_event_generator_spec.rb +40 -0
- data/spec/services/geo_concerns/local_messaging_client_spec.rb +35 -0
- data/spec/services/geo_concerns/rabbit_messaging_client_spec.rb +35 -0
- data/spec/services/{raster_format_service_spec.rb → geo_concerns/raster_format_service_spec.rb} +0 -0
- data/template.rb +1 -1
- metadata +85 -31
- data/app/processors/geo_concerns/processors/mapnik.rb +0 -35
- data/app/processors/geo_concerns/processors/raster/processor.rb +0 -26
- data/app/processors/geo_concerns/processors/vector/processor.rb +0 -24
- data/lib/generators/geo_concerns/templates/config/locales/geo_concerns.en.yml +0 -4
- data/lib/generators/geo_concerns/templates/config/mapnik.yml +0 -24
- data/spec/processors/geo_concerns/processors/mapnik_spec.rb +0 -70
@@ -1,35 +0,0 @@
|
|
1
|
-
require 'simple_mapnik'
|
2
|
-
|
3
|
-
module GeoConcerns
|
4
|
-
module Processors
|
5
|
-
module Mapnik
|
6
|
-
extend ActiveSupport::Concern
|
7
|
-
|
8
|
-
included do
|
9
|
-
def self.mapnik_vector_thumbnail(in_path, out_path, options)
|
10
|
-
vector_info = GeoConcerns::Processors::Vector::Info.new(in_path)
|
11
|
-
options[:name] = vector_info.name
|
12
|
-
SimpleMapnik.register_datasources mapnik_datasources
|
13
|
-
map = SimpleMapnik::Map.new(*mapnik_size(options))
|
14
|
-
map.load_string(mapnik_config(in_path, options).xml)
|
15
|
-
map.zoom_all
|
16
|
-
map.to_file out_path
|
17
|
-
end
|
18
|
-
|
19
|
-
def self.mapnik_size(options)
|
20
|
-
options[:output_size].split(' ').map(&:to_i)
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.mapnik_config(in_path, options)
|
24
|
-
path_name = "#{in_path}/#{options[:name]}"
|
25
|
-
SimpleMapnik::Config.new(path_name)
|
26
|
-
end
|
27
|
-
|
28
|
-
def self.mapnik_datasources
|
29
|
-
standard = '/usr/local/lib/mapnik/input'
|
30
|
-
Dir.exist?(standard) ? standard : '/usr/lib/mapnik/input'
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
module GeoConcerns
|
2
|
-
module Processors
|
3
|
-
module Raster
|
4
|
-
class Processor < Hydra::Derivatives::Processors::Processor
|
5
|
-
def process
|
6
|
-
raster_processor_class.new(source_path,
|
7
|
-
directives,
|
8
|
-
output_file_service: output_file_service).process
|
9
|
-
end
|
10
|
-
|
11
|
-
# Returns a raster processor class based on mime type passed in the directives object.
|
12
|
-
# @return raster processing class
|
13
|
-
def raster_processor_class
|
14
|
-
case directives.fetch(:input_format)
|
15
|
-
when 'text/plain; gdal-format=USGSDEM'
|
16
|
-
GeoConcerns::Processors::Raster::Dem
|
17
|
-
when 'application/octet-stream; gdal-format=AIG'
|
18
|
-
GeoConcerns::Processors::Raster::Aig
|
19
|
-
else
|
20
|
-
GeoConcerns::Processors::Raster::Base
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
module GeoConcerns
|
2
|
-
module Processors
|
3
|
-
module Vector
|
4
|
-
class Processor < Hydra::Derivatives::Processors::Processor
|
5
|
-
def process
|
6
|
-
vector_processor_class.new(source_path,
|
7
|
-
directives,
|
8
|
-
output_file_service: output_file_service).process
|
9
|
-
end
|
10
|
-
|
11
|
-
# Returns a vector processor class based on mime type passed in the directives object.
|
12
|
-
# @return vector processing class
|
13
|
-
def vector_processor_class
|
14
|
-
case directives.fetch(:input_format)
|
15
|
-
when 'application/zip; ogr-format="ESRI Shapefile"'
|
16
|
-
GeoConcerns::Processors::Vector::Shapefile
|
17
|
-
else
|
18
|
-
GeoConcerns::Processors::Vector::Base
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# Basic Mapnik style settings. Values are explained here:
|
2
|
-
# https://github.com/mapnik/mapnik/wiki/XMLConfigReference
|
3
|
-
|
4
|
-
# Use '#ffffff' for a solid white background.
|
5
|
-
# Add two zeros to a six digit hex color code
|
6
|
-
# for a png (does not work with jpeg) image
|
7
|
-
# with a transparent background.
|
8
|
-
background_color: '#ffffff00'
|
9
|
-
|
10
|
-
# Polygon feature settings
|
11
|
-
polygon_fill_color: '#fffff0'
|
12
|
-
|
13
|
-
# Line feature settings
|
14
|
-
line_stroke_color: '#483d8b'
|
15
|
-
line_stroke_width: '0.3'
|
16
|
-
|
17
|
-
# Point feature settings
|
18
|
-
marker_fill: '#0000ff'
|
19
|
-
marker_width: '5'
|
20
|
-
marker_height: '5'
|
21
|
-
marker_stroke_color: '#483d8b'
|
22
|
-
marker_stroke_width: '0.2'
|
23
|
-
marker_placement: 'point'
|
24
|
-
marker_allow_overlap-overlap: 'true'
|
@@ -1,70 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe GeoConcerns::Processors::Mapnik do
|
4
|
-
before do
|
5
|
-
class TestProcessor
|
6
|
-
include GeoConcerns::Processors::Mapnik
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
after { Object.send(:remove_const, :TestProcessor) }
|
11
|
-
|
12
|
-
subject { TestProcessor.new }
|
13
|
-
|
14
|
-
let(:output_file) { 'output/geo.png' }
|
15
|
-
let(:file_name) { 'files' }
|
16
|
-
let(:options) { { output_size: '150 150' } }
|
17
|
-
|
18
|
-
describe '#mapnik_vector_thumbnail' do
|
19
|
-
let(:map) { double }
|
20
|
-
let(:info) { double }
|
21
|
-
|
22
|
-
before do
|
23
|
-
allow(GeoConcerns::Processors::Vector::Info).to receive(:new).and_return(info)
|
24
|
-
allow(SimpleMapnik::Map).to receive(:new).and_return(map)
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'saves a vector thumbnail using simple_mapnik' do
|
28
|
-
expect(info).to receive(:name).and_return('test')
|
29
|
-
expect(map).to receive(:load_string)
|
30
|
-
expect(map).to receive(:zoom_all)
|
31
|
-
expect(map).to receive(:to_file).with(output_file)
|
32
|
-
subject.class.mapnik_vector_thumbnail(file_name, output_file, options)
|
33
|
-
end
|
34
|
-
|
35
|
-
describe '#mapnik_size' do
|
36
|
-
it 'returns an array of width and height' do
|
37
|
-
expect(subject.class.mapnik_size(options)).to eq([150, 150])
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
describe '#mapnik_config' do
|
42
|
-
it 'returns a mapnik config object' do
|
43
|
-
options[:name] = 'test'
|
44
|
-
expect(subject.class.mapnik_config(file_name, options)).to be_a(SimpleMapnik::Config)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
describe '#mapnik_datasources' do
|
49
|
-
context 'with a mapnik plugin directory in a standard location' do
|
50
|
-
before do
|
51
|
-
allow(Dir).to receive(:exist?).and_return(true)
|
52
|
-
end
|
53
|
-
|
54
|
-
it 'returns a path to the standard input pugin directory' do
|
55
|
-
expect(subject.class.mapnik_datasources).to eq('/usr/local/lib/mapnik/input')
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
context 'with a mapnik plugin directory that is not in a standard location' do
|
60
|
-
before do
|
61
|
-
allow(Dir).to receive(:exist?).and_return(false)
|
62
|
-
end
|
63
|
-
|
64
|
-
it 'returns an alternate path to the input pugin directory' do
|
65
|
-
expect(subject.class.mapnik_datasources).to eq('/usr/lib/mapnik/input')
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|