module ADIWG::Mdtranslator::Readers::Fgdc::Quality
Public Class Methods
unpack(xDataQual, hMetadata, hDataQuality, hResponseObj)
click to toggle source
# File lib/adiwg/mdtranslator/readers/fgdc/modules/module_quality.rb, line 18 def self.unpack(xDataQual, hMetadata, hDataQuality, hResponseObj) hDataQuality[:scope] = {scopeCode: 'tabularDataset'} hDataQuality[:systemIdentifier] = { uid: UUIDTools::UUID.random_create.to_s, label: "CSDGM Data Quality" } # data quality 2.1 (attracc) - attribute accuracy xAccuracy = xDataQual.xpath('./attracc') accuracyReport = xAccuracy.xpath('./attraccr').text hDataQuality[:report] << { type: 'DQ_NonQuantitativeAttributeCompleteness', descriptiveResult: [ {statement: accuracyReport} ] } # data quality 2.1 (qattracc) - Quantitative Attribute Accuracy Assessment xQuantitativeAccuracy = xDataQual.xpath('./qattracc') unless xQuantitativeAccuracy.xpath('./attraccv').empty? hDataQuality[:report] << { type: 'DQ_QuantitativeAttributeAccuracy', quantitativeResult: [{ value: xQuantitativeAccuracy.xpath('./attraccv').text }] } end # data quality 2.2 (logic) - logical consistency (required) (not implemented) xLogic = xDataQual.xpath('./logic') if xLogic.empty? hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: data quality logical consistency section is missing' else logic = xLogic.text hDataQuality[:report] << { type: 'DQ_ConceptualConsistency', qualityMeasure: { description: logic } } end # data quality 2.3 (complete) - completion report (required) xComplete = xDataQual.xpath('./complete') if xComplete.empty? hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: data quality completion report section is missing' else complete = xComplete.text hDataQuality[:report] << { type: 'DQ_CompletenessOmission', descriptiveResult: [{ statement: complete }] } end # data quality 2.4 (position) - positional accuracy xPositionalAccuracy = xDataQual.xpath('./posacc') unless xPositionalAccuracy.empty? # horizontal positional accuracy xHorizontal = xPositionalAccuracy.xpath('./horizpa') unless xHorizontal.empty? report = {} unless xHorizontal.xpath('horizpar').empty? report[:evaluationMethod] = { methodDescription: xHorizontal.xpath('horizpar').text } end unless xHorizontal.xpath('qhorizpa/horizpae').empty? report[:qualityMeasure] = { description: xHorizontal.xpath('qhorizpa/horizpae').text } end unless xHorizontal.xpath('qhorizpa/horizpav').empty? report[:quantitativeResult] = [{ value: [ xHorizontal.xpath('qhorizpa/horizpav').text ] }] end unless report.empty? if report[:qualityMeasure].nil? report[:qualityMeasure] = { name: ['Horizontal Positional Accuracy Report'] } else report[:qualityMeasure][:name] = ['Horizontal Positional Accuracy Report'] end report[:type] = 'DQ_AbsoluteExternalPositionalAccuracy' hDataQuality[:report] << report end end # vertical positional accuracy xVertical = xPositionalAccuracy.xpath('./vertacc') unless xVertical.empty? report = {} unless xVertical.xpath('vertaccr').empty? report[:evaluationMethod] = { methodDescription: xVertical.xpath('vertaccr').text } end unless xVertical.xpath('qvertpa/vertacce').empty? report[:qualityMeasure] = { description: xVertical.xpath('qvertpa/vertacce').text } end unless xVertical.xpath('qvertpa/vertaccv').empty? report[:quantitativeResult] = [{ value: [ xVertical.xpath('qvertpa/vertaccv').text ] }] end unless report.empty? if report[:qualityMeasure].nil? report[:qualityMeasure] = { name: ['Vertical Positional Accuracy Report'] } else report[:qualityMeasure][:name] = ['Vertical Positional Accuracy Report'] end report[:type] = 'DQ_AbsoluteExternalPositionalAccuracy' hDataQuality[:report] << report end end end # data quality 2.5 (lineage) - lineage (required) xLineage = xDataQual.xpath('./lineage') unless xLineage.empty? hLineage = Lineage.unpack(xLineage, hResponseObj) unless hLineage.nil? hMetadata[:lineageInfo] << hLineage end end if xLineage.nil? hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: data quality lineage section is missing' end # data quality 2.6 (cloud) - cloud cover (not implemented) return hDataQuality end