Class: ActiveRoad::LogicalRoad

Inherits:
Base
  • Object
show all
Extended by:
ActiveSupport::Memoizable
Defined in:
app/models/active_road/logical_road.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.find_all_by_bounds(bounds) ⇒ Object



36
37
38
39
40
# File 'app/models/active_road/logical_road.rb', line 36

def self.find_all_by_bounds(bounds)
  ne_corner, sw_corner = bounds.upper_corner, bounds.lower_corner
  sql_box = "SetSRID('BOX3D(#{ne_corner.lng} #{ne_corner.lat}, #{sw_corner.lng} #{sw_corner.lat})'::box3d, #{ActiveRoad.srid})"
  find :all, :conditions => "geometry && #{sql_box}"
end

Instance Method Details

#at(value) ⇒ Object



17
18
19
20
21
22
23
# File 'app/models/active_road/logical_road.rb', line 17

def at(value)
  if Float === value
    geometry_at_location value
  else
    geometry_at_number value
  end
end

#geometryObject

validates_uniqueness_of :objectid validates :boundary, presence: true



13
14
15
# File 'app/models/active_road/logical_road.rb', line 13

def geometry
  GeoRuby::SimpleFeatures::MultiLineString.from_line_strings physical_roads.map(&:geometry)
end

#geometry_at_location(location) ⇒ Object



32
33
34
# File 'app/models/active_road/logical_road.rb', line 32

def geometry_at_location(location)
  geometry.interpolate_point(location) if geometry
end

#geometry_at_number(number) ⇒ Object



25
26
27
28
29
# File 'app/models/active_road/logical_road.rb', line 25

def geometry_at_number(number)
  numbers.find_or_initialize_by_number(number.to_s).tap do |number|
    number.road = self
  end.geometry if number.present?
end