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,50 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
module Extractors
|
|
3
|
+
module Iso19139Helper
|
|
4
|
+
NS = {
|
|
5
|
+
'xmlns:gmd' => 'http://www.isotc211.org/2005/gmd',
|
|
6
|
+
'xmlns:gco' => 'http://www.isotc211.org/2005/gco'
|
|
7
|
+
}.freeze
|
|
8
|
+
|
|
9
|
+
# TODO: Migrate this code into an XSLT?
|
|
10
|
+
# TODO: Need to support multivalued fields
|
|
11
|
+
def extract_iso19139_metadata(doc)
|
|
12
|
+
h = {}
|
|
13
|
+
doc.at_xpath('//gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:title/gco:CharacterString', NS).tap do |node|
|
|
14
|
+
h[:title] = [node.text.strip]
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
doc.at_xpath('//gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox', NS).tap do |node|
|
|
18
|
+
w = node.at_xpath('gmd:westBoundLongitude/gco:Decimal', NS).text.to_f
|
|
19
|
+
e = node.at_xpath('gmd:eastBoundLongitude/gco:Decimal', NS).text.to_f
|
|
20
|
+
n = node.at_xpath('gmd:northBoundLatitude/gco:Decimal', NS).text.to_f
|
|
21
|
+
s = node.at_xpath('gmd:southBoundLatitude/gco:Decimal', NS).text.to_f
|
|
22
|
+
h[:coverage] = GeoWorks::Coverage.new(n, e, s, w).to_s
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
doc.at_xpath('//gmd:identificationInfo/gmd:MD_DataIdentification/gmd:abstract/gco:CharacterString', NS).tap do |node|
|
|
26
|
+
h[:description] = [node.text.strip]
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
doc.xpath('//gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode[@codeListValue=\'originator\']', NS).each do |node|
|
|
30
|
+
h[:creator] = begin
|
|
31
|
+
[node.at_xpath('ancestor-or-self::*/gmd:individualName', NS).text.strip]
|
|
32
|
+
rescue
|
|
33
|
+
[node.at_xpath('ancestor-or-self::*/gmd:organisationName', NS).text.strip]
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# TODO: Not sure if custodian is the same as source
|
|
38
|
+
doc.xpath('//gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode[@codeListValue=\'custodian\']', NS).each do |node|
|
|
39
|
+
h[:source] = begin
|
|
40
|
+
[node.at_xpath('ancestor-or-self::*/gmd:individualName', NS).text.strip]
|
|
41
|
+
rescue
|
|
42
|
+
[node.at_xpath('ancestor-or-self::*/gmd:organisationName', NS).text.strip]
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
h
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
module Extractors
|
|
3
|
+
module ModsHelper
|
|
4
|
+
NS = {
|
|
5
|
+
'xmlns:mods' => 'http://www.loc.gov/mods/v3'
|
|
6
|
+
}.freeze
|
|
7
|
+
def extract_mods_metadata(doc)
|
|
8
|
+
{
|
|
9
|
+
title: [doc.at_xpath('//mods:mods/mods:titleInfo/mods:title', NS).text],
|
|
10
|
+
description: [doc.at_xpath('//mods:mods/mods:abstract', NS).text]
|
|
11
|
+
}
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
# Attributes and methods for basic geospatial metadata used by Works
|
|
3
|
+
module FileSetMetadata
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
|
|
6
|
+
included do
|
|
7
|
+
apply_schema ::GeoWorks::FileSetMetadataRequired,
|
|
8
|
+
ActiveFedora::SchemaIndexingStrategy.new(
|
|
9
|
+
ActiveFedora::Indexers::GlobalIndexer.new(
|
|
10
|
+
[:stored_searchable, :symbol]
|
|
11
|
+
)
|
|
12
|
+
)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
module GeoFileFormatBehavior
|
|
3
|
+
extend ActiveSupport::Concern
|
|
4
|
+
|
|
5
|
+
def image_file?
|
|
6
|
+
GeoWorks::ImageFormatService.include?(geo_mime_type)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def raster_file?
|
|
10
|
+
GeoWorks::RasterFormatService.include?(geo_mime_type)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def vector_file?
|
|
14
|
+
GeoWorks::VectorFormatService.include?(geo_mime_type)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def external_metadata_file?
|
|
18
|
+
GeoWorks::MetadataFormatService.include?(geo_mime_type)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def geo_file_format?
|
|
22
|
+
image_file? || raster_file? || vector_file? || external_metadata_file?
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def image_work?
|
|
26
|
+
false
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def raster_work?
|
|
30
|
+
false
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def vector_work?
|
|
34
|
+
false
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
module GeoFileSetBehavior
|
|
3
|
+
extend ActiveSupport::Concern
|
|
4
|
+
include ::GeoWorks::GeoFileFormatBehavior
|
|
5
|
+
include ::GeoWorks::ImageFileBehavior
|
|
6
|
+
include ::GeoWorks::RasterFileBehavior
|
|
7
|
+
include ::GeoWorks::VectorFileBehavior
|
|
8
|
+
include ::GeoWorks::ExternalMetadataFileBehavior
|
|
9
|
+
include ::GeoWorks::FileSetMetadata
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
# Attributes and methods for georeferenced files
|
|
3
|
+
module GeoreferencedBehavior
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
|
|
6
|
+
included do
|
|
7
|
+
# Defines the OGC coordinate reference system (CRS) identifier for the resource
|
|
8
|
+
# @see http://www.opengeospatial.org/ogcna OGC Naming Authority
|
|
9
|
+
# @example
|
|
10
|
+
# raster_file.cartographic_projection = "urn:ogc:def:crs:EPSG:6.3:26986"
|
|
11
|
+
property :cartographic_projection,
|
|
12
|
+
predicate: ::RDF::Vocab::Bibframe.cartographicProjection,
|
|
13
|
+
multiple: false do |index|
|
|
14
|
+
index.as :stored_searchable
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
# Attributes and methods for image files
|
|
3
|
+
module ImageFileBehavior
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
|
|
6
|
+
# Retrieve the Image Work of which this Object is a member
|
|
7
|
+
# @return [GeoWorks::ImageWork]
|
|
8
|
+
def image_work
|
|
9
|
+
parents.select do |parent|
|
|
10
|
+
parent.class.included_modules.include?(::GeoWorks::ImageWorkBehavior)
|
|
11
|
+
end.to_a
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
# Attributes and methods for image works
|
|
3
|
+
module ImageWorkBehavior
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
include ::GeoWorks::MetadataExtractionHelper
|
|
6
|
+
|
|
7
|
+
included do
|
|
8
|
+
type [Hydra::PCDM::Vocab::PCDMTerms.Object,
|
|
9
|
+
Hydra::Works::Vocab::WorksTerms.GenericWork,
|
|
10
|
+
::GeoWorks::GeoTerms.ImageWork]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def image_file
|
|
14
|
+
members.select(&:image_file?).to_a.first
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def metadata_files
|
|
18
|
+
members.select(&:external_metadata_file?)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def raster_works
|
|
22
|
+
members.select(&:raster_work?)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Defines type by what it is and isn't
|
|
26
|
+
|
|
27
|
+
# This is an Image Resource
|
|
28
|
+
# @return [Boolean]
|
|
29
|
+
def image_work?
|
|
30
|
+
true
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# This is not an ImageFile Resource
|
|
34
|
+
# @return [Boolean]
|
|
35
|
+
def image_file?
|
|
36
|
+
false
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# This is not an ImageFile Resource
|
|
40
|
+
# @return [Boolean]
|
|
41
|
+
def raster_work?
|
|
42
|
+
false
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# This is not an ImageFile Resource
|
|
46
|
+
# @return [Boolean]
|
|
47
|
+
def raster_file?
|
|
48
|
+
false
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# This is not an ImageFile Resource
|
|
52
|
+
# @return [Boolean]
|
|
53
|
+
def vector_work?
|
|
54
|
+
false
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# This is not an ImageFile Resource
|
|
58
|
+
# @return [Boolean]
|
|
59
|
+
def vector_file?
|
|
60
|
+
false
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# This is not an ExternalMetadataFile Resource
|
|
64
|
+
# @return [Boolean]
|
|
65
|
+
def external_metadata_file?
|
|
66
|
+
false
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
module MetadataExtractionHelper
|
|
3
|
+
# Extracts properties from the constitutent external metadata file
|
|
4
|
+
# @return [Hash]
|
|
5
|
+
def extract_metadata(id)
|
|
6
|
+
return {} if metadata_files.blank?
|
|
7
|
+
metadata_file = metadata_files.find { |f| f.id == id }
|
|
8
|
+
metadata_file.extract_metadata if metadata_file
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Sets properties from the constitutent external metadata file
|
|
12
|
+
def populate_metadata(id)
|
|
13
|
+
extract_metadata(id).each do |k, v|
|
|
14
|
+
send("#{k}=".to_sym, v) # set each property
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
attr_accessor :should_populate_metadata
|
|
19
|
+
|
|
20
|
+
def should_populate_metadata=(args)
|
|
21
|
+
@should_populate_metadata = args.present? && args != ''
|
|
22
|
+
return unless should_populate_metadata
|
|
23
|
+
populate_metadata(args)
|
|
24
|
+
save
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
# Attributes and methods for raster files
|
|
3
|
+
module RasterFileBehavior
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
include ::GeoWorks::GeoreferencedBehavior
|
|
6
|
+
# Retrieve the Raster Work of which this Object is a member
|
|
7
|
+
# @return [GeoWorks::Raster]
|
|
8
|
+
def raster_work
|
|
9
|
+
parents.select do |parent|
|
|
10
|
+
parent.class.included_modules.include?(::GeoWorks::RasterWorkBehavior)
|
|
11
|
+
end.to_a
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Attributes and methods for raster works
|
|
2
|
+
module GeoWorks
|
|
3
|
+
module RasterWorkBehavior
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
include ::GeoWorks::MetadataExtractionHelper
|
|
6
|
+
|
|
7
|
+
included do
|
|
8
|
+
type [Hydra::PCDM::Vocab::PCDMTerms.Object,
|
|
9
|
+
Hydra::Works::Vocab::WorksTerms.GenericWork,
|
|
10
|
+
::GeoWorks::GeoTerms.RasterWork]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def raster_files
|
|
14
|
+
members.select(&:raster_file?)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def metadata_files
|
|
18
|
+
members.select(&:external_metadata_file?)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def vector_works
|
|
22
|
+
members.select(&:vector_work?)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Defines type by what it is and isn't
|
|
26
|
+
# @return [Boolean]
|
|
27
|
+
def image_work?
|
|
28
|
+
false
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def image_file?
|
|
32
|
+
false
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def raster_work?
|
|
36
|
+
true
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def raster_file?
|
|
40
|
+
false
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def vector_work?
|
|
44
|
+
false
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def vector_file?
|
|
48
|
+
false
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def external_metadata_file?
|
|
52
|
+
false
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Retrieve all Image Works for which georeferencing generates this Raster Work
|
|
56
|
+
# @return [Array]
|
|
57
|
+
def image_works
|
|
58
|
+
ordered_by.select do |parent|
|
|
59
|
+
parent.class.included_modules.include?(::GeoWorks::ImageWorkBehavior)
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# Retrieve the only Image Works for which georeferencing generates this Raster Work
|
|
64
|
+
# @return [GeoWorks::ImageWork]
|
|
65
|
+
def image_work
|
|
66
|
+
image_works.first
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def to_solr(solr_doc = {})
|
|
70
|
+
super.tap do |doc|
|
|
71
|
+
doc[solr_name("ordered_by", :symbol)] ||= []
|
|
72
|
+
doc[solr_name("ordered_by", :symbol)] += send(:ordered_by_ids)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
private
|
|
77
|
+
|
|
78
|
+
def solr_name(*args)
|
|
79
|
+
ActiveFedora.index_field_mapper.solr_name(*args)
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
module SolrDocumentBehavior
|
|
3
|
+
extend ActiveSupport::Concern
|
|
4
|
+
include Hyrax::SolrDocumentBehavior
|
|
5
|
+
|
|
6
|
+
# @return [Array<String>]
|
|
7
|
+
def spatial
|
|
8
|
+
fetch(Solrizer.solr_name('spatial'), [])
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# @return [Array<String>]
|
|
12
|
+
def temporal
|
|
13
|
+
fetch(Solrizer.solr_name('temporal'), [])
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# @return [String]
|
|
17
|
+
def issued
|
|
18
|
+
fetch(Solrizer.solr_name('issued'), nil)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# @return [String]
|
|
22
|
+
def coverage
|
|
23
|
+
fetch(Solrizer.solr_name('coverage'), nil)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# @return [String]
|
|
27
|
+
def provenance
|
|
28
|
+
name = I18n.t('hyrax.institution_name')
|
|
29
|
+
raise ArgumentError, "Provenance required in configuration" unless name.present?
|
|
30
|
+
name
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# @return [DateTime]
|
|
34
|
+
def layer_modified
|
|
35
|
+
# TODO: `date_modified` isn't working correctly -- it's stored as a string not a date
|
|
36
|
+
# @see 'https://github.com/projecthydra/curation_concerns/issues/957'
|
|
37
|
+
dt = first(Solrizer.solr_name('system_modified', :stored_sortable, type: :date))
|
|
38
|
+
dt.nil? ? nil : DateTime.parse(dt).utc
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# @return [Array<String>]
|
|
42
|
+
def identifier
|
|
43
|
+
fetch(Solrizer.solr_name('identifier'), [])
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
# Attributes and methods for vector files
|
|
3
|
+
module VectorFileBehavior
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
include ::GeoWorks::GeoreferencedBehavior
|
|
6
|
+
# Retrieve the Vector Work of which this Object is a member
|
|
7
|
+
# @return [GeoWorks::VectorWork]
|
|
8
|
+
def vector_work
|
|
9
|
+
parents.select do |parent|
|
|
10
|
+
parent.class.included_modules.include?(::GeoWorks::VectorWorkBehavior)
|
|
11
|
+
end.to_a
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
# Attributes and methods for vector works
|
|
3
|
+
module VectorWorkBehavior
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
include ::GeoWorks::MetadataExtractionHelper
|
|
6
|
+
|
|
7
|
+
included do
|
|
8
|
+
type [Hydra::PCDM::Vocab::PCDMTerms.Object,
|
|
9
|
+
Hydra::Works::Vocab::WorksTerms.GenericWork,
|
|
10
|
+
::GeoWorks::GeoTerms.VectorWork]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def vector_files
|
|
14
|
+
members.select(&:vector_file?)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def metadata_files
|
|
18
|
+
members.select(&:external_metadata_file?)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Defines type by what it is and isn't
|
|
22
|
+
# @return [Boolean]
|
|
23
|
+
def image_work?
|
|
24
|
+
false
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def image_file?
|
|
28
|
+
false
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def raster_work?
|
|
32
|
+
false
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def raster_file?
|
|
36
|
+
false
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def vector_work?
|
|
40
|
+
true
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def vector_file?
|
|
44
|
+
false
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def external_metadata_file?
|
|
48
|
+
false
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Retrieve all Raster Works for which this Vector Work can be extracted
|
|
52
|
+
# @return [Array]
|
|
53
|
+
def raster_works
|
|
54
|
+
ordered_by.select do |parent|
|
|
55
|
+
parent.class.included_modules.include?(::GeoWorks::RasterWorkBehavior)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Retrieve the only Raster Work for which feature extraction generates this Vector Work
|
|
60
|
+
# @return [GeoWorks::RasterWork]
|
|
61
|
+
def raster_work
|
|
62
|
+
raster_works.first
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def to_solr(solr_doc = {})
|
|
66
|
+
super.tap do |doc|
|
|
67
|
+
doc[solr_name("ordered_by", :symbol)] ||= []
|
|
68
|
+
doc[solr_name("ordered_by", :symbol)] += send(:ordered_by_ids)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
private
|
|
73
|
+
|
|
74
|
+
def solr_name(*args)
|
|
75
|
+
ActiveFedora.index_field_mapper.solr_name(*args)
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|