Method: RGeo::Geographic::Factory#init_with

Defined in:
lib/rgeo/geographic/factory.rb

#init_with(coder) ⇒ Object

:nodoc:



178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
# File 'lib/rgeo/geographic/factory.rb', line 178

def init_with(coder) # :nodoc:
  cs_class = CoordSys::CONFIG.default_coord_sys_class
  coord_sys = coder["cs"]&.then { |cs| cs_class.create_from_wkt(cs) }

  initialize(
    coder["impl_prefix"],
    has_z_coordinate: coder["has_z_coordinate"],
    has_m_coordinate: coder["has_m_coordinate"],
    srid: coder["srid"],
    wkt_generator: symbolize_hash(coder["wkt_generator"]),
    wkb_generator: symbolize_hash(coder["wkb_generator"]),
    wkt_parser: symbolize_hash(coder["wkt_parser"]),
    wkb_parser: symbolize_hash(coder["wkb_parser"]),
    buffer_resolution: coder["buffer_resolution"],
    coord_sys:
  )
  proj_klass = coder["projectorclass"]
  proj_factory = coder["projection_factory"]

  return unless proj_klass && proj_factory

  klass_ = RGeo::Geographic.const_get(proj_klass)

  return unless klass_

  projector = klass_.allocate
  projector.set_factories(self, proj_factory)
  @projector = projector
end