adiwg-mdtranslator 2.19.0.pre.beta.26 → 2.19.0.pre.beta.27
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_dataQuality.rb +23 -35
- data/lib/adiwg/mdtranslator/version.rb +1 -1
- data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_dataQuality.rb +133 -280
- data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_spatialDomain.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ca06d30e3f61cd83863f943c9dc420c5c197b8d8a88798ae4f5561c982e55c4
|
4
|
+
data.tar.gz: bfcb85d3757590769d3df99e6896ec73789922930c407bcd2dbd8b610201041a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dec2917effa8c4483f209737acca05b55991676b0aeebbcb8222cc038588734de121aad6c3b4774c792099e5bc79922a831d0c682cef779a3deafc15d79d494d
|
7
|
+
data.tar.gz: 723f2b5077b7cfe9749fa0dbc44cb1ee2bdb185efee2589b1ab10026002e7108d6b115d95baf0adcb8ce90e933a2d915dd069e7694684601d61fe19375923eaa
|
data/Gemfile.lock
CHANGED
@@ -103,35 +103,29 @@ module ADIWG
|
|
103
103
|
unless xHorizontalAccuracy.empty?
|
104
104
|
report = intMetadataClass.newDataQualityReport
|
105
105
|
report[:type] = 'DQ_AbsoluteExternalPositionalAccuracy'
|
106
|
-
#
|
106
|
+
# Combine Horizontal Positional Accuracy Report and Explanation
|
107
|
+
descriptive_result_text = ''
|
107
108
|
xHorizontalAccuracyReport = xHorizontalAccuracy.xpath('./horizpar')
|
108
109
|
unless xHorizontalAccuracyReport.empty?
|
109
|
-
|
110
|
-
descriptiveResult[:name] = 'Horizontal Positional Accuracy Report'
|
111
|
-
descriptiveResult[:statement] = xHorizontalAccuracyReport.text
|
112
|
-
report[:descriptiveResult] << descriptiveResult
|
110
|
+
descriptive_result_text += xHorizontalAccuracyReport.text
|
113
111
|
end
|
114
|
-
# data quality 2.4.1.2 (qhorizpa) - Quantitative Horizontal Positional Accuracy Assessment
|
115
112
|
xQuantitativeHorizontalAccuracy = xHorizontalAccuracy.xpath('./qhorizpa')
|
116
113
|
unless xQuantitativeHorizontalAccuracy.empty?
|
117
|
-
# data quality 2.4.1.2.1 (horizpav) - Horizontal Positional Accuracy Value
|
118
114
|
xHorizontalAccuracyValue = xQuantitativeHorizontalAccuracy.xpath('horizpav')
|
119
115
|
unless xHorizontalAccuracyValue.empty?
|
120
|
-
|
121
|
-
value = xHorizontalAccuracyValue.text
|
122
|
-
quantitativeResult[:name] = 'Horizontal Positional Accuracy Value'
|
123
|
-
quantitativeResult[:values] << value
|
124
|
-
report[:quantitativeResult] << quantitativeResult
|
116
|
+
descriptive_result_text += " Value: #{xHorizontalAccuracyValue.text}"
|
125
117
|
end
|
126
|
-
# data quality 2.4.1.2.2 (horizpae) - Horizontal Positional Accuracy Explanation
|
127
118
|
xHorizontalAccuracyExplanation = xQuantitativeHorizontalAccuracy.xpath('horizpae')
|
128
119
|
unless xHorizontalAccuracyExplanation.empty?
|
129
|
-
|
130
|
-
descriptiveResult[:name] = 'Horizontal Positional Accuracy Explanation'
|
131
|
-
descriptiveResult[:statement] = xHorizontalAccuracyExplanation.text
|
132
|
-
report[:descriptiveResult] << descriptiveResult
|
120
|
+
descriptive_result_text += " Explanation: #{xHorizontalAccuracyExplanation.text}"
|
133
121
|
end
|
134
122
|
end
|
123
|
+
unless descriptive_result_text.empty?
|
124
|
+
descriptiveResult = intMetadataClass.newDescriptiveResult
|
125
|
+
descriptiveResult[:name] = 'Horizontal Positional Accuracy Report'
|
126
|
+
descriptiveResult[:statement] = descriptive_result_text
|
127
|
+
report[:descriptiveResult] << descriptiveResult
|
128
|
+
end
|
135
129
|
hDataQuality[:report] << report
|
136
130
|
end
|
137
131
|
# data quality 2.4.2 (vertacc) - Vertical Positional Accuracy
|
@@ -139,35 +133,29 @@ module ADIWG
|
|
139
133
|
unless xVerticalAccuracy.empty?
|
140
134
|
report = intMetadataClass.newDataQualityReport
|
141
135
|
report[:type] = 'DQ_AbsoluteExternalPositionalAccuracy'
|
142
|
-
#
|
136
|
+
# Combine Vertical Positional Accuracy Report and Explanation
|
137
|
+
descriptive_result_text = ''
|
143
138
|
xVerticalAccuracyReport = xVerticalAccuracy.xpath('./vertaccr')
|
144
139
|
unless xVerticalAccuracyReport.empty?
|
145
|
-
|
146
|
-
descriptiveResult[:name] = 'Vertical Positional Accuracy Report'
|
147
|
-
descriptiveResult[:statement] = xVerticalAccuracyReport.text
|
148
|
-
report[:descriptiveResult] << descriptiveResult
|
140
|
+
descriptive_result_text += xVerticalAccuracyReport.text
|
149
141
|
end
|
150
|
-
# data quality 2.4.2.2 (qvertpa) - Quantitative Vertical Positional Accuracy Assessment
|
151
142
|
xVerticalAccuracyAssessment = xVerticalAccuracy.xpath('./qvertpa')
|
152
143
|
unless xVerticalAccuracyAssessment.empty?
|
153
|
-
# data quality 2.4.2.2.1 (vertaccv) - Vertical Positional Accuracy Value
|
154
144
|
xVerticalAccuracyValue = xVerticalAccuracyAssessment.xpath('vertaccv')
|
155
145
|
unless xVerticalAccuracyValue.empty?
|
156
|
-
|
157
|
-
value = xVerticalAccuracyValue.text
|
158
|
-
quantitativeResult[:name] = 'Vertical Positional Accuracy Value'
|
159
|
-
quantitativeResult[:values] << value
|
160
|
-
report[:quantitativeResult] << quantitativeResult
|
146
|
+
descriptive_result_text += " Value: #{xVerticalAccuracyValue.text}"
|
161
147
|
end
|
162
|
-
# data quality 2.4.2.2.2 (vertacce) - Vertical Positional Accuracy Explanation
|
163
148
|
xVerticalAccuracyExplanation = xVerticalAccuracyAssessment.xpath('vertacce')
|
164
149
|
unless xVerticalAccuracyExplanation.empty?
|
165
|
-
|
166
|
-
descriptiveResult[:name] = 'Vertical Positional Accuracy Explanation'
|
167
|
-
descriptiveResult[:statement] = xVerticalAccuracyExplanation.text
|
168
|
-
report[:descriptiveResult] << descriptiveResult
|
150
|
+
descriptive_result_text += " Explanation: #{xVerticalAccuracyExplanation.text}"
|
169
151
|
end
|
170
152
|
end
|
153
|
+
unless descriptive_result_text.empty?
|
154
|
+
descriptiveResult = intMetadataClass.newDescriptiveResult
|
155
|
+
descriptiveResult[:name] = 'Vertical Positional Accuracy Report'
|
156
|
+
descriptiveResult[:statement] = descriptive_result_text
|
157
|
+
report[:descriptiveResult] << descriptiveResult
|
158
|
+
end
|
171
159
|
hDataQuality[:report] << report
|
172
160
|
end
|
173
161
|
end
|
@@ -192,4 +180,4 @@ module ADIWG
|
|
192
180
|
end
|
193
181
|
end
|
194
182
|
end
|
195
|
-
end
|
183
|
+
end
|
@@ -8,289 +8,142 @@
|
|
8
8
|
require_relative 'class_lineage'
|
9
9
|
|
10
10
|
module ADIWG
|
11
|
-
|
12
|
-
|
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
|
-
report[:type] == 'DQ_QuantitativeAttributeAccuracy'
|
52
|
-
end
|
53
|
-
attribute_accuracy_value = quantitative_attribute_accuracy.dig(:quantitativeResult, 0, :values, 0) if quantitative_attribute_accuracy
|
54
|
-
attribute_evaluation_method = quantitative_attribute_accuracy.dig(:evaluationMethod, :methodDescription) if quantitative_attribute_accuracy
|
55
|
-
if attribute_accuracy_report_text != '' || attribute_accuracy_value || attribute_evaluation_method
|
56
|
-
# data quality 2.1 (attracc) - Attribute Accuracy
|
57
|
-
@xml.tag!('attracc') do
|
58
|
-
if attribute_accuracy_report_text != ''
|
59
|
-
# data quality 2.1.1 (attraccr) - Attribute Accuracy Report
|
60
|
-
@xml.tag!('attraccr', attribute_accuracy_report_text)
|
61
|
-
end
|
62
|
-
if attribute_accuracy_value || attribute_evaluation_method
|
63
|
-
# data quality 2.1.2 (qattracc) - Quantitative Attribute Accuracy Assessment
|
64
|
-
@xml.tag!('qattracc') do
|
65
|
-
if attribute_accuracy_value
|
66
|
-
# data quality 2.1.2.1 (attraccv) - Attribute Accuracy Value
|
67
|
-
@xml.tag!('attraccv', attribute_accuracy_value)
|
68
|
-
end
|
69
|
-
if attribute_evaluation_method
|
70
|
-
# data quality 2.1.2.2 (attracce) - Attribute Accuracy Explanation
|
71
|
-
@xml.tag!('attracce', attribute_evaluation_method)
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
76
|
-
elsif @hResponseObj[:writerShowTags]
|
77
|
-
@xml.tag!('attracc', 'Not Reported')
|
78
|
-
end
|
79
|
-
|
80
|
-
# data quality 2.2 (logic) - logical consistency (required)
|
81
|
-
logic_report = hDataQuality[:report].find do |report|
|
82
|
-
report[:type] == 'DQ_ConceptualConsistency' &&
|
83
|
-
!report.dig(:descriptiveResult, 0, :statement).nil?
|
84
|
-
end
|
85
|
-
domain_report = hDataQuality[:report].find do |report|
|
86
|
-
report[:type] == 'DQ_DomainConsistency' &&
|
87
|
-
!report.dig(:descriptiveResult, 0, :statement).nil?
|
88
|
-
end
|
89
|
-
format_report = hDataQuality[:report].find do |report|
|
90
|
-
report[:type] == 'DQ_FormatConsistency' &&
|
91
|
-
!report.dig(:descriptiveResult, 0, :statement).nil?
|
92
|
-
end
|
93
|
-
topological_report = hDataQuality[:report].find do |report|
|
94
|
-
report[:type] == 'DQ_TopologicalConsistency' &&
|
95
|
-
!report.dig(:descriptiveResult, 0, :statement).nil?
|
96
|
-
end
|
97
|
-
logic = ''
|
98
|
-
if logic_report
|
99
|
-
logic = logic_report[:descriptiveResult][0][:statement]
|
100
|
-
end
|
101
|
-
if domain_report
|
102
|
-
if logic != ''
|
103
|
-
logic = logic + ' ' + domain_report[:descriptiveResult][0][:statement]
|
104
|
-
else
|
105
|
-
logic = domain_report[:descriptiveResult][0][:statement]
|
106
|
-
end
|
107
|
-
end
|
108
|
-
if format_report
|
109
|
-
if logic != ''
|
110
|
-
logic = logic + ' ' + format_report[:descriptiveResult][0][:statement]
|
111
|
-
else
|
112
|
-
logic = format_report[:descriptiveResult][0][:statement]
|
113
|
-
end
|
114
|
-
end
|
115
|
-
if topological_report
|
116
|
-
if logic != ''
|
117
|
-
logic = logic + ' ' + topological_report[:descriptiveResult][0][:statement]
|
118
|
-
else
|
119
|
-
logic = topological_report[:descriptiveResult][0][:statement]
|
120
|
-
end
|
121
|
-
end
|
122
|
-
if logic != ''
|
123
|
-
@xml.tag!('logic', logic)
|
124
|
-
else
|
125
|
-
@xml.tag!('logic', 'Not Reported')
|
126
|
-
end
|
127
|
-
|
128
|
-
# data quality 2.3 (complete) - completion report (required)
|
129
|
-
omission_report = hDataQuality[:report].find do |report|
|
130
|
-
report[:type] == 'DQ_CompletenessOmission' &&
|
131
|
-
!report.dig(:descriptiveResult, 0, :statement).nil?
|
132
|
-
end
|
133
|
-
omission = omission_report&.dig(:descriptiveResult, 0, :statement)
|
134
|
-
commission_report = hDataQuality[:report].find do |report|
|
135
|
-
report[:type] == 'DQ_CompletenessCommission' &&
|
136
|
-
!report.dig(:descriptiveResult, 0, :statement).nil?
|
137
|
-
end
|
138
|
-
commission = commission_report&.dig(:descriptiveResult, 0, :statement)
|
139
|
-
complete = ''
|
140
|
-
if omission
|
141
|
-
complete = omission
|
142
|
-
end
|
143
|
-
if commission
|
144
|
-
if complete != ''
|
145
|
-
complete = complete + ' ' + commission
|
146
|
-
else
|
147
|
-
complete = commission
|
148
|
-
end
|
149
|
-
end
|
150
|
-
if complete != ''
|
151
|
-
@xml.tag!('complete', complete)
|
152
|
-
else
|
153
|
-
@xml.tag!('complete', 'Not Reported')
|
154
|
-
end
|
155
|
-
|
156
|
-
# data quality 2.4 (posacc) - Positional Accuracy
|
157
|
-
# data quality 2.4.1 (horizpa) - Horizontal Positional Accuracy
|
158
|
-
reports = hDataQuality[:report].select do |report|
|
159
|
-
[
|
160
|
-
'DQ_AbsoluteExternalPositionalAccuracy',
|
161
|
-
'DQ_RelativeInternalPositionalAccuracy',
|
162
|
-
'DQ_GriddedDataPositionalAccuracy'
|
163
|
-
].include?(report[:type]) &&
|
164
|
-
report.dig(:descriptiveResult, 0, :name) == 'Horizontal Positional Accuracy Report' &&
|
165
|
-
!report.dig(:descriptiveResult, 0, :statement).nil?
|
166
|
-
end
|
167
|
-
|
168
|
-
horizpar = ''
|
169
|
-
horizpav = ''
|
170
|
-
horizpae = ''
|
171
|
-
|
172
|
-
reports.each do |report|
|
173
|
-
if report[:descriptiveResult]
|
174
|
-
report[:descriptiveResult].each do |result|
|
175
|
-
if result[:name] == 'Horizontal Positional Accuracy Report'
|
176
|
-
horizpar = horizpar.empty? ? result[:statement] : "#{horizpar} #{result[:statement]}"
|
177
|
-
elsif result[:name] == 'Horizontal Positional Accuracy Explanation'
|
178
|
-
horizpae = horizpae.empty? ? result[:statement] : "#{horizpae} #{result[:statement]}"
|
179
|
-
end
|
180
|
-
end
|
181
|
-
end
|
182
|
-
if report[:quantitativeResult]
|
183
|
-
report[:quantitativeResult].each do |result|
|
184
|
-
if result[:name] == 'Horizontal Positional Accuracy Value' && horizpav.empty?
|
185
|
-
horizpav = result[:values][0]
|
186
|
-
end
|
187
|
-
end
|
188
|
-
end
|
189
|
-
end
|
190
|
-
|
191
|
-
# data quality 2.4.2 (vertacc) - Vertical Positional Accuracy
|
192
|
-
reports = hDataQuality[:report].select do |report|
|
193
|
-
[
|
194
|
-
'DQ_AbsoluteExternalPositionalAccuracy',
|
195
|
-
'DQ_RelativeInternalPositionalAccuracy',
|
196
|
-
'DQ_GriddedDataPositionalAccuracy'
|
197
|
-
].include?(report[:type]) &&
|
198
|
-
report.dig(:descriptiveResult, 0, :name) == 'Vertical Positional Accuracy Report' &&
|
199
|
-
!report.dig(:descriptiveResult, 0, :statement).nil?
|
200
|
-
end
|
201
|
-
|
202
|
-
vertaccr = ''
|
203
|
-
vertaccv = ''
|
204
|
-
vertacce = ''
|
205
|
-
|
206
|
-
reports.each do |report|
|
207
|
-
if report[:descriptiveResult]
|
208
|
-
report[:descriptiveResult].each do |result|
|
209
|
-
if result[:name] == 'Vertical Positional Accuracy Report'
|
210
|
-
vertaccr = vertaccr.empty? ? result[:statement] : "#{vertaccr} #{result[:statement]}"
|
211
|
-
elsif result[:name] == 'Vertical Positional Accuracy Explanation'
|
212
|
-
vertacce = vertacce.empty? ? result[:statement] : "#{vertacce} #{result[:statement]}"
|
213
|
-
end
|
214
|
-
end
|
215
|
-
end
|
216
|
-
if report[:quantitativeResult]
|
217
|
-
report[:quantitativeResult].each do |result|
|
218
|
-
if result[:name] == 'Vertical Positional Accuracy Value' && vertaccv.empty?
|
219
|
-
vertaccv = result[:values][0]
|
220
|
-
end
|
221
|
-
end
|
222
|
-
end
|
223
|
-
end
|
224
|
-
|
225
|
-
if !horizpar.empty? || !vertaccr.empty?
|
226
|
-
# Data quality 2.4 (posacc) - Positional Accuracy
|
227
|
-
@xml.tag!('posacc') do
|
228
|
-
if !horizpar.empty?
|
229
|
-
# Data quality 2.4.1 (horizpa) - Horizontal Positional Accuracy
|
230
|
-
@xml.tag!('horizpa') do
|
231
|
-
# Data quality 2.4.1.1 (horizpar) - Horizontal Positional Accuracy Report
|
232
|
-
@xml.tag!('horizpar', horizpar)
|
233
|
-
if horizpav != '' || !horizpae.empty?
|
234
|
-
# Data quality 2.4.1.2 (qhorizpa) - Quantitative Horizontal Positional Accuracy
|
235
|
-
@xml.tag!('qhorizpa') do
|
236
|
-
if horizpav != ''
|
237
|
-
# Data quality 2.4.1.2.1 (horizpav) - Horizontal Positional Accuracy Value
|
238
|
-
@xml.tag!('horizpav', horizpav)
|
239
|
-
end
|
240
|
-
if !horizpae.empty?
|
241
|
-
# Data quality 2.4.1.2.2 (horizpae) - Horizontal Positional Accuracy Explanation
|
242
|
-
@xml.tag!('horizpae', horizpae)
|
243
|
-
end
|
244
|
-
end
|
245
|
-
end
|
246
|
-
end
|
247
|
-
end
|
248
|
-
|
249
|
-
if !vertaccr.empty?
|
250
|
-
# Data quality 2.4.2 (vertacc) - Vertical Positional Accuracy
|
251
|
-
@xml.tag!('vertacc') do
|
252
|
-
# Data quality 2.4.2.1 (vertaccr) - Vertical Positional Accuracy Report
|
253
|
-
@xml.tag!('vertaccr', vertaccr)
|
254
|
-
if vertaccv != '' || !vertacce.empty?
|
255
|
-
# Data quality 2.4.2.2 (qvertpa) - Quantitative Vertical Positional Accuracy
|
256
|
-
@xml.tag!('qvertpa') do
|
257
|
-
if vertaccv != ''
|
258
|
-
# Data quality 2.4.2.2.1 (vertaccv) - Vertical Positional Accuracy Value
|
259
|
-
@xml.tag!('vertaccv', vertaccv)
|
260
|
-
end
|
261
|
-
if !vertacce.empty?
|
262
|
-
# Data quality 2.4.2.2.2 (vertacce) - Vertical Positional Accuracy Explanation
|
263
|
-
@xml.tag!('vertacce', vertacce)
|
264
|
-
end
|
265
|
-
end
|
266
|
-
end
|
267
|
-
end
|
268
|
-
end
|
269
|
-
end
|
270
|
-
elsif @hResponseObj[:writerShowTags]
|
271
|
-
@xml.tag!('position', 'Not Reported')
|
272
|
-
end
|
11
|
+
module Mdtranslator
|
12
|
+
module Writers
|
13
|
+
module Fgdc
|
14
|
+
|
15
|
+
class DataQuality
|
16
|
+
|
17
|
+
def initialize(xml, hResponseObj)
|
18
|
+
@xml = xml
|
19
|
+
@hResponseObj = hResponseObj
|
20
|
+
@NameSpace = ADIWG::Mdtranslator::Writers::Fgdc
|
21
|
+
end
|
22
|
+
|
23
|
+
def writeXML(intObj)
|
24
|
+
|
25
|
+
# classes used
|
26
|
+
lineageClass = Lineage.new(@xml, @hResponseObj)
|
27
|
+
|
28
|
+
hDataQuality = intObj.dig(:metadata, :dataQuality, 0)
|
29
|
+
|
30
|
+
if hDataQuality && hDataQuality[:report]
|
31
|
+
# data quality 2.1 (attracc) - Attribute Accuracy
|
32
|
+
attribute_accuracy_report_text = hDataQuality[:report].select do |report|
|
33
|
+
[
|
34
|
+
'DQ_NonQuantitativeAttributeCorrectness',
|
35
|
+
'DQ_ThematicClassificationCorrectness'
|
36
|
+
].include?(report[:type]) && !report.dig(:descriptiveResult, 0, :statement).nil?
|
37
|
+
end.map { |report| report.dig(:descriptiveResult, 0, :statement) }.compact.join(' ')
|
38
|
+
|
39
|
+
quantitative_attribute_accuracy = hDataQuality[:report].find { |report| report[:type] == 'DQ_QuantitativeAttributeAccuracy' }
|
40
|
+
attribute_accuracy_value = quantitative_attribute_accuracy.dig(:quantitativeResult, 0, :values, 0) if quantitative_attribute_accuracy
|
41
|
+
attribute_evaluation_method = quantitative_attribute_accuracy.dig(:evaluationMethod, :methodDescription) if quantitative_attribute_accuracy
|
42
|
+
|
43
|
+
if attribute_accuracy_report_text != '' || attribute_accuracy_value || attribute_evaluation_method
|
44
|
+
@xml.tag!('attracc') do
|
45
|
+
@xml.tag!('attraccr', attribute_accuracy_report_text) unless attribute_accuracy_report_text.empty?
|
46
|
+
if attribute_accuracy_value || attribute_evaluation_method
|
47
|
+
@xml.tag!('qattracc') do
|
48
|
+
@xml.tag!('attraccv', attribute_accuracy_value) if attribute_accuracy_value
|
49
|
+
@xml.tag!('attracce', attribute_evaluation_method) if attribute_evaluation_method
|
50
|
+
end
|
273
51
|
end
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
52
|
+
end
|
53
|
+
elsif @hResponseObj[:writerShowTags]
|
54
|
+
@xml.tag!('attracc', 'Not Reported')
|
55
|
+
end
|
56
|
+
|
57
|
+
# data quality 2.2 (logic) - logical consistency (required)
|
58
|
+
logic_reports = hDataQuality[:report].select do |report|
|
59
|
+
[
|
60
|
+
'DQ_ConceptualConsistency',
|
61
|
+
'DQ_DomainConsistency',
|
62
|
+
'DQ_FormatConsistency',
|
63
|
+
'DQ_TopologicalConsistency'
|
64
|
+
].include?(report[:type]) && !report.dig(:descriptiveResult, 0, :statement).nil?
|
65
|
+
end
|
66
|
+
|
67
|
+
logic = logic_reports.map { |report| report.dig(:descriptiveResult, 0, :statement) }.compact.join(' ')
|
68
|
+
|
69
|
+
if logic != ''
|
70
|
+
@xml.tag!('logic', logic)
|
71
|
+
else
|
72
|
+
@xml.tag!('logic', 'Not Reported')
|
73
|
+
end
|
74
|
+
|
75
|
+
# data quality 2.3 (complete) - completion report (required)
|
76
|
+
omission = hDataQuality[:report].find { |report| report[:type] == 'DQ_CompletenessOmission' }&.dig(:descriptiveResult, 0, :statement)
|
77
|
+
commission = hDataQuality[:report].find { |report| report[:type] == 'DQ_CompletenessCommission' }&.dig(:descriptiveResult, 0, :statement)
|
78
|
+
complete = [omission, commission].compact.join(' ')
|
79
|
+
if complete != ''
|
80
|
+
@xml.tag!('complete', complete)
|
81
|
+
else
|
82
|
+
@xml.tag!('complete', 'Not Reported')
|
83
|
+
end
|
84
|
+
|
85
|
+
# data quality 2.4 (posacc) - Positional Accuracy
|
86
|
+
reports = hDataQuality[:report].select do |report|
|
87
|
+
[
|
88
|
+
'DQ_AbsoluteExternalPositionalAccuracy',
|
89
|
+
'DQ_RelativeInternalPositionalAccuracy',
|
90
|
+
'DQ_GriddedDataPositionalAccuracy'
|
91
|
+
].include?(report[:type]) && !report.dig(:descriptiveResult, 0, :statement).nil?
|
92
|
+
end
|
93
|
+
|
94
|
+
horizpar = ''
|
95
|
+
vertaccr = ''
|
96
|
+
|
97
|
+
reports.each do |report|
|
98
|
+
descriptive_result = report.dig(:descriptiveResult, 0)
|
99
|
+
next unless descriptive_result
|
100
|
+
|
101
|
+
if descriptive_result[:name] == 'Vertical Positional Accuracy Report'
|
102
|
+
vertaccr = descriptive_result[:statement]
|
103
|
+
else
|
104
|
+
horizpar = descriptive_result[:statement]
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
if !horizpar.empty? || !vertaccr.empty?
|
109
|
+
@xml.tag!('posacc') do
|
110
|
+
if !horizpar.empty?
|
111
|
+
@xml.tag!('horizpa') do
|
112
|
+
@xml.tag!('horizpar', horizpar)
|
113
|
+
end
|
283
114
|
end
|
284
115
|
|
285
|
-
|
286
|
-
|
287
|
-
|
116
|
+
if !vertaccr.empty?
|
117
|
+
@xml.tag!('vertacc') do
|
118
|
+
@xml.tag!('vertaccr', vertaccr)
|
119
|
+
end
|
288
120
|
end
|
121
|
+
end
|
122
|
+
elsif @hResponseObj[:writerShowTags]
|
123
|
+
@xml.tag!('position', 'Not Reported')
|
124
|
+
end
|
125
|
+
|
126
|
+
# data quality 2.5 (lineage) - lineage (required)
|
127
|
+
unless intObj[:metadata][:lineageInfo].empty?
|
128
|
+
@xml.tag!('lineage') do
|
129
|
+
lineageClass.writeXML(intObj[:metadata][:lineageInfo])
|
130
|
+
end
|
131
|
+
end
|
132
|
+
if intObj[:metadata][:lineageInfo].empty?
|
133
|
+
@NameSpace.issueWarning(350, nil, 'data quality section')
|
134
|
+
end
|
135
|
+
|
136
|
+
# data quality 2.6 (cloud) - cloud cover (not implemented)
|
137
|
+
if @hResponseObj[:writerShowTags]
|
138
|
+
@xml.tag!('cloud', 'Not Reported')
|
139
|
+
end
|
140
|
+
|
141
|
+
end # writeXML
|
142
|
+
end # DataQuality
|
143
|
+
|
144
|
+
end # Quality
|
289
145
|
|
290
|
-
end # writeXML
|
291
|
-
end # Quality
|
292
|
-
|
293
|
-
end
|
294
146
|
end
|
295
|
-
|
296
|
-
end
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
@@ -127,7 +127,7 @@ module ADIWG
|
|
127
127
|
|
128
128
|
# altitude bounding (altmax) - maximum altitude (required)
|
129
129
|
unless hBBox[:maximumAltitude].nil?
|
130
|
-
@xml.tag!('altmax', hBBox[:
|
130
|
+
@xml.tag!('altmax', hBBox[:maximumAltitude])
|
131
131
|
end
|
132
132
|
if hBBox[:maximumAltitude].nil?
|
133
133
|
@NameSpace.issueWarning(372, 'altmax')
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adiwg-mdtranslator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.19.0.pre.beta.
|
4
|
+
version: 2.19.0.pre.beta.27
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stan Smith
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2024-06-
|
12
|
+
date: 2024-06-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|