Re: [Gpsbabel-code] more sort filter options
Brought to you by:
robertl
From: Robert L. <rob...@us...> - 2006-08-21 20:47:19
|
Paul Fox wrote: > today i needed to sort a list of waypoints by lat/lon, and was > a little surprised that gpsbabel doesn't already do this. (unless > i missed it. i hope not.) No, it's not there. I can't recall anyone ever asking for it. > this patch implements sorting by latitude major, longitude minor, or > vice versa. I'm unfamiliar with that term. Can you explain, please? > since my reason for sorting was also to eliminated duplicate waypoints, > i also implemented the effective equivalent of "sort -u" -- if the > "unique" option is present along with a sort mode, then items will be > made unique vis a vis that "key", after sorting. We already have filter that does that. In light of the duplicate filter (that can work by position or name) is this needed? > this is against 1.3.0 -- my cvs repository no longer works, and i > think i recall hearing that gpsbabel has switched to svn. hopefully No, we're still on CVS. I don't mind CVS; it's Sourceforge's implementation of CVS that's making me crazy. > + case sm_latlon: > + if (x1->latitude == x2->latitude) { > + if (x1->longitude == x2->longitude) return 0; > + else if (x1->longitude < x2->longitude) return -1; > + else return 1; > + } > + else if (x1->latitude < x2->latitude) return -1; > + else return 1; > + break; > + > + case sm_lonlat: > + if (x1->longitude == x2->longitude) { > + if (x1->latitude == x2->latitude) return 0; > + else if (x1->latitude < x2->latitude) return -1; > + else return 1; > + } > + else if (x1->longitude < x2->longitude) return -1; > + else return 1; > + break; How well does the above approach work if sorting by longitudes near the prime meridian where things wrap from positive to negative? Is testing numeric quality of floats in this way safe? Isn't the prevailing approach something like if abs float1 - float2 < some_crazy_small_number RJL |