Module: RGeo::ImplHelper::BasicPolygonMethods
- Included in:
- Cartesian::PolygonImpl, Geographic::ProjectedPolygonImpl, Geographic::SphericalPolygonImpl
- Defined in:
- lib/rgeo/impl_helper/basic_polygon_methods.rb
Overview
:nodoc:
Instance Method Summary collapse
- #boundary ⇒ Object
- #dimension ⇒ Object
- #eql?(rhs_) ⇒ Boolean
- #exterior_ring ⇒ Object
- #geometry_type ⇒ Object
- #initialize(factory_, exterior_ring_, interior_rings_) ⇒ Object
- #interior_ring_n(n_) ⇒ Object
- #interior_rings ⇒ Object
- #is_empty? ⇒ Boolean
- #num_interior_rings ⇒ Object
Instance Method Details
#boundary ⇒ Object
106 107 108 109 110 111 112 113 |
# File 'lib/rgeo/impl_helper/basic_polygon_methods.rb', line 106 def boundary array_ = [] unless @exterior_ring.is_empty? array_ << @exterior_ring end array_.concat(@interior_rings) factory.multi_line_string(array_) end |
#dimension ⇒ Object
91 92 93 |
# File 'lib/rgeo/impl_helper/basic_polygon_methods.rb', line 91 def dimension 2 end |
#eql?(rhs_) ⇒ Boolean
62 63 64 65 66 67 68 |
# File 'lib/rgeo/impl_helper/basic_polygon_methods.rb', line 62 def eql?(rhs_) if rhs_.is_a?(self.class) && rhs_.factory.eql?(@factory) && @exterior_ring.eql?(rhs_.exterior_ring) && @interior_rings.size == rhs_.num_interior_rings rhs_.interior_rings.each_with_index{ |r_, i_| return false unless @interior_rings[i_].eql?(r_) } else false end end |
#exterior_ring ⇒ Object
71 72 73 |
# File 'lib/rgeo/impl_helper/basic_polygon_methods.rb', line 71 def exterior_ring @exterior_ring end |
#geometry_type ⇒ Object
96 97 98 |
# File 'lib/rgeo/impl_helper/basic_polygon_methods.rb', line 96 def geometry_type Feature::Polygon end |
#initialize(factory_, exterior_ring_, interior_rings_) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/rgeo/impl_helper/basic_polygon_methods.rb', line 45 def initialize(factory_, exterior_ring_, interior_rings_) _set_factory(factory_) @exterior_ring = Feature.cast(exterior_ring_, factory_, Feature::LinearRing) unless @exterior_ring raise Error::InvalidGeometry, "Failed to cast exterior ring #{exterior_ring_}" end @interior_rings = (interior_rings_ || []).map do |elem_| elem_ = Feature.cast(elem_, factory_, Feature::LinearRing) unless elem_ raise Error::InvalidGeometry, "Could not cast interior ring #{elem_}" end elem_ end _validate_geometry end |
#interior_ring_n(n_) ⇒ Object
81 82 83 |
# File 'lib/rgeo/impl_helper/basic_polygon_methods.rb', line 81 def interior_ring_n(n_) @interior_rings[n_] end |
#interior_rings ⇒ Object
86 87 88 |
# File 'lib/rgeo/impl_helper/basic_polygon_methods.rb', line 86 def interior_rings @interior_rings.dup end |
#is_empty? ⇒ Boolean
101 102 103 |
# File 'lib/rgeo/impl_helper/basic_polygon_methods.rb', line 101 def is_empty? @exterior_ring.is_empty? end |
#num_interior_rings ⇒ Object
76 77 78 |
# File 'lib/rgeo/impl_helper/basic_polygon_methods.rb', line 76 def num_interior_rings @interior_rings.size end |