tf1_converter 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/Gemfile.lock +1 -1
- data/bin/tf1convert +10 -0
- data/example/config.yml +32 -0
- data/harness.rb +1 -1
- data/lib/tf1_converter/config.rb +22 -0
- data/lib/tf1_converter/translation.rb +6 -43
- data/lib/tf1_converter/version.rb +1 -1
- data/lib/tf1_converter.rb +1 -0
- metadata +8 -4
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
data/bin/tf1convert
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'tf1_converter'
|
4
|
+
|
5
|
+
config_file = ARGV[0]
|
6
|
+
TF1Converter::Config.load(config_file)
|
7
|
+
|
8
|
+
input = File.open(TF1Converter::Config.input, 'r')
|
9
|
+
output = File.open(TF1Converter::Config.output, 'w')
|
10
|
+
TF1Converter::Translation.from(input).into(output)
|
data/example/config.yml
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
tf1_converter:
|
2
|
+
input: input/test.gpx
|
3
|
+
output: output/test.kml
|
4
|
+
icon_path: c:\program files\gpx2kml\icon\tf_ge\
|
5
|
+
start_path: c:\program files\gpx2kml\test
|
6
|
+
end_path: c:\program files\gpx2kml\test
|
7
|
+
icons: { Custom 0: { icon: 01.png, meaning: Search Start },
|
8
|
+
Custom 1: { icon: 02.png, meaning: Search Stop},
|
9
|
+
Custom 2: { icon: 03.png, meaning: Victim Detected},
|
10
|
+
Custom 3: { icon: 04.png, meaning: Victim Confirmed},
|
11
|
+
Custom 4: { icon: 05.png, meaning: Meaning 5},
|
12
|
+
Custom 5: { icon: 06.png, meaning: Meaning 6},
|
13
|
+
Custom 6: { icon: 07.png, meaning: Meaning 7},
|
14
|
+
Custom 7: { icon: 08.png, meaning: Meaning 8},
|
15
|
+
Custom 8: { icon: 09.png, meaning: Meaning 9},
|
16
|
+
Custom 9: { icon: 10.png, meaning: Meaning 10},
|
17
|
+
Custom 10: { icon: 11.png, meaning: Collection Point },
|
18
|
+
Custom 11: { icon: 12.png, meaning: Meaning 12},
|
19
|
+
Custom 12: { icon: 13.png, meaning: Command Post },
|
20
|
+
Custom 13: { icon: 14.png, meaning: Staging Area},
|
21
|
+
Custom 14: { icon: 15.png, meaning: Criminal Activity },
|
22
|
+
Custom 15: { icon: 16.png, meaning: Meaning 16},
|
23
|
+
Custom 16: { icon: 17.png, meaning: Water Level},
|
24
|
+
Custom 17: { icon: 18.png, meaning: Structure Damage / Safe },
|
25
|
+
Custom 18: { icon: 19.png, meaning: Meaning 19},
|
26
|
+
Custom 19: { icon: 20.png, meaning: Structure Not Safe },
|
27
|
+
Custom 20: { icon: 21.png, meaning: Extra 21 },
|
28
|
+
Custom 21: { icon: 22.png, meaning: Extra 22 },
|
29
|
+
Custom 22: { icon: 23.png, meaning: Extra 23},
|
30
|
+
Residence: { icon: default.png, meaning: Default } }
|
31
|
+
colors: { DarkRed: f0000080,
|
32
|
+
Yellow: f000ffff }
|
data/harness.rb
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module TF1Converter
|
4
|
+
class Config
|
5
|
+
|
6
|
+
def self.load(path)
|
7
|
+
@config = YAML.load(File.open(path, 'r'))
|
8
|
+
end
|
9
|
+
|
10
|
+
%w(icon_path start_path end_path icons colors input output).each do |name|
|
11
|
+
define_singleton_method(name.to_sym) do
|
12
|
+
config[name]
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
def self.config
|
18
|
+
raise "NO CONFIG LOADED" unless @config
|
19
|
+
@config['tf1_converter']
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -19,12 +19,8 @@ module TF1Converter
|
|
19
19
|
output_file.close
|
20
20
|
end
|
21
21
|
|
22
|
-
#TODO: Config file
|
23
|
-
ICON_PATH = "c:\\program files\\gpx2kml\\icon\\tf_ge\\"
|
24
|
-
START_PATH = "c:\\program files\\gpx2kml\\test"
|
25
|
-
END_PATH = "c:\\program files\\gpx2kml\\test"
|
26
|
-
|
27
22
|
def build_kml_from(gpx)
|
23
|
+
icon_path = Config.icon_path
|
28
24
|
Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
|
29
25
|
xml.kml('xmlns' => 'http://www.opengis.net/kml/2.2') do
|
30
26
|
xml.Document do
|
@@ -47,7 +43,7 @@ module TF1Converter
|
|
47
43
|
xml.IconStyle do
|
48
44
|
xml.Icon do
|
49
45
|
#TODO: put this path in a config file
|
50
|
-
xml.href("#{
|
46
|
+
xml.href("#{icon_path}#{icon_name_for(waypoint)}")
|
51
47
|
end
|
52
48
|
end
|
53
49
|
end
|
@@ -100,37 +96,9 @@ module TF1Converter
|
|
100
96
|
end
|
101
97
|
end
|
102
98
|
|
103
|
-
#TODO: put this in a yml file
|
104
|
-
DATA_MAPPING = {
|
105
|
-
'Custom 0' => { icon: '01.png', meaning: 'Search Start' },
|
106
|
-
'Custom 1' => { icon: '02.png', meaning: 'Search Stop'},
|
107
|
-
'Custom 2' => { icon: '03.png', meaning: 'Victim Detected'},
|
108
|
-
'Custom 3' => { icon: '04.png', meaning: 'Victim Confirmed'},
|
109
|
-
'Custom 4' => { icon: '05.png', meaning: 'Meaning 5'},
|
110
|
-
'Custom 5' => { icon: '06.png', meaning: 'Meaning 6'},
|
111
|
-
'Custom 6' => { icon: '07.png', meaning: 'Meaning 7'},
|
112
|
-
'Custom 7' => { icon: '08.png', meaning: 'Meaning 8'},
|
113
|
-
'Custom 8' => { icon: '09.png', meaning: 'Meaning 9'},
|
114
|
-
'Custom 9' => { icon: '10.png', meaning: 'Meaning 10'},
|
115
|
-
'Custom 10' => { icon: '11.png', meaning: 'Collection Point' },
|
116
|
-
'Custom 11' => { icon: '12.png', meaning: 'Meaning 12'},
|
117
|
-
'Custom 12' => { icon: '13.png', meaning: 'Command Post' },
|
118
|
-
'Custom 13' => { icon: '14.png', meaning: 'Staging Area'},
|
119
|
-
'Custom 14' => { icon: '15.png', meaning: 'Criminal Activity' },
|
120
|
-
'Custom 15' => { icon: '16.png', meaning: 'Meaning 16'},
|
121
|
-
'Custom 16' => { icon: '17.png', meaning: 'Water Level'},
|
122
|
-
'Custom 17' => { icon: '18.png', meaning: 'Structure Damage / Safe' },
|
123
|
-
'Custom 18' => { icon: '19.png', meaning: 'Meaning 19'},
|
124
|
-
'Custom 19' => { icon: '20.png', meaning: 'Structure Not Safe' },
|
125
|
-
'Custom 20' => { icon: '21.png', meaning: 'Extra 21' },
|
126
|
-
'Custom 21' => { icon: '22.png', meaning: 'Extra 22' },
|
127
|
-
'Custom 22' => { icon: '23.png', meaning: 'Extra 23'},
|
128
|
-
'Residence' => { icon: 'default.png', meaning: 'Default' },
|
129
|
-
}
|
130
|
-
|
131
99
|
def icon_name_for(waypoint)
|
132
100
|
sym = field_for(waypoint, 'sym')
|
133
|
-
|
101
|
+
Config.icons[sym]['icon']
|
134
102
|
end
|
135
103
|
|
136
104
|
def description_for(waypoint, lat, long)
|
@@ -138,20 +106,15 @@ module TF1Converter
|
|
138
106
|
usng = GeoSwap.utm_to_usng(utm.easting, utm.northing, utm.zone.number, utm.zone.letter)
|
139
107
|
desc = ""
|
140
108
|
desc << field_for(waypoint, 'cmt')
|
141
|
-
desc << '<br>' <<
|
109
|
+
desc << '<br>' << Config.icons[field_for(waypoint, 'sym')]['meaning']
|
142
110
|
desc << '<br>' << "KML file, track, and waypoint comment."
|
143
111
|
desc << "<br>" << "USNG: #{usng}"
|
144
112
|
desc << "<br>" << "UTM: #{utm.to_s}"
|
145
|
-
desc << "<br>" << "#{
|
113
|
+
desc << "<br>" << "#{Config.start_path} - #{Config.end_path}"
|
146
114
|
end
|
147
115
|
|
148
|
-
COLOR_MAP = {
|
149
|
-
'DarkRed' => 'f0000080',
|
150
|
-
'Yellow' => 'f000ffff'
|
151
|
-
}
|
152
|
-
|
153
116
|
def color_for(color)
|
154
|
-
|
117
|
+
Config.colors[color]
|
155
118
|
end
|
156
119
|
|
157
120
|
def coordinates_for(track)
|
data/lib/tf1_converter.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tf1_converter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -126,7 +126,8 @@ dependencies:
|
|
126
126
|
description: A GPX to KML converter for Missouri Task Force 1
|
127
127
|
email:
|
128
128
|
- ethan.vizitei@gmail.com
|
129
|
-
executables:
|
129
|
+
executables:
|
130
|
+
- tf1convert
|
130
131
|
extensions: []
|
131
132
|
extra_rdoc_files: []
|
132
133
|
files:
|
@@ -135,9 +136,12 @@ files:
|
|
135
136
|
- Gemfile
|
136
137
|
- Gemfile.lock
|
137
138
|
- Rakefile
|
139
|
+
- bin/tf1convert
|
140
|
+
- example/config.yml
|
138
141
|
- harness.rb
|
139
142
|
- input/test.gpx
|
140
143
|
- lib/tf1_converter.rb
|
144
|
+
- lib/tf1_converter/config.rb
|
141
145
|
- lib/tf1_converter/translation.rb
|
142
146
|
- lib/tf1_converter/version.rb
|
143
147
|
- lib/tf1_converter/waypoint.rb
|
@@ -160,7 +164,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
160
164
|
version: '0'
|
161
165
|
segments:
|
162
166
|
- 0
|
163
|
-
hash:
|
167
|
+
hash: 4218751711993075820
|
164
168
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
165
169
|
none: false
|
166
170
|
requirements:
|
@@ -169,7 +173,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
169
173
|
version: '0'
|
170
174
|
segments:
|
171
175
|
- 0
|
172
|
-
hash:
|
176
|
+
hash: 4218751711993075820
|
173
177
|
requirements: []
|
174
178
|
rubyforge_project:
|
175
179
|
rubygems_version: 1.8.23
|