Class: Chouette::Geometry::LinePresenter
- Inherits:
-
Object
- Object
- Chouette::Geometry::LinePresenter
- Includes:
- GeneralPresenter
- Defined in:
- app/presenters/chouette/geometry/line_presenter.rb
Instance Method Summary collapse
- #commercial_links ⇒ Object
-
#geometry ⇒ Object
return line geometry based on CommercialStopPoint.
-
#initialize(line) ⇒ LinePresenter
constructor
A new instance of LinePresenter.
- #routes_localized_commercials(route) ⇒ Object
-
#stop_areas_geometry ⇒ Object
return line’s stop_areas cloud geometry.
Constructor Details
#initialize(line) ⇒ LinePresenter
Returns a new instance of LinePresenter.
4 5 6 |
# File 'app/presenters/chouette/geometry/line_presenter.rb', line 4 def initialize(line) @line = line end |
Instance Method Details
#commercial_links ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'app/presenters/chouette/geometry/line_presenter.rb', line 21 def commercial_links link_keys = [] [].tap do |stop_area_links| @line.routes.each do |route| previous_commercial = nil routes_localized_commercials(route).each do |commercial| if previous_commercial && !link_keys.include?( "#{previous_commercial.id}-#{commercial.id}") stop_area_links << [ previous_commercial, commercial] link_keys << "#{previous_commercial.id}-#{commercial.id}" link_keys << "#{commercial.id}-#{previous_commercial.id}" end previous_commercial = commercial end end end end |
#geometry ⇒ Object
return line geometry based on CommercialStopPoint
10 11 12 13 |
# File 'app/presenters/chouette/geometry/line_presenter.rb', line 10 def geometry features = commercial_links.map { |link| to_line_string_feature(link) } GeoRuby::SimpleFeatures::MultiLineString.from_line_strings( features, 4326) end |
#routes_localized_commercials(route) ⇒ Object
38 39 40 |
# File 'app/presenters/chouette/geometry/line_presenter.rb', line 38 def routes_localized_commercials(route) route.stop_areas.map { |sa| sa.parent}.compact.select { |sa| sa.latitude && sa.longitude} end |
#stop_areas_geometry ⇒ Object
return line’s stop_areas cloud geometry
17 18 19 |
# File 'app/presenters/chouette/geometry/line_presenter.rb', line 17 def stop_areas_geometry to_multi_point_feature( @line.commercial_stop_areas) end |