gooby 1.2.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (257) hide show
  1. data/README +133 -341
  2. data/config/ballantyne.yaml +11 -0
  3. data/config/big_sur_marathon.yaml +11 -0
  4. data/config/crowders_mtn_hike.yaml +11 -0
  5. data/config/davidson1.yaml +16 -0
  6. data/config/gooby_config.yaml +28 -135
  7. data/cucumber.yml +1 -0
  8. data/features/build_gem.feature +88 -0
  9. data/features/gooby.feature +300 -0
  10. data/features/install.feature +78 -0
  11. data/features/steps/gooby_steps.rb +245 -0
  12. data/features/support/env.rb +4 -0
  13. data/lib/gooby.rb +24 -30
  14. data/lib/gooby_activity.rb +63 -0
  15. data/lib/gooby_base_object.rb +46 -0
  16. data/lib/gooby_base_sax_parser.rb +95 -0
  17. data/lib/gooby_configuration.rb +33 -115
  18. data/lib/gooby_counter_hash.rb +28 -87
  19. data/lib/gooby_dttm.rb +88 -66
  20. data/lib/gooby_environment.rb +48 -0
  21. data/lib/gooby_garmin_tcx_parser.rb +92 -0
  22. data/lib/gooby_google_kml_generator.rb +168 -0
  23. data/lib/gooby_google_map_generator.rb +284 -349
  24. data/lib/gooby_gpx_parser.rb +97 -0
  25. data/lib/gooby_help_producer.rb +40 -0
  26. data/lib/gooby_introspection.rb +25 -0
  27. data/lib/gooby_io.rb +30 -0
  28. data/lib/gooby_lap.rb +27 -18
  29. data/lib/gooby_process.rb +281 -0
  30. data/lib/gooby_sax_path_parser.rb +43 -0
  31. data/lib/gooby_tcx_extractor.rb +71 -0
  32. data/lib/gooby_track_log_parser.rb +114 -0
  33. data/lib/gooby_trackpoint.rb +276 -0
  34. data/lib/gooby_xml_object.rb +40 -0
  35. data/{img/gicons → out/images}/blank.png +0 -0
  36. data/{img/gicons → out/images}/dd-end.png +0 -0
  37. data/{img/gicons → out/images}/dd-start.png +0 -0
  38. data/{img/gicons → out/images}/marker.png +0 -0
  39. data/{img/gicons → out/images}/marker0.png +0 -0
  40. data/{img/gicons → out/images}/marker00.png +0 -0
  41. data/{img/gicons → out/images}/marker01.png +0 -0
  42. data/{img/gicons → out/images}/marker02.png +0 -0
  43. data/{img/gicons → out/images}/marker03.png +0 -0
  44. data/{img/gicons → out/images}/marker04.png +0 -0
  45. data/{img/gicons → out/images}/marker05.png +0 -0
  46. data/{img/gicons → out/images}/marker06.png +0 -0
  47. data/{img/gicons → out/images}/marker07.png +0 -0
  48. data/{img/gicons → out/images}/marker08.png +0 -0
  49. data/{img/gicons → out/images}/marker09.png +0 -0
  50. data/{img/gicons → out/images}/marker1.png +0 -0
  51. data/{img/gicons → out/images}/marker10.png +0 -0
  52. data/{img/gicons → out/images}/marker11.png +0 -0
  53. data/{img/gicons → out/images}/marker12.png +0 -0
  54. data/{img/gicons → out/images}/marker13.png +0 -0
  55. data/{img/gicons → out/images}/marker14.png +0 -0
  56. data/{img/gicons → out/images}/marker15.png +0 -0
  57. data/{img/gicons → out/images}/marker16.png +0 -0
  58. data/{img/gicons → out/images}/marker17.png +0 -0
  59. data/{img/gicons → out/images}/marker18.png +0 -0
  60. data/{img/gicons → out/images}/marker19.png +0 -0
  61. data/{img/gicons → out/images}/marker2.png +0 -0
  62. data/{img/gicons → out/images}/marker20.png +0 -0
  63. data/{img/gicons → out/images}/marker21.png +0 -0
  64. data/{img/gicons → out/images}/marker22.png +0 -0
  65. data/{img/gicons → out/images}/marker23.png +0 -0
  66. data/{img/gicons → out/images}/marker24.png +0 -0
  67. data/{img/gicons → out/images}/marker25.png +0 -0
  68. data/{img/gicons → out/images}/marker26.png +0 -0
  69. data/{img/gicons → out/images}/marker27.png +0 -0
  70. data/{img/gicons → out/images}/marker28.png +0 -0
  71. data/{img/gicons → out/images}/marker29.png +0 -0
  72. data/{img/gicons → out/images}/marker3.png +0 -0
  73. data/{img/gicons → out/images}/marker30.png +0 -0
  74. data/{img/gicons → out/images}/marker31.png +0 -0
  75. data/{img/gicons → out/images}/marker32.png +0 -0
  76. data/{img/gicons → out/images}/marker33.png +0 -0
  77. data/{img/gicons → out/images}/marker34.png +0 -0
  78. data/{img/gicons → out/images}/marker35.png +0 -0
  79. data/{img/gicons → out/images}/marker36.png +0 -0
  80. data/{img/gicons → out/images}/marker37.png +0 -0
  81. data/{img/gicons → out/images}/marker38.png +0 -0
  82. data/{img/gicons → out/images}/marker39.png +0 -0
  83. data/{img/gicons → out/images}/marker4.png +0 -0
  84. data/{img/gicons → out/images}/marker40.png +0 -0
  85. data/{img/gicons → out/images}/marker41.png +0 -0
  86. data/{img/gicons → out/images}/marker42.png +0 -0
  87. data/{img/gicons → out/images}/marker43.png +0 -0
  88. data/{img/gicons → out/images}/marker44.png +0 -0
  89. data/{img/gicons → out/images}/marker45.png +0 -0
  90. data/{img/gicons → out/images}/marker46.png +0 -0
  91. data/{img/gicons → out/images}/marker47.png +0 -0
  92. data/{img/gicons → out/images}/marker48.png +0 -0
  93. data/{img/gicons → out/images}/marker49.png +0 -0
  94. data/{img/gicons → out/images}/marker5.png +0 -0
  95. data/{img/gicons → out/images}/marker50.png +0 -0
  96. data/{img/gicons → out/images}/marker51.png +0 -0
  97. data/{img/gicons → out/images}/marker52.png +0 -0
  98. data/{img/gicons → out/images}/marker53.png +0 -0
  99. data/{img/gicons → out/images}/marker54.png +0 -0
  100. data/{img/gicons → out/images}/marker55.png +0 -0
  101. data/{img/gicons → out/images}/marker56.png +0 -0
  102. data/{img/gicons → out/images}/marker57.png +0 -0
  103. data/{img/gicons → out/images}/marker58.png +0 -0
  104. data/{img/gicons → out/images}/marker59.png +0 -0
  105. data/{img/gicons → out/images}/marker6.png +0 -0
  106. data/{img/gicons → out/images}/marker60.png +0 -0
  107. data/{img/gicons → out/images}/marker61.png +0 -0
  108. data/{img/gicons → out/images}/marker62.png +0 -0
  109. data/{img/gicons → out/images}/marker63.png +0 -0
  110. data/{img/gicons → out/images}/marker64.png +0 -0
  111. data/{img/gicons → out/images}/marker65.png +0 -0
  112. data/{img/gicons → out/images}/marker66.png +0 -0
  113. data/{img/gicons → out/images}/marker67.png +0 -0
  114. data/{img/gicons → out/images}/marker68.png +0 -0
  115. data/{img/gicons → out/images}/marker69.png +0 -0
  116. data/{img/gicons → out/images}/marker7.png +0 -0
  117. data/{img/gicons → out/images}/marker70.png +0 -0
  118. data/{img/gicons → out/images}/marker71.png +0 -0
  119. data/{img/gicons → out/images}/marker72.png +0 -0
  120. data/{img/gicons → out/images}/marker73.png +0 -0
  121. data/{img/gicons → out/images}/marker74.png +0 -0
  122. data/{img/gicons → out/images}/marker75.png +0 -0
  123. data/{img/gicons → out/images}/marker76.png +0 -0
  124. data/{img/gicons → out/images}/marker77.png +0 -0
  125. data/{img/gicons → out/images}/marker78.png +0 -0
  126. data/{img/gicons → out/images}/marker79.png +0 -0
  127. data/{img/gicons → out/images}/marker8.png +0 -0
  128. data/{img/gicons → out/images}/marker80.png +0 -0
  129. data/{img/gicons → out/images}/marker81.png +0 -0
  130. data/{img/gicons → out/images}/marker82.png +0 -0
  131. data/{img/gicons → out/images}/marker83.png +0 -0
  132. data/{img/gicons → out/images}/marker84.png +0 -0
  133. data/{img/gicons → out/images}/marker85.png +0 -0
  134. data/{img/gicons → out/images}/marker86.png +0 -0
  135. data/{img/gicons → out/images}/marker87.png +0 -0
  136. data/{img/gicons → out/images}/marker88.png +0 -0
  137. data/{img/gicons → out/images}/marker89.png +0 -0
  138. data/{img/gicons → out/images}/marker9.png +0 -0
  139. data/{img/gicons → out/images}/marker90.png +0 -0
  140. data/{img/gicons → out/images}/marker91.png +0 -0
  141. data/{img/gicons → out/images}/marker92.png +0 -0
  142. data/{img/gicons → out/images}/marker93.png +0 -0
  143. data/{img/gicons → out/images}/marker94.png +0 -0
  144. data/{img/gicons → out/images}/marker95.png +0 -0
  145. data/{img/gicons → out/images}/marker96.png +0 -0
  146. data/{img/gicons → out/images}/marker97.png +0 -0
  147. data/{img/gicons → out/images}/marker98.png +0 -0
  148. data/{img/gicons → out/images}/marker99.png +0 -0
  149. data/{img/gicons → out/images}/markerA.png +0 -0
  150. data/{img/gicons → out/images}/markerB.png +0 -0
  151. data/{img/gicons → out/images}/markerC.png +0 -0
  152. data/{img/gicons → out/images}/markerD.png +0 -0
  153. data/{img/gicons → out/images}/markerE.png +0 -0
  154. data/{img/gicons → out/images}/markerF.png +0 -0
  155. data/{img/gicons → out/images}/markerG.png +0 -0
  156. data/{img/gicons → out/images}/markerH.png +0 -0
  157. data/{img/gicons → out/images}/markerI.png +0 -0
  158. data/{img/gicons → out/images}/markerJ.png +0 -0
  159. data/{img/gicons → out/images}/mm_20_red.png +0 -0
  160. data/{img/gicons → out/images}/mm_20_shadow.png +0 -0
  161. data/{img/gicons → out/images}/shadow50.png +0 -0
  162. data/rakefile.rb +79 -0
  163. data/samples.sh +21 -0
  164. data/samples/2008_04_27_13_49_50_tcx.csv +2449 -0
  165. data/samples/2008_04_27_13_49_50_tcx.xml +24560 -0
  166. data/samples/2009_01_01_14_45_00_tcx.xml +10630 -0
  167. data/samples/ballantyne.csv +27 -0
  168. data/samples/ballantyne.gpx +117 -0
  169. data/samples/ballantyne.kml +91 -0
  170. data/samples/big_sur_marathon.html +2766 -0
  171. data/samples/big_sur_marathon.kml +685 -0
  172. data/samples/build_gem_test_results.txt +6 -0
  173. data/samples/crowders_mtn_hike.csv +1065 -0
  174. data/samples/crowders_mtn_hike.html +1283 -0
  175. data/samples/crowders_mtn_hike.log +1 -0
  176. data/samples/cucumber_test_results.txt +302 -0
  177. data/samples/davidson1.csv +1 -0
  178. data/samples/davidson1.html +75 -0
  179. data/samples/davidson_1_point_tcx.csv +0 -0
  180. data/samples/doc.kml +49 -0
  181. data/samples/gps_track_log_asheville_mt_pisgah.txt +1 -0
  182. data/samples/gps_track_logs.txt +1 -0
  183. data/samples/install_test_results.txt +81 -0
  184. data/samples/mt_pisgah.txt +1 -0
  185. data/samples/rspec_test_results.txt +5 -0
  186. data/setup.rb +66 -0
  187. data/spec/gooby_base_object_spec.rb +116 -0
  188. data/spec/gooby_counter_hash_spec.rb +34 -0
  189. data/spec/gooby_dttm_spec.rb +40 -0
  190. data/spec/gooby_spec_helper.rb +9 -0
  191. data/spec/gooby_xml_object_spec.rb +32 -0
  192. metadata +225 -226
  193. data/bin/code_scan.rb +0 -16
  194. data/bin/gooby_been_there.rb +0 -33
  195. data/bin/gooby_config.rb +0 -24
  196. data/bin/gooby_csv_validation.rb +0 -50
  197. data/bin/gooby_first_trackpoints_as_poi.rb +0 -31
  198. data/bin/gooby_gen_gmap.rb +0 -20
  199. data/bin/gooby_parser.rb +0 -21
  200. data/bin/gooby_splitter.rb +0 -21
  201. data/bin/gooby_version.rb +0 -20
  202. data/bin/run_all.sh +0 -33
  203. data/bin/run_been_there.sh +0 -19
  204. data/bin/run_config.sh +0 -12
  205. data/bin/run_csv_validation.sh +0 -15
  206. data/bin/run_db_gen.sh +0 -11
  207. data/bin/run_db_load.sh +0 -11
  208. data/bin/run_first_trackpoints_as_poi.sh +0 -16
  209. data/bin/run_gen_gmaps.sh +0 -21
  210. data/bin/run_parse_full.sh +0 -45
  211. data/bin/run_parse_samples.sh +0 -21
  212. data/bin/run_split.sh +0 -24
  213. data/bin/run_version.sh +0 -12
  214. data/data/20050305_corporate_cup_hm.csv +0 -251
  215. data/data/20050305_corporate_cup_hm.xml +0 -2208
  216. data/data/20050430_nashville_marathon.xml +0 -10043
  217. data/data/20050430_nashville_marathon_km.csv +0 -1208
  218. data/data/20060115_phoenix_marathon.csv +0 -1280
  219. data/data/20060115_phoenix_marathon.xml +0 -10620
  220. data/data/20070101_davidson_11m.csv +0 -251
  221. data/data/20070101_davidson_11m.xml +0 -2020
  222. data/data/20070505_davidson_5k.xml +0 -2875
  223. data/data/20070505_davidson_5k_km.csv +0 -286
  224. data/data/hrm1.csv +0 -5
  225. data/img/gicons/readme.txt +0 -14
  226. data/lib/gooby_code_scanner.rb +0 -288
  227. data/lib/gooby_command.rb +0 -210
  228. data/lib/gooby_course.rb +0 -117
  229. data/lib/gooby_csv_point.rb +0 -71
  230. data/lib/gooby_csv_reader.rb +0 -71
  231. data/lib/gooby_csv_run.rb +0 -28
  232. data/lib/gooby_delim_line.rb +0 -42
  233. data/lib/gooby_duration.rb +0 -86
  234. data/lib/gooby_forerunner_xml_parser.rb +0 -191
  235. data/lib/gooby_forerunner_xml_splitter.rb +0 -115
  236. data/lib/gooby_history.rb +0 -41
  237. data/lib/gooby_kernel.rb +0 -163
  238. data/lib/gooby_line.rb +0 -80
  239. data/lib/gooby_object.rb +0 -22
  240. data/lib/gooby_point.rb +0 -172
  241. data/lib/gooby_run.rb +0 -213
  242. data/lib/gooby_simple_xml_parser.rb +0 -50
  243. data/lib/gooby_test_helper.rb +0 -23
  244. data/lib/gooby_track.rb +0 -47
  245. data/lib/gooby_track_point.rb +0 -229
  246. data/lib/gooby_training_center_xml_parser.rb +0 -224
  247. data/lib/gooby_training_center_xml_splitter.rb +0 -116
  248. data/lib/split_code.sh +0 -29
  249. data/samples/20050305_corporate_cup_hm.html +0 -450
  250. data/samples/20050430_nashville_marathon.html +0 -1668
  251. data/samples/20060115_phoenix_marathon.html +0 -1596
  252. data/samples/20070101_davidson_11m.html +0 -432
  253. data/samples/20070505_davidson_5k.html +0 -413
  254. data/samples/been_there.txt +0 -92
  255. data/samples/hrm1.html +0 -87
  256. data/sql/gooby.ddl +0 -60
  257. data/sql/gooby_load.dml +0 -62
@@ -1,224 +0,0 @@
1
- =begin
2
-
3
- Gooby = Google APIs + Ruby
4
- Gooby - Copyright 2007 by Chris Joakim.
5
- Gooby is available under GNU General Public License (GPL) license.
6
-
7
- =end
8
-
9
- module Gooby
10
-
11
- =begin rdoc
12
- Instances of this class are used to parse a Garmin TrainingCenter XML(TCX) file
13
- in a SAX-like manner. Instances of the model classes - History, Run, Track,
14
- Trackpoint, etc. are created in this parsing process.
15
-
16
- See http://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd for the XML
17
- Schema Definition for Garmin TrainingCenter XML.
18
- =end
19
-
20
- class TrainingCenterXmlParser
21
-
22
- DETAIL_TAGS = %w( Notes StartTime Duration Length Time
23
- TotalTimeSeconds DistanceMeters
24
- LatitudeDegrees LongitudeDegrees AltitudeMeters HeartRateBpm Value BeginPosition EndPosition )
25
-
26
- include REXML::StreamListener
27
-
28
- attr_reader :uom, :history, :cvHash, :tagCount
29
-
30
- def initialize(uom)
31
- @uom = uom
32
- @cv_hash = Hash.new("")
33
- @tag_count = 0
34
- @run_count = 0
35
- @lap_count = 0
36
- @track_count = 0
37
- @trackpoint_count = 0
38
- @curr_text = "";
39
- @history = History.new
40
- @curr_run = nil
41
- @curr_lap = nil
42
- @curr_track = nil
43
- @curr_begin_position = nil
44
- @@curr_end_position = nil
45
- @first_lap_start_time = nil
46
- @curr_lap_start_time = ''
47
- @in_heart_rate_bpm = false
48
- @in_value = false
49
- end
50
-
51
- public
52
-
53
- # SAX API method; handles 'Activity', 'Lap', 'Track', 'HeartRateBpm'.
54
- def tag_start(tagname, attrs)
55
- @tag_count += 1
56
- @currTag = tagname
57
- @cv_hash[tagname] = ''
58
-
59
- if detail_tag?(tagname)
60
- @inDetail = true
61
- end
62
-
63
- if is_tag?('Activity', tagname)
64
- @run_count = @run_count + 1
65
- @lap_count = 0
66
- @track_count = 0
67
- @trackpoint_count = 0
68
- @curr_run = Run.new(@run_count)
69
- @history.add_run(@curr_run)
70
- @cv_hash['Notes'] = ''
71
- return
72
- end
73
-
74
- if is_tag?('Lap', tagname)
75
- @lap_count = @lap_count + 1
76
- @curr_lap = Lap.new(@lap_count)
77
-
78
- attrs.each { |attr|
79
- name = attr[0]
80
- val = attr[1]
81
- if (name && (name == 'StartTime'))
82
- if (@first_lap_start_time == nil)
83
- @first_lap_start_time = "#{val}"
84
- end
85
- @curr_lap_start_time = "#{val}"
86
- end
87
- }
88
- return
89
- end
90
-
91
- if is_tag?('Track', tagname)
92
- @track_count = @track_count + 1
93
- @curr_track = Track.new(@track_count)
94
- return
95
- end
96
-
97
- if is_tag?('HeartRateBpm', tagname)
98
- @in_heart_rate_bpm = true
99
- return
100
- end
101
-
102
- end
103
-
104
- # SAX API method; handles 'Position', 'Trackpoint', 'Track', 'Lap', 'Run', 'HeartRateBpm', 'Value'.
105
- def tag_end(tagname)
106
- if @inDetail
107
- if is_tag?('Value', tagname) && @in_heart_rate_bpm
108
- @cv_hash['HeartRateBpm'] = "#{@curr_text.strip!}"
109
- else
110
- @cv_hash[tagname] = @curr_text
111
- end
112
- else
113
- if is_tag?('Position', tagname)
114
- lat = @cv_hash['LatitudeDegrees']
115
- long = @cv_hash['LongitudeDegrees']
116
- @curr_begin_position = Point.new(lat.strip, long.strip)
117
- @@curr_end_position = Point.new(lat.strip, long.strip)
118
- end
119
-
120
- if is_tag?('BeginPosition', tagname)
121
- lat = @cv_hash['LatitudeDegrees']
122
- long = @cv_hash['LongitudeDegrees']
123
- @curr_begin_position = Point.new(lat.strip, long.strip)
124
- end
125
-
126
- if is_tag?('EndPosition', tagname)
127
- lat = @cv_hash['LatitudeDegrees']
128
- long = @cv_hash['LongitudeDegrees']
129
- @@curr_end_position = Point.new(lat.strip, long.strip)
130
- end
131
-
132
- if is_tag?('Trackpoint', tagname)
133
- @trackpoint_count = @trackpoint_count + 1
134
- lat = @cv_hash['LatitudeDegrees']
135
- long = @cv_hash['LongitudeDegrees']
136
- alt = @cv_hash['AltitudeMeters']
137
- hb = @cv_hash['HeartRateBpm']
138
- hb ? hb = hb.to_s : hb = '-1'
139
- time = @cv_hash['Time']
140
- hash = Hash.new('')
141
- hash['lap_number'] = "#{@lap_count}"
142
- hash['first_lap_start_time'] = "#{@first_lap_start_time}"
143
- hash['curr_lap_start_time'] = "#{@curr_lap_start_time}"
144
- tp = Trackpoint.new(@trackpoint_count, lat, long, alt, hb, time, @uom, hash)
145
- @curr_track.add_trackpoint(tp) if tp.has_coordinates?
146
-
147
- @cv_hash['LatitudeDegrees'] = ''
148
- @cv_hash['LongitudeDegrees'] = ''
149
- @cv_hash['AltitudeMeters'] = ''
150
- @cv_hash['HeartRateBpm'] = ''
151
- @cv_hash['Time'] = ''
152
- end
153
-
154
- if is_tag?('Track', tagname)
155
- if @curr_run != nil
156
- @curr_run.add_track(@curr_track)
157
- end
158
- end
159
-
160
- if is_tag?('Lap', tagname)
161
- @curr_run.add_lap(@curr_lap)
162
- end
163
-
164
- if is_tag?('Activity', tagname)
165
- @curr_run.notes = @cv_hash['Notes']
166
- end
167
-
168
- if is_tag?('HeartRateBpm', tagname)
169
- @in_heart_rate_bpm = false
170
- return
171
- end
172
-
173
- end
174
-
175
- @inDetail = false
176
- @curr_text = ""
177
- @currTag = ""
178
- end
179
-
180
- # SAX API method.
181
- def text(txt)
182
- if @inDetail
183
- @curr_text = @curr_text + txt
184
- end
185
- end
186
-
187
- # Iterate all parsed Run objects and print each with to_s.
188
- def gdump()
189
- @history.runs().each { |run| puts run.to_s }
190
- end
191
-
192
- # Iterate all parsed Run objects and print each with to_s.
193
- def dump()
194
- @history.runs().each { |run| puts run.to_s }
195
- end
196
-
197
- # Iterate all parsed Run objects and print each with put_csv.
198
- def put_run_csv()
199
- @history.runs().each { |run| run.put_csv() }
200
- end
201
-
202
- # Iterate all parsed Run objects and print each with put_tkpt_csv.
203
- def put_all_run_tkpt_csv()
204
- @history.runs.each { |run| run.put_tkpt_csv() }
205
- end
206
-
207
- private
208
-
209
- def is_tag?(tagname, value)
210
- tagname == value
211
- end
212
-
213
- def detail_tag?(tagname)
214
- DETAIL_TAGS.each { |typ|
215
- if typ == tagname
216
- return true
217
- end
218
- }
219
- return false
220
- end
221
-
222
- end
223
-
224
- end # end of module
@@ -1,116 +0,0 @@
1
- =begin
2
-
3
- Gooby = Google APIs + Ruby
4
- Gooby - Copyright 2007 by Chris Joakim.
5
- Gooby is available under GNU General Public License (GPL) license.
6
-
7
- =end
8
-
9
- module Gooby
10
-
11
- =begin rdoc
12
- Instances of this class are used to split a large Garmin TrainingCenter
13
- *.tcx file into individual 'activity_' files.
14
- =end
15
-
16
- class TrainingCenterXmlSplitter < GoobyObject
17
-
18
- attr_reader :out_dir, :training_center_files, :out_files_hash
19
-
20
- def initialize(tcx_file, out_dir)
21
- @out_dir = out_dir
22
- @training_center_files = Array.new
23
- @training_center_files << tcx_file
24
- @out_files_hash = Hash.new
25
- end
26
-
27
- def split
28
- @training_center_files.each { |f| process_file(f) }
29
- write_files
30
- end
31
-
32
- private
33
-
34
- def process_file(training_center_tcx_file)
35
- @file_name = training_center_tcx_file
36
- @tcx_lines = read_lines(@file_name, false)
37
- @line_num = 0
38
- @activity_num = 0
39
- @curr_activity_lines = Array.new
40
- @curr_activity_tkpts = 0
41
- @start_line_num = 0
42
- @end_line_num = 0
43
- @activity_start_time = nil
44
-
45
- @tcx_lines.each { |line|
46
- @line_num = @line_num + 1
47
- if (line.match(/<Activity /))
48
- @activity_num = @activity_num + 1
49
- @start_line_num = @line_num
50
- @curr_activity_lines = Array.new
51
- @curr_activity_lines << line
52
- elsif (line.match(/<Id>/)) # <Id>2007-03-03T15:58:57Z</Id> <StartTime>2007-01-13T15:37:06Z</StartTime>
53
- @curr_activity_lines << line
54
- if @activity_start_time == nil
55
- clone = String.new(line)
56
- clone.gsub!(/[<>]/, ' ')
57
- clone.gsub!(/[-:T]/, '_')
58
- clone.gsub!(/[Z]/, '')
59
- tokens = clone.split
60
- @activity_start_time = tokens[1]
61
- end
62
- elsif (line.match(/<Trackpoint>/))
63
- @curr_activity_tkpts = @curr_activity_tkpts + 1
64
- @curr_activity_lines << line
65
- elsif (line.match(/<\/Activity/))
66
- @end_line_num = @line_num
67
- @curr_activity_lines << line
68
- end_run
69
- elsif (@curr_activity_lines.size > 0)
70
- @curr_activity_lines << line
71
- end
72
- }
73
- end
74
-
75
- def end_run
76
- out_file = "#{@out_dir}/activity_#{@activity_start_time}.xml"
77
- comment = "<!-- file: #{out_file} lines: #{@curr_activity_lines.size} (#{@start_line_num} to #{@end_line_num}) tkpts: #{@curr_activity_tkpts} --> \n"
78
- @curr_activity_lines.insert(0, comment)
79
-
80
- prev_entry = @out_files_hash[out_file]
81
- if prev_entry
82
- if (@curr_activity_lines.size >= prev_entry.size)
83
- puts "previous entry overlaid for #{out_file}. curr=#{@curr_activity_lines.size} prev=#{prev_entry.size}"
84
- @out_files_hash[out_file] = @curr_activity_lines
85
- else
86
- puts "previous entry retained for #{out_file}. curr=#{@curr_activity_lines.size} prev=#{prev_entry.size}"
87
- end
88
- else
89
- puts "new entry for #{out_file}. curr=#{@curr_activity_lines.size}"
90
- @out_files_hash[out_file] = @curr_activity_lines
91
- end
92
-
93
- @curr_activity_lines = Array.new
94
- @curr_activity_tkpts = 0
95
- @start_line_num = 0
96
- @end_line_num = 0
97
- @activity_start_time = nil
98
- end
99
-
100
- def write_files
101
- out_names = @out_files_hash.keys.sort
102
- puts "Writing #{out_names.size} extract files..."
103
- out_names.each { |out_name|
104
- lines = @out_files_hash[out_name]
105
- out = File.new out_name, "w+"
106
- lines.each { |line| out.write line }
107
- out.flush
108
- out.close
109
- puts "File written: #{out_name}"
110
- }
111
- puts "output files written."
112
- end
113
-
114
- end
115
-
116
- end # end of module
@@ -1,29 +0,0 @@
1
-
2
- touch ts_gooby_kernel.rb
3
- touch ts_gooby_test_helper.rb
4
- touch ts_gooby_object.rb
5
- touch ts_gooby_counter_hash.rb
6
- touch ts_gooby_delim_line.rb
7
- touch ts_gooby_dttm.rb
8
- touch ts_gooby_duration.rbcp gooby.rb
9
- touch ts_gooby_forerunner_xml_parser.rb
10
- touch ts_gooby_forerunner_xml_splitter.rb
11
- touch ts_gooby_training_center_xml_parser.rb
12
- touch ts_gooby_training_center_xml_splitter.rb
13
- touch ts_gooby_geo_data.rb
14
- touch ts_gooby_google_map_generator.rb
15
- touch ts_gooby_history.rb
16
- touch ts_gooby_lap.rb
17
- touch ts_gooby_line.rb
18
- touch ts_gooby_configuration.rb
19
- touch ts_gooby_point.rb
20
- touch ts_gooby_csv_point.rb
21
- touch ts_gooby_csv_run.rb
22
- touch ts_gooby_csv_reader.rb
23
- touch ts_gooby_track_point.rb
24
- touch ts_gooby_run.rb
25
- touch ts_gooby_simple_xml_parser.rb
26
- touch ts_gooby_track.rb
27
- touch ts_gooby_course.rb
28
- touch ts_gooby_code_scanner.rb
29
- touch ts_gooby_command.rb
@@ -1,450 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml">
4
- <head>
5
- <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
6
- <meta name="description" content="Google Map generated with Gooby 1.2.0">
7
- <meta name="keywords" content="Google Map Gooby 1.2.0 GPS">
8
- <title> Google Map by Gooby </title>
9
- <script src='http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAdn5SVzjZKZKs1IRkFdx52xR1l5lLpU9GCFYoS8YrTf8v3gVJ2hRLV1dTSiqDWwWSnMRkM7SVr0EKSA' type='text/javascript'></script>
10
- <script type="text/javascript">
11
- //<![CDATA[
12
- function load() {
13
- if (GBrowserIsCompatible()) {
14
- var map = new GMap2(document.getElementById("map"));
15
- map.addControl(new GLargeMapControl());
16
- map.addControl(new GMapTypeControl());
17
-
18
- var centerPoint = new GLatLng(35.199685, -80.837205); // Gooby 1.2.0
19
- map.setCenter(centerPoint, 12);
20
-
21
-
22
- var points = new Array();
23
- points.push(new GLatLng(35.22101,-80.84566)); // (1 of 250.0) 2005-03-05T13:00:29Z 0 00:00:00 0.0 Gooby 1.2.0
24
- points.push(new GLatLng(35.22054,-80.84506)); // (2 of 250.0) 2005-03-05T13:00:49Z 20 00:00:20 0.046918021941152 Gooby 1.2.0
25
- points.push(new GLatLng(35.21998,-80.84446)); // (3 of 250.0) 2005-03-05T13:01:10Z 41 00:00:41 0.0983360698469204 Gooby 1.2.0
26
- points.push(new GLatLng(35.22094,-80.84309)); // (4 of 250.0) 2005-03-05T13:01:54Z 85 00:01:25 0.200210979979266 Gooby 1.2.0
27
- points.push(new GLatLng(35.22127,-80.84268)); // (5 of 250.0) 2005-03-05T13:02:09Z 100 00:01:40 0.232697037336493 Gooby 1.2.0
28
- points.push(new GLatLng(35.22155,-80.8427)); // (6 of 250.0) 2005-03-05T13:02:19Z 110 00:01:50 0.252075125089657 Gooby 1.2.0
29
- points.push(new GLatLng(35.22185,-80.84283)); // (7 of 250.0) 2005-03-05T13:02:29Z 120 00:02:00 0.274062567291757 Gooby 1.2.0
30
- points.push(new GLatLng(35.22219,-80.84317)); // (8 of 250.0) 2005-03-05T13:02:41Z 132 00:02:12 0.304395193657625 Gooby 1.2.0
31
- points.push(new GLatLng(35.22283,-80.84416)); // (9 of 250.0) 2005-03-05T13:03:10Z 161 00:02:41 0.375650926768755 Gooby 1.2.0
32
- points.push(new GLatLng(35.22395,-80.84504)); // (10 of 250.0) 2005-03-05T13:03:53Z 204 00:03:24 0.467600066437587 Gooby 1.2.0
33
- points.push(new GLatLng(35.22403,-80.84515)); // (11 of 250.0) 2005-03-05T13:03:57Z 208 00:03:28 0.475912452222793 Gooby 1.2.0
34
- points.push(new GLatLng(35.22425,-80.84502)); // (12 of 250.0) 2005-03-05T13:04:04Z 215 00:03:35 0.492790426980333 Gooby 1.2.0
35
- points.push(new GLatLng(35.2256,-80.84729)); // (13 of 250.0) 2005-03-05T13:05:11Z 282 00:04:42 0.651262953423234 Gooby 1.2.0
36
- points.push(new GLatLng(35.22601,-80.8477)); // (14 of 250.0) 2005-03-05T13:05:27Z 298 00:04:58 0.687839739739913 Gooby 1.2.0
37
- points.push(new GLatLng(35.22661,-80.84843)); // (15 of 250.0) 2005-03-05T13:05:54Z 325 00:05:25 0.746285122724138 Gooby 1.2.0
38
- points.push(new GLatLng(35.22715,-80.84901)); // (16 of 250.0) 2005-03-05T13:06:16Z 347 00:05:47 0.795918233953314 Gooby 1.2.0
39
- points.push(new GLatLng(35.22663,-80.84963)); // (17 of 250.0) 2005-03-05T13:06:38Z 369 00:06:09 0.846069376187672 Gooby 1.2.0
40
- points.push(new GLatLng(35.22614,-80.85034)); // (18 of 250.0) 2005-03-05T13:07:01Z 392 00:06:32 0.898526894757261 Gooby 1.2.0
41
- points.push(new GLatLng(35.22601,-80.85045)); // (19 of 250.0) 2005-03-05T13:07:06Z 397 00:06:37 0.909445268471631 Gooby 1.2.0
42
- points.push(new GLatLng(35.22577,-80.85079)); // (20 of 250.0) 2005-03-05T13:07:17Z 408 00:06:48 0.934806000876925 Gooby 1.2.0
43
- points.push(new GLatLng(35.22545,-80.85105)); // (21 of 250.0) 2005-03-05T13:07:29Z 420 00:07:00 0.961341335304109 Gooby 1.2.0
44
- points.push(new GLatLng(35.22506,-80.85122)); // (22 of 250.0) 2005-03-05T13:07:42Z 433 00:07:13 0.989943630017703 Gooby 1.2.0
45
- points.push(new GLatLng(35.22487,-80.85137)); // (23 of 250.0) 2005-03-05T13:07:49Z 440 00:07:20 1.00556377588005 1.0 00:07:20 Gooby 1.2.0
46
- points.push(new GLatLng(35.22474,-80.85146)); // (24 of 250.0) 2005-03-05T13:07:54Z 445 00:07:25 1.01588215675517 Gooby 1.2.0
47
- points.push(new GLatLng(35.22444,-80.85184)); // (25 of 250.0) 2005-03-05T13:08:08Z 459 00:07:39 1.04570805809106 Gooby 1.2.0
48
- points.push(new GLatLng(35.22434,-80.85217)); // (26 of 250.0) 2005-03-05T13:08:18Z 469 00:07:49 1.06557326927759 Gooby 1.2.0
49
- points.push(new GLatLng(35.22399,-80.85405)); // (27 of 250.0) 2005-03-05T13:09:09Z 520 00:08:40 1.17440056804311 Gooby 1.2.0
50
- points.push(new GLatLng(35.22506,-80.85521)); // (28 of 250.0) 2005-03-05T13:09:55Z 566 00:09:26 1.27314970425493 Gooby 1.2.0
51
- points.push(new GLatLng(35.22592,-80.85596)); // (29 of 250.0) 2005-03-05T13:10:28Z 599 00:09:59 1.34610297134886 Gooby 1.2.0
52
- points.push(new GLatLng(35.22695,-80.85671)); // (30 of 250.0) 2005-03-05T13:11:07Z 638 00:10:38 1.42890298309629 Gooby 1.2.0
53
- points.push(new GLatLng(35.22734,-80.85633)); // (31 of 250.0) 2005-03-05T13:11:23Z 654 00:10:54 1.46334106463099 Gooby 1.2.0
54
- points.push(new GLatLng(35.22897,-80.8544)); // (32 of 250.0) 2005-03-05T13:12:35Z 726 00:12:06 1.62001531054915 Gooby 1.2.0
55
- points.push(new GLatLng(35.22964,-80.85371)); // (33 of 250.0) 2005-03-05T13:13:04Z 755 00:12:35 1.68050655491899 Gooby 1.2.0
56
- points.push(new GLatLng(35.232,-80.85109)); // (34 of 250.0) 2005-03-05T13:14:48Z 859 00:14:19 1.90061711602528 Gooby 1.2.0
57
- points.push(new GLatLng(35.23193,-80.85088)); // (35 of 250.0) 2005-03-05T13:14:54Z 865 00:14:25 1.91341734302992 Gooby 1.2.0
58
- points.push(new GLatLng(35.23105,-80.84968)); // (36 of 250.0) 2005-03-05T13:15:36Z 907 00:15:07 2.00442699838485 2.0 00:07:47 Gooby 1.2.0
59
- points.push(new GLatLng(35.23032,-80.84895)); // (37 of 250.0) 2005-03-05T13:16:08Z 939 00:15:39 2.06955003935657 Gooby 1.2.0
60
- points.push(new GLatLng(35.22998,-80.84882)); // (38 of 250.0) 2005-03-05T13:16:20Z 951 00:15:51 2.0941595900545 Gooby 1.2.0
61
- points.push(new GLatLng(35.22974,-80.84888)); // (39 of 250.0) 2005-03-05T13:16:28Z 959 00:15:59 2.11108337231424 Gooby 1.2.0
62
- points.push(new GLatLng(35.22925,-80.84893)); // (40 of 250.0) 2005-03-05T13:16:44Z 975 00:16:15 2.14505489093239 Gooby 1.2.0
63
- points.push(new GLatLng(35.22882,-80.84886)); // (41 of 250.0) 2005-03-05T13:16:58Z 989 00:16:29 2.17502504361516 Gooby 1.2.0
64
- points.push(new GLatLng(35.2285,-80.84862)); // (42 of 250.0) 2005-03-05T13:17:10Z 1001 00:16:41 2.20095299731342 Gooby 1.2.0
65
- points.push(new GLatLng(35.22781,-80.84785)); // (43 of 250.0) 2005-03-05T13:17:40Z 1031 00:17:11 2.26545956261107 Gooby 1.2.0
66
- points.push(new GLatLng(35.22674,-80.84648)); // (44 of 250.0) 2005-03-05T13:18:33Z 1084 00:18:04 2.37243340465649 Gooby 1.2.0
67
- points.push(new GLatLng(35.2264,-80.84611)); // (45 of 250.0) 2005-03-05T13:18:49Z 1100 00:18:20 2.40386385307936 Gooby 1.2.0
68
- points.push(new GLatLng(35.22397,-80.84317)); // (46 of 250.0) 2005-03-05T13:20:41Z 1212 00:20:12 2.63991390888025 Gooby 1.2.0
69
- points.push(new GLatLng(35.22363,-80.84294)); // (47 of 250.0) 2005-03-05T13:20:51Z 1222 00:20:22 2.66675264078349 Gooby 1.2.0
70
- points.push(new GLatLng(35.22331,-80.8426)); // (48 of 250.0) 2005-03-05T13:21:04Z 1235 00:20:35 2.69602795767016 Gooby 1.2.0
71
- points.push(new GLatLng(35.22294,-80.84212)); // (49 of 250.0) 2005-03-05T13:21:23Z 1254 00:20:54 2.73327613433162 Gooby 1.2.0
72
- points.push(new GLatLng(35.22182,-80.8409)); // (50 of 250.0) 2005-03-05T13:22:08Z 1299 00:21:39 2.83685803071362 Gooby 1.2.0
73
- points.push(new GLatLng(35.22142,-80.84038)); // (51 of 250.0) 2005-03-05T13:22:27Z 1318 00:21:58 2.8771710819106 Gooby 1.2.0
74
- points.push(new GLatLng(35.22013,-80.83905)); // (52 of 250.0) 2005-03-05T13:23:19Z 1370 00:22:50 2.99369860184411 Gooby 1.2.0
75
- points.push(new GLatLng(35.22,-80.83886)); // (53 of 250.0) 2005-03-05T13:23:27Z 1378 00:22:58 3.00768703301529 3.0 00:07:51 Gooby 1.2.0
76
- points.push(new GLatLng(35.2191,-80.8377)); // (54 of 250.0) 2005-03-05T13:24:10Z 1421 00:23:41 3.0979826551601 Gooby 1.2.0
77
- points.push(new GLatLng(35.2185,-80.83717)); // (55 of 250.0) 2005-03-05T13:24:32Z 1443 00:24:03 3.14910358253967 Gooby 1.2.0
78
- points.push(new GLatLng(35.2182,-80.83676)); // (56 of 250.0) 2005-03-05T13:24:47Z 1458 00:24:18 3.18017053416113 Gooby 1.2.0
79
- points.push(new GLatLng(35.2173,-80.83577)); // (57 of 250.0) 2005-03-05T13:25:22Z 1493 00:24:53 3.2637709317134 Gooby 1.2.0
80
- points.push(new GLatLng(35.21622,-80.83451)); // (58 of 250.0) 2005-03-05T13:26:10Z 1541 00:25:41 3.36685273369255 Gooby 1.2.0
81
- points.push(new GLatLng(35.21532,-80.83287)); // (59 of 250.0) 2005-03-05T13:27:06Z 1597 00:26:37 3.47836872674983 Gooby 1.2.0
82
- points.push(new GLatLng(35.21431,-80.83142)); // (60 of 250.0) 2005-03-05T13:28:00Z 1651 00:27:31 3.58592481990532 Gooby 1.2.0
83
- points.push(new GLatLng(35.21348,-80.83064)); // (61 of 250.0) 2005-03-05T13:28:35Z 1686 00:28:06 3.65822231694953 Gooby 1.2.0
84
- points.push(new GLatLng(35.21322,-80.83034)); // (62 of 250.0) 2005-03-05T13:28:48Z 1699 00:28:19 3.68290929709234 Gooby 1.2.0
85
- points.push(new GLatLng(35.21298,-80.83006)); // (63 of 250.0) 2005-03-05T13:29:00Z 1711 00:28:31 3.70581685363569 Gooby 1.2.0
86
- points.push(new GLatLng(35.2126,-80.8294)); // (64 of 250.0) 2005-03-05T13:29:23Z 1734 00:28:54 3.75139371097094 Gooby 1.2.0
87
- points.push(new GLatLng(35.21225,-80.82908)); // (65 of 250.0) 2005-03-05T13:29:37Z 1748 00:29:08 3.7815769596586 Gooby 1.2.0
88
- points.push(new GLatLng(35.21157,-80.82863)); // (66 of 250.0) 2005-03-05T13:30:00Z 1771 00:29:31 3.83498558070155 Gooby 1.2.0
89
- points.push(new GLatLng(35.21099,-80.82798)); // (67 of 250.0) 2005-03-05T13:30:27Z 1798 00:29:58 3.8893184152624 Gooby 1.2.0
90
- points.push(new GLatLng(35.21071,-80.82757)); // (68 of 250.0) 2005-03-05T13:30:42Z 1813 00:30:13 3.91948275228275 Gooby 1.2.0
91
- points.push(new GLatLng(35.21015,-80.82644)); // (69 of 250.0) 2005-03-05T13:31:20Z 1851 00:30:51 3.99408715367927 Gooby 1.2.0
92
- points.push(new GLatLng(35.21007,-80.82633)); // (70 of 250.0) 2005-03-05T13:31:24Z 1855 00:30:55 4.00240016732769 4.0 00:07:57 Gooby 1.2.0
93
- points.push(new GLatLng(35.20979,-80.82599)); // (71 of 250.0) 2005-03-05T13:31:37Z 1868 00:31:08 4.02965092287953 Gooby 1.2.0
94
- points.push(new GLatLng(35.20837,-80.82466)); // (72 of 250.0) 2005-03-05T13:32:37Z 1928 00:32:08 4.15319027560221 Gooby 1.2.0
95
- points.push(new GLatLng(35.20794,-80.82436)); // (73 of 250.0) 2005-03-05T13:32:52Z 1943 00:32:23 4.18738689295133 Gooby 1.2.0
96
- points.push(new GLatLng(35.20736,-80.82414)); // (74 of 250.0) 2005-03-05T13:33:11Z 1962 00:32:42 4.22933945730162 Gooby 1.2.0
97
- points.push(new GLatLng(35.20704,-80.8241)); // (75 of 250.0) 2005-03-05T13:33:21Z 1972 00:32:52 4.25156316199676 Gooby 1.2.0
98
- points.push(new GLatLng(35.20659,-80.8241)); // (76 of 250.0) 2005-03-05T13:33:35Z 1986 00:33:06 4.28265362467911 Gooby 1.2.0
99
- points.push(new GLatLng(35.20607,-80.82414)); // (77 of 250.0) 2005-03-05T13:33:51Z 2002 00:33:22 4.31865129835617 Gooby 1.2.0
100
- points.push(new GLatLng(35.2047,-80.82448)); // (78 of 250.0) 2005-03-05T13:34:38Z 2049 00:34:09 4.41523110646448 Gooby 1.2.0
101
- points.push(new GLatLng(35.20286,-80.82489)); // (79 of 250.0) 2005-03-05T13:35:42Z 2113 00:35:13 4.5444466773487 Gooby 1.2.0
102
- points.push(new GLatLng(35.20142,-80.82511)); // (80 of 250.0) 2005-03-05T13:36:29Z 2160 00:36:00 4.64470853975442 Gooby 1.2.0
103
- points.push(new GLatLng(35.20073,-80.82528)); // (81 of 250.0) 2005-03-05T13:36:52Z 2183 00:36:23 4.69333712696039 Gooby 1.2.0
104
- points.push(new GLatLng(35.19947,-80.82569)); // (82 of 250.0) 2005-03-05T13:37:35Z 2226 00:37:06 4.78341534575197 Gooby 1.2.0
105
- points.push(new GLatLng(35.1985,-80.82612)); // (83 of 250.0) 2005-03-05T13:38:07Z 2258 00:37:38 4.8546942210228 Gooby 1.2.0
106
- points.push(new GLatLng(35.19822,-80.82633)); // (84 of 250.0) 2005-03-05T13:38:18Z 2269 00:37:49 4.87738353125698 Gooby 1.2.0
107
- points.push(new GLatLng(35.19809,-80.82629)); // (85 of 250.0) 2005-03-05T13:38:21Z 2272 00:37:52 4.88664508854348 Gooby 1.2.0
108
- points.push(new GLatLng(35.19794,-80.82633)); // (86 of 250.0) 2005-03-05T13:38:26Z 2277 00:37:57 4.89725196852619 Gooby 1.2.0
109
- points.push(new GLatLng(35.19646,-80.82706)); // (87 of 250.0) 2005-03-05T13:39:20Z 2331 00:38:51 5.00749881672153 5.0 00:07:56 Gooby 1.2.0
110
- points.push(new GLatLng(35.19588,-80.82734)); // (88 of 250.0) 2005-03-05T13:39:40Z 2351 00:39:11 5.050576534569 Gooby 1.2.0
111
- points.push(new GLatLng(35.19507,-80.8276)); // (89 of 250.0) 2005-03-05T13:40:07Z 2378 00:39:38 5.10843268542583 Gooby 1.2.0
112
- points.push(new GLatLng(35.19331,-80.82835)); // (90 of 250.0) 2005-03-05T13:41:10Z 2441 00:40:41 5.23719334496019 Gooby 1.2.0
113
- points.push(new GLatLng(35.19311,-80.82839)); // (91 of 250.0) 2005-03-05T13:41:17Z 2448 00:40:48 5.25119470467369 Gooby 1.2.0
114
- points.push(new GLatLng(35.19305,-80.8279)); // (92 of 250.0) 2005-03-05T13:41:31Z 2462 00:41:02 5.27916957701965 Gooby 1.2.0
115
- points.push(new GLatLng(35.19286,-80.82712)); // (93 of 250.0) 2005-03-05T13:41:54Z 2485 00:41:25 5.32512429470667 Gooby 1.2.0
116
- points.push(new GLatLng(35.19281,-80.82665)); // (94 of 250.0) 2005-03-05T13:42:07Z 2498 00:41:38 5.35188512689578 Gooby 1.2.0
117
- points.push(new GLatLng(35.19341,-80.82526)); // (95 of 250.0) 2005-03-05T13:42:47Z 2538 00:42:18 5.44064176601869 Gooby 1.2.0
118
- points.push(new GLatLng(35.19339,-80.82506)); // (96 of 250.0) 2005-03-05T13:42:52Z 2543 00:42:23 5.45201819754931 Gooby 1.2.0
119
- points.push(new GLatLng(35.19262,-80.82457)); // (97 of 250.0) 2005-03-05T13:43:15Z 2566 00:42:46 5.51198131194714 Gooby 1.2.0
120
- points.push(new GLatLng(35.192,-80.8241)); // (98 of 250.0) 2005-03-05T13:43:41Z 2592 00:43:12 5.56237103993908 Gooby 1.2.0
121
- points.push(new GLatLng(35.1915,-80.82378)); // (99 of 250.0) 2005-03-05T13:44:00Z 2611 00:43:31 5.60135579217499 Gooby 1.2.0
122
- points.push(new GLatLng(35.18996,-80.82313)); // (100 of 250.0) 2005-03-05T13:44:53Z 2664 00:44:24 5.71390631630715 Gooby 1.2.0
123
- points.push(new GLatLng(35.18932,-80.82279)); // (101 of 250.0) 2005-03-05T13:45:14Z 2685 00:44:45 5.76211154544005 Gooby 1.2.0
124
- points.push(new GLatLng(35.1879,-80.82223)); // (102 of 250.0) 2005-03-05T13:46:05Z 2736 00:45:36 5.86518904360886 Gooby 1.2.0
125
- points.push(new GLatLng(35.18781,-80.82225)); // (103 of 250.0) 2005-03-05T13:46:10Z 2741 00:45:41 5.87150921538085 Gooby 1.2.0
126
- points.push(new GLatLng(35.18571,-80.82131)); // (104 of 250.0) 2005-03-05T13:47:20Z 2811 00:46:51 6.02600216440376 6.0 00:08:00 Gooby 1.2.0
127
- points.push(new GLatLng(35.1849,-80.82105)); // (105 of 250.0) 2005-03-05T13:47:50Z 2841 00:47:21 6.08385879638182 Gooby 1.2.0
128
- points.push(new GLatLng(35.18447,-80.82088)); // (106 of 250.0) 2005-03-05T13:48:06Z 2857 00:47:37 6.11507981370546 Gooby 1.2.0
129
- points.push(new GLatLng(35.18376,-80.82045)); // (107 of 250.0) 2005-03-05T13:48:29Z 2880 00:48:00 6.16981423395522 Gooby 1.2.0
130
- points.push(new GLatLng(35.18344,-80.82032)); // (108 of 250.0) 2005-03-05T13:48:40Z 2891 00:48:11 6.19310985522704 Gooby 1.2.0
131
- points.push(new GLatLng(35.18301,-80.82017)); // (109 of 250.0) 2005-03-05T13:48:56Z 2907 00:48:27 6.22400249414074 Gooby 1.2.0
132
- points.push(new GLatLng(35.18271,-80.82011)); // (110 of 250.0) 2005-03-05T13:49:08Z 2919 00:48:39 6.24500459583866 Gooby 1.2.0
133
- points.push(new GLatLng(35.18101,-80.81938)); // (111 of 250.0) 2005-03-05T13:50:13Z 2984 00:49:44 6.36948149803506 Gooby 1.2.0
134
- points.push(new GLatLng(35.1785,-80.81846)); // (112 of 250.0) 2005-03-05T13:51:53Z 3084 00:51:24 6.550512405446 Gooby 1.2.0
135
- points.push(new GLatLng(35.17769,-80.81798)); // (113 of 250.0) 2005-03-05T13:52:22Z 3113 00:51:53 6.61269444995211 Gooby 1.2.0
136
- points.push(new GLatLng(35.17734,-80.8177)); // (114 of 250.0) 2005-03-05T13:52:36Z 3127 00:52:07 6.64158687021785 Gooby 1.2.0
137
- points.push(new GLatLng(35.17719,-80.81781)); // (115 of 250.0) 2005-03-05T13:52:42Z 3133 00:52:13 6.65366946336068 Gooby 1.2.0
138
- points.push(new GLatLng(35.17706,-80.81807)); // (116 of 250.0) 2005-03-05T13:52:50Z 3141 00:52:21 6.67088160702726 Gooby 1.2.0
139
- points.push(new GLatLng(35.17599,-80.81925)); // (117 of 250.0) 2005-03-05T13:53:36Z 3187 00:53:07 6.77040907973266 Gooby 1.2.0
140
- points.push(new GLatLng(35.17563,-80.81976)); // (118 of 250.0) 2005-03-05T13:53:54Z 3205 00:53:25 6.80846379300353 Gooby 1.2.0
141
- points.push(new GLatLng(35.17515,-80.82002)); // (119 of 250.0) 2005-03-05T13:54:10Z 3221 00:53:41 6.8447321568443 Gooby 1.2.0
142
- points.push(new GLatLng(35.17483,-80.82045)); // (120 of 250.0) 2005-03-05T13:54:25Z 3236 00:53:56 6.87757273270934 Gooby 1.2.0
143
- points.push(new GLatLng(35.17445,-80.82082)); // (121 of 250.0) 2005-03-05T13:54:41Z 3252 00:54:12 6.91112718199423 Gooby 1.2.0
144
- points.push(new GLatLng(35.174,-80.82114)); // (122 of 250.0) 2005-03-05T13:54:58Z 3269 00:54:29 6.94708839683731 Gooby 1.2.0
145
- points.push(new GLatLng(35.17322,-80.82146)); // (123 of 250.0) 2005-03-05T13:55:24Z 3295 00:54:55 7.00392808652734 7.0 00:08:04 Gooby 1.2.0
146
- points.push(new GLatLng(35.17286,-80.82178)); // (124 of 250.0) 2005-03-05T13:55:39Z 3310 00:55:10 7.03467282378939 Gooby 1.2.0
147
- points.push(new GLatLng(35.17254,-80.82219)); // (125 of 250.0) 2005-03-05T13:55:55Z 3326 00:55:26 7.06668767280766 Gooby 1.2.0
148
- points.push(new GLatLng(35.17215,-80.82315)); // (126 of 250.0) 2005-03-05T13:56:23Z 3354 00:55:54 7.12723097967067 Gooby 1.2.0
149
- points.push(new GLatLng(35.17035,-80.82251)); // (127 of 250.0) 2005-03-05T13:57:23Z 3414 00:56:54 7.25673914000319 Gooby 1.2.0
150
- points.push(new GLatLng(35.16996,-80.82245)); // (128 of 250.0) 2005-03-05T13:57:37Z 3428 00:57:08 7.28389646203507 Gooby 1.2.0
151
- points.push(new GLatLng(35.16955,-80.82245)); // (129 of 250.0) 2005-03-05T13:57:52Z 3443 00:57:23 7.31222335157005 Gooby 1.2.0
152
- points.push(new GLatLng(35.16908,-80.82249)); // (130 of 250.0) 2005-03-05T13:58:08Z 3459 00:57:39 7.34477414431401 Gooby 1.2.0
153
- points.push(new GLatLng(35.16831,-80.82264)); // (131 of 250.0) 2005-03-05T13:58:36Z 3487 00:58:07 7.39864378608744 Gooby 1.2.0
154
- points.push(new GLatLng(35.16807,-80.82288)); // (132 of 250.0) 2005-03-05T13:58:45Z 3496 00:58:16 7.42006061565282 Gooby 1.2.0
155
- points.push(new GLatLng(35.16786,-80.82328)); // (133 of 250.0) 2005-03-05T13:58:58Z 3509 00:58:29 7.4469098467018 Gooby 1.2.0
156
- points.push(new GLatLng(35.16743,-80.82599)); // (134 of 250.0) 2005-03-05T14:00:12Z 3583 00:59:43 7.60282457704534 Gooby 1.2.0
157
- points.push(new GLatLng(35.16737,-80.82659)); // (135 of 250.0) 2005-03-05T14:00:27Z 3598 00:59:58 7.63696467666009 Gooby 1.2.0
158
- points.push(new GLatLng(35.16743,-80.82665)); // (136 of 250.0) 2005-03-05T14:00:30Z 3601 01:00:01 7.64231920897222 Gooby 1.2.0
159
- points.push(new GLatLng(35.16764,-80.82674)); // (137 of 250.0) 2005-03-05T14:00:36Z 3607 01:00:07 7.6576928224623 Gooby 1.2.0
160
- points.push(new GLatLng(35.16846,-80.82747)); // (138 of 250.0) 2005-03-05T14:01:06Z 3637 01:00:37 7.72776080256192 Gooby 1.2.0
161
- points.push(new GLatLng(35.16865,-80.828)); // (139 of 250.0) 2005-03-05T14:01:21Z 3652 01:00:52 7.76044621745516 Gooby 1.2.0
162
- points.push(new GLatLng(35.16874,-80.82854)); // (140 of 250.0) 2005-03-05T14:01:35Z 3666 01:01:06 7.7915719134302 Gooby 1.2.0
163
- points.push(new GLatLng(35.16872,-80.82908)); // (141 of 250.0) 2005-03-05T14:01:50Z 3681 01:01:21 7.82210143346606 Gooby 1.2.0
164
- points.push(new GLatLng(35.16859,-80.82953)); // (142 of 250.0) 2005-03-05T14:02:02Z 3693 01:01:33 7.84905710916142 Gooby 1.2.0
165
- points.push(new GLatLng(35.16852,-80.83021)); // (143 of 250.0) 2005-03-05T14:02:21Z 3712 01:01:52 7.88776576241967 Gooby 1.2.0
166
- points.push(new GLatLng(35.16855,-80.83064)); // (144 of 250.0) 2005-03-05T14:02:34Z 3725 01:02:05 7.91213983611875 Gooby 1.2.0
167
- points.push(new GLatLng(35.16861,-80.83077)); // (145 of 250.0) 2005-03-05T14:02:38Z 3729 01:02:09 7.9205715017907 Gooby 1.2.0
168
- points.push(new GLatLng(35.16876,-80.83081)); // (146 of 250.0) 2005-03-05T14:02:43Z 3734 01:02:14 7.93117838177341 Gooby 1.2.0
169
- points.push(new GLatLng(35.16915,-80.83077)); // (147 of 250.0) 2005-03-05T14:02:55Z 3746 01:02:26 7.95821802360938 Gooby 1.2.0
170
- points.push(new GLatLng(35.16958,-80.83064)); // (148 of 250.0) 2005-03-05T14:03:11Z 3762 01:02:42 7.98882051211451 Gooby 1.2.0
171
- points.push(new GLatLng(35.17026,-80.83036)); // (149 of 250.0) 2005-03-05T14:03:37Z 3788 01:03:08 8.03839171773265 8.0 00:08:13 Gooby 1.2.0
172
- points.push(new GLatLng(35.17082,-80.83004)); // (150 of 250.0) 2005-03-05T14:03:58Z 3809 01:03:29 8.08109496236739 Gooby 1.2.0
173
- points.push(new GLatLng(35.17118,-80.82994)); // (151 of 250.0) 2005-03-05T14:04:13Z 3824 01:03:44 8.10660050751473 Gooby 1.2.0
174
- points.push(new GLatLng(35.17153,-80.82991)); // (152 of 250.0) 2005-03-05T14:04:27Z 3838 01:03:58 8.13084131307244 Gooby 1.2.0
175
- points.push(new GLatLng(35.17191,-80.83)); // (153 of 250.0) 2005-03-05T14:04:42Z 3853 01:04:13 8.15758302522269 Gooby 1.2.0
176
- points.push(new GLatLng(35.17219,-80.83017)); // (154 of 250.0) 2005-03-05T14:04:54Z 3865 01:04:25 8.17917959949849 Gooby 1.2.0
177
- points.push(new GLatLng(35.17277,-80.83103)); // (155 of 250.0) 2005-03-05T14:05:23Z 3894 01:04:54 8.24214574357516 Gooby 1.2.0
178
- points.push(new GLatLng(35.17344,-80.83221)); // (156 of 250.0) 2005-03-05T14:05:57Z 3928 01:05:28 8.32328626319684 Gooby 1.2.0
179
- points.push(new GLatLng(35.17352,-80.8323)); // (157 of 250.0) 2005-03-05T14:06:00Z 3931 01:05:31 8.33079526926888 Gooby 1.2.0
180
- points.push(new GLatLng(35.17406,-80.83341)); // (158 of 250.0) 2005-03-05T14:06:33Z 3964 01:06:04 8.40374450603997 Gooby 1.2.0
181
- points.push(new GLatLng(35.17427,-80.8344)); // (159 of 250.0) 2005-03-05T14:07:03Z 3994 01:06:34 8.46150615929062 Gooby 1.2.0
182
- points.push(new GLatLng(35.17419,-80.8365)); // (160 of 250.0) 2005-03-05T14:08:03Z 4054 01:07:34 8.58023122986756 Gooby 1.2.0
183
- points.push(new GLatLng(35.17423,-80.83654)); // (161 of 250.0) 2005-03-05T14:08:05Z 4056 01:07:36 8.58380080977036 Gooby 1.2.0
184
- points.push(new GLatLng(35.1744,-80.83659)); // (162 of 250.0) 2005-03-05T14:08:13Z 4064 01:07:44 8.59588081085456 Gooby 1.2.0
185
- points.push(new GLatLng(35.17526,-80.83644)); // (163 of 250.0) 2005-03-05T14:08:42Z 4093 01:08:13 8.65589902578633 Gooby 1.2.0
186
- points.push(new GLatLng(35.17653,-80.83631)); // (164 of 250.0) 2005-03-05T14:09:29Z 4140 01:09:00 8.74394991696125 Gooby 1.2.0
187
- points.push(new GLatLng(35.17689,-80.83635)); // (165 of 250.0) 2005-03-05T14:09:43Z 4154 01:09:14 8.76892464945857 Gooby 1.2.0
188
- points.push(new GLatLng(35.17711,-80.83631)); // (166 of 250.0) 2005-03-05T14:09:51Z 4162 01:09:22 8.78429124515253 Gooby 1.2.0
189
- points.push(new GLatLng(35.17719,-80.83622)); // (167 of 250.0) 2005-03-05T14:09:54Z 4165 01:09:25 8.79180001953306 Gooby 1.2.0
190
- points.push(new GLatLng(35.17741,-80.83616)); // (168 of 250.0) 2005-03-05T14:10:01Z 4172 01:09:32 8.80737286936987 Gooby 1.2.0
191
- points.push(new GLatLng(35.17859,-80.83564)); // (169 of 250.0) 2005-03-05T14:10:42Z 4213 01:10:13 8.89402644251433 Gooby 1.2.0
192
- points.push(new GLatLng(35.1799,-80.83532)); // (170 of 250.0) 2005-03-05T14:11:24Z 4255 01:10:55 8.98632069221351 Gooby 1.2.0
193
- points.push(new GLatLng(35.1808,-80.83517)); // (171 of 250.0) 2005-03-05T14:11:54Z 4285 01:11:25 9.04907599898347 9.0 00:08:17 Gooby 1.2.0
194
- points.push(new GLatLng(35.18166,-80.83476)); // (172 of 250.0) 2005-03-05T14:12:22Z 4313 01:11:53 9.11284481374281 Gooby 1.2.0
195
- points.push(new GLatLng(35.18256,-80.83455)); // (173 of 250.0) 2005-03-05T14:12:55Z 4346 01:12:26 9.17614648510883 Gooby 1.2.0
196
- points.push(new GLatLng(35.18423,-80.83403)); // (174 of 250.0) 2005-03-05T14:13:54Z 4405 01:13:25 9.29520453074226 Gooby 1.2.0
197
- points.push(new GLatLng(35.18462,-80.83371)); // (175 of 250.0) 2005-03-05T14:14:09Z 4420 01:13:40 9.32764750241309 Gooby 1.2.0
198
- points.push(new GLatLng(35.18565,-80.83227)); // (176 of 250.0) 2005-03-05T14:15:02Z 4473 01:14:33 9.43570220637116 Gooby 1.2.0
199
- points.push(new GLatLng(35.18599,-80.83189)); // (177 of 250.0) 2005-03-05T14:15:19Z 4490 01:14:50 9.46751770659419 Gooby 1.2.0
200
- points.push(new GLatLng(35.18629,-80.83197)); // (178 of 250.0) 2005-03-05T14:15:30Z 4501 01:15:01 9.48873130253847 Gooby 1.2.0
201
- points.push(new GLatLng(35.18657,-80.83225)); // (179 of 250.0) 2005-03-05T14:15:42Z 4513 01:15:13 9.51371536776566 Gooby 1.2.0
202
- points.push(new GLatLng(35.18687,-80.8326)); // (180 of 250.0) 2005-03-05T14:15:56Z 4527 01:15:27 9.5423541952161 Gooby 1.2.0
203
- points.push(new GLatLng(35.18702,-80.83305)); // (181 of 250.0) 2005-03-05T14:16:09Z 4540 01:15:40 9.56979593557512 Gooby 1.2.0
204
- points.push(new GLatLng(35.18648,-80.8335)); // (182 of 250.0) 2005-03-05T14:16:20Z 4551 01:15:51 9.61493553806241 Gooby 1.2.0
205
- points.push(new GLatLng(35.18597,-80.83414)); // (183 of 250.0) 2005-03-05T14:16:45Z 4576 01:16:16 9.66540881829436 Gooby 1.2.0
206
- points.push(new GLatLng(35.18573,-80.83451)); // (184 of 250.0) 2005-03-05T14:16:58Z 4589 01:16:29 9.69208180658561 Gooby 1.2.0
207
- points.push(new GLatLng(35.18483,-80.83549)); // (185 of 250.0) 2005-03-05T14:17:39Z 4630 01:17:10 9.77532067654695 Gooby 1.2.0
208
- points.push(new GLatLng(35.18451,-80.83566)); // (186 of 250.0) 2005-03-05T14:17:52Z 4643 01:17:23 9.79942350765473 Gooby 1.2.0
209
- points.push(new GLatLng(35.18412,-80.83577)); // (187 of 250.0) 2005-03-05T14:18:06Z 4657 01:17:37 9.82707536807506 Gooby 1.2.0
210
- points.push(new GLatLng(35.18342,-80.8359)); // (188 of 250.0) 2005-03-05T14:18:30Z 4681 01:18:01 9.87599231512961 Gooby 1.2.0
211
- points.push(new GLatLng(35.18249,-80.83618)); // (189 of 250.0) 2005-03-05T14:19:03Z 4714 01:18:34 9.94216278012939 Gooby 1.2.0
212
- points.push(new GLatLng(35.18157,-80.83635)); // (190 of 250.0) 2005-03-05T14:19:33Z 4744 01:19:04 10.0064464032095 10.0 00:07:39 Gooby 1.2.0
213
- points.push(new GLatLng(35.18129,-80.83646)); // (191 of 250.0) 2005-03-05T14:19:43Z 4754 01:19:14 10.0267643972185 Gooby 1.2.0
214
- points.push(new GLatLng(35.18125,-80.83661)); // (192 of 250.0) 2005-03-05T14:19:47Z 4758 01:19:18 10.0356740064459 Gooby 1.2.0
215
- points.push(new GLatLng(35.18136,-80.83751)); // (193 of 250.0) 2005-03-05T14:20:11Z 4782 01:19:42 10.0870616612511 Gooby 1.2.0
216
- points.push(new GLatLng(35.18144,-80.8379)); // (194 of 250.0) 2005-03-05T14:20:20Z 4791 01:19:51 10.1097677575187 Gooby 1.2.0
217
- points.push(new GLatLng(35.18174,-80.83865)); // (195 of 250.0) 2005-03-05T14:20:43Z 4814 01:20:14 10.1569196199737 Gooby 1.2.0
218
- points.push(new GLatLng(35.18236,-80.8394)); // (196 of 250.0) 2005-03-05T14:21:08Z 4839 01:20:39 10.2171572709319 Gooby 1.2.0
219
- points.push(new GLatLng(35.18284,-80.83978)); // (197 of 250.0) 2005-03-05T14:21:26Z 4857 01:20:57 10.2566572213943 Gooby 1.2.0
220
- points.push(new GLatLng(35.1832,-80.84004)); // (198 of 250.0) 2005-03-05T14:21:39Z 4870 01:21:10 10.2855395238321 Gooby 1.2.0
221
- points.push(new GLatLng(35.18365,-80.84008)); // (199 of 250.0) 2005-03-05T14:21:53Z 4884 01:21:24 10.3167119123429 Gooby 1.2.0
222
- points.push(new GLatLng(35.18414,-80.84019)); // (200 of 250.0) 2005-03-05T14:22:10Z 4901 01:21:41 10.3511311454717 Gooby 1.2.0
223
- points.push(new GLatLng(35.18417,-80.84036)); // (201 of 250.0) 2005-03-05T14:22:13Z 4904 01:21:44 10.360951764936 Gooby 1.2.0
224
- points.push(new GLatLng(35.18447,-80.8406)); // (202 of 250.0) 2005-03-05T14:22:25Z 4916 01:21:56 10.3857160026808 Gooby 1.2.0
225
- points.push(new GLatLng(35.185,-80.84062)); // (203 of 250.0) 2005-03-05T14:22:42Z 4933 01:22:13 10.4223511038034 Gooby 1.2.0
226
- points.push(new GLatLng(35.18608,-80.84045)); // (204 of 250.0) 2005-03-05T14:23:17Z 4968 01:22:48 10.4975832401729 Gooby 1.2.0
227
- points.push(new GLatLng(35.18651,-80.84043)); // (205 of 250.0) 2005-03-05T14:23:31Z 4982 01:23:02 10.5273134433703 Gooby 1.2.0
228
- points.push(new GLatLng(35.18696,-80.84021)); // (206 of 250.0) 2005-03-05T14:23:48Z 4999 01:23:19 10.5607938751304 Gooby 1.2.0
229
- points.push(new GLatLng(35.18736,-80.84021)); // (207 of 250.0) 2005-03-05T14:24:03Z 5014 01:23:34 10.5884298761554 Gooby 1.2.0
230
- points.push(new GLatLng(35.18771,-80.84011)); // (208 of 250.0) 2005-03-05T14:24:18Z 5029 01:23:49 10.6132619550072 Gooby 1.2.0
231
- points.push(new GLatLng(35.18867,-80.83955)); // (209 of 250.0) 2005-03-05T14:24:56Z 5067 01:24:27 10.6867400519163 Gooby 1.2.0
232
- points.push(new GLatLng(35.19116,-80.83779)); // (210 of 250.0) 2005-03-05T14:26:33Z 5164 01:26:04 10.8854138818426 Gooby 1.2.0
233
- points.push(new GLatLng(35.19176,-80.83738)); // (211 of 250.0) 2005-03-05T14:26:56Z 5187 01:26:27 10.9328937584589 Gooby 1.2.0
234
- points.push(new GLatLng(35.19228,-80.83708)); // (212 of 250.0) 2005-03-05T14:27:14Z 5205 01:26:45 10.9726134949364 Gooby 1.2.0
235
- points.push(new GLatLng(35.19273,-80.83687)); // (213 of 250.0) 2005-03-05T14:27:30Z 5221 01:27:01 11.0058882486447 11.0 00:07:57 Gooby 1.2.0
236
- points.push(new GLatLng(35.19322,-80.83676)); // (214 of 250.0) 2005-03-05T14:27:48Z 5239 01:27:19 11.0403073301359 Gooby 1.2.0
237
- points.push(new GLatLng(35.19365,-80.83678)); // (215 of 250.0) 2005-03-05T14:28:01Z 5252 01:27:32 11.0700374748156 Gooby 1.2.0
238
- points.push(new GLatLng(35.19387,-80.83684)); // (216 of 250.0) 2005-03-05T14:28:07Z 5258 01:27:38 11.0856101012175 Gooby 1.2.0
239
- points.push(new GLatLng(35.19462,-80.83697)); // (217 of 250.0) 2005-03-05T14:28:34Z 5285 01:28:05 11.1379448656822 Gooby 1.2.0
240
- points.push(new GLatLng(35.19485,-80.83674)); // (218 of 250.0) 2005-03-05T14:28:44Z 5295 01:28:15 11.158466654738 Gooby 1.2.0
241
- points.push(new GLatLng(35.19562,-80.83384)); // (219 of 250.0) 2005-03-05T14:30:09Z 5380 01:29:40 11.3306260112061 Gooby 1.2.0
242
- points.push(new GLatLng(35.19597,-80.8333)); // (220 of 250.0) 2005-03-05T14:30:31Z 5402 01:30:02 11.3695396087745 Gooby 1.2.0
243
- points.push(new GLatLng(35.19644,-80.83272)); // (221 of 250.0) 2005-03-05T14:30:56Z 5427 01:30:27 11.4156565260447 Gooby 1.2.0
244
- points.push(new GLatLng(35.19674,-80.8323)); // (222 of 250.0) 2005-03-05T14:31:14Z 5445 01:30:45 11.4471510623899 Gooby 1.2.0
245
- points.push(new GLatLng(35.197,-80.83219)); // (223 of 250.0) 2005-03-05T14:31:24Z 5455 01:30:55 11.4661576750723 Gooby 1.2.0
246
- points.push(new GLatLng(35.19753,-80.8321)); // (224 of 250.0) 2005-03-05T14:31:45Z 5476 01:31:16 11.5031262424333 Gooby 1.2.0
247
- points.push(new GLatLng(35.19796,-80.83208)); // (225 of 250.0) 2005-03-05T14:31:59Z 5490 01:31:30 11.5328563871129 Gooby 1.2.0
248
- points.push(new GLatLng(35.1985,-80.83223)); // (226 of 250.0) 2005-03-05T14:32:19Z 5510 01:31:50 11.5711140454601 Gooby 1.2.0
249
- points.push(new GLatLng(35.19929,-80.83225)); // (227 of 250.0) 2005-03-05T14:32:47Z 5538 01:32:18 11.6257068382031 Gooby 1.2.0
250
- points.push(new GLatLng(35.19983,-80.83212)); // (228 of 250.0) 2005-03-05T14:33:06Z 5557 01:32:37 11.6637304969813 Gooby 1.2.0
251
- points.push(new GLatLng(35.20062,-80.83172)); // (229 of 250.0) 2005-03-05T14:33:36Z 5587 01:33:07 11.722798828852 Gooby 1.2.0
252
- points.push(new GLatLng(35.20097,-80.83174)); // (230 of 250.0) 2005-03-05T14:33:48Z 5599 01:33:19 11.7470067417448 Gooby 1.2.0
253
- points.push(new GLatLng(35.20138,-80.83204)); // (231 of 250.0) 2005-03-05T14:34:05Z 5616 01:33:36 11.7800107114036 Gooby 1.2.0
254
- points.push(new GLatLng(35.20277,-80.83322)); // (232 of 250.0) 2005-03-05T14:35:00Z 5671 01:34:31 11.8968891531704 Gooby 1.2.0
255
- points.push(new GLatLng(35.20316,-80.83363)); // (233 of 250.0) 2005-03-05T14:35:19Z 5690 01:34:50 11.9324108248346 Gooby 1.2.0
256
- points.push(new GLatLng(35.20419,-80.83504)); // (234 of 250.0) 2005-03-05T14:36:13Z 5744 01:35:44 12.0391830723979 12.0 00:08:43 Gooby 1.2.0
257
- points.push(new GLatLng(35.205,-80.83601)); // (235 of 250.0) 2005-03-05T14:36:50Z 5781 01:36:21 12.1174804265797 Gooby 1.2.0
258
- points.push(new GLatLng(35.20565,-80.83687)); // (236 of 250.0) 2005-03-05T14:37:22Z 5813 01:36:53 12.1836152827885 Gooby 1.2.0
259
- points.push(new GLatLng(35.20631,-80.83768)); // (237 of 250.0) 2005-03-05T14:37:56Z 5847 01:37:27 12.2481924440512 Gooby 1.2.0
260
- points.push(new GLatLng(35.20775,-80.8391)); // (238 of 250.0) 2005-03-05T14:39:06Z 5917 01:38:37 12.3759579346014 Gooby 1.2.0
261
- points.push(new GLatLng(35.20934,-80.84051)); // (239 of 250.0) 2005-03-05T14:40:19Z 5990 01:39:50 12.5116160401105 Gooby 1.2.0
262
- points.push(new GLatLng(35.21088,-80.84197)); // (240 of 250.0) 2005-03-05T14:41:34Z 6065 01:41:05 12.6462009665708 Gooby 1.2.0
263
- points.push(new GLatLng(35.21189,-80.84279)); // (241 of 250.0) 2005-03-05T14:42:18Z 6109 01:41:49 12.7299382667899 Gooby 1.2.0
264
- points.push(new GLatLng(35.21225,-80.84317)); // (242 of 250.0) 2005-03-05T14:42:34Z 6125 01:42:05 12.7627826566699 Gooby 1.2.0
265
- points.push(new GLatLng(35.21393,-80.84459)); // (243 of 250.0) 2005-03-05T14:43:44Z 6195 01:43:15 12.9038408253177 Gooby 1.2.0
266
- points.push(new GLatLng(35.21406,-80.8445)); // (244 of 250.0) 2005-03-05T14:43:49Z 6200 01:43:20 12.9141595434003 Gooby 1.2.0
267
- points.push(new GLatLng(35.21431,-80.84399)); // (245 of 250.0) 2005-03-05T14:44:05Z 6216 01:43:36 12.9477315128867 Gooby 1.2.0
268
- points.push(new GLatLng(35.21537,-80.84242)); // (246 of 250.0) 2005-03-05T14:45:00Z 6271 01:44:31 13.0626968352779 13.0 00:08:47 Gooby 1.2.0
269
- points.push(new GLatLng(35.21586,-80.84159)); // (247 of 250.0) 2005-03-05T14:45:30Z 6301 01:45:01 13.1204983528532 Gooby 1.2.0
270
- points.push(new GLatLng(35.21695,-80.83998)); // (248 of 250.0) 2005-03-05T14:46:29Z 6360 01:46:00 13.2385232480761 Gooby 1.2.0
271
- points.push(new GLatLng(35.21728,-80.83957)); // (249 of 250.0) 2005-03-05T14:46:43Z 6374 01:46:14 13.2710100551754 Gooby 1.2.0
272
- points.push(new GLatLng(35.21831,-80.83809)); // (250 of 250.0) 2005-03-05T14:47:26Z 6417 01:46:57 13.3807489594998 Gooby 1.2.0
273
-
274
- var routePolyline = new GPolyline(points);
275
- map.addOverlay(routePolyline);
276
-
277
- // Create a base icon for all of our markers that specifies the
278
- // shadow, icon dimensions, etc.
279
- var baseIcon = new GIcon();
280
- baseIcon.shadow = "http://www.joakim-systems.com/gicons/shadow50.png";
281
- baseIcon.iconSize = new GSize(20, 34);
282
- baseIcon.shadowSize = new GSize(37, 34);
283
- baseIcon.iconAnchor = new GPoint(9, 34);
284
- baseIcon.infoWindowAnchor = new GPoint(9, 2);
285
- baseIcon.infoShadowAnchor = new GPoint(18, 25);
286
-
287
- var iconStart = new GIcon(baseIcon);
288
- iconStart.image = "http://www.joakim-systems.com/gicons/dd-start.png";
289
- var pStart = new GPoint(-80.84566, 35.22101);
290
- var mStart = new GMarker(pStart, iconStart);
291
- GEvent.addListener(mStart, "click", function() {
292
- mStart.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Start!</b></td></tr><tr><td>Distance:</td><td>0.0 mi</td></tr><tr><td>Time of Day:</td><td>2005-03-05T13:00:29Z</td></tr><tr><td>Elapsed Time:</td><td>00:00:00</td></tr><tr><td>Average Pace:</td><td></td></tr><tr><td>Lat/Lng:</td><td>35.22101 , -80.84566</td></tr><tr><td>Altitude:</td><td>219.799</td></tr></table>");
293
- });
294
- map.addOverlay(mStart);
295
-
296
- var icon1 = new GIcon(baseIcon);
297
- icon1.image = "http://www.joakim-systems.com/gicons/marker1.png";
298
- var p1 = new GPoint(-80.85137, 35.22487);
299
- var m1 = new GMarker(p1, icon1);
300
- GEvent.addListener(m1, "click", function() {
301
- m1.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Mile 1</b></td></tr><tr><td>Distance:</td><td>1.00556377588005 mi</td></tr><tr><td>Time of Day:</td><td>2005-03-05T13:07:49Z</td></tr><tr><td>Elapsed Time:</td><td>00:07:20</td></tr><tr><td>Average Pace:</td><td>7:17.565 per mi</td></tr><tr><td>Lat/Lng:</td><td>35.22487 , -80.85137</td></tr><tr><td>Altitude:</td><td>227.489</td></tr></table>");
302
- });
303
- map.addOverlay(m1);
304
-
305
- var icon2 = new GIcon(baseIcon);
306
- icon2.image = "http://www.joakim-systems.com/gicons/marker2.png";
307
- var p2 = new GPoint(-80.84968, 35.23105);
308
- var m2 = new GMarker(p2, icon2);
309
- GEvent.addListener(m2, "click", function() {
310
- m2.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Mile 2</b></td></tr><tr><td>Distance:</td><td>2.00442699838485 mi</td></tr><tr><td>Time of Day:</td><td>2005-03-05T13:15:36Z</td></tr><tr><td>Elapsed Time:</td><td>00:15:07</td></tr><tr><td>Average Pace:</td><td>7:32.498 per mi</td></tr><tr><td>Lat/Lng:</td><td>35.23105 , -80.84968</td></tr><tr><td>Altitude:</td><td>224.125</td></tr></table>");
311
- });
312
- map.addOverlay(m2);
313
-
314
- var icon3 = new GIcon(baseIcon);
315
- icon3.image = "http://www.joakim-systems.com/gicons/marker3.png";
316
- var p3 = new GPoint(-80.83886, 35.22);
317
- var m3 = new GMarker(p3, icon3);
318
- GEvent.addListener(m3, "click", function() {
319
- m3.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Mile 3</b></td></tr><tr><td>Distance:</td><td>3.00768703301529 mi</td></tr><tr><td>Time of Day:</td><td>2005-03-05T13:23:27Z</td></tr><tr><td>Elapsed Time:</td><td>00:22:58</td></tr><tr><td>Average Pace:</td><td>7:38.159 per mi</td></tr><tr><td>Lat/Lng:</td><td>35.22 , -80.83886</td></tr><tr><td>Altitude:</td><td>185.672</td></tr></table>");
320
- });
321
- map.addOverlay(m3);
322
-
323
- var icon4 = new GIcon(baseIcon);
324
- icon4.image = "http://www.joakim-systems.com/gicons/marker4.png";
325
- var p4 = new GPoint(-80.82633, 35.21007);
326
- var m4 = new GMarker(p4, icon4);
327
- GEvent.addListener(m4, "click", function() {
328
- m4.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Mile 4</b></td></tr><tr><td>Distance:</td><td>4.00240016732769 mi</td></tr><tr><td>Time of Day:</td><td>2005-03-05T13:31:24Z</td></tr><tr><td>Elapsed Time:</td><td>00:30:55</td></tr><tr><td>Average Pace:</td><td>7:43.471 per mi</td></tr><tr><td>Lat/Lng:</td><td>35.21007 , -80.82633</td></tr><tr><td>Altitude:</td><td>214.511</td></tr></table>");
329
- });
330
- map.addOverlay(m4);
331
-
332
- var icon5 = new GIcon(baseIcon);
333
- icon5.image = "http://www.joakim-systems.com/gicons/marker5.png";
334
- var p5 = new GPoint(-80.82706, 35.19646);
335
- var m5 = new GMarker(p5, icon5);
336
- GEvent.addListener(m5, "click", function() {
337
- m5.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Mile 5</b></td></tr><tr><td>Distance:</td><td>5.00749881672153 mi</td></tr><tr><td>Time of Day:</td><td>2005-03-05T13:39:20Z</td></tr><tr><td>Elapsed Time:</td><td>00:38:51</td></tr><tr><td>Average Pace:</td><td>7:45.501 per mi</td></tr><tr><td>Lat/Lng:</td><td>35.19646 , -80.82706</td></tr><tr><td>Altitude:</td><td>220.76</td></tr></table>");
338
- });
339
- map.addOverlay(m5);
340
-
341
- var icon6 = new GIcon(baseIcon);
342
- icon6.image = "http://www.joakim-systems.com/gicons/marker6.png";
343
- var p6 = new GPoint(-80.82131, 35.18571);
344
- var m6 = new GMarker(p6, icon6);
345
- GEvent.addListener(m6, "click", function() {
346
- m6.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Mile 6</b></td></tr><tr><td>Distance:</td><td>6.02600216440376 mi</td></tr><tr><td>Time of Day:</td><td>2005-03-05T13:47:20Z</td></tr><tr><td>Elapsed Time:</td><td>00:46:51</td></tr><tr><td>Average Pace:</td><td>7:46.478 per mi</td></tr><tr><td>Lat/Lng:</td><td>35.18571 , -80.82131</td></tr><tr><td>Altitude:</td><td>209.224</td></tr></table>");
347
- });
348
- map.addOverlay(m6);
349
-
350
- var icon7 = new GIcon(baseIcon);
351
- icon7.image = "http://www.joakim-systems.com/gicons/marker7.png";
352
- var p7 = new GPoint(-80.82146, 35.17322);
353
- var m7 = new GMarker(p7, icon7);
354
- GEvent.addListener(m7, "click", function() {
355
- m7.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Mile 7</b></td></tr><tr><td>Distance:</td><td>7.00392808652734 mi</td></tr><tr><td>Time of Day:</td><td>2005-03-05T13:55:24Z</td></tr><tr><td>Elapsed Time:</td><td>00:54:55</td></tr><tr><td>Average Pace:</td><td>7:50.450 per mi</td></tr><tr><td>Lat/Lng:</td><td>35.17322 , -80.82146</td></tr><tr><td>Altitude:</td><td>201.053</td></tr></table>");
356
- });
357
- map.addOverlay(m7);
358
-
359
- var icon8 = new GIcon(baseIcon);
360
- icon8.image = "http://www.joakim-systems.com/gicons/marker8.png";
361
- var p8 = new GPoint(-80.83036, 35.17026);
362
- var m8 = new GMarker(p8, icon8);
363
- GEvent.addListener(m8, "click", function() {
364
- m8.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Mile 8</b></td></tr><tr><td>Distance:</td><td>8.03839171773265 mi</td></tr><tr><td>Time of Day:</td><td>2005-03-05T14:03:37Z</td></tr><tr><td>Elapsed Time:</td><td>01:03:08</td></tr><tr><td>Average Pace:</td><td>7:51.238 per mi</td></tr><tr><td>Lat/Lng:</td><td>35.17026 , -80.83036</td></tr><tr><td>Altitude:</td><td>202.014</td></tr></table>");
365
- });
366
- map.addOverlay(m8);
367
-
368
- var icon9 = new GIcon(baseIcon);
369
- icon9.image = "http://www.joakim-systems.com/gicons/marker9.png";
370
- var p9 = new GPoint(-80.83517, 35.1808);
371
- var m9 = new GMarker(p9, icon9);
372
- GEvent.addListener(m9, "click", function() {
373
- m9.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Mile 9</b></td></tr><tr><td>Distance:</td><td>9.04907599898347 mi</td></tr><tr><td>Time of Day:</td><td>2005-03-05T14:11:54Z</td></tr><tr><td>Elapsed Time:</td><td>01:11:25</td></tr><tr><td>Average Pace:</td><td>7:53.529 per mi</td></tr><tr><td>Lat/Lng:</td><td>35.1808 , -80.83517</td></tr><tr><td>Altitude:</td><td>216.915</td></tr></table>");
374
- });
375
- map.addOverlay(m9);
376
-
377
- var icon10 = new GIcon(baseIcon);
378
- icon10.image = "http://www.joakim-systems.com/gicons/marker10.png";
379
- var p10 = new GPoint(-80.83635, 35.18157);
380
- var m10 = new GMarker(p10, icon10);
381
- GEvent.addListener(m10, "click", function() {
382
- m10.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Mile 10</b></td></tr><tr><td>Distance:</td><td>10.0064464032095 mi</td></tr><tr><td>Time of Day:</td><td>2005-03-05T14:19:33Z</td></tr><tr><td>Elapsed Time:</td><td>01:19:04</td></tr><tr><td>Average Pace:</td><td>7:54.094 per mi</td></tr><tr><td>Lat/Lng:</td><td>35.18157 , -80.83635</td></tr><tr><td>Altitude:</td><td>214.992</td></tr></table>");
383
- });
384
- map.addOverlay(m10);
385
-
386
- var icon11 = new GIcon(baseIcon);
387
- icon11.image = "http://www.joakim-systems.com/gicons/marker11.png";
388
- var p11 = new GPoint(-80.83687, 35.19273);
389
- var m11 = new GMarker(p11, icon11);
390
- GEvent.addListener(m11, "click", function() {
391
- m11.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Mile 11</b></td></tr><tr><td>Distance:</td><td>11.0058882486447 mi</td></tr><tr><td>Time of Day:</td><td>2005-03-05T14:27:30Z</td></tr><tr><td>Elapsed Time:</td><td>01:27:01</td></tr><tr><td>Average Pace:</td><td>7:54.382 per mi</td></tr><tr><td>Lat/Lng:</td><td>35.19273 , -80.83687</td></tr><tr><td>Altitude:</td><td>218.357</td></tr></table>");
392
- });
393
- map.addOverlay(m11);
394
-
395
- var icon12 = new GIcon(baseIcon);
396
- icon12.image = "http://www.joakim-systems.com/gicons/marker12.png";
397
- var p12 = new GPoint(-80.83504, 35.20419);
398
- var m12 = new GMarker(p12, icon12);
399
- GEvent.addListener(m12, "click", function() {
400
- m12.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Mile 12</b></td></tr><tr><td>Distance:</td><td>12.0391830723979 mi</td></tr><tr><td>Time of Day:</td><td>2005-03-05T14:36:13Z</td></tr><tr><td>Elapsed Time:</td><td>01:35:44</td></tr><tr><td>Average Pace:</td><td>7:57.108 per mi</td></tr><tr><td>Lat/Lng:</td><td>35.20419 , -80.83504</td></tr><tr><td>Altitude:</td><td>208.743</td></tr></table>");
401
- });
402
- map.addOverlay(m12);
403
-
404
- var icon13 = new GIcon(baseIcon);
405
- icon13.image = "http://www.joakim-systems.com/gicons/marker13.png";
406
- var p13 = new GPoint(-80.84242, 35.21537);
407
- var m13 = new GMarker(p13, icon13);
408
- GEvent.addListener(m13, "click", function() {
409
- m13.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Mile 13</b></td></tr><tr><td>Distance:</td><td>13.0626968352779 mi</td></tr><tr><td>Time of Day:</td><td>2005-03-05T14:45:00Z</td></tr><tr><td>Elapsed Time:</td><td>01:44:31</td></tr><tr><td>Average Pace:</td><td>8:00.069 per mi</td></tr><tr><td>Lat/Lng:</td><td>35.21537 , -80.84242</td></tr><tr><td>Altitude:</td><td>209.705</td></tr></table>");
410
- });
411
- map.addOverlay(m13);
412
-
413
- var iconFinish = new GIcon(baseIcon);
414
- iconFinish.image = "http://www.joakim-systems.com/gicons/dd-end.png";
415
- var pFinish = new GPoint(-80.83809, 35.21831);
416
- var mFinish = new GMarker(pFinish, iconFinish);
417
- GEvent.addListener(mFinish, "click", function() {
418
- mFinish.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Finish!</b></td></tr><tr><td>Distance:</td><td>13.3807489594998 mi</td></tr><tr><td>Time of Day:</td><td>2005-03-05T14:47:26Z</td></tr><tr><td>Elapsed Time:</td><td>01:46:57</td></tr><tr><td>Average Pace:</td><td>7:59.569 per mi</td></tr><tr><td>Lat/Lng:</td><td>35.21831 , -80.83809</td></tr><tr><td>Altitude:</td><td>208.263</td></tr></table>");
419
- });
420
- map.addOverlay(mFinish);
421
-
422
-
423
-
424
-
425
- GEvent.addListener(map, "click", function() {
426
- var center = map.getCenter();
427
-
428
- document.getElementById("messages").innerHTML = 'click: ' + center.toString();
429
- });
430
- GEvent.addListener(map, "moveend", function() {
431
- var center = map.getCenter();
432
-
433
- document.getElementById("messages").innerHTML = 'moveend: ' + center.toString();
434
- });
435
-
436
- }
437
- }
438
- //]]>
439
-
440
- </script>
441
- </head>
442
- <body onload="load()" onunload="GUnload()">
443
- <center>
444
- <h3> 2005/03/05 Charlotte Corporate Cup Half Marathon </h3>
445
- <h5> Generated by Gooby Sun Jul 22 09:48:34 EDT 2007 <br> Gooby = Google APIs + Ruby </h5>
446
- <div id="map" style="width: 900px; height: 600px"></div>
447
- <div id="messages"></div>
448
- </center>
449
- </body>
450
- </html>