lib/adiwg/mdtranslator/readers/mdJson/modules/module_spatialReference.rb in adiwg-mdtranslator-2.7.0 vs lib/adiwg/mdtranslator/readers/mdJson/modules/module_spatialReference.rb in adiwg-mdtranslator-2.8.0
- old
+ new
@@ -1,9 +1,10 @@
# unpack spatial reference system
# Reader - ADIwg JSON to internal data structure
# History:
+# Stan Smith 2018-01-10 added reference system WKT
# 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
@@ -30,42 +31,53 @@
# instance classes needed in script
intMetadataClass = InternalMetadata.new
intSpatialRef = intMetadataClass.newSpatialReferenceSystem
+ haveSystem = false
+
# spatial reference system - type
if hSpatialRef.has_key?('referenceSystemType')
if hSpatialRef['referenceSystemType'] != ''
intSpatialRef[:systemType] = hSpatialRef['referenceSystemType']
+ haveSystem = true
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
+ haveSystem = true
end
end
end
+ # spatial reference system - wkt
+ if hSpatialRef.has_key?('referenceSystemWKT')
+ if hSpatialRef['referenceSystemWKT'] != ''
+ intSpatialRef[:systemWKT] = hSpatialRef['referenceSystemWKT']
+ haveSystem = true
+ end
+ end
+
# 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
+ haveSystem = true
end
end
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'
+ unless haveSystem
+ responseObj[:readerExecutionMessages] << 'Spatial Reference System must declare reference system type, identifier, WKT, or parameter set'
responseObj[:readerExecutionPass] = false
return nil
end
return intSpatialRef