lib/rgeo/geos/zm_factory.rb in rgeo-3.0.0.pre.rc.2 vs lib/rgeo/geos/zm_factory.rb in rgeo-3.0.0.pre.rc.3
- old
+ new
@@ -39,19 +39,18 @@
new(opts)
end
end
def initialize(opts = {}) # :nodoc:
- proj4 = opts[:proj4]
coord_sys = opts[:coord_sys]
srid = opts[:srid]
srid ||= coord_sys.authority_code if coord_sys
config = {
buffer_resolution: opts[:buffer_resolution], auto_prepare: opts[:auto_prepare],
wkt_generator: opts[:wkt_generator], wkt_parser: opts[:wkt_parser],
wkb_generator: opts[:wkb_generator], wkb_parser: opts[:wkb_parser],
- srid: srid.to_i, proj4: proj4, coord_sys: coord_sys
+ srid: srid.to_i, coord_sys: coord_sys
}
native_interface = opts[:native_interface] || Geos.preferred_native_interface
if native_interface == :ffi
@zfactory = FFIFactory.new(config.merge(has_z_coordinate: true))
@mfactory = FFIFactory.new(config.merge(has_m_coordinate: true))
@@ -101,26 +100,18 @@
"wktp" => @wkt_parser.properties,
"wkbp" => @wkb_parser.properties,
"apre" => @zfactory.property(:auto_prepare) == :simple,
"nffi" => @zfactory.is_a?(FFIFactory)
}
- proj4 = @zfactory.proj4
coord_sys = @zfactory.coord_sys
- hash["proj4"] = proj4.marshal_dump if proj4
hash["cs"] = coord_sys.to_wkt if coord_sys
hash
end
def marshal_load(data) # :nodoc:
- if (proj4_data = data["proj4"]) && CoordSys.check!(:proj4)
- proj4 = CoordSys::Proj4.allocate
- proj4.marshal_load(proj4_data)
- else
- proj4 = nil
- end
if (coord_sys_data = data["cs"])
- coord_sys = CoordSys::CS.create_from_wkt(coord_sys_data)
+ coord_sys = CoordSys::CONFIG.default_coord_sys_class.create_from_wkt(coord_sys_data)
else
coord_sys = nil
end
initialize(
native_interface: (data["nffi"] ? :ffi : :capi),
@@ -131,11 +122,10 @@
wkt_generator: symbolize_hash(data["wktg"]),
wkb_generator: symbolize_hash(data["wkbg"]),
wkt_parser: symbolize_hash(data["wktp"]),
wkb_parser: symbolize_hash(data["wkbp"]),
auto_prepare: (data["apre"] ? :simple : :disabled),
- proj4: proj4,
coord_sys: coord_sys
)
end
# Psych support
@@ -147,32 +137,18 @@
coder["wkb_generator"] = @wkb_generator.properties
coder["wkt_parser"] = @wkt_parser.properties
coder["wkb_parser"] = @wkb_parser.properties
coder["auto_prepare"] = @zfactory.property(:auto_prepare).to_s
coder["native_interface"] = @zfactory.is_a?(FFIFactory) ? "ffi" : "capi"
- if (proj4 = @zfactory.proj4)
- str = proj4.original_str || proj4.canonical_str
- coder["proj4"] = proj4.radians? ? { "proj4" => str, "radians" => true } : str
- end
if (coord_sys = @zfactory.coord_sys)
coder["coord_sys"] = coord_sys.to_wkt
end
end
def init_with(coder) # :nodoc:
- if (proj4_data = coder["proj4"])
- CoordSys.check!(:proj4)
- if proj4_data.is_a?(Hash)
- proj4 = CoordSys::Proj4.create(proj4_data["proj4"], radians: proj4_data["radians"])
- else
- proj4 = CoordSys::Proj4.create(proj4_data.to_s)
- end
- else
- proj4 = nil
- end
if (coord_sys_data = coder["cs"])
- coord_sys = CoordSys::CS.create_from_wkt(coord_sys_data.to_s)
+ coord_sys = CoordSys::CONFIG.default_coord_sys_class.create_from_wkt(coord_sys_data.to_s)
else
coord_sys = nil
end
initialize(
native_interface: coder["native_interface"] == "ffi" ? :ffi : :capi,
@@ -183,11 +159,10 @@
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"]),
auto_prepare: coder["auto_prepare"] == "disabled" ? :disabled : :simple,
- proj4: proj4,
coord_sys: coord_sys
)
end
# Returns the SRID of geometries created by this factory.
@@ -301,16 +276,10 @@
def multi_polygon(elems)
create_feature(ZMMultiPolygonImpl, @zfactory.multi_polygon(elems), @mfactory.multi_polygon(elems))
end
- # See RGeo::Feature::Factory#proj4
-
- def proj4
- @zfactory.proj4
- end
-
# See RGeo::Feature::Factory#coord_sys
def coord_sys
@zfactory.coord_sys
end
@@ -326,19 +295,19 @@
case original
when ZMGeometryMethods
# Optimization if we're just changing factories, but to
# another ZM factory.
if original.factory != self && ntype == type &&
- (!project || original.factory.proj4 == @proj4)
+ (!project || original.factory.coord_sys == @coord_sys)
zresult = original.z_geometry.dup
zresult.factory = @zfactory
mresult = original.m_geometry.dup
mresult.factory = @mfactory
return original.class.create(self, zresult, mresult)
end
# LineString conversion optimization.
if (original.factory != self || ntype != type) &&
- (!project || original.factory.proj4 == @proj4) &&
+ (!project || original.factory.coord_sys == @coord_sys) &&
type.subtypeof?(Feature::LineString) && ntype.subtypeof?(Feature::LineString)
klass = Factory::IMPL_CLASSES[ntype]
zresult = klass._copy_from(@zfactory, original.z_geometry)
mresult = klass._copy_from(@mfactory, original.m_geometry)
return ZMLineStringImpl.create(self, zresult, mresult)