geo_works 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 +7 -0
- data/.codeclimate.yml +34 -0
- data/.csslintrc +2 -0
- data/.engine_cart.yml +1 -0
- data/.eslintignore +1 -0
- data/.eslintrc +8 -0
- data/.fcrepo_wrapper +3 -0
- data/.gitignore +14 -0
- data/.rubocop.yml +105 -0
- data/.solr_wrapper +7 -0
- data/.travis.yml +33 -0
- data/CONTRIBUTING.md +159 -0
- data/Gemfile +48 -0
- data/LICENSE +202 -0
- data/README.md +143 -0
- data/Rakefile +25 -0
- data/app/assets/images/geo_works/.keep +0 -0
- data/app/assets/images/geo_works/images/geocoder.png +0 -0
- data/app/assets/images/geo_works/images/move-handle.png +0 -0
- data/app/assets/images/geo_works/images/resize-handle.png +0 -0
- data/app/assets/images/geo_works/images/throbber.gif +0 -0
- data/app/assets/javascripts/geo_works/Control.Geocoder.js +1056 -0
- data/app/assets/javascripts/geo_works/application.js +4 -0
- data/app/assets/javascripts/geo_works/bounding_box_selector.js +107 -0
- data/app/assets/javascripts/geo_works/es6-modules.js +7 -0
- data/app/assets/javascripts/geo_works/geo_works_boot.es6 +8 -0
- data/app/assets/javascripts/geo_works/leaflet-boundingbox.js +467 -0
- data/app/assets/javascripts/geo_works/relationships.js +3 -0
- data/app/assets/javascripts/geo_works/relationships/child_works.es6 +20 -0
- data/app/assets/javascripts/geo_works/relationships/parent_works.es6 +20 -0
- data/app/assets/javascripts/geo_works/relationships/related_works.es6 +187 -0
- data/app/assets/stylesheets/geo_works/Control.Geocoder.scss +104 -0
- data/app/assets/stylesheets/geo_works/application.css +18 -0
- data/app/assets/stylesheets/geo_works/bounding_box.scss +15 -0
- data/app/assets/stylesheets/geo_works/leaflet-boundingbox.scss +17 -0
- data/app/assets/stylesheets/geo_works/related_works.scss +29 -0
- data/app/assets/stylesheets/geo_works/thumbnails.scss +13 -0
- data/app/controllers/concerns/geo_works/events_behavior.rb +29 -0
- data/app/controllers/concerns/geo_works/file_sets_controller_behavior.rb +31 -0
- data/app/controllers/concerns/geo_works/geoblacklight_controller_behavior.rb +29 -0
- data/app/controllers/concerns/geo_works/image_works_controller_behavior.rb +9 -0
- data/app/controllers/concerns/geo_works/raster_works_controller_behavior.rb +9 -0
- data/app/controllers/concerns/geo_works/vector_works_controller_behavior.rb +9 -0
- data/app/forms/geo_works/basic_geo_metadata_form.rb +9 -0
- data/app/forms/geo_works/external_metadata_file_form.rb +8 -0
- data/app/forms/geo_works/georeferenced_form.rb +9 -0
- data/app/forms/hyrax/image_work_form.rb +7 -0
- data/app/forms/hyrax/raster_work_form.rb +8 -0
- data/app/forms/hyrax/vector_work_form.rb +8 -0
- data/app/helpers/geo_works/application_helper.rb +4 -0
- data/app/helpers/geo_works/bounding_box_helper.rb +73 -0
- data/app/helpers/geo_works/file_set_actions_helper.rb +31 -0
- data/app/helpers/geo_works/geo_works_helper.rb +22 -0
- data/app/helpers/geo_works/populate_metadata_helper.rb +7 -0
- data/app/jobs/geoblacklight_job.rb +10 -0
- data/app/jobs/geoserver_delivery_job.rb +36 -0
- data/app/models/concerns/geo_works/ability.rb +12 -0
- data/app/models/concerns/geo_works/basic_geo_metadata.rb +21 -0
- data/app/models/concerns/geo_works/external_metadata_file_behavior.rb +31 -0
- data/app/models/concerns/geo_works/extractors/fgdc_helper.rb +9 -0
- data/app/models/concerns/geo_works/extractors/fgdc_metadata_extractor.rb +114 -0
- data/app/models/concerns/geo_works/extractors/iso19139_helper.rb +50 -0
- data/app/models/concerns/geo_works/extractors/mods_helper.rb +15 -0
- data/app/models/concerns/geo_works/file_set_metadata.rb +15 -0
- data/app/models/concerns/geo_works/file_set_presenter_behavior.rb +7 -0
- data/app/models/concerns/geo_works/geo_file_format_behavior.rb +37 -0
- data/app/models/concerns/geo_works/geo_file_set_behavior.rb +11 -0
- data/app/models/concerns/geo_works/georeferenced_behavior.rb +18 -0
- data/app/models/concerns/geo_works/image_file_behavior.rb +14 -0
- data/app/models/concerns/geo_works/image_work_behavior.rb +69 -0
- data/app/models/concerns/geo_works/metadata_extraction_helper.rb +27 -0
- data/app/models/concerns/geo_works/raster_file_behavior.rb +14 -0
- data/app/models/concerns/geo_works/raster_work_behavior.rb +82 -0
- data/app/models/concerns/geo_works/solr_document_behavior.rb +46 -0
- data/app/models/concerns/geo_works/vector_file_behavior.rb +14 -0
- data/app/models/concerns/geo_works/vector_work_behavior.rb +78 -0
- data/app/presenters/geo_works/geo_works_show_presenter.rb +48 -0
- data/app/presenters/geo_works/image_work_show_presenter.rb +5 -0
- data/app/presenters/geo_works/raster_work_show_presenter.rb +5 -0
- data/app/presenters/geo_works/vector_work_show_presenter.rb +5 -0
- data/app/processors/geo_works/geoblacklight_event_processor.rb +29 -0
- data/app/processors/geo_works/geoblacklight_event_processor/delete_processor.rb +13 -0
- data/app/processors/geo_works/geoblacklight_event_processor/processor.rb +28 -0
- data/app/processors/geo_works/geoblacklight_event_processor/unknown_event.rb +15 -0
- data/app/processors/geo_works/geoblacklight_event_processor/update_processor.rb +15 -0
- data/app/processors/geo_works/processors/base_geo_processor.rb +81 -0
- data/app/processors/geo_works/processors/gdal.rb +49 -0
- data/app/processors/geo_works/processors/image.rb +66 -0
- data/app/processors/geo_works/processors/ogr.rb +19 -0
- data/app/processors/geo_works/processors/raster.rb +26 -0
- data/app/processors/geo_works/processors/raster/aig.rb +40 -0
- data/app/processors/geo_works/processors/raster/base.rb +41 -0
- data/app/processors/geo_works/processors/raster/dem.rb +29 -0
- data/app/processors/geo_works/processors/raster/info.rb +52 -0
- data/app/processors/geo_works/processors/rendering.rb +79 -0
- data/app/processors/geo_works/processors/vector.rb +24 -0
- data/app/processors/geo_works/processors/vector/base.rb +44 -0
- data/app/processors/geo_works/processors/vector/info.rb +84 -0
- data/app/processors/geo_works/processors/vector/shapefile.rb +20 -0
- data/app/processors/geo_works/processors/zip.rb +29 -0
- data/app/renderers/geo_works/coverage_renderer.rb +39 -0
- data/app/runners/geo_works/runners/raster_derivatives.rb +9 -0
- data/app/runners/geo_works/runners/vector_derivatives.rb +9 -0
- data/app/schemas/geo_works/basic_geo_metadata_optional.rb +40 -0
- data/app/schemas/geo_works/basic_geo_metadata_required.rb +25 -0
- data/app/schemas/geo_works/file_set_metadata_required.rb +5 -0
- data/app/services/geo_works/authority_service.rb +29 -0
- data/app/services/geo_works/delivery/geoserver.rb +118 -0
- data/app/services/geo_works/delivery_service.rb +11 -0
- data/app/services/geo_works/discovery.rb +4 -0
- data/app/services/geo_works/discovery/abstract_document.rb +37 -0
- data/app/services/geo_works/discovery/document_builder.rb +46 -0
- data/app/services/geo_works/discovery/document_builder/basic_metadata_builder.rb +71 -0
- data/app/services/geo_works/discovery/document_builder/composite_builder.rb +21 -0
- data/app/services/geo_works/discovery/document_builder/date_builder.rb +53 -0
- data/app/services/geo_works/discovery/document_builder/document_helper.rb +10 -0
- data/app/services/geo_works/discovery/document_builder/document_path.rb +91 -0
- data/app/services/geo_works/discovery/document_builder/layer_info_builder.rb +65 -0
- data/app/services/geo_works/discovery/document_builder/references_builder.rb +101 -0
- data/app/services/geo_works/discovery/document_builder/slug_builder.rb +24 -0
- data/app/services/geo_works/discovery/document_builder/spatial_builder.rb +37 -0
- data/app/services/geo_works/discovery/document_builder/wxs.rb +76 -0
- data/app/services/geo_works/discovery/geoblacklight_document.rb +152 -0
- data/app/services/geo_works/events_generator.rb +24 -0
- data/app/services/geo_works/events_generator/composite_generator.rb +18 -0
- data/app/services/geo_works/events_generator/geoblacklight_event_generator.rb +53 -0
- data/app/services/geo_works/events_generator/geoserver_event_generator.rb +33 -0
- data/app/services/geo_works/file_set_derivatives_service.rb +67 -0
- data/app/services/geo_works/image_format_service.rb +6 -0
- data/app/services/geo_works/metadata_format_service.rb +6 -0
- data/app/services/geo_works/raster_format_service.rb +6 -0
- data/app/services/geo_works/vector_format_service.rb +6 -0
- data/app/services/hyrax/curation_concern.rb +18 -0
- data/app/values/geo_works/coverage.rb +36 -0
- data/app/values/geo_works/time_period.rb +30 -0
- data/app/views/geo_works/_attribute_rows.html.erb +4 -0
- data/app/views/geo_works/_form_progress.html.erb +50 -0
- data/app/views/geo_works/_guts4form.html.erb +47 -0
- data/app/views/geo_works/_member.html.erb +11 -0
- data/app/views/geo_works/_metadata.html.erb +13 -0
- data/app/views/geo_works/_relationships.html.erb +12 -0
- data/app/views/geo_works/_representative_media.html.erb +5 -0
- data/app/views/geo_works/file_sets/_form.html.erb +48 -0
- data/app/views/geo_works/file_sets/actions/_default_actions.html.erb +16 -0
- data/app/views/geo_works/file_sets/actions/_image_actions.html.erb +22 -0
- data/app/views/geo_works/file_sets/actions/_metadata_actions.html.erb +16 -0
- data/app/views/geo_works/file_sets/actions/_raster_actions.html.erb +25 -0
- data/app/views/geo_works/file_sets/actions/_vector_actions.html.erb +25 -0
- data/app/views/geo_works/file_sets/media_display/_geo.html.erb +16 -0
- data/app/views/geo_works/file_sets/new.html.erb +12 -0
- data/app/views/geo_works/related/_child_member.html.erb +13 -0
- data/app/views/geo_works/related/_child_works.html.erb +24 -0
- data/app/views/geo_works/related/_external_metadata_file_member.html.erb +11 -0
- data/app/views/geo_works/related/_external_metadata_files.html.erb +24 -0
- data/app/views/geo_works/related/_geo_files.html.erb +24 -0
- data/app/views/geo_works/related/_new_child_member.html.erb +22 -0
- data/app/views/geo_works/related/_new_parent_member.html.erb +13 -0
- data/app/views/geo_works/related/_parent_member.html.erb +13 -0
- data/app/views/geo_works/related/_parent_works.html.erb +22 -0
- data/app/views/hyrax/image_works/_file_actions.html.erb +8 -0
- data/app/views/hyrax/image_works/_form.html.erb +16 -0
- data/app/views/hyrax/image_works/_image_actions.html.erb +11 -0
- data/app/views/hyrax/image_works/_image_work.html.erb +2 -0
- data/app/views/hyrax/image_works/_show_actions.html.erb +22 -0
- data/app/views/hyrax/image_works/show.html.erb +31 -0
- data/app/views/hyrax/raster_works/_file_actions.html.erb +8 -0
- data/app/views/hyrax/raster_works/_form.html.erb +16 -0
- data/app/views/hyrax/raster_works/_raster_actions.html.erb +11 -0
- data/app/views/hyrax/raster_works/_raster_work.html.erb +2 -0
- data/app/views/hyrax/raster_works/_show_actions.html.erb +22 -0
- data/app/views/hyrax/raster_works/show.html.erb +31 -0
- data/app/views/hyrax/vector_works/_file_actions.html.erb +8 -0
- data/app/views/hyrax/vector_works/_form.html.erb +16 -0
- data/app/views/hyrax/vector_works/_show_actions.html.erb +22 -0
- data/app/views/hyrax/vector_works/_vector_actions.html.erb +11 -0
- data/app/views/hyrax/vector_works/_vector_work.html.erb +2 -0
- data/app/views/hyrax/vector_works/show.html.erb +31 -0
- data/app/views/records/edit_fields/_coverage.html.erb +3 -0
- data/app/views/records/edit_fields/_should_populate_metadata.html.erb +10 -0
- data/app/vocabs/geo_works/geo_terms.rb +12 -0
- data/config/discovery/geoblacklight-schema.json +214 -0
- data/config/fcrepo_wrapper_test.yml +3 -0
- data/config/geoblacklight.yml +12 -0
- data/config/geoserver.yml +27 -0
- data/config/initializers/geo_server.rb +17 -0
- data/config/initializers/geoblacklight_config.rb +18 -0
- data/config/initializers/simpler_tiles.rb +65 -0
- data/config/locales/image_work.en.yml +8 -0
- data/config/locales/raster_work.en.yml +8 -0
- data/config/locales/vector_work.en.yml +8 -0
- data/config/routes.rb +24 -0
- data/config/simpler_tiles.yml +24 -0
- data/config/solr_wrapper_test.yml +7 -0
- data/docker-compose-full.yml +30 -0
- data/docker-compose.yml +9 -0
- data/geo_works.gemspec +44 -0
- data/lib/generators/geo_works/install_generator.rb +152 -0
- data/lib/generators/geo_works/templates/actors/hyrax/actors/image_work_actor.rb +6 -0
- data/lib/generators/geo_works/templates/actors/hyrax/actors/raster_work_actor.rb +6 -0
- data/lib/generators/geo_works/templates/actors/hyrax/actors/vector_work_actor.rb +6 -0
- data/lib/generators/geo_works/templates/config/authorities/image_formats.yml +7 -0
- data/lib/generators/geo_works/templates/config/authorities/metadata_formats.yml +7 -0
- data/lib/generators/geo_works/templates/config/authorities/raster_formats.yml +13 -0
- data/lib/generators/geo_works/templates/config/authorities/vector_formats.yml +7 -0
- data/lib/generators/geo_works/templates/config/initializers/hyrax_derivative_path_monkey_patch.rb +18 -0
- data/lib/generators/geo_works/templates/controllers/hyrax/file_sets_controller.rb +7 -0
- data/lib/generators/geo_works/templates/controllers/hyrax/image_works_controller.rb +7 -0
- data/lib/generators/geo_works/templates/controllers/hyrax/raster_works_controller.rb +8 -0
- data/lib/generators/geo_works/templates/controllers/hyrax/vector_works_controller.rb +8 -0
- data/lib/generators/geo_works/templates/geo_works.js +1 -0
- data/lib/generators/geo_works/templates/geo_works.scss +3 -0
- data/lib/generators/geo_works/templates/models/file_set.rb +4 -0
- data/lib/generators/geo_works/templates/models/image_work.rb +7 -0
- data/lib/generators/geo_works/templates/models/raster_work.rb +8 -0
- data/lib/generators/geo_works/templates/models/vector_work.rb +8 -0
- data/lib/generators/geo_works/templates/presenters/file_set_presenter.rb +3 -0
- data/lib/generators/geo_works/templates/spec/actor_spec.rb.erb +9 -0
- data/lib/generators/geo_works/templates/spec/controller_spec.rb.erb +9 -0
- data/lib/generators/geo_works/templates/spec/model_spec.rb.erb +9 -0
- data/lib/geo_works.rb +9 -0
- data/lib/geo_works/engine.rb +4 -0
- data/lib/geo_works/version.rb +3 -0
- data/lib/tasks/geo_works_tasks.rake +4 -0
- data/run-docker.sh +16 -0
- data/solr/config/_rest_managed.json +3 -0
- data/solr/config/admin-extra.html +31 -0
- data/solr/config/elevate.xml +36 -0
- data/solr/config/mapping-ISOLatin1Accent.txt +246 -0
- data/solr/config/protwords.txt +21 -0
- data/solr/config/schema.xml +372 -0
- data/solr/config/scripts.conf +24 -0
- data/solr/config/solrconfig.xml +321 -0
- data/solr/config/spellings.txt +2 -0
- data/solr/config/stopwords.txt +58 -0
- data/solr/config/stopwords_en.txt +58 -0
- data/solr/config/synonyms.txt +31 -0
- data/solr/config/xslt/example.xsl +132 -0
- data/solr/config/xslt/example_atom.xsl +67 -0
- data/solr/config/xslt/example_rss.xsl +66 -0
- data/solr/config/xslt/luke.xsl +337 -0
- data/spec/controllers/file_sets_controller_spec.rb +70 -0
- data/spec/controllers/image_works_controller_spec.rb +40 -0
- data/spec/controllers/raster_works_controller_spec.rb +36 -0
- data/spec/controllers/vector_works_controller_spec.rb +69 -0
- data/spec/factories/collections.rb +17 -0
- data/spec/factories/external_metadata_files.rb +20 -0
- data/spec/factories/image_files.rb +32 -0
- data/spec/factories/image_works.rb +69 -0
- data/spec/factories/permission_templates.rb +41 -0
- data/spec/factories/raster_files.rb +35 -0
- data/spec/factories/raster_works.rb +88 -0
- data/spec/factories/sipity_entities.rb +7 -0
- data/spec/factories/users.rb +26 -0
- data/spec/factories/vector_files.rb +31 -0
- data/spec/factories/vector_works.rb +84 -0
- data/spec/factories/workflow_states.rb +6 -0
- data/spec/factories/workflows.rb +6 -0
- data/spec/features/create_image_work_spec.rb +34 -0
- data/spec/features/create_raster_work_spec.rb +35 -0
- data/spec/features/create_vector_work_spec.rb +34 -0
- data/spec/features/image_work_show_spec.rb +62 -0
- data/spec/features/raster_work_show_spec.rb +62 -0
- data/spec/features/vector_work_show_spec.rb +61 -0
- data/spec/forms/geo_works/basic_geo_metadata_form_spec.rb +31 -0
- data/spec/forms/geo_works/external_metadata_file_form_spec.rb +30 -0
- data/spec/forms/geo_works/georeferenced_form_spec.rb +33 -0
- data/spec/forms/hyrax/image_work_form_spec.rb +11 -0
- data/spec/forms/hyrax/raster_work_form_spec.rb +17 -0
- data/spec/forms/hyrax/vector_work_form_spec.rb +17 -0
- data/spec/helpers/bounding_box_helper_spec.rb +39 -0
- data/spec/helpers/geo_works/file_set_actions_helper_spec.rb +70 -0
- data/spec/helpers/geo_works/populate_metadata_helper_spec.rb +31 -0
- data/spec/helpers/geo_works_helper_spec.rb +30 -0
- data/spec/jobs/geoblacklight_job_spec.rb +18 -0
- data/spec/jobs/geoserver_delivery_job_spec.rb +45 -0
- data/spec/models/concerns/basic_geo_metadata_spec.rb +21 -0
- data/spec/models/concerns/geo_works/file_set/derivatives_spec.rb +102 -0
- data/spec/models/concerns/geo_works/file_set/geo_file_format_behavior_spec.rb +56 -0
- data/spec/models/external_metadata_file_spec.rb +118 -0
- data/spec/models/file_set_spec.rb +9 -0
- data/spec/models/image_file_spec.rb +48 -0
- data/spec/models/image_work_spec.rb +71 -0
- data/spec/models/raster_file_spec.rb +48 -0
- data/spec/models/raster_work_spec.rb +122 -0
- data/spec/models/solr_document_spec.rb +41 -0
- data/spec/models/vector_file_spec.rb +48 -0
- data/spec/models/vector_work_spec.rb +109 -0
- data/spec/presenters/file_set_presenter_spec.rb +13 -0
- data/spec/presenters/geo_works_show_presenter_spec.rb +46 -0
- data/spec/presenters/image_work_show_presenter_spec.rb +51 -0
- data/spec/presenters/raster_work_show_presenter_spec.rb +74 -0
- data/spec/presenters/vector_work_show_presenter_spec.rb +41 -0
- data/spec/processors/geo_works/geoblacklight_event_processor_spec.rb +80 -0
- data/spec/processors/geo_works/processors/base_geo_processor_spec.rb +115 -0
- data/spec/processors/geo_works/processors/gdal_spec.rb +59 -0
- data/spec/processors/geo_works/processors/image_spec.rb +64 -0
- data/spec/processors/geo_works/processors/ogr_spec.rb +36 -0
- data/spec/processors/geo_works/processors/raster/aig_spec.rb +35 -0
- data/spec/processors/geo_works/processors/raster/base_spec.rb +54 -0
- data/spec/processors/geo_works/processors/raster/dem_spec.rb +30 -0
- data/spec/processors/geo_works/processors/raster/info_spec.rb +35 -0
- data/spec/processors/geo_works/processors/raster/processor_spec.rb +39 -0
- data/spec/processors/geo_works/processors/rendering_spec.rb +64 -0
- data/spec/processors/geo_works/processors/vector/base_spec.rb +54 -0
- data/spec/processors/geo_works/processors/vector/info_spec.rb +50 -0
- data/spec/processors/geo_works/processors/vector/processor_spec.rb +28 -0
- data/spec/processors/geo_works/processors/vector/shapefile_spec.rb +17 -0
- data/spec/processors/geo_works/processors/zip_spec.rb +39 -0
- data/spec/renderers/geo_works/coverage_renderer_spec.rb +21 -0
- data/spec/services/geo_works/delivery/geoserver_spec.rb +117 -0
- data/spec/services/geo_works/delivery_service_spec.rb +24 -0
- data/spec/services/geo_works/discovery/abstract_document_spec.rb +23 -0
- data/spec/services/geo_works/discovery/document_builder/basic_metadata_builder_spec.rb +35 -0
- data/spec/services/geo_works/discovery/document_builder/wxs_spec.rb +71 -0
- data/spec/services/geo_works/discovery/document_builder_spec.rb +220 -0
- data/spec/services/geo_works/discovery/geoblacklight_document_spec.rb +20 -0
- data/spec/services/geo_works/event_generator_spec.rb +18 -0
- data/spec/services/geo_works/events_generator/geoblacklight_event_generator_spec.rb +84 -0
- data/spec/services/geo_works/events_generator/geoserver_event_generator_spec.rb +22 -0
- data/spec/services/geo_works/raster_format_service_spec.rb +13 -0
- data/spec/services/hyrax/derivative_path_spec.rb +26 -0
- data/spec/spec_helper.rb +77 -0
- data/spec/support/backport_test.rb +14 -0
- data/spec/support/controllers/engine_helpers.rb +7 -0
- data/spec/support/database_cleaner.rb +18 -0
- data/spec/support/factory_girl.rb +3 -0
- data/spec/support/features.rb +14 -0
- data/spec/support/features/session_helpers.rb +40 -0
- data/spec/support/fixture_reader.rb +7 -0
- data/spec/support/helpers/controller_level_helpers.rb +27 -0
- data/spec/support/views/test_view_helpers.rb +10 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +24 -0
- data/spec/values/coverage_spec.rb +40 -0
- data/tasks/geo_works.rake +39 -0
- data/template.rb +10 -0
- metadata +789 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
class GeoWorksShowPresenter < Hyrax::WorkShowPresenter
|
|
3
|
+
delegate :spatial, :temporal, :issued, :coverage, :provenance, :layer_modified,
|
|
4
|
+
:identifier, to: :solr_document
|
|
5
|
+
class_attribute :file_format_service
|
|
6
|
+
|
|
7
|
+
def geo_file_set_presenters
|
|
8
|
+
# filter for geo file sets
|
|
9
|
+
file_set_presenters.select do |member|
|
|
10
|
+
file_format_service.include? member.solr_document.fetch(:geo_mime_type_tesim, [])[0]
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def external_metadata_file_set_presenters
|
|
15
|
+
# filter for external metadata files
|
|
16
|
+
file_set_presenters.select do |member|
|
|
17
|
+
MetadataFormatService.include? member.solr_document.fetch(:geo_mime_type_tesim, [])[0]
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def parent_work_presenters
|
|
22
|
+
# filter out collection presenters
|
|
23
|
+
member_of_presenters.select do |member|
|
|
24
|
+
member.model_name.name != "Collection"
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def member_of_presenters
|
|
29
|
+
Hyrax::PresenterFactory.build_presenters(member_of_ids,
|
|
30
|
+
collection_presenter_class,
|
|
31
|
+
*presenter_factory_arguments)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def member_of_ids
|
|
35
|
+
ActiveFedora::SolrService.query("{!field f=member_ids_ssim}#{id}",
|
|
36
|
+
fl: ActiveFedora.id_field)
|
|
37
|
+
.map { |x| x.fetch(ActiveFedora.id_field) }
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def attribute_to_html(field, options = {})
|
|
41
|
+
if field == :coverage
|
|
42
|
+
GeoWorks::CoverageRenderer.new(field, send(field), options).render
|
|
43
|
+
else
|
|
44
|
+
super field, options
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
class GeoblacklightEventProcessor
|
|
3
|
+
attr_reader :event
|
|
4
|
+
def initialize(event)
|
|
5
|
+
@event = event
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
delegate :process, to: :processor
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def event_type
|
|
13
|
+
event['event']
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def processor
|
|
17
|
+
case event_type
|
|
18
|
+
when 'CREATED'
|
|
19
|
+
UpdateProcessor.new(event)
|
|
20
|
+
when 'UPDATED'
|
|
21
|
+
UpdateProcessor.new(event)
|
|
22
|
+
when 'DELETED'
|
|
23
|
+
DeleteProcessor.new(event)
|
|
24
|
+
else
|
|
25
|
+
UnknownEvent.new(event)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
class GeoblacklightEventProcessor
|
|
3
|
+
class Processor
|
|
4
|
+
attr_reader :event
|
|
5
|
+
def initialize(event)
|
|
6
|
+
@event = event
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
def event_type
|
|
12
|
+
event['event']
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def id
|
|
16
|
+
event['id']
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def doc
|
|
20
|
+
event['doc']
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def index
|
|
24
|
+
RSolr.connect(url: GeoWorks::Geoblacklight.config['url'])
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
class GeoblacklightEventProcessor
|
|
3
|
+
class UnknownEvent < Processor
|
|
4
|
+
attr_reader :event
|
|
5
|
+
def initialize(event)
|
|
6
|
+
@event = event
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def process
|
|
10
|
+
Rails.logger.info("Unable to process event type #{event_type}")
|
|
11
|
+
false
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
class GeoblacklightEventProcessor
|
|
3
|
+
class UpdateProcessor < Processor
|
|
4
|
+
def process
|
|
5
|
+
index.update params: { overwrite: true },
|
|
6
|
+
data: [doc].to_json,
|
|
7
|
+
headers: { 'Content-Type' => 'application/json' }
|
|
8
|
+
index.commit
|
|
9
|
+
true
|
|
10
|
+
rescue RSolr::Error::Http
|
|
11
|
+
false
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
module Processors
|
|
3
|
+
module BaseGeoProcessor
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
|
|
6
|
+
included do
|
|
7
|
+
# Chains together and recursively runs a set of commands.
|
|
8
|
+
# Except for the last command in the queue, a temp file
|
|
9
|
+
# is created as output and is then fed into the input of the next.
|
|
10
|
+
# Temp files are deleted in reverse order after the last command
|
|
11
|
+
# is run. The commands must have the same method signature:
|
|
12
|
+
# command_name(in_path, out_path, options)
|
|
13
|
+
#
|
|
14
|
+
# @param in_path [String] file input path
|
|
15
|
+
# @param out_path [String] processor output file path
|
|
16
|
+
# @param method_queue [Array] set of commands to run
|
|
17
|
+
# @param options [Hash] creation options to pass
|
|
18
|
+
def self.run_commands(in_path, out_path, method_queue, options)
|
|
19
|
+
next_step = method_queue.shift
|
|
20
|
+
if method_queue.empty?
|
|
21
|
+
method(next_step).call(in_path, out_path, options)
|
|
22
|
+
else
|
|
23
|
+
temp = temp_path(out_path)
|
|
24
|
+
method(next_step).call(in_path, temp, options)
|
|
25
|
+
run_commands(temp, out_path, method_queue, options)
|
|
26
|
+
FileUtils.rm_rf(temp)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Returns a path to an intermediate temp file or directory.
|
|
31
|
+
# @param path [String] input file path to base temp path on
|
|
32
|
+
# @return [String] tempfile path
|
|
33
|
+
def self.temp_path(path)
|
|
34
|
+
time = (Time.now.to_f * 1000).to_i
|
|
35
|
+
"#{File.dirname(path)}/#{File.basename(path, File.extname(path))}_#{time}"
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def options_for(_format)
|
|
40
|
+
{
|
|
41
|
+
label: label,
|
|
42
|
+
output_size: output_size,
|
|
43
|
+
output_srid: output_srid,
|
|
44
|
+
basename: basename,
|
|
45
|
+
id: id
|
|
46
|
+
}
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Returns the label directive or an empty string.
|
|
50
|
+
# @return [Sting] output label
|
|
51
|
+
def label
|
|
52
|
+
directives.fetch(:label, '')
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Transforms the size directive into a GDAL size parameter.
|
|
56
|
+
# @return [String] derivative size
|
|
57
|
+
def output_size
|
|
58
|
+
return unless directives[:size]
|
|
59
|
+
directives[:size].tr('x', ' ')
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Gets srid for reprojection derivative or returns WGS 84.
|
|
63
|
+
# @return [String] spatial reference code
|
|
64
|
+
def output_srid
|
|
65
|
+
directives.fetch(:srid, 'EPSG:4326')
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Extracts the base file name (without extension) from the source file path.
|
|
69
|
+
# @return [String] base file name for source
|
|
70
|
+
def basename
|
|
71
|
+
File.basename(source_path, File.extname(source_path))
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Gets the fileset id or returns nil.
|
|
75
|
+
# @return [String] fileset id
|
|
76
|
+
def id
|
|
77
|
+
directives.fetch(:id, nil)
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
module Processors
|
|
3
|
+
module Gdal
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
|
|
6
|
+
included do
|
|
7
|
+
# Executes a gdal_translate command. Used to translate a raster
|
|
8
|
+
# format into a different format. Also used in generating thumbnails
|
|
9
|
+
# from vector data.
|
|
10
|
+
# @param in_path [String] file input path
|
|
11
|
+
# @param out_path [String] processor output file path
|
|
12
|
+
# @param options [Hash] creation options
|
|
13
|
+
def self.translate(in_path, out_path, _options)
|
|
14
|
+
execute "gdal_translate -q -ot Byte -of GTiff \"#{in_path}\" #{out_path}"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Executes a gdalwarp command. Used to transform a raster
|
|
18
|
+
# from one projection into another.
|
|
19
|
+
# @param in_path [String] file input path
|
|
20
|
+
# @param out_path [String] processor output file path
|
|
21
|
+
# @param options [Hash] creation options
|
|
22
|
+
def self.warp(in_path, out_path, options)
|
|
23
|
+
execute "gdalwarp -q -r bilinear -t_srs #{options[:output_srid]} "\
|
|
24
|
+
"#{in_path} #{out_path} -co 'COMPRESS=NONE'"
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Executes a gdal_translate command. Used to compress
|
|
28
|
+
# a previously uncompressed raster.
|
|
29
|
+
# @param in_path [String] file input path
|
|
30
|
+
# @param out_path [String] processor output file path
|
|
31
|
+
# @param options [Hash] creation options
|
|
32
|
+
def self.compress(in_path, out_path, options)
|
|
33
|
+
execute "gdal_translate -q -ot Byte -a_srs #{options[:output_srid]} "\
|
|
34
|
+
"#{in_path} #{out_path} -co 'COMPRESS=LZW'"
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Executes a gdal_rasterize command. Used to rasterize vector
|
|
38
|
+
# format into raster format.
|
|
39
|
+
# @param in_path [String] file input path
|
|
40
|
+
# #param options [Hash] creation options
|
|
41
|
+
# @param out_path [String] processor output file path
|
|
42
|
+
def self.rasterize(in_path, out_path, options)
|
|
43
|
+
execute "gdal_rasterize -q -burn 0 -init 255 -ot Byte -ts "\
|
|
44
|
+
"#{options[:output_size]} -of GTiff #{in_path} #{out_path}"
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
require 'mini_magick'
|
|
2
|
+
|
|
3
|
+
module GeoWorks
|
|
4
|
+
module Processors
|
|
5
|
+
module Image
|
|
6
|
+
extend ActiveSupport::Concern
|
|
7
|
+
included do
|
|
8
|
+
# Uses imagemagick to resize an image and convert it to the output format.
|
|
9
|
+
# Keeps the aspect ratio of the original image and adds padding to
|
|
10
|
+
# to the output image. The file extension is the output format.
|
|
11
|
+
# @param in_path [String] file input path
|
|
12
|
+
# @param out_path [String] processor output file path.
|
|
13
|
+
# @param options [Hash] creation options
|
|
14
|
+
# @option options [String] `:output_size` as "w h" or "wxh"
|
|
15
|
+
# rubocop:disable Metrics/MethodLength
|
|
16
|
+
def self.convert(in_path, out_path, options)
|
|
17
|
+
size = options[:output_size].tr(' ', 'x')
|
|
18
|
+
convert = MiniMagick::Tool::Convert.new(whiny: false)
|
|
19
|
+
convert << in_path
|
|
20
|
+
convert << "-resize"
|
|
21
|
+
convert << size
|
|
22
|
+
convert << "-extent"
|
|
23
|
+
convert << size
|
|
24
|
+
convert << "-background"
|
|
25
|
+
convert << "white"
|
|
26
|
+
convert << "-gravity"
|
|
27
|
+
convert << "center"
|
|
28
|
+
convert << out_path
|
|
29
|
+
|
|
30
|
+
# suppress stderr b/c geotiffs return 'unknown field' warnings
|
|
31
|
+
convert.call { |_stdout, _stderr| }
|
|
32
|
+
end
|
|
33
|
+
# rubocop:enable Metrics/MethodLength
|
|
34
|
+
|
|
35
|
+
# Trims extra whitespace.
|
|
36
|
+
# @param in_path [String] file input path
|
|
37
|
+
# @param out_path [String] processor output file path.
|
|
38
|
+
# @param options [Hash] creation options
|
|
39
|
+
def self.trim(in_path, out_path, _options)
|
|
40
|
+
MiniMagick::Tool::Convert.new do |convert|
|
|
41
|
+
convert << in_path
|
|
42
|
+
convert << "-trim"
|
|
43
|
+
convert << out_path
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Centers and pads image.
|
|
48
|
+
# @param in_path [String] file input path
|
|
49
|
+
# @param out_path [String] processor output file path.
|
|
50
|
+
# @param options [Hash] creation options
|
|
51
|
+
def self.center(in_path, out_path, options)
|
|
52
|
+
MiniMagick::Tool::Convert.new do |convert|
|
|
53
|
+
convert << "-size"
|
|
54
|
+
convert << options[:output_size].tr(' ', 'x')
|
|
55
|
+
convert << "xc:white"
|
|
56
|
+
convert << in_path
|
|
57
|
+
convert << "-gravity"
|
|
58
|
+
convert << "center"
|
|
59
|
+
convert << "-composite"
|
|
60
|
+
convert << out_path
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
module Processors
|
|
3
|
+
module Ogr
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
|
|
6
|
+
included do
|
|
7
|
+
# Executes a ogr2ogr command. Used to reproject a
|
|
8
|
+
# vector dataset and save the output as a shapefile
|
|
9
|
+
# @param in_path [String] file input path
|
|
10
|
+
# #param options [Hash] creation options
|
|
11
|
+
# @param out_path [String] processor output file path
|
|
12
|
+
def self.reproject(in_path, out_path, options)
|
|
13
|
+
execute "env SHAPE_ENCODING= ogr2ogr -q -nln #{options[:id]} -f 'ESRI Shapefile'"\
|
|
14
|
+
" -t_srs #{options[:output_srid]} -preserve_fid '#{out_path}' '#{in_path}'"
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module GeoWorks
|
|
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
|
+
GeoWorks::Processors::Raster::Dem
|
|
17
|
+
when 'application/octet-stream; gdal-format=AIG'
|
|
18
|
+
GeoWorks::Processors::Raster::Aig
|
|
19
|
+
else
|
|
20
|
+
GeoWorks::Processors::Raster::Base
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
module Processors
|
|
3
|
+
module Raster
|
|
4
|
+
class Aig < GeoWorks::Processors::Raster::Base
|
|
5
|
+
include GeoWorks::Processors::Zip
|
|
6
|
+
|
|
7
|
+
def self.encode(path, options, output_file)
|
|
8
|
+
unzip(path, output_file) do |zip_path|
|
|
9
|
+
info = Info.new(zip_path)
|
|
10
|
+
options[:min_max] = info.min_max
|
|
11
|
+
case options[:label]
|
|
12
|
+
when :thumbnail
|
|
13
|
+
encode_raster(zip_path, output_file, options)
|
|
14
|
+
when :display_raster
|
|
15
|
+
reproject_raster(zip_path, output_file, options)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Set of commands to run to reproject the AIG.
|
|
21
|
+
# @return [Array] set of command name symbols
|
|
22
|
+
def self.reproject_queue
|
|
23
|
+
[:warp, :translate]
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Executes a gdal_translate command to translate a raster
|
|
27
|
+
# format into a different format with a scaling options. This command
|
|
28
|
+
# scales the min and max values of the raster into the 0 to 255 range.
|
|
29
|
+
# Scale is inverted (255 to 0) to create a better visualization.
|
|
30
|
+
# @param in_path [String] file input path
|
|
31
|
+
# @param out_path [String] processor output file path
|
|
32
|
+
# @param options [Hash] creation options
|
|
33
|
+
def self.translate(in_path, out_path, options)
|
|
34
|
+
execute "gdal_translate -scale #{options[:min_max]} 255 0 "\
|
|
35
|
+
"-q -ot Byte -of GTiff \"#{in_path}\" #{out_path}"
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|