Sha256: a2b3a3c413a6d0ba42927a233e192dc0f06ecfe4f95315c86fe32a70cb399d0e

Contents?: true

Size: 1.09 KB

Versions: 6

Compression:

Stored size: 1.09 KB

Contents

module GeoWorks
  module Discovery
    class DocumentBuilder
      class SpatialBuilder
        attr_reader :geo_concern

        def initialize(geo_concern)
          @geo_concern = geo_concern
        end

        # Builds spatial fields such as bounding box and solr geometry.
        # @param [AbstractDocument] discovery document
        def build(document)
          document.solr_coverage = to_solr
        end

        private

          # Parses coverage field from geo work and instantiates a coverage object.
          # @return [GeoWorks::Coverage] coverage object
          def coverage
            @coverage ||= GeoWorks::Coverage.parse(geo_concern.coverage.first)
          end

          # Returns the coverage in solr format. For example:
          # `ENVELOPE(minX, maxX, maxY, minY)`
          # @see 'https://cwiki.apache.org/confluence/display/solr/Spatial+Search'
          # @return [String] coverage in solr format
          def to_solr
            "ENVELOPE(#{coverage.w}, #{coverage.e}, #{coverage.n}, #{coverage.s})"
          rescue
            ''
          end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
geo_works-0.2.0 app/services/geo_works/discovery/document_builder/spatial_builder.rb
geo_works-0.1.4 app/services/geo_works/discovery/document_builder/spatial_builder.rb
geo_works-0.1.3 app/services/geo_works/discovery/document_builder/spatial_builder.rb
geo_works-0.1.2 app/services/geo_works/discovery/document_builder/spatial_builder.rb
geo_works-0.1.1 app/services/geo_works/discovery/document_builder/spatial_builder.rb
geo_works-0.1.0 app/services/geo_works/discovery/document_builder/spatial_builder.rb