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
|