Class: ActiveRoad::LogicalRoad
- Extended by:
- ActiveSupport::Memoizable
- Defined in:
- app/models/active_road/logical_road.rb
Class Method Summary collapse
Instance Method Summary collapse
- #at(value) ⇒ Object
-
#geometry ⇒ Object
validates_uniqueness_of :objectid validates :boundary, presence: true.
- #geometry_at_location(location) ⇒ Object
- #geometry_at_number(number) ⇒ Object
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 |
#geometry ⇒ Object
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 |