Sha256: d5e2930c4754df76cd7ad268240f34cf71c116f7341e34930596fadd3cbcb8b1

Contents?: true

Size: 763 Bytes

Versions: 1

Compression:

Stored size: 763 Bytes

Contents

module GeoWorks
  class VectorGeometryService
    attr_reader :file_set, :file_path

    def initialize(file_set, file_path)
      @file_set = file_set
      @file_path = file_path.gsub('file:', '')
    end

    # Extracts geometry type from display vector and saves value in FileSet.
    def call
      file_set.geometry_type = geometry
      file_set.save!
    end

    private

      def geometry
        unzip_display_vector
        GeoWorks::Processors::Vector::Info.new(shapefile_dir).geom
      end

      def shapefile_dir
        "#{File.dirname(file_path)}/#{File.basename(file_path, '.zip')}"
      end

      def unzip_display_vector
        system "unzip -o #{file_path} -d #{shapefile_dir}" unless File.directory?(shapefile_dir)
      end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
geo_works-0.2.0 app/services/geo_works/vector_geometry_service.rb