Class: GeoRuby::SimpleFeatures::GeometryFactory
- Inherits:
-
Object
- Object
- GeoRuby::SimpleFeatures::GeometryFactory
- Defined in:
- lib/geo_ruby/simple_features/geometry_factory.rb
Overview
Creates a new geometry according to constructions received from a parser, for example EWKBParser.
Instance Attribute Summary collapse
-
#geometry ⇒ Object
readonly
the built geometry.
Instance Method Summary collapse
-
#abort_geometry ⇒ Object
abort a geometry.
-
#add_point_x_y(x, y) ⇒ Object
add a 2D point to the current geometry.
-
#add_point_x_y_m(x, y, m) ⇒ Object
add a 2D point with M to the current geometry.
-
#add_point_x_y_z(x, y, z) ⇒ Object
add a 3D point to the current geometry.
-
#add_point_x_y_z_m(x, y, z, m) ⇒ Object
add a 3D point with M to the current geometry.
-
#add_points_x_y(xy) ⇒ Object
add 2D points to the current geometry.
-
#add_points_x_y_m(xym) ⇒ Object
add 2D points with M to the current geometry.
-
#add_points_x_y_z(xyz) ⇒ Object
add 3D points to the current geometry.
-
#add_points_x_y_z_m(xyzm) ⇒ Object
add 3D points with M to the current geometry.
-
#begin_geometry(geometry_type, srid = DEFAULT_SRID) ⇒ Object
begin a geometry of type
geometry_type
. -
#end_geometry(with_z = false, with_m = false) ⇒ Object
terminates the current geometry.
-
#initialize ⇒ GeometryFactory
constructor
A new instance of GeometryFactory.
-
#reset ⇒ Object
resets the factory.
Constructor Details
#initialize ⇒ GeometryFactory
Returns a new instance of GeometryFactory.
9 10 11 12 |
# File 'lib/geo_ruby/simple_features/geometry_factory.rb', line 9 def initialize @geometry = nil @geometry_stack = [] end |
Instance Attribute Details
#geometry ⇒ Object (readonly)
the built geometry
7 8 9 |
# File 'lib/geo_ruby/simple_features/geometry_factory.rb', line 7 def geometry @geometry end |
Instance Method Details
#abort_geometry ⇒ Object
abort a geometry
79 80 81 |
# File 'lib/geo_ruby/simple_features/geometry_factory.rb', line 79 def abort_geometry reset end |
#add_point_x_y(x, y) ⇒ Object
add a 2D point to the current geometry
21 22 23 |
# 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) ⇒ Object
add a 2D point with M to the current geometry
41 42 43 44 |
# 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) ⇒ Object
add a 3D point to the current geometry
31 32 33 |
# 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) ⇒ Object
add a 3D point with M to the current geometry
52 53 54 55 |
# 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) ⇒ Object
add 2D points to the current geometry
26 27 28 |
# 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) ⇒ Object
add 2D points with M to the current geometry
47 48 49 |
# 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) ⇒ Object
add 3D points to the current geometry
36 37 38 |
# 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) ⇒ Object
add 3D points with M to the current geometry
58 59 60 |
# 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) ⇒ Object
begin a geometry of type geometry_type
63 64 65 66 67 |
# 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) ⇒ Object
terminates the current geometry
70 71 72 73 74 75 76 |
# 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 ⇒ Object
resets the factory
15 16 17 18 |
# File 'lib/geo_ruby/simple_features/geometry_factory.rb', line 15 def reset @geometry = nil @geometry_stack = [] end |