summaryrefslogtreecommitdiff
path: root/geography
diff options
context:
space:
mode:
authorwiz <wiz@pkgsrc.org>2004-07-26 23:33:35 +0000
committerwiz <wiz@pkgsrc.org>2004-07-26 23:33:35 +0000
commitc10119941ba94177f76b361d7cf257c1a57468e8 (patch)
tree3f82802c22e4d74ad4e0f92852b8ee77276c0c57 /geography
parentec686cda1e6c1323d1e1e520873231f592af73be (diff)
downloadpkgsrc-c10119941ba94177f76b361d7cf257c1a57468e8.tar.gz
Reimport misc/gpsdrive as geography/gpsdrive.
Diffstat (limited to 'geography')
-rw-r--r--geography/gpsdrive/DESCR9
-rw-r--r--geography/gpsdrive/Makefile26
-rw-r--r--geography/gpsdrive/PLIST55
-rw-r--r--geography/gpsdrive/distinfo7
-rw-r--r--geography/gpsdrive/patches/patch-aa29
-rw-r--r--geography/gpsdrive/patches/patch-ab56
-rw-r--r--geography/gpsdrive/patches/patch-ac313
7 files changed, 495 insertions, 0 deletions
diff --git a/geography/gpsdrive/DESCR b/geography/gpsdrive/DESCR
new file mode 100644
index 00000000000..f0e8079efc9
--- /dev/null
+++ b/geography/gpsdrive/DESCR
@@ -0,0 +1,9 @@
+GpsDrive is a car (bike, ship, plane) navigation system. GpsDrive
+displays your position provided from your NMEA capable GPS receiver on a
+zoomable map, the map file is autoselected depending of the position and
+prefered scale. Speech output is supported if the "festival" software
+is running. The maps are autoselected for best resolution depending of
+your position and can be downloaded from Internet. All Garmin GPS
+reveiver with a serial output should be usable, also other GPS receiver
+which supports NMEA protocol. GpsDrive is written in C with use of the
+GTK+ graphic toolkit.
diff --git a/geography/gpsdrive/Makefile b/geography/gpsdrive/Makefile
new file mode 100644
index 00000000000..fba85d85c2a
--- /dev/null
+++ b/geography/gpsdrive/Makefile
@@ -0,0 +1,26 @@
+# $NetBSD: Makefile,v 1.1.1.1 2004/07/26 23:33:35 wiz Exp $
+
+DISTNAME= gpsdrive-1.31
+PKGREVISION= 5
+CATEGORIES= geography
+MASTER_SITES= http://gpsdrive.kraftvoll.at/
+
+MAINTAINER= tsarna@NetBSD.org
+HOMEPAGE= http://gpsdrive.kraftvoll.at/
+COMMENT= GPS Navigation system
+
+DEPENDS+= gpsd>=1.07:../../geography/gpsd
+
+GNU_CONFIGURE= YES
+USE_BUILDLINK3= YES
+USE_PKGLOCALEDIR= YES
+
+# XXX make this an option
+CONFIGURE_ARGS+= --disable-mysql
+
+.include "../../devel/gettext-lib/buildlink3.mk"
+.include "../../devel/glib/buildlink3.mk"
+.include "../../x11/gtk/buildlink3.mk"
+.include "../../graphics/gdk-pixbuf/buildlink3.mk"
+.include "../../converters/libiconv/buildlink3.mk"
+.include "../../mk/bsd.pkg.mk"
diff --git a/geography/gpsdrive/PLIST b/geography/gpsdrive/PLIST
new file mode 100644
index 00000000000..6a2664c74a4
--- /dev/null
+++ b/geography/gpsdrive/PLIST
@@ -0,0 +1,55 @@
+@comment $NetBSD: PLIST,v 1.1.1.1 2004/07/26 23:33:35 wiz Exp $
+bin/garble
+bin/gpsdrive
+bin/gpsfetchmap
+bin/gpsfetchmap.pl
+bin/gpspoint2gpsdrive.pl
+bin/wpcvt
+bin/wpget
+lib/libfly.a
+lib/libfly.la
+lib/libfly.so
+lib/libfly.so.2
+lib/libfly.so.2.0
+lib/libnautic.a
+lib/libnautic.la
+lib/libnautic.so
+lib/libnautic.so.2
+lib/libnautic.so.2.0
+man/de/man1/gpsdrive.1
+man/es/man1/gpsdrive.1
+man/man1/gpsdrive.1
+share/gpsdrive/friendsicon.png
+share/gpsdrive/gpsdrive/AUTHORS
+share/gpsdrive/gpsdrive/FAQ.gpsdrive
+share/gpsdrive/gpsdrive/FAQ.gpsdrive.fr
+share/gpsdrive/gpsdrive/GPS-receivers
+share/gpsdrive/gpsdrive/LEEME
+share/gpsdrive/gpsdrive/LISEZMOI
+share/gpsdrive/gpsdrive/NMEA.txt
+share/gpsdrive/gpsdrive/README
+share/gpsdrive/gpsdrive/README.FreeBSD
+share/gpsdrive/gpsdrive/README.SQL
+share/gpsdrive/gpsdrive/README.gpspoint2gspdrive
+share/gpsdrive/gpsdrive/README.kismet
+share/gpsdrive/gpsdrive/TODO
+share/gpsdrive/gpsdrive/create.sql
+share/gpsdrive/gpsdrive/wp2sql
+share/gpsdrive/gpsdrivesplash.png
+${PKGLOCALEDIR}/locale/da/LC_MESSAGES/gpsdrive.mo
+${PKGLOCALEDIR}/locale/de/LC_MESSAGES/gpsdrive.mo
+${PKGLOCALEDIR}/locale/de_AT/LC_MESSAGES/gpsdrive.mo
+${PKGLOCALEDIR}/locale/es/LC_MESSAGES/gpsdrive.mo
+${PKGLOCALEDIR}/locale/fr/LC_MESSAGES/gpsdrive.mo
+${PKGLOCALEDIR}/locale/hu/LC_MESSAGES/gpsdrive.mo
+${PKGLOCALEDIR}/locale/it/LC_MESSAGES/gpsdrive.mo
+${PKGLOCALEDIR}/locale/nl/LC_MESSAGES/gpsdrive.mo
+${PKGLOCALEDIR}/locale/no/LC_MESSAGES/gpsdrive.mo
+${PKGLOCALEDIR}/locale/pt_BR/LC_MESSAGES/gpsdrive.mo
+${PKGLOCALEDIR}/locale/sk/LC_MESSAGES/gpsdrive.mo
+${PKGLOCALEDIR}/locale/sv/LC_MESSAGES/gpsdrive.mo
+${PKGLOCALEDIR}/locale/tr/LC_MESSAGES/gpsdrive.mo
+@dirrm share/gpsdrive/gpsdrive
+@dirrm share/gpsdrive
+@dirrm gpsdrive/locale
+@dirrm gpsdrive
diff --git a/geography/gpsdrive/distinfo b/geography/gpsdrive/distinfo
new file mode 100644
index 00000000000..6ea06171bc6
--- /dev/null
+++ b/geography/gpsdrive/distinfo
@@ -0,0 +1,7 @@
+$NetBSD: distinfo,v 1.1.1.1 2004/07/26 23:33:35 wiz Exp $
+
+SHA1 (gpsdrive-1.31.tar.gz) = 296a06d264c5fbb077c91f3529b4e6f122423f05
+Size (gpsdrive-1.31.tar.gz) = 784379 bytes
+SHA1 (patch-aa) = cc5dd44020ffc5f22dc958c938b9f98ff6e01810
+SHA1 (patch-ab) = 240901fe52e41db1a41299f66ac61c06898f1881
+SHA1 (patch-ac) = 86f67ad04378f14a95e5b9fc806b2054ef4be127
diff --git a/geography/gpsdrive/patches/patch-aa b/geography/gpsdrive/patches/patch-aa
new file mode 100644
index 00000000000..9f8a3578294
--- /dev/null
+++ b/geography/gpsdrive/patches/patch-aa
@@ -0,0 +1,29 @@
+$NetBSD: patch-aa,v 1.1.1.1 2004/07/26 23:33:35 wiz Exp $
+
+- We depend on the gpsd package instead of using the bundled one
+- friendsd is broken and I don't care enough to fix it
+
+--- src/Makefile.in.orig Sun Dec 8 13:30:56 2002
++++ src/Makefile.in Sun Jan 5 12:15:01 2003
+@@ -122,7 +122,7 @@
+
+ @DISABLEGARMIN_TRUE@PRG1 =
+ @DISABLEGARMIN_FALSE@PRG1 = garble
+-bin_PROGRAMS = $(PRG1) gpsdrive gpsd friendsd
++bin_PROGRAMS = $(PRG1) gpsdrive
+ LIBS =
+
+ # gpsdrive_LDADD= $(GLIB_LIBS) $(GTK_LIBS) $(PIXLIBS)
+@@ -175,10 +175,8 @@
+ libnautic_la_LIBADD =
+ am_libnautic_la_OBJECTS = nautic.lo
+ libnautic_la_OBJECTS = $(am_libnautic_la_OBJECTS)
+-@DISABLEGARMIN_TRUE@bin_PROGRAMS = gpsdrive$(EXEEXT) gpsd$(EXEEXT) \
+-@DISABLEGARMIN_TRUE@ friendsd$(EXEEXT)
+-@DISABLEGARMIN_FALSE@bin_PROGRAMS = garble$(EXEEXT) gpsdrive$(EXEEXT) \
+-@DISABLEGARMIN_FALSE@ gpsd$(EXEEXT) friendsd$(EXEEXT)
++@DISABLEGARMIN_TRUE@bin_PROGRAMS = gpsdrive$(EXEEXT)
++@DISABLEGARMIN_FALSE@bin_PROGRAMS = garble$(EXEEXT) gpsdrive$(EXEEXT)
+ PROGRAMS = $(bin_PROGRAMS)
+
+ am_friendsd_OBJECTS = friendsd.$(OBJEXT)
diff --git a/geography/gpsdrive/patches/patch-ab b/geography/gpsdrive/patches/patch-ab
new file mode 100644
index 00000000000..29c55de3a2f
--- /dev/null
+++ b/geography/gpsdrive/patches/patch-ab
@@ -0,0 +1,56 @@
+$NetBSD: patch-ab,v 1.1.1.1 2004/07/26 23:33:35 wiz Exp $
+
+Drew Einhorn's gpsfetchmap.pl enhancements from:
+
+http://s2.selwerd.nl/~dirk-jan/gpsdrive/archive/msg01772.html
+
+also require this patch to support tree'd rather than flap map
+driectories.
+
+--- src/gpsdrive.c.orig Sun Dec 8 09:43:33 2002
++++ src/gpsdrive.c Wed Jan 8 12:20:48 2003
+@@ -2926,12 +2926,22 @@
+ }
+ for (i = 0; i < nrmaps; i++)
+ {
++ /* strip off the path, we just want to check the filename */
++ char *fullname;
++ char *rslash;
++ char *filename;
++
+ skip = TRUE;
++
++ fullname = (maps + i)->filename;
++ rslash = strrchr(fullname, '/');
++ filename = rslash == NULL ? fullname : rslash + 1;
++
+ if (displaymap_map)
+- if (!(strncmp ((maps + i)->filename, "map_", 4)))
++ if (!(strncmp (filename, "map_", 4)))
+ skip = FALSE;
+ if (displaymap_top)
+- if (!(strncmp ((maps + i)->filename, "top_", 4)))
++ if (!(strncmp (filename, "top_", 4)))
+ skip = FALSE;
+
+ if (skip)
+@@ -3101,8 +3111,17 @@
+
+ for (i = 0; i < nrmaps; i++)
+ {
+- if ((strncmp ((maps + i)->filename, "map_", 4)))
+- if ((strncmp ((maps + i)->filename, "top_", 4)))
++ /* strip off the path, we just want to check the filename */
++ char *fullname;
++ char *rslash;
++ char *filename;
++
++ fullname = (maps + i)->filename;
++ rslash = strrchr(fullname, '/');
++ filename = rslash == NULL ? fullname : rslash + 1;
++
++ if ((strncmp (filename, "map_", 4)))
++ if ((strncmp (filename, "top_", 4)))
+ {
+ GString *error;
+ error = g_string_new (NULL);
diff --git a/geography/gpsdrive/patches/patch-ac b/geography/gpsdrive/patches/patch-ac
new file mode 100644
index 00000000000..3bde51fd88d
--- /dev/null
+++ b/geography/gpsdrive/patches/patch-ac
@@ -0,0 +1,313 @@
+$NetBSD: patch-ac,v 1.1.1.1 2004/07/26 23:33:35 wiz Exp $
+
+Drew Einhorn's gpsfetchmap.pl enhancements from:
+
+http://s2.selwerd.nl/~dirk-jan/gpsdrive/archive/msg01772.html
+
+--- src/gpsfetchmap.pl.orig Sun Nov 24 11:04:38 2002
++++ src/gpsfetchmap.pl Wed Jan 8 12:13:17 2003
+@@ -1,4 +1,4 @@
+-#!/usr/bin/perl
++#!/usr/bin/env perl
+
+ # gpsfetchmap
+ #
+@@ -9,38 +9,71 @@
+ gpsfetchmap (c) 2002 Kevin Stephens <gps\@suburbialost.com>
+ modified (Sept 06, 2002) by Sven Fichtner <sven.fichtner\@flugfunk.de>
+ modified (Sept 18, 2002) by Sven Fichtner <sven.fichtner\@flugfunk.de>
+-modified (Nov 21, 2002) by Magnus Månsson <ganja\@0x63.nu>
+-Version 1.04
++modified (Nov 21, 2002) by Magnus MÃ¥nsson <ganja\@0x63.nu>
++modified (Dec 24, 2002) by Drew Einhorn <drew.einhorn\@starband.net>
++Version 1.05
+ EOP
+
+ use strict;
+ use Getopt::Long;
+ use Pod::Usage;
+-
+-# Setup possible scales
+-my @SCALES = (1000,1500,2000,3000,5000,7500,10000,15000,20000,30000,50000,75000,
+- 100000,150000,200000,300000,500000,750000,1000000,1500000,2000000,3000000,
+- 5000000,7500000,10000000,15000000,20000000,30000000,50000000,75000000);
++use POSIX qw(floor ceil);
++use File::Temp qw/ tempfile tempdir /;
+
+ # Set defaults and get options from command line
+ Getopt::Long::Configure('no_ignore_case');
+-my ($lat,$lon,$slat,$endlat,$slon,$endlon,$waypoint,$area,$unit,$mapdir,$debug,$force,$version,$man,$help);
+-my $failcount = 0;
++my (@SCALES,$lat,$lon,$slat,$endlat,$slon,$endlon,$waypoint,$area,$unit,$debug,$force,$version,$man,$help);
++
++my $failcount;
++my $writecount;
++my $cachecount;
+ my $polite = 'no';
+ my $scale = '50000';
+ my $CONFIG_DIR = "$ENV{'HOME'}/.gpsdrive"; # Should we allow config of this?
+ my $CONFIG_FILE = "$CONFIG_DIR/gpsdriverc";
+ my $WAYPT_FILE = "$CONFIG_DIR/way.txt";
+-my $KOORD_FILE = 'map_koord.txt'; # Should we allow config of this?
+ my $FILEPREFIX = 'map_';
+ my $mapserver = 'mapblast';
++my $replace = '0';
++my $mapdir = "";
+
+ GetOptions ('lat=f' => \$lat, 'lon=f' => \$lon, 'start-lat=f' => \$slat, 'end-lat=f' => \$endlat, 'start-lon=f' => \$slon, 'end-lon=f' => \$endlon, 'scale=s' => \$scale, 'mapserver=s' => \$mapserver,
+ 'waypoint=s' =>, \$waypoint, 'area=s' => \$area, 'unit=s' => \$unit,'mapdir=s' => \$mapdir, 'polite:i' => \$polite,
+ 'WAYPOINT=s' => \$WAYPT_FILE, 'CONFIG=s' => \$CONFIG_FILE, 'PREFIX=s' => \$FILEPREFIX,
+- 'FORCE' => \$force, 'debug' => \$debug, 'MAN' => \$man, 'help|x' => \$help, 'version' => \$version)
++ 'FORCE' => \$force, 'debug' => \$debug, 'MAN' => \$man, 'help|x' => \$help, 'version' => \$version, 'replace' => \$replace)
+ or pod2usage(1);
+
++if ($mapdir eq "") {
++ $mapdir = $CONFIG_DIR;
++} else {
++ $mapdir = $CONFIG_DIR/$mapdir;
++}
++my $LOCK_SH = 1;
++my $LOCK_EX = 2;
++my $LOCK_NB = 4;
++my $LOCK_UN = 8;
++
++my $KOORD_FILE = "$mapdir/map_koord.txt"; # Should we allow config of this?
++open(KOORD,">>$KOORD_FILE") || die "Can't open: $KOORD_FILE";
++
++# Setup possible scales
++my %ts1;
++if ($mapserver eq "terraserver") {
++ my ($s, $ts);
++
++ @SCALES = ();
++ $s = 2757;
++ for ($ts = 10; $ts <= 16; $ts++) {
++ @SCALES = (@SCALES, $s);
++ $ts1{$s} = $ts;
++ $s *= 2;
++ }
++} else {
++ @SCALES = (1000,1500,2000,3000,5000,7500,10000,15000,20000,30000,50000,75000,
++ 100000,150000,200000,300000,500000,750000,1000000,1500000,2000000,3000000,
++ 5000000,7500000,10000000,15000000,20000000,30000000,50000000,75000000);
++}
++
+ pod2usage(1) if $help;
+ pod2usage(-verbose=>2) if $man;
+
+@@ -55,7 +88,6 @@
+
+
+ # Setup up some constants
+-my $EXPEDIAFACT = 1378.6;
+ my $DIFF = 0.0000028;
+ my $RADIUS_KM = 6371.01;
+ my $LAT_DIST_KM = 110.87;
+@@ -64,7 +96,7 @@
+
+ # Get the list of scales we need
+ my $SCALES_TO_GET_ref = get_scales(\$scale);
+-print "Scale to download: ", join(",",sort {$a <=> $b} @{$SCALES_TO_GET_ref}), "\n" if ($debug);
++print "Scales to download: ", join(",",sort {$a <=> $b} @{$SCALES_TO_GET_ref}), "\n" if ($debug);
+
+ # Get the center waypoint if they want one
+ if ($waypoint) {
+@@ -82,7 +114,7 @@
+ unless ($slat && $slon && $endlat && $endlon) {
+ ($slat,$slon,$endlat,$endlon) = get_coords(\$lat,\$lon,\$area,\$unit);
+ }
+-print "Upper left: $slat $slon, Lower Right: $endlat, $endlon\n" if ($debug);
++print "Lower left: $slat $slon, Upper Right: $endlat, $endlon\n" if ($debug);
+
+ unless ($force) {
+ my $count = file_count(\($slat,$slon,$endlat,$endlon));
+@@ -93,67 +125,136 @@
+
+ print "\nDownloading files:\n";
+
+-# Change into the gpsdrive maps directory
+-chdir($CONFIG_DIR);
+-chdir($mapdir);
+-
+ # Ok start getting the maps
+ foreach my $scale (@{$SCALES_TO_GET_ref}) {
+- # Setup k
+- my $k = $DIFF * $scale;
+- my $lati = $slat;
+- while ($lati < $endlat) {
+- my $long = $slon;
+- while ($long < $endlon) {
+- my $filename = "$FILEPREFIX$scale-$lati-$long.gif";
+- if (! -s $filename) {
+- LOOP: {
+- if ($mapserver eq 'expedia') {
+- next LOOP if ($scale <=1000);
+- my $expediascale= sprintf("%d",$scale / $EXPEDIAFACT);
+- my $where;
+- if ($lon < -30) {
+- $where = 'USA0409';
+- } else {
+- $where = 'EUR0809';
+- }
+- print "http://msrvmaps.mappoint.net/isapi/MSMap.dll?ID=3XNsF.\&C=$lati,$long\&L=$where\&CV=1\&A=$expediascale\&S=1280,1024\&O=0.000000,0.000000\&MS=0\&P=\n"
+- if ($debug);
+- `wget -nd -q -O tmpmap.gif "http://msrvmaps.mappoint.net/isapi/MSMap.dll?ID=3XNsF.\&C=$lati,$long\&L=$where\&CV=1\&A=$expediascale\&S=1280,1024\&O=0.000000,0.000000\&MS=0\&P="`;
+- $scale = $expediascale * $EXPEDIAFACT;
+- } elsif ($mapserver eq 'mapblast') {
+- print "http://www.mapblast.com/myblastd/MakeMap.d?\&CT=$lati:$long:$scale\&IC=\&W=1280\&H=1024\&LB=\n"
+- if ($debug);
+- `wget -nd -q -O tmpmap.gif "http://www.mapblast.com/myblastd/MakeMap.d?\&CT=$lati:$long:$scale\&IC=\&W=1280\&H=1024\&LB="`;
+- }
+- if (-s 'tmpmap.gif') {
+- open(KOORD,">>$KOORD_FILE") || die "Can't open: $KOORD_FILE";
+- print KOORD "$filename $lati $long $scale\n";
+- rename('tmpmap.gif',$filename);
+- print ".";
+- print "\nWrote $filename\n" if ($debug);
+- } else {
+- $failcount++;
+- print ",";
+- }
+- }
+- # sleep if polite is turned on to be nice to the webserver of the mapserver
+- sleep($polite) if ($polite =~ /\d+/);
+- sleep(1) if (!$polite);
+- }
+- $long += $k;
+- }
+- $lati += $k;
+- }
+-}
+-print "Failcount: $failcount\n";
+-print "\n";
++ # Setup k
++ my $k = sprintf("%.4f", $DIFF * $scale);
++ getmaps($scale, $slat, $endlat, $slon, $endlon, $k);
++}
+
+ ################################################################################
+ #
+ # Subroutines
+ #
+ ################################################################################
++
++sub getmaps {
++ my ($scale, $slat, $endlat, $slon, $endlon, $k) = @_;
++
++ print "Getting maps for scale: $scale\n";
++
++ my $l = floor($slat / $k);
++ my $lati = $k * $l;
++
++ $l = ceil($endlat / $k);
++ my $elat = $k * $l;
++
++ while ($lati <= $elat) {
++ $l = floor($slon / $k);
++ my $long = $k * $l;
++
++ $l = ceil($endlon / $k);
++ my $elon = $k * $l;
++
++ while ($long <= $elon) {
++ getmap($scale, $lati, $long);
++ $long += $k;
++ }
++ $lati += $k;
++ }
++ print "\n";
++ print "Failcount: $failcount\n";
++ print "Cachecount: $cachecount\n";
++ print "Writecount: $writecount\n";
++}
++
++sub lock {
++ flock KOORD, $LOCK_EX;
++ # Move past addtions by other processes
++ seek KOORD, 0, 2;
++}
++
++sub unlock {
++ flock KOORD, $LOCK_UN;
++}
++
++sub getmap {
++ my ($scale, $lati, $long) = @_;
++ my $filename;
++ my $url;
++ my $la;
++ my $lo;
++
++ $la = sprintf("%.4f", $lati);
++ $lo = sprintf("%.4f", $long);
++
++ my $EXPEDIAFACT = 1378.6;
++ $filename = mapfilename("$FILEPREFIX", $scale, $la, $lo);
++ $url = "";
++ if (! $replace && -e "$mapdir/$filename") {
++ $cachecount++;
++ print "=";
++ print "\nCached $filename\n" if ($debug);
++ } else {
++ if ($mapserver eq 'expedia' && $scale > 1000) {
++ my $expediascale= sprintf("%d",$scale / $EXPEDIAFACT);
++ my $where;
++ if ($lon < -30) {
++ $where = 'USA0409';
++ } else {
++ $where = 'EUR0809';
++ }
++ $url = "http://msrvmaps.mappoint.net/isapi/MSMap.dll?ID=3XNsF.\\&C=$la,$lo\\&L=$where\\&CV=1\\&A=$expediascale\\&S=1280,1024\\&O=0.000000,0.000000\\&MS=0\\&P=";
++ } elsif ($mapserver eq 'mapblast') {
++ $url = "http://www.mapblast.com/myblastd/MakeMap.d?\\&CT=$la:$lo:$scale\\&IC=\\&W=1280\\&H=1024\\&LB=";
++ } elsif ($mapserver eq 'terraserver') {
++ my $sc = $ts1{$scale};
++ $url = "http://terraservice.net/GetImageArea.ashx?t=1\\&lat=$la\\&lon=$lo\\&s=$sc\\&w=1280\\&h=1024";
++ } elsif ($mapserver eq 'tiger') {
++ my $s = $scale / 300000.0;
++ $url = "http://tiger.census.gov/cgi-bin/mapper/map.gif?lat=$la\\&lon=$lo\\&wid=0.001\\&ht=$s\\&iwd=1280\\&iht=1024\\&on=majroads\\&on=places\\&on=shorelin\\&on=streets\\&on=interstate\\&on=statehwy\\&on=ushwy\\&on=water\\&tlevel=-\\&tvar=-\\&tmeth=i";
++ }
++ if ($url ne "") {
++ my $p = "--wait=$polite --random-wait" if (!$polite);
++ my ($fh, $tempfile) = tempfile( "temp_XXXXXX", DIR => "$mapdir" );
++
++ `wget $p -nd -q -O $tempfile $url`;
++ print $url if ($debug);
++
++ if (-s $tempfile) {
++ lock();
++ print KOORD "$filename $la $lo $scale\n";
++ unlock();
++ rename($tempfile, "$mapdir/$filename");
++ print ".";
++ print "\nWrote $filename\n" if ($debug);
++ $writecount++;
++ } else {
++ $failcount++;
++ print "\nFailed $filename\n";
++ }
++ # NEED convert to greyscale
++ # and draw grid lines?
++ # using ImageMaqick?
++ }
++ }
++}
++
++sub mapfilename {
++ my ($prefix, $scale, $lati, $long) = @_;
++ my $pathname;
++ my $filename;
++
++ if ($mapserver eq 'terraserver') {
++ $scale = $ts1{$scale};
++ }
++ $pathname=sprintf("%s/%s/%03d/%08.4f/%d/", $mapserver, $scale, $lati, $lati, $long);
++ `mkdir -p "$mapdir/$pathname"`;
++ # I know there's a builtin mkdir, but last time I fussed with it
++ # there was no -p, and using it was tedious
++ $filename = sprintf("%s%d-%08.4f-%09.4f.gif", $prefix, $scale, $lati, $long);
++ return "$pathname$filename";
++}
+
+ sub error_check {
+ my $status;