Class: Mongoid::Geospatial::GeometryField

Inherits:
Array
  • Object
show all
Defined in:
lib/mongoid/geospatial/wrappers/rgeo.rb,
lib/mongoid/geospatial/fields/geometry_field.rb

Overview

Main Geometry Array Holds Lines/Polygons.…

Direct Known Subclasses

Box, Circle, Line, Polygon

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.demongoize(o) ⇒ Object

Database -> Object



35
36
37
# File 'lib/mongoid/geospatial/fields/geometry_field.rb', line 35

def demongoize(o)
  new(o)
end

Instance Method Details

#bounding_boxObject Also known as: bbox



6
7
8
9
10
11
12
13
14
15
16
# File 'lib/mongoid/geospatial/fields/geometry_field.rb', line 6

def bounding_box
  max_x, min_x = -Float::MAX, Float::MAX
  max_y, min_y = -Float::MAX, Float::MAX
  each do |point|
    max_y = point[1] if point[1] > max_y
    min_y = point[1] if point[1] < min_y
    max_x = point[0] if point[0] > max_x
    min_x = point[0] if point[0] < min_x
  end
  [[min_x, min_y], [max_x, max_y]]
end

#center_pointObject Also known as: center



19
20
21
22
# File 'lib/mongoid/geospatial/fields/geometry_field.rb', line 19

def center_point
  min, max = *bbox
  [(min[0] + max[0]) / 2.0, (min[1] + max[1]) / 2.0]
end

#radius(r = 1) ⇒ Object



25
26
27
# File 'lib/mongoid/geospatial/fields/geometry_field.rb', line 25

def radius(r = 1)
  [center, r]
end

#radius_sphere(r = 1, unit = :km) ⇒ Object



29
30
31
# File 'lib/mongoid/geospatial/fields/geometry_field.rb', line 29

def radius_sphere(r = 1, unit = :km)
  radius r.to_f / Mongoid::Geospatial.earth_radius[unit]
end