Skip to content
This repository was archived by the owner on May 27, 2020. It is now read-only.

Commit 055e6e0

Browse files
committed
Better output
New warnings falg
1 parent 73e1970 commit 055e6e0

File tree

1 file changed

+17
-76
lines changed

1 file changed

+17
-76
lines changed

main.go

Lines changed: 17 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@ import (
1313
"github.com/ptrv/go-gpx"
1414
)
1515

16-
var version = "2.1.0"
16+
var version = "2.2.0"
1717
var target gpx.Wpt
1818
var dist *float64
1919
var debug *bool
20+
var warnings *bool
2021
var wg sync.WaitGroup
2122
var globInnerMinDist = math.MaxFloat64
2223
var globOuterMinDist = math.MaxFloat64
@@ -33,7 +34,6 @@ func scan(gpxFile *gpx.Gpx, absFileName string) {
3334
}
3435

3536
minDist := math.MaxFloat64
36-
3737
for _, track := range gpxFile.Tracks {
3838
for _, segment := range track.Segments {
3939
for _, waypoint := range segment.Waypoints {
@@ -44,17 +44,16 @@ func scan(gpxFile *gpx.Gpx, absFileName string) {
4444
}
4545
}
4646
}
47-
48-
if minDist == math.MaxFloat64 {
49-
fmt.Println("\r[Warning] file: ", absFileName, " has no waypoints")
47+
if *warnings && minDist == math.MaxFloat64 {
48+
fmt.Println("\r[Warning]", absFileName, "has no waypoints")
49+
printState(finished, total)
50+
finished++
5051
return
5152
}
52-
5353
if *debug {
5454
fmt.Printf("\r%8.0f m, %s\n", minDist, absFileName)
5555
printState(finished, total)
5656
}
57-
5857
if minDist <= *dist {
5958
if globInnerMinDist > minDist {
6059
globInnerMinDist = minDist
@@ -66,78 +65,27 @@ func scan(gpxFile *gpx.Gpx, absFileName string) {
6665
globOuterMinDist = minDist
6766
globOuterMinDistAbsFileName = absFileName
6867
}
69-
7068
finished++
7169
}
7270

73-
// scans a gpx datastructure
74-
/*func scan(file string) {
75-
if *parallel {
76-
defer wg.Done()
77-
}
78-
minDist := math.MaxFloat64
79-
var gpxFile, err = gpx.ParseFile(file)
80-
absFileName, _ := filepath.Abs(file)
81-
if err != nil {
82-
fmt.Println("\r[Error] while parsing the file: ", absFileName)
83-
return
84-
}
85-
86-
for _, track := range gpxFile.Tracks {
87-
for _, segment := range track.Segments {
88-
for _, waypoint := range segment.Waypoints {
89-
currDist := waypoint.Distance2D(&target)
90-
if minDist > currDist {
91-
minDist = currDist
92-
}
93-
}
94-
}
95-
}
96-
97-
if minDist == math.MaxFloat64 {
98-
fmt.Println("\r[Warning] file: ", absFileName, " has no waypoints")
99-
return
100-
}
101-
102-
if *debug {
103-
fmt.Printf("\r%8.0f m, %s\n", minDist, absFileName)
104-
}
105-
106-
if minDist <= *dist {
107-
if globInnerMinDist > minDist {
108-
globInnerMinDist = minDist
109-
globInnerMinDistAbsFileName = absFileName
110-
}
111-
fmt.Printf("\r%8.0f m, %s\n", minDist, absFileName)
112-
} else if globOuterMinDist > minDist {
113-
globOuterMinDist = minDist
114-
globOuterMinDistAbsFileName = absFileName
115-
}
116-
117-
if *parallel {
118-
finished++
119-
printState(finished, total)
120-
}
121-
}*/
122-
12371
func printState(index int, total int) {
124-
fmt.Print("\r")
125-
fmt.Print(strconv.Itoa(int(math.Round(float64(index)/float64(total)*100.0))), "% scanning...")
72+
fmt.Print("\r", strconv.Itoa(int(math.Round(float64(index)/float64(total)*100.0))), "% scanning...")
12673
}
12774

12875
func main() {
12976

13077
lat := flag.Float64("lat", 0, "latitude of target (North to South)")
13178
lon := flag.Float64("lon", 0, "longitude of target (East to West)")
132-
dist = flag.Float64("dist", 1000, "distance between target and waypoint in meters")
79+
dist = flag.Float64("dist", 0, "distance between target and waypoint in meters")
13380
root := flag.String("path", ".", "path containing the gpx files (from the executable)")
134-
parallel = flag.Bool("parallel", false, "parallel mode (faster, but this eats up your hardware!)")
81+
parallel = flag.Bool("parallel", true, "parallel scanning mode")
82+
warnings = flag.Bool("warnings", true, "print warnings")
13583
debug = flag.Bool("debug", false, "debug mode (print out all file distances)")
13684

13785
flag.Parse()
13886

13987
if len(os.Args) <= 1 {
140-
fmt.Print("gpx_analyzer version ", version, "\n\n")
88+
fmt.Println("gpx_analyzer", version)
14189
flag.PrintDefaults()
14290
return
14391
}
@@ -158,7 +106,7 @@ func main() {
158106
}
159107

160108
abs, err := filepath.Abs(*root)
161-
fmt.Println("\rsearching in", abs, strings.Join([]string{"(", strconv.Itoa(fileCount), " GPX-Files)"}, ""), " parallel =", *parallel, ":")
109+
fmt.Println("\rsearching in", abs, strings.Join([]string{"(", strconv.Itoa(fileCount), " GPX-Files)"}, ""), "parallel =", *parallel, "warnings =", *warnings, ":")
162110
if err != nil {
163111
panic(err)
164112
}
@@ -173,42 +121,35 @@ func main() {
173121
absFileName, _ := filepath.Abs(file)
174122
var gpxFile, err = gpx.ParseFile(file)
175123
if err != nil {
176-
fmt.Println("\r[Error] while parsing the file: ", absFileName)
124+
fmt.Println("\r[Error]", absFileName, "failed to parse file")
177125
wg.Done()
178126
finished++
179127
continue
180128
}
181129
go scan(gpxFile, absFileName)
182130
}
183131
wg.Wait()
184-
185132
} else {
186133

187134
for i, file := range files {
188135
absFileName, _ := filepath.Abs(file)
189136
var gpxFile, err = gpx.ParseFile(file)
190137
if err != nil {
191-
fmt.Println("\r[Error] while parsing the file: ", absFileName)
138+
fmt.Println("\r[Error]", absFileName, "failed to parse file")
192139
continue
193140
}
194141
scan(gpxFile, absFileName)
195142
printState(i, total)
196143
}
197-
198144
}
199-
200-
fmt.Print("\r")
201-
145+
fmt.Println("\r")
202146
if globInnerMinDist <= math.MaxFloat64 {
203-
fmt.Println("\n\nNearest in dist was:")
147+
fmt.Println("\nNearest in dist was:")
204148
fmt.Printf("%8.0f m, %s\n", globInnerMinDist, globInnerMinDistAbsFileName)
205149
}
206-
207150
if globOuterMinDist <= math.MaxFloat64 {
208-
fmt.Println("\n\nNearest out of dist was:")
151+
fmt.Println("\nNearest out of dist was:")
209152
fmt.Printf("%8.0f m, %s\n", globOuterMinDist, globOuterMinDistAbsFileName)
210153
}
211-
212154
fmt.Println("\nDone.")
213-
214155
}

0 commit comments

Comments
 (0)