open_gpx_2_kml 0.9.2 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/bin/openGpx2Kml +1 -1
- data/example/config.csv +24 -24
- data/lib/tf1_converter/config.rb +1 -1
- data/lib/tf1_converter/gpx/waypoint.rb +1 -1
- data/lib/tf1_converter/kml/track_color.rb +4 -3
- data/lib/tf1_converter/translation.rb +4 -0
- data/lib/tf1_converter/version.rb +1 -1
- data/spec/fixtures/waypoint-by-name.gpx +15 -15
- data/spec/lib/tf1_converter/gpx/waypoint_spec.rb +2 -2
- data/spec/lib/tf1_converter/kml/track_color_spec.rb +27 -10
- data/spec/lib/tf1_converter/translation_spec.rb +15 -0
- metadata +4 -4
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
data/bin/openGpx2Kml
CHANGED
@@ -8,7 +8,7 @@ input_path = TF1Converter::Config.input
|
|
8
8
|
output_path = TF1Converter::Config.output
|
9
9
|
|
10
10
|
Dir.foreach(input_path) do |file|
|
11
|
-
|
11
|
+
if TF1Converter::Translation.can_translate?(file)
|
12
12
|
input = File.open("#{input_path}/#{file}", 'r')
|
13
13
|
outfile = file.gsub(/\.gpx$/, '.kml')
|
14
14
|
output = File.open("#{output_path}/#{outfile}", 'w')
|
data/example/config.csv
CHANGED
@@ -12,30 +12,30 @@ ICON_PATH
|
|
12
12
|
|
13
13
|
Table of Icons (symbol/filename/meaning/custom_name)
|
14
14
|
ICONS
|
15
|
-
Custom 0,01.png,Search Start,
|
16
|
-
Custom 1,02.png,Search Stop,
|
17
|
-
Custom 2,03.png,Victim Detected,
|
18
|
-
Custom 3,04.png,Victim Confirmed,
|
19
|
-
Custom 4,05.png,Meaning 5,
|
20
|
-
Custom 5,06.png,Meaning 6,
|
21
|
-
Custom 6,07.png,Meaning 7,
|
22
|
-
Custom 7,08.png,Meaning 8,
|
23
|
-
Custom 8,09.png,Meaning 9,
|
24
|
-
Custom 9,10.png,Meaning 10,
|
25
|
-
Custom 10,11.png,Collection Point,
|
26
|
-
Custom 11,12.png,Meaning 12,
|
27
|
-
Custom 12,13.png,Command Post,
|
28
|
-
Custom 13,14.png,Staging Area,
|
29
|
-
Custom 14,15.png,Criminal Activity,
|
30
|
-
Custom 15,16.png,Meaning 16,
|
31
|
-
Custom 16,17.png,Water Level,
|
32
|
-
Custom 17,18.png,Structure Damage / Safe,
|
33
|
-
Custom 18,19.png,Meaning 19,
|
34
|
-
Custom 19,20.png,Structure Not Safe,
|
35
|
-
Custom 20,21.png,Extra 21,
|
36
|
-
Custom 21,22.png,Extra 22,
|
37
|
-
Custom 22,23.png,Extra 23,
|
38
|
-
Residence,default.png,Default,
|
15
|
+
Custom 0,01.png,Search Start,C01
|
16
|
+
Custom 1,02.png,Search Stop,C02
|
17
|
+
Custom 2,03.png,Victim Detected,C03
|
18
|
+
Custom 3,04.png,Victim Confirmed,C04
|
19
|
+
Custom 4,05.png,Meaning 5,C05
|
20
|
+
Custom 5,06.png,Meaning 6,C06
|
21
|
+
Custom 6,07.png,Meaning 7,C07
|
22
|
+
Custom 7,08.png,Meaning 8,C08
|
23
|
+
Custom 8,09.png,Meaning 9,C09
|
24
|
+
Custom 9,10.png,Meaning 10,C10
|
25
|
+
Custom 10,11.png,Collection Point,C11
|
26
|
+
Custom 11,12.png,Meaning 12,C12
|
27
|
+
Custom 12,13.png,Command Post,C13
|
28
|
+
Custom 13,14.png,Staging Area,C14
|
29
|
+
Custom 14,15.png,Criminal Activity,C15
|
30
|
+
Custom 15,16.png,Meaning 16,C16
|
31
|
+
Custom 16,17.png,Water Level,C17
|
32
|
+
Custom 17,18.png,Structure Damage / Safe,C18
|
33
|
+
Custom 18,19.png,Meaning 19,C19
|
34
|
+
Custom 19,20.png,Structure Not Safe,C20
|
35
|
+
Custom 20,21.png,Extra 21,C21
|
36
|
+
Custom 21,22.png,Extra 22,C22
|
37
|
+
Custom 22,23.png,Extra 23,C23
|
38
|
+
Residence,default.png,Default,C24
|
39
39
|
|
40
40
|
Table of Colors (Name/KML Hex)
|
41
41
|
COLORS
|
data/lib/tf1_converter/config.rb
CHANGED
@@ -17,7 +17,7 @@ module TF1Converter
|
|
17
17
|
return map_entry['icon'] if map_entry
|
18
18
|
elsif name
|
19
19
|
@icon_map.values.each do |icon_data|
|
20
|
-
return icon_data['icon'] if icon_data['name'] == name
|
20
|
+
return icon_data['icon'] if icon_data['name'].upcase == name.slice(0,3).upcase
|
21
21
|
end
|
22
22
|
end
|
23
23
|
'default.png'
|
@@ -1,18 +1,19 @@
|
|
1
1
|
module TF1Converter::Kml
|
2
2
|
class TrackColor
|
3
3
|
def self.next
|
4
|
-
if config.use_constant_color
|
4
|
+
return_color = if config.use_constant_color
|
5
5
|
config.constant_color
|
6
6
|
else
|
7
7
|
@colors ||= config.colors.values
|
8
8
|
@color_index ||= 0
|
9
|
-
|
9
|
+
rc = @colors[@color_index]
|
10
10
|
@color_index += 1
|
11
11
|
if @color_index >= @colors.length
|
12
12
|
@color_index = 0
|
13
13
|
end
|
14
|
-
|
14
|
+
rc
|
15
15
|
end
|
16
|
+
return_color.rjust(8, '0')
|
16
17
|
end
|
17
18
|
|
18
19
|
def self.uncache!
|
@@ -11,7 +11,7 @@
|
|
11
11
|
|
12
12
|
<wpt lat="38.9199972" lon="-92.2972443">
|
13
13
|
<ele>159.7036133</ele>
|
14
|
-
<name>
|
14
|
+
<name>C01_some_icon_name</name>
|
15
15
|
<cmt>18-OCT-09 2:17:38PM</cmt>
|
16
16
|
<desc>18-OCT-09 2:17:38PM</desc>
|
17
17
|
<extensions>
|
@@ -23,7 +23,7 @@
|
|
23
23
|
|
24
24
|
<wpt lat="38.9197762" lon="-92.2969611">
|
25
25
|
<ele>206.8077393</ele>
|
26
|
-
<name>
|
26
|
+
<name>C03_some_icon_name</name>
|
27
27
|
<cmt>18-OCT-09 2:18:07PM</cmt>
|
28
28
|
<desc>18-OCT-09 2:18:07PM</desc>
|
29
29
|
<extensions>
|
@@ -35,7 +35,7 @@
|
|
35
35
|
|
36
36
|
<wpt lat="38.9195040" lon="-92.2971813">
|
37
37
|
<ele>228.6776123</ele>
|
38
|
-
<name>
|
38
|
+
<name>C04_some_icon_name</name>
|
39
39
|
<cmt>18-OCT-09 2:18:36PM</cmt>
|
40
40
|
<desc>18-OCT-09 2:18:36PM</desc>
|
41
41
|
<extensions>
|
@@ -47,7 +47,7 @@
|
|
47
47
|
|
48
48
|
<wpt lat="38.9191455" lon="-92.2977024">
|
49
49
|
<ele>230.8405762</ele>
|
50
|
-
<name>
|
50
|
+
<name>C11_some_icon_name</name>
|
51
51
|
<cmt>18-OCT-09 2:19:49PM</cmt>
|
52
52
|
<desc>18-OCT-09 2:19:49PM</desc>
|
53
53
|
<extensions>
|
@@ -59,7 +59,7 @@
|
|
59
59
|
|
60
60
|
<wpt lat="38.9191831" lon="-92.2973642">
|
61
61
|
<ele>234.6857910</ele>
|
62
|
-
<name>
|
62
|
+
<name>C18_some_icon_name</name>
|
63
63
|
<cmt>18-OCT-09 2:20:33PM</cmt>
|
64
64
|
<desc>18-OCT-09 2:20:33PM</desc>
|
65
65
|
<extensions>
|
@@ -71,7 +71,7 @@
|
|
71
71
|
|
72
72
|
<wpt lat="38.9196337" lon="-92.2967348">
|
73
73
|
<ele>237.3294678</ele>
|
74
|
-
<name>
|
74
|
+
<name>C15_icon_name</name>
|
75
75
|
<cmt>18-OCT-09 2:21:40PM</cmt>
|
76
76
|
<desc>18-OCT-09 2:21:40PM</desc>
|
77
77
|
<extensions>
|
@@ -83,7 +83,7 @@
|
|
83
83
|
|
84
84
|
<wpt lat="38.9193832" lon="-92.2963225">
|
85
85
|
<ele>239.7326660</ele>
|
86
|
-
<name>
|
86
|
+
<name>C13_icon_name</name>
|
87
87
|
<cmt>18-OCT-09 2:22:29PM</cmt>
|
88
88
|
<desc>18-OCT-09 2:22:29PM</desc>
|
89
89
|
<extensions>
|
@@ -95,7 +95,7 @@
|
|
95
95
|
|
96
96
|
<wpt lat="38.9192829" lon="-92.2959630">
|
97
97
|
<ele>239.9730225</ele>
|
98
|
-
<name>
|
98
|
+
<name>C14_icon_name</name>
|
99
99
|
<cmt>18-OCT-09 2:23:14PM</cmt>
|
100
100
|
<desc>18-OCT-09 2:23:14PM</desc>
|
101
101
|
<extensions>
|
@@ -107,7 +107,7 @@
|
|
107
107
|
|
108
108
|
<wpt lat="38.9196773" lon="-92.2965171">
|
109
109
|
<ele>238.5311279</ele>
|
110
|
-
<name>
|
110
|
+
<name>C19_icon_name</name>
|
111
111
|
<cmt>18-OCT-09 2:24:06PM</cmt>
|
112
112
|
<desc>18-OCT-09 2:24:06PM</desc>
|
113
113
|
<extensions>
|
@@ -119,7 +119,7 @@
|
|
119
119
|
|
120
120
|
<wpt lat="38.9202020" lon="-92.2973907">
|
121
121
|
<ele>237.5697021</ele>
|
122
|
-
<name>
|
122
|
+
<name>C16_icon_name</name>
|
123
123
|
<cmt>18-OCT-09 2:25:24PM</cmt>
|
124
124
|
<desc>18-OCT-09 2:25:24PM</desc>
|
125
125
|
<extensions>
|
@@ -131,7 +131,7 @@
|
|
131
131
|
|
132
132
|
<wpt lat="38.9207150" lon="-92.2972759">
|
133
133
|
<ele>236.1278076</ele>
|
134
|
-
<name>
|
134
|
+
<name>C21_icon_name</name>
|
135
135
|
<cmt>18-OCT-09 2:26:20PM</cmt>
|
136
136
|
<desc>18-OCT-09 2:26:20PM</desc>
|
137
137
|
<extensions>
|
@@ -143,7 +143,7 @@
|
|
143
143
|
|
144
144
|
<wpt lat="38.9208083" lon="-92.2974574">
|
145
145
|
<ele>234.9260254</ele>
|
146
|
-
<name>
|
146
|
+
<name>C22_icon_name</name>
|
147
147
|
<cmt>18-OCT-09 2:26:40PM</cmt>
|
148
148
|
<desc>18-OCT-09 2:26:40PM</desc>
|
149
149
|
<extensions>
|
@@ -155,7 +155,7 @@
|
|
155
155
|
|
156
156
|
<wpt lat="38.9205154" lon="-92.2977240">
|
157
157
|
<ele>235.6469727</ele>
|
158
|
-
<name>
|
158
|
+
<name>C23_icon_name</name>
|
159
159
|
<cmt>18-OCT-09 2:27:10PM</cmt>
|
160
160
|
<desc>18-OCT-09 2:27:10PM</desc>
|
161
161
|
<extensions>
|
@@ -167,7 +167,7 @@
|
|
167
167
|
|
168
168
|
<wpt lat="38.9201116" lon="-92.2983951">
|
169
169
|
<ele>234.6857910</ele>
|
170
|
-
<name>
|
170
|
+
<name>C02_icon_name</name>
|
171
171
|
<cmt>18-OCT-09 2:29:16PM</cmt>
|
172
172
|
<desc>18-OCT-09 2:29:16PM</desc>
|
173
173
|
<extensions>
|
@@ -179,7 +179,7 @@
|
|
179
179
|
|
180
180
|
<wpt lat="38.9200473" lon="-92.2983507">
|
181
181
|
<ele>235.8873291</ele>
|
182
|
-
<name>
|
182
|
+
<name>C20_icon_name</name>
|
183
183
|
<cmt>Weber Home</cmt>
|
184
184
|
<desc>Weber Home</desc>
|
185
185
|
<extensions>
|
@@ -11,7 +11,7 @@ module TF1Converter::Gpx
|
|
11
11
|
let(:waypoint_by_name_fragment) do
|
12
12
|
%Q{
|
13
13
|
<wpt lat="38.9199972" lon="-92.2972443">
|
14
|
-
<name>
|
14
|
+
<name>C05icon_name_42</name>
|
15
15
|
</wpt>
|
16
16
|
}
|
17
17
|
end
|
@@ -34,7 +34,7 @@ module TF1Converter::Gpx
|
|
34
34
|
|
35
35
|
it 'can find a waypoint by name' do
|
36
36
|
waypoint = waypoint_from(waypoint_by_name_fragment)
|
37
|
-
icon_map['meaningoflife'] = { 'icon' => '42.png', 'name' => '
|
37
|
+
icon_map['meaningoflife'] = { 'icon' => '42.png', 'name' => 'C05' }
|
38
38
|
waypoint.icon_name.should == '42.png'
|
39
39
|
end
|
40
40
|
|
@@ -3,6 +3,8 @@ require_relative '../../../../lib/tf1_converter/kml/track_color'
|
|
3
3
|
|
4
4
|
module TF1Converter::Kml
|
5
5
|
describe TrackColor do
|
6
|
+
let(:colors) { [nil, nil].map{|n| TrackColor.next } }
|
7
|
+
|
6
8
|
before(:each) do
|
7
9
|
::TF1Converter::Config.stub(:colors){ {'Blue'=>'1', 'Red'=>'2', 'Yellow'=>'3'}}
|
8
10
|
end
|
@@ -12,18 +14,33 @@ module TF1Converter::Kml
|
|
12
14
|
::TF1Converter::Config.unstub!(:colors)
|
13
15
|
end
|
14
16
|
|
15
|
-
|
16
|
-
::TF1Converter::Config.stub(:use_constant_color){ false }
|
17
|
-
|
18
|
-
colors
|
17
|
+
describe 'no constant coloring' do
|
18
|
+
before { ::TF1Converter::Config.stub(:use_constant_color){ false } }
|
19
|
+
|
20
|
+
it 'cycles colors when configured that way' do
|
21
|
+
colors[0].should_not == colors[1]
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'left pads each color' do
|
25
|
+
colors.each{ |v| v.should =~ /^0000000\d$/ }
|
26
|
+
end
|
19
27
|
end
|
20
28
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
29
|
+
describe 'constant coloring' do
|
30
|
+
|
31
|
+
before do
|
32
|
+
::TF1Converter::Config.stub(:use_constant_color){ true }
|
33
|
+
::TF1Converter::Config.stub(:constant_color){ 'c12345' }
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'generates a constant color when constant color switch flipped in config' do
|
37
|
+
colors[0].should == colors[1]
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'left pads the color' do
|
41
|
+
colors[0].should == '00c12345'
|
42
|
+
end
|
27
43
|
end
|
44
|
+
|
28
45
|
end
|
29
46
|
end
|
@@ -45,4 +45,19 @@ module TF1Converter
|
|
45
45
|
result.read.should_not =~ /default\.png/
|
46
46
|
end
|
47
47
|
end
|
48
|
+
|
49
|
+
describe 'file type checking' do
|
50
|
+
it 'likes files with gpx endings' do
|
51
|
+
TF1Converter::Translation.can_translate?("big-file.gpx").should be_true
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'wont take files without gpx endings' do
|
55
|
+
TF1Converter::Translation.can_translate?("big-file.kml").should be_false
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'wont parse placeholder files' do
|
59
|
+
TF1Converter::Translation.can_translate?(".").should be_false
|
60
|
+
TF1Converter::Translation.can_translate?("..").should be_false
|
61
|
+
end
|
62
|
+
end
|
48
63
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: open_gpx_2_kml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
12
|
+
date: 2013-03-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -213,7 +213,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
213
213
|
version: '0'
|
214
214
|
segments:
|
215
215
|
- 0
|
216
|
-
hash:
|
216
|
+
hash: 1834710226190470283
|
217
217
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
218
218
|
none: false
|
219
219
|
requirements:
|
@@ -222,7 +222,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
222
222
|
version: '0'
|
223
223
|
segments:
|
224
224
|
- 0
|
225
|
-
hash:
|
225
|
+
hash: 1834710226190470283
|
226
226
|
requirements: []
|
227
227
|
rubyforge_project:
|
228
228
|
rubygems_version: 1.8.23
|