Class: Chouette::Geometry::LinePresenter

Inherits:
Object
  • Object
show all
Includes:
GeneralPresenter
Defined in:
app/presenters/chouette/geometry/line_presenter.rb

Instance Method Summary collapse

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



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

#geometryObject

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_geometryObject

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