Sha256: e62d17d9465cb4387b8f777396f659a28b4a38ad7978f909fcb3a7da4a2ff132

Contents?: true

Size: 1.24 KB

Versions: 18

Compression:

Stored size: 1.24 KB

Contents

class Chouette::Geometry::LinePresenter
  include Chouette::Geometry::GeneralPresenter

  def initialize(line)
    @line = line
  end

  # return line geometry based on CommercialStopPoint
  #
  def geometry
    features = commercial_links.map { |link| to_line_string_feature(link) }
    GeoRuby::SimpleFeatures::MultiLineString.from_line_strings( features, 4326)
  end
  #
  # return line's stop_areas cloud geometry
  #
  def stop_areas_geometry
    to_multi_point_feature( @line.commercial_stop_areas)
  end

  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

  def routes_localized_commercials(route)
    route.stop_areas.map { |sa| sa.parent}.compact.select { |sa| sa.latitude && sa.longitude}
  end

end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
ninoxe-1.2.3 app/presenters/chouette/geometry/line_presenter.rb
ninoxe-1.2.2 app/presenters/chouette/geometry/line_presenter.rb
ninoxe-1.2.1 app/presenters/chouette/geometry/line_presenter.rb
ninoxe-1.2.0 app/presenters/chouette/geometry/line_presenter.rb
ninoxe-1.1.5 app/presenters/chouette/geometry/line_presenter.rb
ninoxe-1.1.4 app/presenters/chouette/geometry/line_presenter.rb
ninoxe-1.1.3 app/presenters/chouette/geometry/line_presenter.rb
ninoxe-1.1.2 app/presenters/chouette/geometry/line_presenter.rb
ninoxe-1.1.1 app/presenters/chouette/geometry/line_presenter.rb
ninoxe-1.1.0 app/presenters/chouette/geometry/line_presenter.rb
ninoxe-1.0.3 app/presenters/chouette/geometry/line_presenter.rb
ninoxe-1.0.2 app/presenters/chouette/geometry/line_presenter.rb
ninoxe-1.0.1 app/presenters/chouette/geometry/line_presenter.rb
ninoxe-1.0.0 app/presenters/chouette/geometry/line_presenter.rb
ninoxe-0.1.6 app/presenters/chouette/geometry/line_presenter.rb
ninoxe-0.1.5 app/presenters/chouette/geometry/line_presenter.rb
ninoxe-0.1.4 app/presenters/chouette/geometry/line_presenter.rb
ninoxe-0.1.3 app/presenters/chouette/geometry/line_presenter.rb