Sha256: d3764aae316143b82e3e095adbd8739e9837b68c56662e9aaba98a566b5303f1

Contents?: true

Size: 1.51 KB

Versions: 3

Compression:

Stored size: 1.51 KB

Contents

using AIXM::Refinements

module AIXM
  module Component
    class Geometry

      # Borders are following natural or artifical border lines referenced by
      # {#name} and starting at {#xy}.
      #
      # ===Cheat Sheet in Pseudo Code:
      #   border = AIXM.border(
      #     xy: AIXM.xy
      #     name: String
      #   )
      #
      # @see https://gitlab.com/openflightmaps/ofmx/wikis/Airspace#frontier
      class Border < Point
        include AIXM::Memoize

        # @return [String] name of the border
        attr_reader :name

        def initialize(xy:, name:)
          super(xy: xy)
          self.name = name
        end

        # @return [String]
        def inspect
          %Q(#<#{self.class} xy="#{xy}" name=#{name.inspect}>)
        end

        def name=(value)
          fail(ArgumentError, "invalid name") unless value.is_a? String
          @name = value
        end

        # @return [String] UID markup
        def to_uid(as: :GbrUid)
          builder = Builder::XmlMarkup.new(indent: 2)
          builder.tag!(as) do |tag|
            tag.txtName(name.to_s)
          end
        end
        memoize :to_uid

        # @return [String] AIXM or OFMX markup
        def to_xml
          builder = Builder::XmlMarkup.new(indent: 2)
          builder.Avx do |avx|
            avx << to_uid.indent(2)
            avx.codeType('FNT')
            avx.geoLat(xy.lat(AIXM.schema))
            avx.geoLong(xy.long(AIXM.schema))
            avx.codeDatum('WGE')
          end
        end
      end

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
aixm-1.0.0 lib/aixm/component/geometry/border.rb
aixm-0.3.11 lib/aixm/component/geometry/border.rb
aixm-0.3.10 lib/aixm/component/geometry/border.rb