lib/adiwg/mdtranslator/readers/mdJson/modules/module_spatialReference.rb in adiwg-mdtranslator-2.3.5 vs lib/adiwg/mdtranslator/readers/mdJson/modules/module_spatialReference.rb in adiwg-mdtranslator-2.4.0
- old
+ new
@@ -1,65 +1,80 @@
# unpack spatial reference system
# Reader - ADIwg JSON to internal data structure
# History:
-# Stan Smith 2016-10-16 refactored for mdJson 2.0
-# Stan Smith 2015-07-14 refactored to remove global namespace constants
-# Stan Smith 2015-06-22 replace global ($response) with passed in object (responseObj)
-# Stan Smith 2014-12-15 refactored to handle namespacing readers and writers
+# Stan Smith 2017-10-23 added reference system parameter set
+# Stan Smith 2016-10-16 refactored for mdJson 2.0
+# Stan Smith 2015-07-14 refactored to remove global namespace constants
+# Stan Smith 2015-06-22 replace global ($response) with passed in object (responseObj)
+# Stan Smith 2014-12-15 refactored to handle namespacing readers and writers
# Stan Smith 2014-09-03 original script
require_relative 'module_identifier'
+require_relative 'module_referenceSystemParameters'
module ADIWG
- module Mdtranslator
- module Readers
- module MdJson
+ module Mdtranslator
+ module Readers
+ module MdJson
- module SpatialReferenceSystem
+ module SpatialReferenceSystem
- def self.unpack(hSpatialRef, responseObj)
+ def self.unpack(hSpatialRef, responseObj)
- # return nil object if input is empty
- if hSpatialRef.empty?
- responseObj[:readerExecutionMessages] << 'Spatial Reference System object is empty'
- responseObj[:readerExecutionPass] = false
- return nil
- end
+ # return nil object if input is empty
+ if hSpatialRef.empty?
+ responseObj[:readerExecutionMessages] << 'Spatial Reference System object is empty'
+ responseObj[:readerExecutionPass] = false
+ return nil
+ end
- # instance classes needed in script
- intMetadataClass = InternalMetadata.new
- intSpatialRef = intMetadataClass.newSpatialReferenceSystem
+ # instance classes needed in script
+ intMetadataClass = InternalMetadata.new
+ intSpatialRef = intMetadataClass.newSpatialReferenceSystem
- # spatial reference system - type
- if hSpatialRef.has_key?('referenceSystemType')
- if hSpatialRef['referenceSystemType'] != ''
- intSpatialRef[:systemType] = hSpatialRef['referenceSystemType']
- end
- end
+ # spatial reference system - type
+ if hSpatialRef.has_key?('referenceSystemType')
+ if hSpatialRef['referenceSystemType'] != ''
+ intSpatialRef[:systemType] = hSpatialRef['referenceSystemType']
+ end
+ end
- # spatial reference system - reference system {identifier}
- if hSpatialRef.has_key?('referenceSystemIdentifier')
- hObject = hSpatialRef['referenceSystemIdentifier']
- unless hObject.empty?
- hReturn = Identifier.unpack(hObject, responseObj)
- unless hReturn.nil?
- intSpatialRef[:systemIdentifier] = hReturn
- end
- end
+ # spatial reference system - reference system {identifier}
+ if hSpatialRef.has_key?('referenceSystemIdentifier')
+ hObject = hSpatialRef['referenceSystemIdentifier']
+ unless hObject.empty?
+ hReturn = Identifier.unpack(hObject, responseObj)
+ unless hReturn.nil?
+ intSpatialRef[:systemIdentifier] = hReturn
end
+ end
+ end
- if intSpatialRef[:systemType].nil? && intSpatialRef[:systemIdentifier].empty?
- responseObj[:readerExecutionMessages] << 'Spatial Reference System must declare reference system type or reference system identifier'
- responseObj[:readerExecutionPass] = false
- return nil
+ # spatial reference system - reference system parameters {referenceSystemParameterSet}
+ if hSpatialRef.has_key?('referenceSystemParameterSet')
+ hObject = hSpatialRef['referenceSystemParameterSet']
+ unless hObject.empty?
+ hReturn = ReferenceSystemParameters.unpack(hObject, responseObj)
+ unless hReturn.nil?
+ intSpatialRef[:systemParameterSet] = hReturn
end
+ end
+ end
- return intSpatialRef
- end
+ if intSpatialRef[:systemType].nil? &&
+ intSpatialRef[:systemIdentifier].empty? &&
+ intSpatialRef[:systemParameterSet].empty?
+ responseObj[:readerExecutionMessages] << 'Spatial Reference System must declare reference system type, identifier, or parameter set'
+ responseObj[:readerExecutionPass] = false
+ return nil
+ end
- end
+ return intSpatialRef
+ end
end
- end
- end
+
+ end
+ end
+ end
end