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

Instance Method Details

#boundaryObject



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

#dimensionObject



91
92
93
# File 'lib/rgeo/impl_helper/basic_polygon_methods.rb', line 91

def dimension
  2
end

#eql?(rhs_) ⇒ Boolean

Returns:

  • (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_ringObject



71
72
73
# File 'lib/rgeo/impl_helper/basic_polygon_methods.rb', line 71

def exterior_ring
  @exterior_ring
end

#geometry_typeObject



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_ringsObject



86
87
88
# File 'lib/rgeo/impl_helper/basic_polygon_methods.rb', line 86

def interior_rings
  @interior_rings.dup
end

#is_empty?Boolean

Returns:

  • (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_ringsObject



76
77
78
# File 'lib/rgeo/impl_helper/basic_polygon_methods.rb', line 76

def num_interior_rings
  @interior_rings.size
end