Class: Georeference::VerbatimData
- Inherits:
-
Georeference
- Object
- ActiveRecord::Base
- ApplicationRecord
- Georeference
- Georeference::VerbatimData
- Defined in:
- app/models/georeference/verbatim_data.rb
Overview
The Georeference that is derived exclusively from verbatim_latitude/longitude and fields in a CollectingEvent.
While it might be concievable that verbatim data are WKT shapes not points, we assume they are for now.
!! TODO: presently does not include verbatim_geolocation_uncertainty translation into radius !! See github.com/SpeciesFileGroup/taxonworks/issues/1770
Constant Summary
Constants included from SoftValidation
SoftValidation::ANCESTORS_WITH_SOFT_VALIDATIONS
Instance Attribute Summary
Attributes inherited from Georeference
#api_request, #collecting_event_id, #day_georeferenced, #error_depth, #error_geographic_item_id, #error_radius, #geographic_item_id, #iframe_response, #is_median_z, #is_public, #is_undefined_z, #month_georeferenced, #no_cached, #position, #project_id, #type, #year_georeferenced
Instance Method Summary collapse
- #dwc_georeference_attributes ⇒ Object
-
#initialize(params = {}) ⇒ VerbatimData
constructor
A new instance of VerbatimData.
Methods inherited from Georeference
#add_err_geo_item_inside_err_radius, #add_error_depth, #add_error_geo_item_inside_area, #add_error_geo_item_intersects_area, #add_error_radius, #add_error_radius_inside_area, #add_obj_inside_area, #add_obj_inside_err_geo_item, #add_obj_inside_err_radius, batch_create_from_georeference_matcher, #check_err_geo_item_inside_err_radius, #check_error_geo_item_inside_area, #check_error_geo_item_intersects_area, #check_error_radius_inside_area, #check_obj_inside_area, #check_obj_inside_err_geo_item, #check_obj_inside_err_radius, #error_box, #error_radius_buffer_polygon, filter_by, #geographic_item_present_if_error_radius_provided, #heading, #latitude, #longitude, #method_name, point_type, #set_cached, #to_geo_json_feature, #to_simple_json_feature, with_geographic_area, with_locality, with_locality_as, with_locality_like, within_radius_of_item
Methods included from Shared::IsData
#errors_excepting, #full_error_messages_excepting, #identical, #is_community?, #is_destroyable?, #is_editable?, #is_in_use?, #is_in_users_projects?, #metamorphosize, #similar
Methods included from Shared::Confidences
Methods included from Shared::DataAttributes
#import_attributes, #internal_attributes, #keyword_value_hash, #reject_data_attributes
Methods included from Shared::Citations
#cited?, #mark_citations_for_destruction, #nomenclature_date, #origin_citation_source_id, #reject_citations, #requires_citation?, #sources_by_topic_id
Methods included from Shared::ProtocolRelationships
#protocolled?, #reject_protocols
Methods included from Shared::Tags
#reject_tags, #tag_with, #tagged?, #tagged_with?
Methods included from Shared::Notes
#concatenated_notes_string, #reject_notes
Methods included from SoftValidation
#clear_soft_validations, #fix_for, #fix_soft_validations, #soft_fixed?, #soft_valid?, #soft_validate, #soft_validated?, #soft_validations, #soft_validators
Methods included from Housekeeping
#has_polymorphic_relationship?
Methods inherited from ApplicationRecord
Constructor Details
#initialize(params = {}) ⇒ VerbatimData
Returns a new instance of VerbatimData.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'app/models/georeference/verbatim_data.rb', line 13 def initialize(params = {}) super self.is_median_z = false self.is_undefined_z = false # and delta_z is zero, or ignored unless collecting_event.nil? || geographic_item # value from collecting_event is normalised to meters z1 = collecting_event.minimum_elevation z2 = collecting_event.maximum_elevation if z1.blank? # no valid elevation provided self.is_undefined_z = true delta_z = 0.0 else # we have at least half of the range data # delta_z = z1 if z2.blank? # we have *only* half of the range data delta_z = z1 else # we have full range data, so elevation is (top - bottom) / 2 delta_z = z1 + ((z2 - z1) * 0.5) # and show calculated median self.is_median_z = true end end point = collecting_event.verbatim_map_center(delta_z) # hmm attributes = {point: point} attributes[:by] = self.by if self.by if point.nil? test_grs = [] else test_grs = GeographicItem::Point.where("point = ST_GeographyFromText('POINT(? ? ?)')", point.x, point.y, point.z) end if test_grs.empty? test_grs = [GeographicItem.new(attributes)] end self.error_radius = collecting_event.geolocate_uncertainty_in_meters self.geographic_item = test_grs.first end end |
Instance Method Details
#dwc_georeference_attributes ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'app/models/georeference/verbatim_data.rb', line 62 def dwc_georeference_attributes h = {} super(h) h.merge!( verbatimLatitude: collecting_event.verbatim_latitude, verbatimLongitude: collecting_event.verbatim_longitude, coordinateUncertaintyInMeters: error_radius, georeferenceSources: "Physical collection object.", georeferenceRemarks: "Derived from a instance of TaxonWorks' Georeference::VerbatimData.", geodeticDatum: nil # TODO: check ) h[:georeferenceProtocol] = 'A geospatial point translated from verbatim values recorded on human-readable media (e.g. paper specimen label, field notebook).' if h[:georeferenceProtocol].blank? h end |