columbus-cli 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7fcb54bd2d68c1bb502daa8062a44f366da817d6
4
+ data.tar.gz: b2fd9b02b0ae96be50b34a11a8702d21bf73fd51
5
+ SHA512:
6
+ metadata.gz: 7431550a0cbf780d9f015d23a514dca2d371c62cd1a1077220e36cddc46edd471bf4a33747f79c12456fc86ae96e4bae2f75abc369881a0b5fddbd0065be06b3
7
+ data.tar.gz: f3d5c4e34d6447a745b8ab197781f5c6e9278c08cdd3fdc773607413110f1192083b65de92f4f000feade9aefe5b0c55d1e5f928bf713f8956b39a10bc6ccf8b
@@ -0,0 +1,4 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'columbus_cli'
4
+ ColumbusCli.start(ARGV)
@@ -0,0 +1,19 @@
1
+ require 'thor'
2
+
3
+ class ColumbusCli < Thor
4
+
5
+ desc 'csv2gpx CSV_FILE', 'Convert a CSV file created by a Columbus Tracklogger to GPX'
6
+ option :output, desc: 'Output file', required: true
7
+ def csv2gpx(csv_file)
8
+ puts "Converting #{csv_file} to #{options[:output]}..."
9
+
10
+ track = Track.new File.expand_path(csv_file)
11
+ gpx = GPX::GPXFile.new tracks: [track.to_gpx]
12
+ gpx.write(File.expand_path(options[:output]))
13
+
14
+ puts "Conversion complete"
15
+ end
16
+
17
+ end
18
+
19
+ require 'columbus_cli/track.rb'
@@ -0,0 +1,45 @@
1
+ require 'gpx'
2
+
3
+ class ColumbusCli::Track
4
+
5
+ def initialize(file)
6
+ @points = []
7
+ CSV.foreach(file, headers: true) do |p|
8
+ tag = p["TAG"]
9
+
10
+ date = "20#{p['DATE'].scan(/../).join('-')}"
11
+ time = "#{p['TIME'].length == 6 ? p['TIME'] : '0' + p['TIME']}".scan(/../).join(':')
12
+
13
+ ts = Time.parse "#{date}T#{time}"
14
+ lat = parse_lat p["LATITUDE N/S"]
15
+ lon = parse_lon p["LONGITUDE E/W"]
16
+ speed = p["SPEED"].to_i
17
+ alt = p["HEIGHT"].to_i
18
+ @points << { time: ts, lat: lat, lon: lon, speed: speed, elevation: alt, waypoint: (tag == 'C') }
19
+ end
20
+ end
21
+
22
+ def to_gpx
23
+ segment = GPX::Segment.new
24
+ @points.each do |p|
25
+ point = GPX::TrackPoint.new(p)
26
+ segment.append_point point
27
+ end
28
+
29
+ track = GPX::Track.new
30
+ track.append_segment segment
31
+
32
+ track
33
+ end
34
+
35
+ private
36
+
37
+ def parse_lat str
38
+ str[-1] == 'N' ? str.to_f : -str.to_f
39
+ end
40
+
41
+ def parse_lon str
42
+ str[-1] == 'E' ? str.to_f : -str.to_f
43
+ end
44
+
45
+ end
metadata ADDED
@@ -0,0 +1,47 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: columbus-cli
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Aaron Ciaghi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-01-10 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Tools to use with Columbus Trackloggers
14
+ email: aaron.ciaghi@gmail.com
15
+ executables:
16
+ - columbus
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - bin/columbus
21
+ - lib/columbus_cli.rb
22
+ - lib/columbus_cli/track.rb
23
+ homepage: https://github.com/aaronsama/columbus-cli
24
+ licenses:
25
+ - MIT
26
+ metadata: {}
27
+ post_install_message:
28
+ rdoc_options: []
29
+ require_paths:
30
+ - lib
31
+ required_ruby_version: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ required_rubygems_version: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ requirements: []
42
+ rubyforge_project:
43
+ rubygems_version: 2.4.5.1
44
+ signing_key:
45
+ specification_version: 4
46
+ summary: Columbus CLI
47
+ test_files: []