File: multi-gpsmap.sh

package info (click to toggle)
kismet 2008-05-R1-4
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 3,232 kB
  • ctags: 3,998
  • sloc: cpp: 33,568; sh: 5,544; ansic: 459; makefile: 457; perl: 62; sql: 41
file content (61 lines) | stat: -rwxr-xr-x 1,499 bytes parent folder | download | duplicates (7)
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/bin/sh
# make a lot of small maps out of a kismet track

# this should be the only user-settable parameter
scale=1800

awk '/gps-point/ { if ( $3 ~ "source.*" ) { print $6" "$7 } else { print $5" "$6 }}' < $1 | while read line; do
	eval $line
	if [[ $lat != 0 ]]; then
		echo $lat
		cat > /dev/null
		break
	fi
done > /tmp/mg$$

latitude=`cat /tmp/mg$$`

bc -l << EOF > /tmp/mg$$
scale=3
c(($latitude * 8 * a(1))/360)
EOF

cos_lat=`cat /tmp/mg$$`
rm /tmp/mg$$

awk '/gps-point/ { if ( $3 ~ "source.*" ) { print $6" "$7 } else { print $5" "$6 }}' < $1 | while read line; do
	eval $line
	echo $lat $lon 
done | awk -v cos_lat=$cos_lat -v scale=$scale 'BEGIN {olat=0}
	    { if ( olat == 0 ) {
			count = 1
			trig_dist = scale / 80000000
			print "gpsmap -tG -l name,bssid,manuf -c "$1","$2" -s "scale" -o map"count".gif"
			olat = $1
			olon = $2
			maxdist = 0
			count = count + 1
		} else if ( $1 != 0 ) {
			latdiff = ( $1 - olat ) * cos_lat
			londiff = $2 - olon
			dist = latdiff * latdiff + londiff * londiff
			if ( dist > maxdist ) {
				maxdist = dist
			}
			if ( dist > trig_dist || ( maxdist - dist ) > ( trig_dist / 10) ) {
				print "gpsmap -tG -l name,bssid,manuf -c "$1","$2" -s "scale" -o map"count".gif"
				olat = $1
				olon = $2
				maxdist = 0
				count = count + 1
			}
			lastlat = $1
			lastlon = $2
		}
	}
	END {
		print "gpsmap -tG -l name,bssid,manuf -c "lastlat","lastlon" -s "scale" -o map"count".gif"
	}' | while read line; do
		echo $line $1
		eval $line $1
done