module Gpx2Atlas
Public Class Methods
coverage_layer(gpx_file, options)
click to toggle source
# File lib/gpx2atlas.rb, line 8 def self.coverage_layer(gpx_file, options) gpx = GPXFile.new(gpx_file: gpx_file) medium_size = { width: options[:medium_size][:width] * (1 - options[:overlap][:x]), height: options[:medium_size][:height] * (1 - options[:overlap][:y]) } bboxes = [] points = gpx.tracks.first.points.map {|p| [p.lat, p.lon]} range = 0...points.size loop do bbox, count = BoundingBox.best_fit(points[range], medium_size: medium_size, scale: options[:scale]) bboxes << bbox break unless (range.begin...range.end).include?(range.begin + count) range = (range.begin + count - 1)...range.end end result = GPXFile.new result.waypoints = bboxes.map do |bbox| waypoint = Waypoint.new waypoint.lat = bbox.lat_deg waypoint.lon = bbox.lon_deg waypoint end result end