gooby 1.2.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|