lib/adiwg/mdtranslator/readers/mdJson/modules/module_boundingBox.rb in adiwg-mdtranslator-2.3.2 vs lib/adiwg/mdtranslator/readers/mdJson/modules/module_boundingBox.rb in adiwg-mdtranslator-2.3.3

- old
+ new

@@ -1,95 +1,125 @@ # unpack bounding box # Reader - ADIwg JSON to internal data structure # History: -# Stan Smith 2016-12-01 original script +# Stan Smith 2017-09-28 add altitude to support fgdc +# Stan Smith 2016-12-01 original script module ADIWG - module Mdtranslator - module Readers - module MdJson + module Mdtranslator + module Readers + module MdJson - module BoundingBox + module BoundingBox - def self.unpack(hBBox, responseObj) + def self.unpack(hBBox, responseObj) - # return nil object if input is empty - if hBBox.empty? - responseObj[:readerExecutionMessages] << 'boundingBox object is empty' - responseObj[:readerExecutionPass] = false - return nil - end + # return nil object if input is empty + if hBBox.empty? + responseObj[:readerExecutionMessages] << 'boundingBox object is empty' + responseObj[:readerExecutionPass] = false + return nil + end - # instance classes needed in script - intMetadataClass = InternalMetadata.new - intBBox = intMetadataClass.newBoundingBox + # instance classes needed in script + intMetadataClass = InternalMetadata.new + intBBox = intMetadataClass.newBoundingBox - # bounding box - west longitude (required) - if hBBox.has_key?('westLongitude') - intBBox[:westLongitude] = hBBox['westLongitude'] - end - if intBBox[:westLongitude].nil? || intBBox[:westLongitude] == '' - responseObj[:readerExecutionMessages] << 'boundingBox west boundary is missing' - responseObj[:readerExecutionPass] = false - return nil - end - if intBBox[:westLongitude].abs > 180 - responseObj[:readerExecutionMessages] << 'boundingBox longitude must be between -180 and +180' - responseObj[:readerExecutionPass] = false - return nil - end + # bounding box - west longitude (required) + if hBBox.has_key?('westLongitude') + intBBox[:westLongitude] = hBBox['westLongitude'] + end + if intBBox[:westLongitude].nil? || intBBox[:westLongitude] == '' + responseObj[:readerExecutionMessages] << 'boundingBox west boundary is missing' + responseObj[:readerExecutionPass] = false + return nil + end + if intBBox[:westLongitude].abs > 180 + responseObj[:readerExecutionMessages] << 'boundingBox longitude must be between -180 and +180' + responseObj[:readerExecutionPass] = false + return nil + end - # bounding box - east longitude (required) - if hBBox.has_key?('eastLongitude') - intBBox[:eastLongitude] = hBBox['eastLongitude'] - end - if intBBox[:eastLongitude].nil? || intBBox[:eastLongitude] == '' - responseObj[:readerExecutionMessages] << 'boundingBox east boundary is missing' - responseObj[:readerExecutionPass] = false - return nil - end - if intBBox[:eastLongitude].abs > 180 - responseObj[:readerExecutionMessages] << 'boundingBox longitude must be between -180 and +180' - responseObj[:readerExecutionPass] = false - return nil - end + # bounding box - east longitude (required) + if hBBox.has_key?('eastLongitude') + intBBox[:eastLongitude] = hBBox['eastLongitude'] + end + if intBBox[:eastLongitude].nil? || intBBox[:eastLongitude] == '' + responseObj[:readerExecutionMessages] << 'boundingBox east boundary is missing' + responseObj[:readerExecutionPass] = false + return nil + end + if intBBox[:eastLongitude].abs > 180 + responseObj[:readerExecutionMessages] << 'boundingBox longitude must be between -180 and +180' + responseObj[:readerExecutionPass] = false + return nil + end - # bounding box - south latitude (required) - if hBBox.has_key?('southLatitude') - intBBox[:southLatitude] = hBBox['southLatitude'] - end - if intBBox[:southLatitude].nil? || intBBox[:southLatitude] == '' - responseObj[:readerExecutionMessages] << 'boundingBox south boundary is missing' - responseObj[:readerExecutionPass] = false - return nil - end - if intBBox[:southLatitude].abs > 90 - responseObj[:readerExecutionMessages] << 'boundingBox latitude must be between -90 and +90' - responseObj[:readerExecutionPass] = false - return nil - end - # bounding box - north latitude (required) - if hBBox.has_key?('northLatitude') - intBBox[:northLatitude] = hBBox['northLatitude'] - end - if intBBox[:northLatitude].nil? || intBBox[:northLatitude] == '' - responseObj[:readerExecutionMessages] << 'boundingBox north boundary is missing' - responseObj[:readerExecutionPass] = false - return nil - end - if intBBox[:northLatitude].abs > 90 - responseObj[:readerExecutionMessages] << 'boundingBox latitude must be between -90 and +90' - responseObj[:readerExecutionPass] = false - return nil - end + # bounding box - south latitude (required) + if hBBox.has_key?('southLatitude') + intBBox[:southLatitude] = hBBox['southLatitude'] + end + if intBBox[:southLatitude].nil? || intBBox[:southLatitude] == '' + responseObj[:readerExecutionMessages] << 'boundingBox south boundary is missing' + responseObj[:readerExecutionPass] = false + return nil + end + if intBBox[:southLatitude].abs > 90 + responseObj[:readerExecutionMessages] << 'boundingBox latitude must be between -90 and +90' + responseObj[:readerExecutionPass] = false + return nil + end - return intBBox + # bounding box - north latitude (required) + if hBBox.has_key?('northLatitude') + intBBox[:northLatitude] = hBBox['northLatitude'] + end + if intBBox[:northLatitude].nil? || intBBox[:northLatitude] == '' + responseObj[:readerExecutionMessages] << 'boundingBox north boundary is missing' + responseObj[:readerExecutionPass] = false + return nil + end + if intBBox[:northLatitude].abs > 90 + responseObj[:readerExecutionMessages] << 'boundingBox latitude must be between -90 and +90' + responseObj[:readerExecutionPass] = false + return nil + end - end + # bounding box - minimum altitude + if hBBox.has_key?('minimumAltitude') + unless hBBox['minimumAltitude'].nil? || hBBox['minimumAltitude'] == '' + intBBox[:minimumAltitude] = hBBox['minimumAltitude'] + end + end - end + # bounding box - maximum altitude + if hBBox.has_key?('maximumAltitude') + unless hBBox['maximumAltitude'].nil? || hBBox['maximumAltitude'] == '' + intBBox[:maximumAltitude] = hBBox['maximumAltitude'] + end + end + # bounding box - altitude units of measure + if hBBox.has_key?('unitsOfAltitude') + unless hBBox['unitsOfAltitude'].nil? || hBBox['unitsOfAltitude'] == '' + intBBox[:unitsOfAltitude] = hBBox['unitsOfAltitude'] + end + end + unless intBBox[:minimumAltitude].nil? && intBBox[:maximumAltitude].nil? + if intBBox[:unitsOfAltitude].nil? || intBBox[:unitsOfAltitude] == '' + responseObj[:readerExecutionMessages] << 'boundingBox altitude unit of measure is missing' + responseObj[:readerExecutionPass] = false + return nil + end + end + + return intBBox + + end + end - end - end + + end + end + end end