Re: [Gpsbabel-misc] A stack example
Brought to you by:
robertl
From: Ron P. <ro...@pa...> - 2005-12-14 19:19:47
|
Mike Hostetler wrote: >This one fines all the waypoints outside of a county. I'm only using >one GPX file, but you could use as many as you want. > >gpsbabel -i gpx -f $GPX \\ # grab the GPX > -x stack,push,copy \\ # Copy the whole thing to the stack > -x polygon,file=county.txt \\ # Find all the waypoints in the county > -x stack,pop,append \\ # Append the original to just the ones in the county > -x duplicate,location,name,shortname,all ## drop all duplicates. > > > or, the slightly simpler and faster gpsbabel -i gpx -f $GPX -x polygon,file=county.txt,exclude A slightly more complicated example that still doesn't use stacks, designed to find all of the points more than one mile outside a county: (I used to use this one to find obviously-wrong NGS markers.) gpsbabel -i gpx -f $GPX -x polygon,file=county.txt,exclude -x arc,file=county.txt,distance=1m,exclude >I find it easier to think of the stacks as doing operations as sets, >which is how I think our Chief Babel-Head thinks of them, too. It's >easier because the stack isn't quite a stack in the normal sense (or, >at least, *my* sense). Thinking of the stack as a bunch of sets of >waypoints seems easier to my brain, at least. > > Technically, it's a stack of sets of waypoints. The available operations aren't really optimized for set theory. For example, intersection is difficult. I think the fastest way to intersect the current waypoint set with the top set on the stack is something like this: -x stack,pop,append \ -x stack,push \ -x duplicate,location,name,shortname,all \ -x stack,swap \ -x duplicate,location,name,shortname \ -x stack,pop,append \ -x duplicate,location,name,shortname,all though I'd love to be proven wrong. (For those playing along at home but preferring set theory, that computes the symmetric difference of the two sets, and then computes the difference of that from the union of the two sets.) If you've ever programmed in Forth or PostScript, all of this stack stuff makes perfect sense. Really. |