gooby 1.2.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README +133 -341
- data/config/ballantyne.yaml +11 -0
- data/config/big_sur_marathon.yaml +11 -0
- data/config/crowders_mtn_hike.yaml +11 -0
- data/config/davidson1.yaml +16 -0
- data/config/gooby_config.yaml +28 -135
- data/cucumber.yml +1 -0
- data/features/build_gem.feature +88 -0
- data/features/gooby.feature +300 -0
- data/features/install.feature +78 -0
- data/features/steps/gooby_steps.rb +245 -0
- data/features/support/env.rb +4 -0
- data/lib/gooby.rb +24 -30
- data/lib/gooby_activity.rb +63 -0
- data/lib/gooby_base_object.rb +46 -0
- data/lib/gooby_base_sax_parser.rb +95 -0
- data/lib/gooby_configuration.rb +33 -115
- data/lib/gooby_counter_hash.rb +28 -87
- data/lib/gooby_dttm.rb +88 -66
- data/lib/gooby_environment.rb +48 -0
- data/lib/gooby_garmin_tcx_parser.rb +92 -0
- data/lib/gooby_google_kml_generator.rb +168 -0
- data/lib/gooby_google_map_generator.rb +284 -349
- data/lib/gooby_gpx_parser.rb +97 -0
- data/lib/gooby_help_producer.rb +40 -0
- data/lib/gooby_introspection.rb +25 -0
- data/lib/gooby_io.rb +30 -0
- data/lib/gooby_lap.rb +27 -18
- data/lib/gooby_process.rb +281 -0
- data/lib/gooby_sax_path_parser.rb +43 -0
- data/lib/gooby_tcx_extractor.rb +71 -0
- data/lib/gooby_track_log_parser.rb +114 -0
- data/lib/gooby_trackpoint.rb +276 -0
- data/lib/gooby_xml_object.rb +40 -0
- data/{img/gicons → out/images}/blank.png +0 -0
- data/{img/gicons → out/images}/dd-end.png +0 -0
- data/{img/gicons → out/images}/dd-start.png +0 -0
- data/{img/gicons → out/images}/marker.png +0 -0
- data/{img/gicons → out/images}/marker0.png +0 -0
- data/{img/gicons → out/images}/marker00.png +0 -0
- data/{img/gicons → out/images}/marker01.png +0 -0
- data/{img/gicons → out/images}/marker02.png +0 -0
- data/{img/gicons → out/images}/marker03.png +0 -0
- data/{img/gicons → out/images}/marker04.png +0 -0
- data/{img/gicons → out/images}/marker05.png +0 -0
- data/{img/gicons → out/images}/marker06.png +0 -0
- data/{img/gicons → out/images}/marker07.png +0 -0
- data/{img/gicons → out/images}/marker08.png +0 -0
- data/{img/gicons → out/images}/marker09.png +0 -0
- data/{img/gicons → out/images}/marker1.png +0 -0
- data/{img/gicons → out/images}/marker10.png +0 -0
- data/{img/gicons → out/images}/marker11.png +0 -0
- data/{img/gicons → out/images}/marker12.png +0 -0
- data/{img/gicons → out/images}/marker13.png +0 -0
- data/{img/gicons → out/images}/marker14.png +0 -0
- data/{img/gicons → out/images}/marker15.png +0 -0
- data/{img/gicons → out/images}/marker16.png +0 -0
- data/{img/gicons → out/images}/marker17.png +0 -0
- data/{img/gicons → out/images}/marker18.png +0 -0
- data/{img/gicons → out/images}/marker19.png +0 -0
- data/{img/gicons → out/images}/marker2.png +0 -0
- data/{img/gicons → out/images}/marker20.png +0 -0
- data/{img/gicons → out/images}/marker21.png +0 -0
- data/{img/gicons → out/images}/marker22.png +0 -0
- data/{img/gicons → out/images}/marker23.png +0 -0
- data/{img/gicons → out/images}/marker24.png +0 -0
- data/{img/gicons → out/images}/marker25.png +0 -0
- data/{img/gicons → out/images}/marker26.png +0 -0
- data/{img/gicons → out/images}/marker27.png +0 -0
- data/{img/gicons → out/images}/marker28.png +0 -0
- data/{img/gicons → out/images}/marker29.png +0 -0
- data/{img/gicons → out/images}/marker3.png +0 -0
- data/{img/gicons → out/images}/marker30.png +0 -0
- data/{img/gicons → out/images}/marker31.png +0 -0
- data/{img/gicons → out/images}/marker32.png +0 -0
- data/{img/gicons → out/images}/marker33.png +0 -0
- data/{img/gicons → out/images}/marker34.png +0 -0
- data/{img/gicons → out/images}/marker35.png +0 -0
- data/{img/gicons → out/images}/marker36.png +0 -0
- data/{img/gicons → out/images}/marker37.png +0 -0
- data/{img/gicons → out/images}/marker38.png +0 -0
- data/{img/gicons → out/images}/marker39.png +0 -0
- data/{img/gicons → out/images}/marker4.png +0 -0
- data/{img/gicons → out/images}/marker40.png +0 -0
- data/{img/gicons → out/images}/marker41.png +0 -0
- data/{img/gicons → out/images}/marker42.png +0 -0
- data/{img/gicons → out/images}/marker43.png +0 -0
- data/{img/gicons → out/images}/marker44.png +0 -0
- data/{img/gicons → out/images}/marker45.png +0 -0
- data/{img/gicons → out/images}/marker46.png +0 -0
- data/{img/gicons → out/images}/marker47.png +0 -0
- data/{img/gicons → out/images}/marker48.png +0 -0
- data/{img/gicons → out/images}/marker49.png +0 -0
- data/{img/gicons → out/images}/marker5.png +0 -0
- data/{img/gicons → out/images}/marker50.png +0 -0
- data/{img/gicons → out/images}/marker51.png +0 -0
- data/{img/gicons → out/images}/marker52.png +0 -0
- data/{img/gicons → out/images}/marker53.png +0 -0
- data/{img/gicons → out/images}/marker54.png +0 -0
- data/{img/gicons → out/images}/marker55.png +0 -0
- data/{img/gicons → out/images}/marker56.png +0 -0
- data/{img/gicons → out/images}/marker57.png +0 -0
- data/{img/gicons → out/images}/marker58.png +0 -0
- data/{img/gicons → out/images}/marker59.png +0 -0
- data/{img/gicons → out/images}/marker6.png +0 -0
- data/{img/gicons → out/images}/marker60.png +0 -0
- data/{img/gicons → out/images}/marker61.png +0 -0
- data/{img/gicons → out/images}/marker62.png +0 -0
- data/{img/gicons → out/images}/marker63.png +0 -0
- data/{img/gicons → out/images}/marker64.png +0 -0
- data/{img/gicons → out/images}/marker65.png +0 -0
- data/{img/gicons → out/images}/marker66.png +0 -0
- data/{img/gicons → out/images}/marker67.png +0 -0
- data/{img/gicons → out/images}/marker68.png +0 -0
- data/{img/gicons → out/images}/marker69.png +0 -0
- data/{img/gicons → out/images}/marker7.png +0 -0
- data/{img/gicons → out/images}/marker70.png +0 -0
- data/{img/gicons → out/images}/marker71.png +0 -0
- data/{img/gicons → out/images}/marker72.png +0 -0
- data/{img/gicons → out/images}/marker73.png +0 -0
- data/{img/gicons → out/images}/marker74.png +0 -0
- data/{img/gicons → out/images}/marker75.png +0 -0
- data/{img/gicons → out/images}/marker76.png +0 -0
- data/{img/gicons → out/images}/marker77.png +0 -0
- data/{img/gicons → out/images}/marker78.png +0 -0
- data/{img/gicons → out/images}/marker79.png +0 -0
- data/{img/gicons → out/images}/marker8.png +0 -0
- data/{img/gicons → out/images}/marker80.png +0 -0
- data/{img/gicons → out/images}/marker81.png +0 -0
- data/{img/gicons → out/images}/marker82.png +0 -0
- data/{img/gicons → out/images}/marker83.png +0 -0
- data/{img/gicons → out/images}/marker84.png +0 -0
- data/{img/gicons → out/images}/marker85.png +0 -0
- data/{img/gicons → out/images}/marker86.png +0 -0
- data/{img/gicons → out/images}/marker87.png +0 -0
- data/{img/gicons → out/images}/marker88.png +0 -0
- data/{img/gicons → out/images}/marker89.png +0 -0
- data/{img/gicons → out/images}/marker9.png +0 -0
- data/{img/gicons → out/images}/marker90.png +0 -0
- data/{img/gicons → out/images}/marker91.png +0 -0
- data/{img/gicons → out/images}/marker92.png +0 -0
- data/{img/gicons → out/images}/marker93.png +0 -0
- data/{img/gicons → out/images}/marker94.png +0 -0
- data/{img/gicons → out/images}/marker95.png +0 -0
- data/{img/gicons → out/images}/marker96.png +0 -0
- data/{img/gicons → out/images}/marker97.png +0 -0
- data/{img/gicons → out/images}/marker98.png +0 -0
- data/{img/gicons → out/images}/marker99.png +0 -0
- data/{img/gicons → out/images}/markerA.png +0 -0
- data/{img/gicons → out/images}/markerB.png +0 -0
- data/{img/gicons → out/images}/markerC.png +0 -0
- data/{img/gicons → out/images}/markerD.png +0 -0
- data/{img/gicons → out/images}/markerE.png +0 -0
- data/{img/gicons → out/images}/markerF.png +0 -0
- data/{img/gicons → out/images}/markerG.png +0 -0
- data/{img/gicons → out/images}/markerH.png +0 -0
- data/{img/gicons → out/images}/markerI.png +0 -0
- data/{img/gicons → out/images}/markerJ.png +0 -0
- data/{img/gicons → out/images}/mm_20_red.png +0 -0
- data/{img/gicons → out/images}/mm_20_shadow.png +0 -0
- data/{img/gicons → out/images}/shadow50.png +0 -0
- data/rakefile.rb +79 -0
- data/samples.sh +21 -0
- data/samples/2008_04_27_13_49_50_tcx.csv +2449 -0
- data/samples/2008_04_27_13_49_50_tcx.xml +24560 -0
- data/samples/2009_01_01_14_45_00_tcx.xml +10630 -0
- data/samples/ballantyne.csv +27 -0
- data/samples/ballantyne.gpx +117 -0
- data/samples/ballantyne.kml +91 -0
- data/samples/big_sur_marathon.html +2766 -0
- data/samples/big_sur_marathon.kml +685 -0
- data/samples/build_gem_test_results.txt +6 -0
- data/samples/crowders_mtn_hike.csv +1065 -0
- data/samples/crowders_mtn_hike.html +1283 -0
- data/samples/crowders_mtn_hike.log +1 -0
- data/samples/cucumber_test_results.txt +302 -0
- data/samples/davidson1.csv +1 -0
- data/samples/davidson1.html +75 -0
- data/samples/davidson_1_point_tcx.csv +0 -0
- data/samples/doc.kml +49 -0
- data/samples/gps_track_log_asheville_mt_pisgah.txt +1 -0
- data/samples/gps_track_logs.txt +1 -0
- data/samples/install_test_results.txt +81 -0
- data/samples/mt_pisgah.txt +1 -0
- data/samples/rspec_test_results.txt +5 -0
- data/setup.rb +66 -0
- data/spec/gooby_base_object_spec.rb +116 -0
- data/spec/gooby_counter_hash_spec.rb +34 -0
- data/spec/gooby_dttm_spec.rb +40 -0
- data/spec/gooby_spec_helper.rb +9 -0
- data/spec/gooby_xml_object_spec.rb +32 -0
- metadata +225 -226
- data/bin/code_scan.rb +0 -16
- data/bin/gooby_been_there.rb +0 -33
- data/bin/gooby_config.rb +0 -24
- data/bin/gooby_csv_validation.rb +0 -50
- data/bin/gooby_first_trackpoints_as_poi.rb +0 -31
- data/bin/gooby_gen_gmap.rb +0 -20
- data/bin/gooby_parser.rb +0 -21
- data/bin/gooby_splitter.rb +0 -21
- data/bin/gooby_version.rb +0 -20
- data/bin/run_all.sh +0 -33
- data/bin/run_been_there.sh +0 -19
- data/bin/run_config.sh +0 -12
- data/bin/run_csv_validation.sh +0 -15
- data/bin/run_db_gen.sh +0 -11
- data/bin/run_db_load.sh +0 -11
- data/bin/run_first_trackpoints_as_poi.sh +0 -16
- data/bin/run_gen_gmaps.sh +0 -21
- data/bin/run_parse_full.sh +0 -45
- data/bin/run_parse_samples.sh +0 -21
- data/bin/run_split.sh +0 -24
- data/bin/run_version.sh +0 -12
- data/data/20050305_corporate_cup_hm.csv +0 -251
- data/data/20050305_corporate_cup_hm.xml +0 -2208
- data/data/20050430_nashville_marathon.xml +0 -10043
- data/data/20050430_nashville_marathon_km.csv +0 -1208
- data/data/20060115_phoenix_marathon.csv +0 -1280
- data/data/20060115_phoenix_marathon.xml +0 -10620
- data/data/20070101_davidson_11m.csv +0 -251
- data/data/20070101_davidson_11m.xml +0 -2020
- data/data/20070505_davidson_5k.xml +0 -2875
- data/data/20070505_davidson_5k_km.csv +0 -286
- data/data/hrm1.csv +0 -5
- data/img/gicons/readme.txt +0 -14
- data/lib/gooby_code_scanner.rb +0 -288
- data/lib/gooby_command.rb +0 -210
- data/lib/gooby_course.rb +0 -117
- data/lib/gooby_csv_point.rb +0 -71
- data/lib/gooby_csv_reader.rb +0 -71
- data/lib/gooby_csv_run.rb +0 -28
- data/lib/gooby_delim_line.rb +0 -42
- data/lib/gooby_duration.rb +0 -86
- data/lib/gooby_forerunner_xml_parser.rb +0 -191
- data/lib/gooby_forerunner_xml_splitter.rb +0 -115
- data/lib/gooby_history.rb +0 -41
- data/lib/gooby_kernel.rb +0 -163
- data/lib/gooby_line.rb +0 -80
- data/lib/gooby_object.rb +0 -22
- data/lib/gooby_point.rb +0 -172
- data/lib/gooby_run.rb +0 -213
- data/lib/gooby_simple_xml_parser.rb +0 -50
- data/lib/gooby_test_helper.rb +0 -23
- data/lib/gooby_track.rb +0 -47
- data/lib/gooby_track_point.rb +0 -229
- data/lib/gooby_training_center_xml_parser.rb +0 -224
- data/lib/gooby_training_center_xml_splitter.rb +0 -116
- data/lib/split_code.sh +0 -29
- data/samples/20050305_corporate_cup_hm.html +0 -450
- data/samples/20050430_nashville_marathon.html +0 -1668
- data/samples/20060115_phoenix_marathon.html +0 -1596
- data/samples/20070101_davidson_11m.html +0 -432
- data/samples/20070505_davidson_5k.html +0 -413
- data/samples/been_there.txt +0 -92
- data/samples/hrm1.html +0 -87
- data/sql/gooby.ddl +0 -60
- data/sql/gooby_load.dml +0 -62
@@ -0,0 +1,11 @@
|
|
1
|
+
---
|
2
|
+
"gpx_file": data/ballantyne.gpx
|
3
|
+
"csv_file": csv/ballantyne.csv
|
4
|
+
"gmap_info_window_altitude": false
|
5
|
+
"gmap_info_window_average_pace": false
|
6
|
+
"gmap_zoom_level": 14
|
7
|
+
"html_file": out/ballantyne.html
|
8
|
+
"kml_file": out/ballantyne.kml
|
9
|
+
"kmz_build": false
|
10
|
+
"kmz_build_command": zip -r ballantyne.kmz .
|
11
|
+
"map_title": Ballantyne Office Park
|
@@ -0,0 +1,11 @@
|
|
1
|
+
---
|
2
|
+
"approx_max_points": 200
|
3
|
+
"activity_xml_file": splits/2008_04_27_13_49_50_tcx.xml
|
4
|
+
"csv_file": csv/2008_04_27_13_49_50_tcx.csv
|
5
|
+
"gmap_info_window_altitude": false
|
6
|
+
"gmap_zoom_level": 11
|
7
|
+
"html_file": out/big_sur_marathon.html
|
8
|
+
"kml_file": out/big_sur_marathon.kml
|
9
|
+
"kmz_build": false
|
10
|
+
"kmz_build_command": zip -r gooby_big_sur.kmz out
|
11
|
+
"map_title": Big Sur Marathon
|
@@ -0,0 +1,11 @@
|
|
1
|
+
---
|
2
|
+
"track_log_file": data/crowders_mtn_hike.log
|
3
|
+
"csv_file": csv/crowders_mtn_hike.csv
|
4
|
+
"gmap_info_window_altitude": false
|
5
|
+
"gmap_info_window_average_pace": false
|
6
|
+
"gmap_zoom_level": 14
|
7
|
+
"html_file": out/crowders_mtn_hike.html
|
8
|
+
"kml_file": out/crowders_mtn_hike.kml
|
9
|
+
"kmz_build": false
|
10
|
+
"kmz_build_command": zip -r gooby_crowders_mtn.kmz .
|
11
|
+
"map_title": Crowders Mountain Hike
|
@@ -0,0 +1,16 @@
|
|
1
|
+
---
|
2
|
+
"activity_xml_file": splits/2009_01_01_14_45_00_tcx.xml
|
3
|
+
"csv_file": csv/davidson1.csv
|
4
|
+
"gmap_1_point_map_info_window_label": Home
|
5
|
+
"gmap_info_window_altitude": false
|
6
|
+
"gmap_info_window_average_pace": false
|
7
|
+
"gmap_info_window_distance": false
|
8
|
+
"gmap_info_window_elapsed_time": false
|
9
|
+
"gmap_info_window_latutude": true
|
10
|
+
"gmap_info_window_longitude": true
|
11
|
+
"gmap_zoom_tab": false
|
12
|
+
"html_file": out/davidson1.html
|
13
|
+
"kml_file": out/davidson1.kml
|
14
|
+
"kmz_build": true
|
15
|
+
"kmz_build_command": zip -r gooby_davidson1.kmz .
|
16
|
+
"map_title": Davidson, NC
|
data/config/gooby_config.yaml
CHANGED
@@ -1,136 +1,29 @@
|
|
1
1
|
---
|
2
|
-
"
|
3
|
-
"
|
4
|
-
"
|
5
|
-
"
|
6
|
-
"
|
7
|
-
"
|
8
|
-
"
|
9
|
-
"
|
10
|
-
"
|
11
|
-
"
|
12
|
-
"
|
13
|
-
"
|
14
|
-
"
|
15
|
-
"
|
16
|
-
"
|
17
|
-
"
|
18
|
-
"
|
19
|
-
"
|
20
|
-
"
|
21
|
-
"
|
22
|
-
"
|
23
|
-
"
|
24
|
-
"
|
25
|
-
"
|
26
|
-
"
|
27
|
-
"
|
28
|
-
"
|
29
|
-
"
|
30
|
-
"course.2": White Horse Hill,1.3,72,73,74
|
31
|
-
"course.999": HRM,0,998,999
|
32
|
-
"poi.1": 35.49923370589701 -80.84842085838318 Downtown Davidson, NC Rt 115 @ Concord Rd
|
33
|
-
"poi.2": 35.497908220131436 -80.84894120693207 South St at Chairman Blake Ln and Rt 115
|
34
|
-
"poi.3": 35.49801958798137 -80.84779858589172 Lorimer Rd at Charman Blake Ln
|
35
|
-
"poi.4": 35.4973557459657 -80.85064172744751 Rt 115 at Jackson St
|
36
|
-
"poi.5": 35.500491477766474 -80.84937572479248 Jackson St at Depot St (CATS bus stop)
|
37
|
-
"poi.6": 35.49835150693197 -80.84473013877869 Concord Rd at Faculty Dr
|
38
|
-
"poi.7": 35.49740815474539 -80.84346413612366 Concord Rd at Baker Dr
|
39
|
-
"poi.8": 35.496857860854064 -80.84061026573181 Thompson St at Dogwood Ln
|
40
|
-
"poi.9": 35.49525063171656 -80.83909749984741 Concord Rd at Gray Rd
|
41
|
-
"poi.10": 35.49370451682351 -80.84910750389099 South St at Spring St
|
42
|
-
"poi.11": 35.49449941576726 -80.84570646286011 Woodland St at Ridgewood Ave
|
43
|
-
"poi.12": 35.48767700520774 -80.84839940071106 End of South St at Greenway trail
|
44
|
-
"poi.13": 35.49166045485576 -80.84610342979431 Greenway St at Eastway St
|
45
|
-
"poi.14": 35.49607172018464 -80.84450483322144 Lorimer St at Woodland St
|
46
|
-
"poi.15": 35.494263567450666 -80.8394730091095 Lorimer St at Pine St
|
47
|
-
"poi.16": 35.492813521846315 -80.83651185035706 Crescent Dr at Virginia St
|
48
|
-
"poi.17": 35.49227193183581 -80.83874344825745 Pine St at Crescent Dr
|
49
|
-
"poi.18": 35.4925077859988 -80.83344340324402 Concord Rd at St Albans Ln
|
50
|
-
"poi.19": 35.49226319648314 -80.83325028419495 Concord Rd at Pat Stough Rd (sidewalk, run start)
|
51
|
-
"poi.20": 35.48865541464355 -80.83256363868713 Pat Stough Rd End
|
52
|
-
"poi.21": 35.49333763773541 -80.83255290985107 St Albans Ln at Caldwell Ln
|
53
|
-
"poi.22": 35.49413254030895 -80.83321809768677 Caldwell Ln at Twain Ave
|
54
|
-
"poi.23": 35.494848819408126 -80.8353853225708 Dogweed Ln - end at trail
|
55
|
-
"poi.24": 35.49733827636497 -80.8318018913269 Conroy Ave at Wolfe St
|
56
|
-
"poi.25": 35.49731643935862 -80.83175897598267 Conroy Ave at Wolfe St
|
57
|
-
"poi.26": 35.496591447377874 -80.83210229873657 Conroy Ave at Harper Lee St
|
58
|
-
"poi.27": 35.49592759356077 -80.83266019821167 Conroy Ave at North Faulkner Way
|
59
|
-
"poi.28": 35.495713586884705 -80.83282113075256 Conroy Ave at South Faulkner Way
|
60
|
-
"poi.29": 35.49461733966593 -80.83401203155518 Conroy Ave at Caldwell Ln
|
61
|
-
"poi.30": 35.49767019813067 -80.83367943763733 Gray Rd at Wolfe St
|
62
|
-
"poi.31": 35.49579220164827 -80.83772420883179 Gray Rd at Dogwood Ln (ivy patch)
|
63
|
-
"poi.32": 35.499128890685576 -80.83267092704773 Gray Rd at DC College Entrance (approx)
|
64
|
-
"poi.33": 35.49599310569458 -80.83266019821167 N Faulkner at Conway Ave stopsign
|
65
|
-
"poi.34": 35.494036453602554 -80.83003163337708 Ashby Dr at Fairview Dr
|
66
|
-
"poi.35": 35.49255146261966 -80.8312439918518 Fairview Dr at Caldwell Ln
|
67
|
-
"poi.36": 35.49289213944762 -80.8265769481659 Ashby Dr at Ashby Dr
|
68
|
-
"poi.37": 35.49289213944762 -80.8265769481659 N Kimberly Rd at McConnell Dr
|
69
|
-
"poi.38": 35.488812657906074 -80.82754254341125 Concord Rd at N/S Kimberly Rd
|
70
|
-
"poi.39": 35.48874277204962 -80.82406640052795 End of Morrison Hill Rd
|
71
|
-
"poi.40": 35.48454950944016 -80.82974195480347 Hudson Pl at Greenway trail (approx)
|
72
|
-
"poi.41": 35.48421753347076 -80.82023620605469 Concord Rd at Davidson-Concord Rd
|
73
|
-
"poi.42": 35.481430628498835 -80.82008600234985 Davidson-Concord Rd at Westmoreland Farm Rd
|
74
|
-
"poi.43": 35.48216449372589 -80.82404494285583 End of Westmoreland Farm Rd
|
75
|
-
"poi.44": 35.478023309320065 -80.81953883171082 Davidson-Concord Rd at Robert Walker Dr (sidewalk)
|
76
|
-
"poi.45": 35.47472069290546 -80.80708265304565 Robert Walker Dr at River Crossing Blvd
|
77
|
-
"poi.46": 35.47085873127506 -80.81012964248657 River Falls Dr at River Crossing Blvd
|
78
|
-
"poi.47": 35.46853447491682 -80.81413149833679 Top of River Crossing Blvd
|
79
|
-
"poi.48": 35.46744222598301 -80.80729722976685 River Falls Dr at River Ford Dr
|
80
|
-
"poi.49": 35.465135347484896 -80.80901384353638 River Ford Dr at Parting Oaks Ln
|
81
|
-
"poi.50": 35.46476833798671 -80.81045150756836 Parting Oaks Ln at Cannon Crossing Way
|
82
|
-
"poi.51": 35.46426151259314 -80.81107378005981 Davidson-Concord Rd at Parting Oaks Ln
|
83
|
-
"poi.52": 35.46207688382905 -80.80345630645752 River Ford Dr at Gazaebo
|
84
|
-
"poi.53": 35.4669441555446 -80.79147219657898 River Ford Dr at 12 Hole Cutthrough
|
85
|
-
"poi.54": 35.46509165596578 -80.79842448234558 River Falls Dr at Wildcat Trail
|
86
|
-
"poi.55": 35.46920729287642 -80.79529166221619 Top of Wildcat Trail
|
87
|
-
"poi.56": 35.469888842992326 -80.79007744789124 River Ford Dr at Greyton La
|
88
|
-
"poi.57": 35.46966166026215 -80.78844666481018 Greyton La at River Run Tennis Center
|
89
|
-
"poi.58": 35.4714965793548 -80.79015254974365 River Ford Dr at Dembridge Dr
|
90
|
-
"poi.59": 35.47141794082389 -80.78723430633545 Dembridge Dr at Winged Oak Way
|
91
|
-
"poi.60": 35.472396548176526 -80.78727722167969 E Rock River Rd at Winged Oak Way
|
92
|
-
"poi.61": 35.46942573905536 -80.78446626663208 Dembridge Dr at Greyton La
|
93
|
-
"poi.62": 35.468420881718885 -80.78355431556702 Dembridge Dr at Royal Court Dr
|
94
|
-
"poi.63": 35.466280056828474 -80.78326463699341 Dembridge Dr at Center Court Dr
|
95
|
-
"poi.64": 35.467328631242275 -80.78491687774658 17240 Royal Court Dr
|
96
|
-
"poi.65": 35.46345320686592 -80.77925741672516 Dembridge Dr at S Shearer Rd
|
97
|
-
"poi.66": 35.47347125502918 -80.78517436981201 E Rocky River Rd at Shearer Rd
|
98
|
-
"poi.67": 35.47901930986441 -80.7865583896637 Shearer Rd at Lecheval La
|
99
|
-
"poi.68": 35.479473621804 -80.78529238700867 Lecheval La at Callaway Hills Ln
|
100
|
-
"poi.69": 35.48211207500329 -80.7840371131897 Callaway Hills Ln - base of hill at corner
|
101
|
-
"poi.70": 35.49492743501789 -80.79602122306824 Shearer Rd at Fisher Rd
|
102
|
-
"poi.71": 35.507242930407294 -80.79685807228088 Shearer Rd at Meck/Iredel County Line
|
103
|
-
"poi.72": 35.50739140358269 -80.79728722572327 Shearer Rd at Gray Rd
|
104
|
-
"poi.73": 35.504657706411194 -80.81006526947021 Gray Rd at White Horse (guard railing)
|
105
|
-
"poi.74": 35.500150833163154 -80.81524193286896 Gray Rd at Charden Rd
|
106
|
-
"poi.75": 35.49958745622591 -80.84329515695572 Davidson College Track
|
107
|
-
"poi.76": 35.499550334350985 -80.8489841222763 Water Fountain at Davidson Post Office
|
108
|
-
"poi.77": 35.49835587427745 -80.84894925355911 Summit Coffee House, Davidson, NC
|
109
|
-
"poi.78": 35.501897713273124 -80.84739089012146 Rt 115 at Griffith St
|
110
|
-
"poi.79": 35.50282354432758 -80.85278749465942 Griffith St at Beaty St and Sloan St
|
111
|
-
"poi.80": 35.50215974201284 -80.86120963096619 Griffith St at Jetton St
|
112
|
-
"poi.81": 35.503819237513255 -80.86635947227478 Griffith St at I-77
|
113
|
-
"poi.82": 35.50537389166296 -80.87023258209229 Pool at Goodrum Rd Condos (approx)
|
114
|
-
"poi.83": 35.50772328380566 -80.87085485458374 Northwest Dr circle
|
115
|
-
"poi.84": 35.50778223607025 -80.86805731058121 End of Boardwalk opposite North Harbour
|
116
|
-
"poi.85": 35.504041956668054 -80.87248027324677 Boardwalk Gazebo at 'LKN Beach'
|
117
|
-
"poi.86": 35.49920750210696 -80.86040496826172 Jetton St at Davidson Gateway Dr
|
118
|
-
"poi.87": 35.49723345868036 -80.85290551185608 Jetton St at Potts St
|
119
|
-
"poi.88": 35.49272616886572 -80.85647821426392 Rt 115 at Potts St
|
120
|
-
"poi.89": 35.49401898327994 -80.86023330688477 Front Door of Cornelius YMCA
|
121
|
-
"poi.90": 35.49316730044645 -80.86046397686005 Top of Path from YMCA to Church St
|
122
|
-
"poi.91": 35.48919702903026 -80.86110234260559 Church St at Washam St and McCall St
|
123
|
-
"poi.92": 35.482714888249156 -80.86269021034241 Church St at W Catawba Ave
|
124
|
-
"poi.93": 35.47983182748448 -80.85657477378845 Field St at Zion St
|
125
|
-
"poi.94": 35.4834836869885 -80.87483525276184 I-77 at Catawba Ave
|
126
|
-
"poi.95": 35.463780899356 -80.87566137313843 I-77 at Westmoreland Rd
|
127
|
-
"poi.96": 35.465135347484896 -80.84731578826904 Rt 115 at Bailey Rd
|
128
|
-
"poi.97": 35.45365239982104 -80.84276676177979 Rt 115 at Mayes Rd
|
129
|
-
"poi.98": 35.45735788320527 -80.82118034362793 Mayes Rd at Barnhard Rd
|
130
|
-
"poi.99": 35.45446517375887 -80.80956101417542 Mayes Rd at Rt 73
|
131
|
-
"poi.100": 35.466612106872 -80.81420660018921 Barnhardt Rd at Davidson-Concord Rd
|
132
|
-
"poi.230": 35.49404300497254 -80.86026549339294 Cornelius YMCA
|
133
|
-
"poi.231": 35.494722160763885 -80.86207866668701 Cornelius YMCA "Beach"
|
134
|
-
"poi.232": 35.49358659158504 -80.860455930233 Cornelius YMCA Path Base
|
135
|
-
"poi.998": 35.495499 -80.832152 hrm test 1
|
136
|
-
"poi.999": 35.495465 -80.832151 hrm test 2
|
2
|
+
"approx_max_points": 200
|
3
|
+
"csv_file": samples/2008_04_27_13_49_50_tcx.csv
|
4
|
+
"first_point": 1
|
5
|
+
"gen_comments": true
|
6
|
+
"gmap_height": 800px
|
7
|
+
"gmap_icon_url_base": images/
|
8
|
+
#"gmap_icon_url_base": http://your_domain_name/images/
|
9
|
+
"gmap_info_window_altitude": true
|
10
|
+
"gmap_info_window_average_pace": true
|
11
|
+
"gmap_info_window_average_mph": true
|
12
|
+
"gmap_info_window_distance": true
|
13
|
+
"gmap_info_window_elapsed_time": true
|
14
|
+
"gmap_info_window_latutude": true
|
15
|
+
"gmap_info_window_longitude": true
|
16
|
+
"gmap_key": ABQIAAAAdn5SVzjZKZKs1IRkFdx52xR1l5lLpU9GCFYoS8YrTf8v3gVJ2hRLV1dTSiqDWwWSnMRkM7SVr0EKSA
|
17
|
+
"gmap_size_control": large
|
18
|
+
"gmap_type": normal
|
19
|
+
"gmap_width": 1500px
|
20
|
+
"gmap_zoom_level": 12
|
21
|
+
"gmap_zoom_tab": true
|
22
|
+
"html_file": out/gooby_google_map.html
|
23
|
+
"kml_file": out/gooby_google_map.kml
|
24
|
+
"kmz_build": false
|
25
|
+
"kmz_build_command": zip -r gooby.kmz .
|
26
|
+
"last_point": 999999999
|
27
|
+
"map_element_id": map
|
28
|
+
"map_title": Google Map created with Gooby
|
29
|
+
"mile_markers": true
|
data/cucumber.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
default: --format progress features --tags ~@pending
|
@@ -0,0 +1,88 @@
|
|
1
|
+
Feature: Building Gooby
|
2
|
+
Gem file 'gooby-2.0.0.gem' is created with shell script 'build_gem.sh'
|
3
|
+
using specification file 'gooby.gemspec'
|
4
|
+
and we test the build process with command 'cucumber features/build_gem.feature'
|
5
|
+
|
6
|
+
Scenario: Execute the build process
|
7
|
+
Given file 'build_gem.sh' exists
|
8
|
+
And file 'gooby.gemspec' exists
|
9
|
+
And the gem we are building is named 'gooby-2.0.0.gem'
|
10
|
+
And directory '/temp' exists
|
11
|
+
And file '/temp/gooby-2.0.0.gem' is removed if present
|
12
|
+
And directory '/temp/gooby-2.0.0' is removed if present
|
13
|
+
|
14
|
+
Then we execute the shell script './build_gem.sh'
|
15
|
+
And file '/temp/gooby-2.0.0.gem' exists
|
16
|
+
And directory '/temp/gooby-2.0.0' exists
|
17
|
+
And these unpacked files exist within directory '/temp/gooby-2.0.0':
|
18
|
+
| file | type |
|
19
|
+
| config | directory |
|
20
|
+
| features/steps | directory |
|
21
|
+
| features/support | directory |
|
22
|
+
| lib | directory |
|
23
|
+
| out/images | directory |
|
24
|
+
| samples | directory |
|
25
|
+
| spec | directory |
|
26
|
+
| cucumber.yml | regular |
|
27
|
+
| README | regular |
|
28
|
+
| rakefile.rb | regular |
|
29
|
+
| samples.sh | regular |
|
30
|
+
| setup.rb | regular |
|
31
|
+
| config/ballantyne.yaml | regular |
|
32
|
+
| config/big_sur_marathon.yaml | regular |
|
33
|
+
| config/crowders_mtn_hike.yaml | regular |
|
34
|
+
| config/davidson1.yaml | regular |
|
35
|
+
| config/gooby_config.yaml | regular |
|
36
|
+
| features/build_gem.feature | regular |
|
37
|
+
| features/gooby.feature | regular |
|
38
|
+
| features/install.feature | regular |
|
39
|
+
| features/steps/gooby_steps.rb | regular |
|
40
|
+
| features/support/env.rb | regular |
|
41
|
+
| lib/gooby.rb | regular |
|
42
|
+
| lib/gooby_activity.rb | regular |
|
43
|
+
| lib/gooby_base_object.rb | regular |
|
44
|
+
| lib/gooby_base_sax_parser.rb | regular |
|
45
|
+
| lib/gooby_configuration.rb | regular |
|
46
|
+
| lib/gooby_counter_hash.rb | regular |
|
47
|
+
| lib/gooby_dttm.rb | regular |
|
48
|
+
| lib/gooby_environment.rb | regular |
|
49
|
+
| lib/gooby_garmin_tcx_parser.rb | regular |
|
50
|
+
| lib/gooby_google_kml_generator.rb | regular |
|
51
|
+
| lib/gooby_google_map_generator.rb | regular |
|
52
|
+
| lib/gooby_gpx_parser.rb | regular |
|
53
|
+
| lib/gooby_help_producer.rb | regular |
|
54
|
+
| lib/gooby_introspection.rb | regular |
|
55
|
+
| lib/gooby_io.rb | regular |
|
56
|
+
| lib/gooby_lap.rb | regular |
|
57
|
+
| lib/gooby_process.rb | regular |
|
58
|
+
| lib/gooby_sax_path_parser.rb | regular |
|
59
|
+
| lib/gooby_tcx_extractor.rb | regular |
|
60
|
+
| lib/gooby_track_log_parser.rb | regular |
|
61
|
+
| lib/gooby_trackpoint.rb | regular |
|
62
|
+
| lib/gooby_xml_object.rb | regular |
|
63
|
+
| out/images/dd-end.png | regular |
|
64
|
+
| out/images/dd-end.png | regular |
|
65
|
+
| out/images/marker1.png | regular |
|
66
|
+
| out/images/marker26.png | regular |
|
67
|
+
| out/images/shadow50.png | regular |
|
68
|
+
| samples/2008_04_27_13_49_50_tcx.csv | regular |
|
69
|
+
| samples/2008_04_27_13_49_50_tcx.xml | regular |
|
70
|
+
| samples/2009_01_01_14_45_00_tcx.xml | regular |
|
71
|
+
| samples/ballantyne.csv | regular |
|
72
|
+
| samples/ballantyne.gpx | regular |
|
73
|
+
| samples/ballantyne.kml | regular |
|
74
|
+
| samples/big_sur_marathon.html | regular |
|
75
|
+
| samples/big_sur_marathon.kml | regular |
|
76
|
+
| samples/build_gem_test_results.txt | regular |
|
77
|
+
| samples/crowders_mtn_hike.csv | regular |
|
78
|
+
| samples/crowders_mtn_hike.html | regular |
|
79
|
+
| samples/crowders_mtn_hike.log | regular |
|
80
|
+
| samples/cucumber_test_results.txt | regular |
|
81
|
+
| samples/davidson1.csv | regular |
|
82
|
+
| samples/davidson1.html | regular |
|
83
|
+
| samples/doc.kml | regular |
|
84
|
+
| samples/gps_track_log_asheville_mt_pisgah.txt | regular |
|
85
|
+
| samples/gps_track_logs.txt | regular |
|
86
|
+
| samples/install_test_results.txt | regular |
|
87
|
+
| samples/mt_pisgah.txt | regular |
|
88
|
+
| samples/rspec_test_results.txt | regular |
|
@@ -0,0 +1,300 @@
|
|
1
|
+
Feature: Using Gooby
|
2
|
+
In order to generate maps with Gooby
|
3
|
+
From data recorded on a Garmin GPS device, or the MotionX app on an iPhone
|
4
|
+
We get the raw GPS data recorded from the device
|
5
|
+
then parse the raw GPS data into a "gooby standard" CSV format
|
6
|
+
then generate Google HTML maps from the CSV files
|
7
|
+
then generate Google Earth KML maps from the same CSV files
|
8
|
+
then enjoy viewing the maps and seeing where we've been.
|
9
|
+
|
10
|
+
Scenario: Setup the environment and directories for the scenarios that follow
|
11
|
+
Given GOOBY_HOME is set to '/Users/cjoakim/projects/github/cjoakim/gooby2'
|
12
|
+
And an empty csv directory within GOOBY_HOME
|
13
|
+
And an empty out directory within GOOBY_HOME
|
14
|
+
And an empty tmp directory within GOOBY_HOME
|
15
|
+
And an empty splits directory within GOOBY_HOME
|
16
|
+
And file 'gooby_davidson1.kmz' does not exist within GOOBY_HOME
|
17
|
+
|
18
|
+
Scenario: Generate the Gooby help content
|
19
|
+
When rake task 'gooby:help' is executed
|
20
|
+
Then the output contains 126 lines, within a tolerance of 2
|
21
|
+
And the following lines are expected
|
22
|
+
And line: Gooby = Google APIs + Ruby. Copyright 2009 by Chris Joakim.
|
23
|
+
And line: Gooby is available under GNU General Public License (GPL) license.
|
24
|
+
And line: Version 2.0.0
|
25
|
+
And line: Directory Structure:
|
26
|
+
And line: {GOOBY_HOME} Your chosen directory on your computer in which to store Gooby files.
|
27
|
+
And line: You must set the "GOOBY_HOME" environment variable on your computer to this
|
28
|
+
And line: chosen directory name.
|
29
|
+
And line: {GOOBY_HOME}/config Contains configuration files in yaml format.
|
30
|
+
And line: File /config/gooby_config.yaml is the "base" configuration file, and is read first.
|
31
|
+
And line: This file typically remains unchanged after your intial edits to it. Be sure to
|
32
|
+
And line: set "gmap_key" to your Google Maps key, and "gmap_icon_url_base" to the URL on
|
33
|
+
And line: your site where the map icon images are located.
|
34
|
+
And line: You should create one "map-specific" yaml file for each map you wish to create.
|
35
|
+
And line: It "inherits" all entries from the base configuration file, gooby_config.yaml.
|
36
|
+
And line: So just specify the additions or overrides in your map-specific yaml files.
|
37
|
+
And line: This design allows you generate your various maps, without having to frequently
|
38
|
+
And line: reset the values the the base configuration file.
|
39
|
+
And line: {GOOBY_HOME}/csv Gooby places CSV data files in this directory. All Gooby parsers create a
|
40
|
+
And line: standard CSV format that you can use to generate either Google maps or Google Earth
|
41
|
+
And line: maps with.
|
42
|
+
And line: {GOOBY_HOME}/data You place data files from your desktop GPS software here.
|
43
|
+
And line: {GOOBY_HOME}/out Gooby places generated Google Map html files and Google Earth kml files here.
|
44
|
+
And line: {GOOBY_HOME}/out/images Standard set of images here which are used in the generated html & kml files.
|
45
|
+
And line: Add your own images here, or replace the existing ones, as necessary.
|
46
|
+
And line: {GOOBY_HOME}/samples Contains a set of sample files for your reference.
|
47
|
+
And line: {GOOBY_HOME}/splits Gooby places individual 'activity xml files' here, split-out from a large tcx file.
|
48
|
+
And line: {GOOBY_HOME}/tmp Temporary files.
|
49
|
+
And line: List of Gooby commands (in order of typical usage):
|
50
|
+
And line: rake # Default task; same as 'rake gooby:help'.
|
51
|
+
And line: rake gooby:help # Display Gooby usage instructions.
|
52
|
+
And line: rake gooby:extract_activities_from_tcx # Extract individual Activity xml files from a Garmin tcx file
|
53
|
+
And line: rake gooby:parse_activity_xml_to_csv # Parse an extracted Activity xml file to a corresponding csv file.
|
54
|
+
And line: rake gooby:parse_track_log_to_csv # Parse a GPS Track Log file a corresponding csv file.
|
55
|
+
And line: rake gooby:parse_gpx_to_csv # Parse a *.gpx file into a corresponding csv file.
|
56
|
+
And line: rake gooby:generate_google_map # Generate a Google Map from a csv file.
|
57
|
+
And line: rake gooby:generate_google_earth_map # Generate a Google Earth kml file from a csv file, with optional
|
58
|
+
And line: kmz file generation.
|
59
|
+
And line: Gooby Command Detail:
|
60
|
+
And line: command: rake gooby:help
|
61
|
+
And line: description: Displays help information for each Gooby command.
|
62
|
+
And line: command: rake gooby:extract_activities_from_tcx
|
63
|
+
And line: description: Splits the potentially huge Garmin Training Center tcx file into individual
|
64
|
+
And line: Activity xml files, and places these in the /splits directory. Each has a filename
|
65
|
+
And line: based on the starting date/time of the activity.
|
66
|
+
And line: parameters: tcx_file - The input file, created by exporting from Garmin Training Center.
|
67
|
+
And line: Defaults to 'data/current.tcx' in your GOOBY_HOME directory.
|
68
|
+
And line: command: rake gooby:parse_activity_xml_to_csv
|
69
|
+
And line: description: Parse an extracted Activity xml 'split' file to a corresponding csv file.
|
70
|
+
And line: example: rake gooby:parse_activity_xml_to_csv config_file=config/big_sur_marathon.yaml
|
71
|
+
And line: command: rake gooby:parse_gpx_to_csv
|
72
|
+
And line: description: Parse a *.gpx file into a corresponding csv file.
|
73
|
+
And line: example: rake gooby:parse_gpx_to_csv config_file=config/ballantyne.yaml
|
74
|
+
And line: command: rake gooby:parse_track_log_to_csv
|
75
|
+
And line: description: Parse an extracted 'GPS Tracks Log' file from MacGpsPro into csv format.
|
76
|
+
And line: note 2: It is strongly recommended that you manually copy the 'GPS Tracks Log' file
|
77
|
+
And line: from your MacGpsPro installation to the GOOBY_HOME/data directory, and rename it to
|
78
|
+
And line: 'gps_track_logs.txt', before running this command. Then manually edit out the lines
|
79
|
+
And line: not pertinent to the map you want to generate.
|
80
|
+
And line: note 3: I use MacGpsPro to read the GPS data from my Garmin eTrex Venture device, since the
|
81
|
+
And line: Garmin Training Center software does not support this device.
|
82
|
+
And line: example: rake gooby:parse_track_log_to_csv config_file=config/crowders_mtn_hike.yaml
|
83
|
+
And line: command: rake gooby:generate_google_map
|
84
|
+
And line: description: Generate a Google Map html file from a csv file.
|
85
|
+
And line: example: rake gooby:generate_google_map config_file=config/big_sur_marathon.yaml
|
86
|
+
And line: command: rake gooby:generate_google_earth_map
|
87
|
+
And line: description: Generate a Google Earth kml file from a csv file.
|
88
|
+
And line: note 2: Gooby will optionally create a kmz file for you. A kmz file is essentially a
|
89
|
+
And line: zip file, which contains your kml file(s), as well as any associated files such
|
90
|
+
And line: as images. Two parameters are required in your yaml config file for kmz generation:
|
91
|
+
And line: 'kmz_build' must be set to true, and 'kmz_build_command' must be the appropriate
|
92
|
+
And line: zip-creating command for your operating system and set of installed software.
|
93
|
+
And line: A Mac OS/X example command is: zip -r gooby_big_sur.kmz .
|
94
|
+
And line: example: rake gooby:generate_google_earth_map config_file=config/big_sur_marathon.yaml
|
95
|
+
And line: Your GOOBY_HOME directory is currently set to
|
96
|
+
And the output contains the expected lines
|
97
|
+
|
98
|
+
Scenario: Split a large TCX file exported from Garmin Training Center
|
99
|
+
Given we imported the data from our Garmin GPS device model 305 into Garmin Training Center
|
100
|
+
And exported the data from Garmin Training Center to a TCX file
|
101
|
+
And the TCX file is named 'data/current.tcx'
|
102
|
+
|
103
|
+
When rake task 'gooby:extract_activities_from_tcx' is executed
|
104
|
+
Then the splits directory contains at least 15 files matching name '2009'
|
105
|
+
And the splits directory contains at least 90 files matching name '2008'
|
106
|
+
And the splits directory contains at least 100 files matching name '2007'
|
107
|
+
And these activity xml files exist:
|
108
|
+
| file | lines |
|
109
|
+
| splits/2008_04_27_13_49_50_tcx.xml | 24560 |
|
110
|
+
| splits/2009_01_01_14_45_00_tcx.xml | 10630 |
|
111
|
+
|
112
|
+
Scenario: Parse an activity xml file to csv
|
113
|
+
Given the config file we use is 'config/big_sur_marathon.yaml'
|
114
|
+
When rake task 'gooby:parse_activity_xml_to_csv' is executed
|
115
|
+
Then the CSV file 'csv/2008_04_27_13_49_50_tcx.csv' is created
|
116
|
+
And the CSV file contains 2449 trackpoints
|
117
|
+
And the CSV file contains these trackpoints:
|
118
|
+
| seq | time | latitude | longitude | distance | elapsed | mph | pace |
|
119
|
+
| 1 | 2008-04-27T13:49:50Z | 36.247196 | -121.781665 | 0.0 | 0:00:00 | 0.00 | 0:00 |
|
120
|
+
| 1800 | 2008-04-27T15:50:22Z | 36.460703 | -121.924925 | 20.0004984569685 | 3:03:46 | 6.530 | 9:11.29 |
|
121
|
+
| 2449 | 2008-04-27T17:09:28Z | 36.538656 | -121.91085 | 26.3666472682879 | 4:05:34 | 6.442 | 9:18.81 |
|
122
|
+
|
123
|
+
Scenario: Parse a track log file to csv
|
124
|
+
Given the config file we use is 'config/crowders_mtn_hike.yaml'
|
125
|
+
When rake task 'gooby:parse_track_log_to_csv' is executed
|
126
|
+
Then the CSV file 'csv/crowders_mtn_hike.csv' is created
|
127
|
+
And the CSV file contains 1065 trackpoints
|
128
|
+
And the CSV file contains these trackpoints:
|
129
|
+
| seq | time | latitude | longitude | distance | elapsed | mph | pace |
|
130
|
+
| 1 | 2008-11-16T08:43:06Z | 35.21357 | -81.29359 | 0.0 | 0:00:00 | 0.00 | 0:00 |
|
131
|
+
| 1065 | 2008-11-16T14:46:11Z | 35.26834 | -81.25154 | 15.0878648193097 | 6:03:05 | 2.493 | 24:03.88 |
|
132
|
+
|
133
|
+
Scenario: Parse a gpx file to csv
|
134
|
+
Given the config file we use is 'config/ballantyne.yaml'
|
135
|
+
When rake task 'gooby:parse_gpx_to_csv' is executed
|
136
|
+
Then the CSV file 'csv/ballantyne.csv' is created
|
137
|
+
And the CSV file contains 27 trackpoints
|
138
|
+
And the CSV file contains these trackpoints:
|
139
|
+
| seq | time | latitude | longitude | distance | elapsed | mph | pace |
|
140
|
+
| 1 | 2009-05-14T22:08:50Z | 35.062748 | -80.85562 | 0.0 | 0:00:00 | 0.00 | 0:00 |
|
141
|
+
| 27 | 2009-05-14T22:10:43Z | 35.062613 | -80.855448 | 0.0783970446562321 | 0:01:53 | 2.498 | 24:01.38 |
|
142
|
+
|
143
|
+
Scenario: Generate a Big Sur Marathon Google map in html format
|
144
|
+
Given the config file we use is 'config/big_sur_marathon.yaml'
|
145
|
+
When rake task 'gooby:generate_google_map' is executed
|
146
|
+
Then the HTML file 'out/big_sur_marathon.html' is created
|
147
|
+
And the HTML file contains 2766 lines
|
148
|
+
And the following lines are expected
|
149
|
+
And line: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
150
|
+
And line: "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
151
|
+
And line: <html xmlns="http://www.w3.org/1999/xhtml">
|
152
|
+
And line: <head>
|
153
|
+
And line: <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
154
|
+
And line: <meta name="description" content="Google Map generated by Gooby version 2.0.0">
|
155
|
+
And line: <meta name="keywords" content="Google Map Generated by Gooby version 2.0.0">
|
156
|
+
And line: <title> Big Sur Marathon </title>
|
157
|
+
And line: <script src='http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAdn5SVzjZKZKs1IRkFdx52xR1l5lLpU9GCFYoS8YrTf8v3gVJ2hRLV1dTSiqDWwWSnMRkM7SVr0EKSA' type='text/javascript'></script>
|
158
|
+
And line: <script type="text/javascript">
|
159
|
+
And line: //<![CDATA[
|
160
|
+
And line: function load() {
|
161
|
+
And line: if (GBrowserIsCompatible()) {
|
162
|
+
And line: var map = new GMap2(document.getElementById("map"));
|
163
|
+
And line: map.addControl(new GLargeMapControl());
|
164
|
+
And line: map.addControl(new GMapTypeControl());
|
165
|
+
And line: var centerPoint = new GLatLng(36.392926, -121.8600045);
|
166
|
+
And line: map.setCenter(centerPoint, 11);
|
167
|
+
And line: var points = new Array();
|
168
|
+
And line: points.push(new GLatLng(36.247196,-121.781665));
|
169
|
+
And line: // points.push(new GLatLng(36.247208,-121.78167));
|
170
|
+
And line: points.push(new GLatLng(36.538656,-121.91085));
|
171
|
+
And line: // app_max=200.0 ratio=12.245 increment=12
|
172
|
+
And line: var routePolyline = new GPolyline(points);
|
173
|
+
And line: map.addOverlay(routePolyline);
|
174
|
+
And line: // Create a base icon for all of our markers that specifies the
|
175
|
+
And line: // shadow, icon dimensions, etc.
|
176
|
+
And line: var baseIcon = new GIcon();
|
177
|
+
And line: baseIcon.shadow = "images/shadow50.png";
|
178
|
+
And line: baseIcon.iconSize = new GSize(20, 34);
|
179
|
+
And line: baseIcon.shadowSize = new GSize(37, 34);
|
180
|
+
And line: baseIcon.iconAnchor = new GPoint(9, 34);
|
181
|
+
And line: baseIcon.infoWindowAnchor = new GPoint(9, 2);
|
182
|
+
And line: baseIcon.infoShadowAnchor = new GPoint(18, 25);
|
183
|
+
And line: var iconStart = new GIcon(baseIcon);
|
184
|
+
And line: iconStart.image = "images/dd-start.png";
|
185
|
+
And line: var pStart = new GPoint(-121.781665, 36.247196);
|
186
|
+
And line: var mStart = new GMarker(pStart, iconStart);
|
187
|
+
And line: GEvent.addListener(mStart, "click", function() {
|
188
|
+
And line: mStart.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Start!</b>
|
189
|
+
And line: map.addOverlay(mStart);
|
190
|
+
And line: var icon1 = new GIcon(baseIcon);
|
191
|
+
And line: icon1.image = "images/marker1.png";
|
192
|
+
And line: var p1 = new GPoint(-121.788872, 36.259338);
|
193
|
+
And line: var m1 = new GMarker(p1, icon1);
|
194
|
+
And line: GEvent.addListener(m1, "click", function() {
|
195
|
+
And line: m1.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Mile 1</b>
|
196
|
+
And line: map.addOverlay(m1);
|
197
|
+
And line: var icon26 = new GIcon(baseIcon);
|
198
|
+
And line: icon26.image = "images/marker26.png";
|
199
|
+
And line: var p26 = new GPoint(-121.914424, 36.534368);
|
200
|
+
And line: var m26 = new GMarker(p26, icon26);
|
201
|
+
And line: GEvent.addListener(m26, "click", function() {
|
202
|
+
And line: m26.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Mile 26</b>
|
203
|
+
And line: map.addOverlay(m26);
|
204
|
+
And line: var iconFinish = new GIcon(baseIcon);
|
205
|
+
And line: iconFinish.image = "images/dd-end.png";
|
206
|
+
And line: var pFinish = new GPoint(-121.91085, 36.538656);
|
207
|
+
And line: var mFinish = new GMarker(pFinish, iconFinish);
|
208
|
+
And line: GEvent.addListener(mFinish, "click", function() {
|
209
|
+
And line: mFinish.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Finish!</b>
|
210
|
+
And line: map.addOverlay(mFinish);
|
211
|
+
And line: </script>
|
212
|
+
And line: </head>
|
213
|
+
And line: <body onload="load()" onunload="GUnload()">
|
214
|
+
And line: <center>
|
215
|
+
And line: <h3> Big Sur Marathon </h3>
|
216
|
+
And line: <div id="map" style="width: 1500px; height: 800px"></div>
|
217
|
+
And line: <div id="messages"></div>
|
218
|
+
And line: </center>
|
219
|
+
And line: </body>
|
220
|
+
And line: </html>
|
221
|
+
And the HTML contains the expected lines
|
222
|
+
|
223
|
+
Scenario: Generate a Big Sur Marathon Google Earth map in kml format
|
224
|
+
Given the config file we use is 'config/big_sur_marathon.yaml'
|
225
|
+
When rake task 'gooby:generate_google_earth_map' is executed
|
226
|
+
Then the KML file 'out/big_sur_marathon.kml' is created
|
227
|
+
And the KML file contains 685 lines
|
228
|
+
And the following lines are expected
|
229
|
+
And line: <?xml version="1.0" encoding="UTF-8"?>
|
230
|
+
And line: <kml xmlns="http://www.opengis.net/kml/2.2">
|
231
|
+
And line: <Document>
|
232
|
+
And line: <!-- kml file generated by Gooby version 2.0.0 -->
|
233
|
+
And line: <name>Big Sur Marathon</name>
|
234
|
+
And line: <Style id="goobyStyle">
|
235
|
+
And line: <name>Start</name>
|
236
|
+
And line: <description><table align='left'><tr><td colspan='2'><b>Start!</b>
|
237
|
+
And line: <href>images/dd-start.png</href>
|
238
|
+
And line: <coordinates>-121.781665,36.247196,1</coordinates>
|
239
|
+
And line: <name>Finish</name>
|
240
|
+
And line: <description><table align='left'><tr><td colspan='2'><b>Finish!</b>
|
241
|
+
And line: <href>images/dd-end.png</href>
|
242
|
+
And line: <coordinates>-121.91085,36.538656,1</coordinates>
|
243
|
+
And line: <visibility>1</visibility>
|
244
|
+
And line: <description>Route</description>
|
245
|
+
And line: <styleUrl>#goobyStyle</styleUrl>
|
246
|
+
And line: <LineString>
|
247
|
+
And line: <tessellate>1</tessellate>
|
248
|
+
And line: <altitudeMode>relativeToGround</altitudeMode>
|
249
|
+
And line: <coordinates>
|
250
|
+
And line: -121.781665,36.247196,1
|
251
|
+
And line: -121.782714,36.248216,1
|
252
|
+
And line: -121.784484,36.249009,1
|
253
|
+
And line: -121.912713,36.536075,1
|
254
|
+
And line: -121.911365,36.537773,1
|
255
|
+
And line: -121.91085,36.538656,1
|
256
|
+
And line: </coordinates>
|
257
|
+
And line: </LineString>
|
258
|
+
And line: </Placemark>
|
259
|
+
And line: </Document>
|
260
|
+
And line: </kml>
|
261
|
+
And the KML contains the expected lines
|
262
|
+
|
263
|
+
Scenario: Parse the Davidson 11-miler activity xml file to csv
|
264
|
+
Given the config file we use is 'config/davidson1.yaml'
|
265
|
+
When rake task 'gooby:parse_activity_xml_to_csv' is executed
|
266
|
+
Then the CSV file 'csv/davidson1.csv' is created
|
267
|
+
And the CSV file contains 1060 trackpoints
|
268
|
+
And the CSV file contains these trackpoints:
|
269
|
+
| seq | time | latitude | longitude | distance | elapsed | mph | pace |
|
270
|
+
| 1 | 2009-01-01T14:45:00Z | 35.495525 | -80.83215 | 0.0 | 0:00:00 | 0.00 | 0:00 |
|
271
|
+
| 1060 | 2009-01-01T16:25:22Z | 35.495495 | -80.832109 | 11.0685814547597 | 1:40:22 | 6.617 | 9:04.06 |
|
272
|
+
And we edit CSV file 'csv/davidson1.csv' to contain only point number 1
|
273
|
+
|
274
|
+
Scenario: Generate a single-point Google map in html format
|
275
|
+
Given the config file we use is 'config/davidson1.yaml'
|
276
|
+
When rake task 'gooby:generate_google_map' is executed
|
277
|
+
Then the HTML file 'out/davidson1.html' is created
|
278
|
+
And the HTML file contains 75 lines
|
279
|
+
|
280
|
+
Scenario: Generate a single-point Google Earth map in kmz format
|
281
|
+
Given the config file we use is 'config/davidson1.yaml'
|
282
|
+
When rake task 'gooby:generate_google_earth_map' is executed
|
283
|
+
Then the KML file 'out/doc.kml' is created
|
284
|
+
And the KML file contains 49 lines
|
285
|
+
Then the KMZ file 'gooby_davidson1.kmz' is created
|
286
|
+
|
287
|
+
Scenario: Generate a Crowders Mt. Hike Google map in html format from Garmin eTrex Venture source data
|
288
|
+
Given the config file we use is 'config/crowders_mtn_hike.yaml'
|
289
|
+
When rake task 'gooby:generate_google_map' is executed
|
290
|
+
Then the HTML file 'out/crowders_mtn_hike.html' is created
|
291
|
+
And the HTML file contains 1283 lines
|
292
|
+
|
293
|
+
Scenario: Generate a Google Earth map in kml format from iPhone & MotionX app source data
|
294
|
+
Given the config file we use is 'config/ballantyne.yaml'
|
295
|
+
When rake task 'gooby:generate_google_earth_map' is executed
|
296
|
+
Then the KML file 'out/ballantyne.kml' is created
|
297
|
+
And the KML file contains 91 lines
|
298
|
+
|
299
|
+
Scenario: Save the generated files for packaging in the gooby gem
|
300
|
+
Then copy the generated files to the samples directory
|