#!/usr/bin/perl # generate MacGPS Pro route file from Mapsonus.com route. # http://www.fooledya.com/macgps/ # by Larry Moss (moss@fooledya.com) sub usage { die "usage: turns [-u] file\n\t-u: upload route to GPS via MacGPS Pro\n\tfile: saved file from Mapsonus.com\n"; } getopt: while (<@ARGV>) { $_ = shift; if (/^-u/) { $upload = 1; next getopt; } $input = $_ if $_; } $bn = $input; $bn =~ s/\..*//; $output = $bn . ".mgps"; if($input) { open(OUT, ">$output") || die "Turns: Can't open $output: $!\n"; } else { usage(); } print(OUT "Format: DDD M/D/Y H:M:S -4.00 hrs Datum[106]: WGS 84\015"); print(OUT "ID Name Comment Date Time Latitude Longitude Icon Display Option Altitude\015"); print(OUT "R\t1\t$bn\015"); ($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime(); $date = sprintf("%02d/%02d/%04d %02d:%02d:%02d", $mon, $mday+1, $year+1900, $hour, $min, $sec); $count = 0; open(IN, "<$input") || die "Turns: Can't open $input: $!\n"; while () { if(/.*\(.*), (.*)\<\/CODE\>\].*/) { # if(/.*\(.*), (.*)\<\/CODE\>\].*on\s+(\S*).*/) { # $count++; $lat = $1; $long = $2; $_=; $_=; if(/.*\son\s+(.{1,6})/) { $road = $1; } else { $_=; $_=; $road = $_; $road =~ s/.*\s(onto|into|to|Point|as it)\s+(.{1,6}).*/$2/; } $road =~ s/\W//g; $roads{$road}++; if($roads{$road}>1) { $road =~ s/(.{1,5}).*/$1$roads{$road}/; } # print "$road $roads{$road}\n"; print(OUT "W\t$road\tComment\t$date\t$long\t$lat\015"); print(OUT "K 3 0 0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255\015"); } } system("/Developer/Tools/SetFile -c \"GpSj\" -t \"TEXT\" $output"); if ($upload) { print("Launching MacGPS Pro\n"); system("osascript -e 'tell application \"MacGPS Pro\" activate end tell'"); print("should use MacGPS Pro to upload route. Not implemented.\n"); }