class ADIWG::Mdtranslator::Writers::Fgdc::PlanarGrid

Public Class Methods

new(xml, hResponseObj) click to toggle source
# File lib/adiwg/mdtranslator/writers/fgdc/classes/class_planarGrid.rb, line 17
def initialize(xml, hResponseObj)
   @xml = xml
   @hResponseObj = hResponseObj
end

Public Instance Methods

writeXML(hProjection, inContext = nil) click to toggle source
# File lib/adiwg/mdtranslator/writers/fgdc/classes/class_planarGrid.rb, line 22
def writeXML(hProjection, inContext = nil)

   # classes used
   classTags = MapProjectionTags.new(@xml, @hResponseObj)

   outContext = 'grid system'
   outContext = inContext + ' ' + outContext unless inContext.nil?

   # planar 4.1.2.2 (gridsys) - grid coordinate system
   # <- hProjection.gridIdentifier.identifier = oneOf ...
   hGridId = hProjection[:gridIdentifier]
   gridSystem = hGridId[:identifier]
   gridName = nil
   if hGridId.key?(:name)
      gridName = hGridId[:name]
   end
   case gridSystem
      when 'utm'
         @xml.tag!('gridsys') do
            gridName = 'Universal Transverse Mercator' if gridName.nil?
            classTags.write_gridName(gridName)
            @xml.tag!('utm') do
               classTags.write_utmZone(hProjection, outContext)
               @xml.tag!('transmer') do
                  classTags.write_scaleFactorCM(hProjection, outContext)
                  classTags.write_longCM(hProjection, outContext)
                  classTags.write_latPO(hProjection, outContext)
                  classTags.write_falseNE(hProjection, outContext)
               end
            end
         end
      when 'ups'
         @xml.tag!('gridsys') do
            gridName = 'Universal Polar Stereographic' if gridName.nil?
            classTags.write_gridName(gridName)
            @xml.tag!('ups') do
               classTags.write_upsZone(hProjection, outContext)
               @xml.tag!('polarst') do
                  classTags.write_straightFromPole(hProjection, outContext)
                  if hProjection[:standardParallel1] || hProjection[:standardParallel2]
                     classTags.write_standParallel(hProjection, outContext)
                  elsif hProjection[:scaleFactorAtProjectionOrigin]
                     classTags.write_scaleFactorPO(hProjection, outContext)
                  end
                  classTags.write_falseNE(hProjection, outContext)
               end
            end
         end
      when 'spcs'
         @xml.tag!('gridsys') do
            gridName = 'State Plane Coordinate System' if gridName.nil?
            classTags.write_gridName(gridName)
            @xml.tag!('spcs') do
               classTags.write_spcsZone(hProjection, outContext)
               if hProjection[:standardParallel1] || hProjection[:standardParallel2]
                  @xml.tag!('lambertc') do
                     classTags.write_standParallel(hProjection, outContext)
                     classTags.write_longCM(hProjection, outContext)
                     classTags.write_latPO(hProjection, outContext)
                     classTags.write_falseNE(hProjection, outContext)
                  end
               elsif hProjection[:scaleFactorAtCenterLine]
                  @xml.tag!('obqmerc') do
                     classTags.write_scaleFactorCL(hProjection, outContext)
                     if hProjection[:obliqueLinePoints].empty?
                        classTags.write_obliqueLineAzimuth(hProjection, outContext)
                     else
                        classTags.write_obliqueLinePoint(hProjection, outContext)
                     end
                     classTags.write_latPO(hProjection, outContext)
                     classTags.write_falseNE(hProjection, outContext)
                  end
               elsif hProjection[:scaleFactorAtCentralMeridian]
                  @xml.tag!('transmer') do
                     classTags.write_scaleFactorCM(hProjection, outContext)
                     classTags.write_longCM(hProjection, outContext)
                     classTags.write_latPO(hProjection, outContext)
                     classTags.write_falseNE(hProjection, outContext)
                  end
               else
                  @xml.tag!('polycon') do
                     classTags.write_longCM(hProjection, outContext)
                     classTags.write_latPO(hProjection, outContext)
                     classTags.write_falseNE(hProjection, outContext)
                  end
               end
            end
         end
      when 'arcsys'
         @xml.tag!('gridsys') do
            gridName = 'Equal Arc-second Coordinate System' if gridName.nil?
            classTags.write_gridName(gridName)
            @xml.tag!('arcsys') do
               classTags.write_arcZone(hProjection, outContext)
               if hProjection[:standardParallel1] || hProjection[:standardParallel2]
                  @xml.tag!('equirect') do
                     classTags.write_standParallel(hProjection, outContext)
                     classTags.write_longCM(hProjection, outContext)
                     classTags.write_falseNE(hProjection, outContext)
                  end
               elsif hProjection[:latitudeOfProjectionOrigin]
                  @xml.tag!('azimequi') do
                     classTags.write_longCM(hProjection, outContext)
                     classTags.write_latPO(hProjection, outContext)
                     classTags.write_falseNE(hProjection, outContext)
                  end
               end
            end
         end
      when 'other'
         @xml.tag!('gridsys') do
            gridName = 'Other Grid Coordinate System' if gridName.nil?
            classTags.write_gridName(gridName)
            classTags.write_otherGrid(hProjection, outContext)
         end
   end

end