class Charta::Factory::SimpleFeatureFactory

Attributes

ewkt_builder[R]

@return [EwktFeatureBuilder]

srid_provider[R]

@return [SridProvider]

transformer[R]

@return [Transformers::EwktTransformer]

Public Class Methods

build() click to toggle source
# File lib/charta/factory/simple_feature_factory.rb, line 7
def build
  new(
    ewkt_builder: EwktFeatureBuilder.new,
    srid_provider: SridProvider.build,
    transformer: Transformers::EwktTransformerChain.build
  )
end
new(ewkt_builder:, srid_provider:, transformer:) click to toggle source
# File lib/charta/factory/simple_feature_factory.rb, line 23
def initialize(ewkt_builder:, srid_provider:, transformer:)
  @ewkt_builder = ewkt_builder
  @srid_provider = srid_provider
  @transformer = transformer
end

Public Instance Methods

new_feature(coordinates, srs: nil, format: nil) click to toggle source
# File lib/charta/factory/simple_feature_factory.rb, line 29
def new_feature(coordinates, srs: nil, format: nil)
  if coordinates.is_a?(Charta::Geometry)
    coordinates
  elsif coordinates.is_a?(RGeo::Feature::Instance)
    new_feature(Charta.generate_ewkt(coordinates))
  elsif coordinates.to_s =~ /\A[[:space:]]*\z/
    empty_feature(srs)
  else
    convert_feature(coordinates, srs: srs, format: format)
  end
end

Private Instance Methods

convert_feature(coordinates, srs: nil, format: nil) click to toggle source
# File lib/charta/factory/simple_feature_factory.rb, line 43
def convert_feature(coordinates, srs: nil, format: nil)
  srid = srs.nil? ? nil : srid_provider.find(srs)

  ewkt_builder.from_ewkt(transformer.transform(coordinates, srid: srid, format: format))
end