Class: Map::TrackingCleanerService
- Inherits:
-
Object
- Object
- Map::TrackingCleanerService
- Defined in:
- lib/map/tracking_cleaner_service.rb
Instance Attribute Summary collapse
-
#trackings ⇒ Object
readonly
Returns the value of attribute trackings.
Instance Method Summary collapse
- #accuracy_average ⇒ Object
-
#initialize(trackings) ⇒ TrackingCleanerService
constructor
A new instance of TrackingCleanerService.
- #minimum_distance(distance) ⇒ Object
- #simplify ⇒ Object
- #speed ⇒ Object
Constructor Details
#initialize(trackings) ⇒ TrackingCleanerService
Returns a new instance of TrackingCleanerService.
6 7 8 |
# File 'lib/map/tracking_cleaner_service.rb', line 6 def initialize(trackings) @trackings = trackings.to_a end |
Instance Attribute Details
#trackings ⇒ Object (readonly)
Returns the value of attribute trackings.
4 5 6 |
# File 'lib/map/tracking_cleaner_service.rb', line 4 def trackings @trackings end |
Instance Method Details
#accuracy_average ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/map/tracking_cleaner_service.rb', line 36 def accuracy_average log('Precisão média') do sum_accuracy = trackings.inject(0) do |result, tracking| result + tracking.accuracy.to_f end if sum_accuracy > 0 accuracy_average = sum_accuracy / trackings.length trackings.select do |tracking| tracking.st_acao == 'S' || tracking.accuracy.to_f <= (accuracy_average * 1.5) end else trackings end end end |
#minimum_distance(distance) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/map/tracking_cleaner_service.rb', line 18 def minimum_distance(distance) log('Distância') do last_valid = nil trackings.select do |tracking| selected = true atual = Map::LatLonService.new(tracking.latitude, tracking.longitude) if last_valid tracking.distance = atual.distance_to(last_valid) selected = tracking.distance >= distance end last_valid = Map::LatLonService.new(tracking.latitude, tracking.longitude) selected end end end |
#simplify ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/map/tracking_cleaner_service.rb', line 53 def simplify log 'Simplify' do points = trackings.map do |point| {x: point.latitude.to_f, y: point.longitude.to_f} end points = SimplifyRb::Simplifier.new.process(points, 0.00001, false) trackings.select do |point| points.find{ |p| p[:x] == point.latitude.to_f && p[:y] == point.longitude.to_f } end end end |
#speed ⇒ Object
10 11 12 13 14 15 16 |
# File 'lib/map/tracking_cleaner_service.rb', line 10 def speed log('Velocidade') do @trackings.select do |tracking| tracking.st_acao == 'S' || tracking.speed.to_f > 0 end end end |