class GeoRuby::SimpleFeatures::GeometryFactory
Creates a new geometry according to constructions received from a parser, for example EWKBParser
.
Attributes
geometry[R]
the built geometry
Public Class Methods
new()
click to toggle source
# File lib/geo_ruby/simple_features/geometry_factory.rb, line 9 def initialize @geometry = nil @geometry_stack = [] end
Public Instance Methods
abort_geometry()
click to toggle source
abort a geometry
# File lib/geo_ruby/simple_features/geometry_factory.rb, line 79 def abort_geometry reset end
add_point_x_y(x, y)
click to toggle source
add a 2D point to the current geometry
# File lib/geo_ruby/simple_features/geometry_factory.rb, line 21 def add_point_x_y(x, y) @geometry_stack.last.set_x_y(x, y) end
add_point_x_y_m(x, y, m)
click to toggle source
add a 2D point with M to the current geometry
# File lib/geo_ruby/simple_features/geometry_factory.rb, line 41 def add_point_x_y_m(x, y, m) @geometry_stack.last.set_x_y(x, y) @geometry_stack.last.m = m end
add_point_x_y_z(x, y, z)
click to toggle source
add a 3D point to the current geometry
# File lib/geo_ruby/simple_features/geometry_factory.rb, line 31 def add_point_x_y_z(x, y, z) @geometry_stack.last.set_x_y_z(x, y, z) end
add_point_x_y_z_m(x, y, z, m)
click to toggle source
add a 3D point with M to the current geometry
# File lib/geo_ruby/simple_features/geometry_factory.rb, line 52 def add_point_x_y_z_m(x, y, z, m) @geometry_stack.last.set_x_y_z(x, y, z) @geometry_stack.last.m = m end
add_points_x_y(xy)
click to toggle source
add 2D points to the current geometry
# File lib/geo_ruby/simple_features/geometry_factory.rb, line 26 def add_points_x_y(xy) xy.each_slice(2) { |slice| add_point_x_y(*slice) } end
add_points_x_y_m(xym)
click to toggle source
add 2D points with M to the current geometry
# File lib/geo_ruby/simple_features/geometry_factory.rb, line 47 def add_points_x_y_m(xym) xym.each_slice(3) { |slice| add_point_x_y_m(*slice) } end
add_points_x_y_z(xyz)
click to toggle source
add 3D points to the current geometry
# File lib/geo_ruby/simple_features/geometry_factory.rb, line 36 def add_points_x_y_z(xyz) xyz.each_slice(3) { |slice| add_point_x_y_z(*slice) } end
add_points_x_y_z_m(xyzm)
click to toggle source
add 3D points with M to the current geometry
# File lib/geo_ruby/simple_features/geometry_factory.rb, line 58 def add_points_x_y_z_m(xyzm) xyzm.each_slice(4) { |slice| add_point_x_y_z_m(*slice) } end
begin_geometry(geometry_type, srid = DEFAULT_SRID)
click to toggle source
begin a geometry of type geometry_type
# File lib/geo_ruby/simple_features/geometry_factory.rb, line 63 def begin_geometry(geometry_type, srid = DEFAULT_SRID) geometry = geometry_type.new(srid) @geometry = geometry if @geometry.nil? @geometry_stack << geometry end
end_geometry(with_z = false, with_m = false)
click to toggle source
terminates the current geometry
# File lib/geo_ruby/simple_features/geometry_factory.rb, line 70 def end_geometry(with_z = false, with_m = false) @geometry = @geometry_stack.pop @geometry.with_z = with_z @geometry.with_m = with_m # add the newly defined geometry to its parent if there is one @geometry_stack.last << geometry unless @geometry_stack.empty? end
reset()
click to toggle source
resets the factory
# File lib/geo_ruby/simple_features/geometry_factory.rb, line 15 def reset @geometry = nil @geometry_stack = [] end