summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/scripts/getmap
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-06-24 17:54:51 +0000
committerKarl Berry <karl@freefriends.org>2014-06-24 17:54:51 +0000
commitd5da2d8e71a9fec467343ea6f8c68228c54e0f24 (patch)
tree286128bec30bd9cfe4b03579567f646c380bd520 /Master/texmf-dist/scripts/getmap
parente1a3b7c2ba086fd66714cde211d6b996d926d4f7 (diff)
getmap (24jun14)
git-svn-id: svn://tug.org/texlive/trunk@34379 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/scripts/getmap')
-rw-r--r--Master/texmf-dist/scripts/getmap/osmimage224
-rw-r--r--Master/texmf-dist/scripts/getmap/osmimage.lua261
2 files changed, 485 insertions, 0 deletions
diff --git a/Master/texmf-dist/scripts/getmap/osmimage b/Master/texmf-dist/scripts/getmap/osmimage
new file mode 100644
index 00000000000..82ddf3da8da
--- /dev/null
+++ b/Master/texmf-dist/scripts/getmap/osmimage
@@ -0,0 +1,224 @@
+#!/bin/bash
+#
+# osmimage [options]
+#
+# downloads an OpenStreetMap map specified by [options]
+# by using http://developer.mapquest.com/ web service
+#
+# License: LPPL
+#
+pversion()
+{
+ echo "`basename $0` $VERSION"
+ echo "(C) Josef Kleber License: LPPL"
+ exit 0;
+}
+#
+function phelp()
+{
+ echo -e \
+ "\n `basename $0` [options]\n\n"\
+ " downloads an OpenStreetMap map specified by [options]\n"\
+ " by using http://developer.mapquest.com/ web service\n\n"\
+ " Options:\n\n"\
+ " -k key registered at http://developer.mapquest.com/\n"\
+ " default (Example key from web site)!\n"\
+ " Please register and use your own key!\n\n"\
+ " -l specify a location\n"\
+ " e.g. 'Bergheimer Straße 110A, 69115 Heidelberg, Germany'\n\n"\
+ " -x specify a xsize (800)\n\n"\
+ " -y specify a ysize (400)\n\n"\
+ " -S short form to specify a size, e.g. 800,400\n\n"\
+ " -s specify a scale factor in the range 1692-221871572 (3385 = -z 17)\n"\
+ " see: http://open.mapquestapi.com/staticmap/zoomToScale.html\n\n"\
+ " -z specify a zoom in the range 1-18 (zoom overrides scale!)\n\n"\
+ " -t specify map type {map|sat|hyb} (map)\n\n"\
+ " -i specify image type {jpeg|jpg|gif|png} (png)\n\n"\
+ " -c specify icon color (yellow_1)\n"\
+ " see: http://open.mapquestapi.com/staticmap/icons.html\n\n"\
+ " -n specify the icon number (1)\n\n"\
+ " -o specify output basename without file extension (osmimage.IMAGETYPE)\n\n"\
+ " -q quiet; no output!\n\n"\
+ " -v prints version information\n\n"\
+ " -h prints help information\n\n"
+ pversion
+}
+#
+osmimage_error()
+{
+ local exitcode="$1"
+ local errortext="$2"
+ echo "Error ($exitcode): $errortext" >&2
+ exit $exitcode
+}
+#
+osmimage_warning()
+{
+ local warningtext="$1"
+ echo -e "WARNING: $warningtext\n" >&2
+}
+#
+check_prog()
+{
+ local prog="$1"
+ hash $prog 2>/dev/null || osmimage_error 1 "$prog not installed! Aborting."
+}
+#
+check_number()
+{
+ local var="$1"
+ local varname="$2"
+ local number='^[0-9]+$'
+ if ! [[ $var =~ $number ]]
+ then
+ osmimage_error 2 "$varname can't be $var! Not a number!"
+ fi
+}
+#
+check_range()
+{
+ local var="$1"
+ local min="$2"
+ local max="$3"
+ local exitcode="$4"
+ local varname="$5"
+ check_number $var $varname
+ if [ $var -lt $min ]
+ then
+ osmimage_error $exitcode "$varname = $var; must be in the range of $min-$max"
+ fi
+ if [ $var -gt $max ]
+ then
+ osmimage_error $exitcode "$varname = $var; must be in the range of $min-$max"
+
+ fi
+}
+#
+check_prog wget
+#
+URL="http://open.mapquestapi.com/staticmap/v4/getplacemap"
+KEY=""
+LOCATION=""
+XSIZE=""
+YSIZE=""
+SCALE=""
+ZOOM=""
+TYPE=""
+IMAGETYPE=""
+COLOR=""
+NUMBER=""
+OFILE="osmimage"
+QUIET="false"
+VERSION="v1.2 (23/05/2014)"
+#
+while getopts "k:l:x:y:S:s:z:t:i:c:n:o:qvh" flag
+do
+ case "$flag" in
+ k) KEY="$OPTARG";;
+ l) LOCATION="$OPTARG";;
+ x) XSIZE="$OPTARG";;
+ y) YSIZE="$OPTARG";;
+ S) SIZE="$OPTARG";;
+ s) SCALE="$OPTARG";;
+ z) ZOOM="$OPTARG";;
+ t) TYPE="$OPTARG";;
+ i) IMAGETYPE="$OPTARG";;
+ c) COLOR="$OPTARG";;
+ n) NUMBER="$OPTARG";;
+ o) OFILE="$OPTARG";;
+ q) QUIET="true";;
+ v) pversion;;
+ h) phelp;;
+ esac
+done
+#
+if [ "$QUIET" = "true" ]
+then
+ exec 1>/dev/null
+ exec 2>/dev/null
+fi
+#
+if [ -z $KEY ]
+then
+ KEY="Kmjtd%7Cluu7n162n1%2C22%3Do5-h61wh"
+ osmimage_warning "KEY not specified; using mapquest example key as default!"
+fi
+#
+if [ -z $LOCATION ]
+then
+ LOCATION="Bergheimer Straße 110A, 69115 Heidelberg, Germany"
+ osmimage_warning "LOCATION not specified; using Dante e.V. Office as default!"
+fi
+#
+if [ -z $XSIZE ]
+then
+ XSIZE=800
+ osmimage_warning "XSIZE not specified; using XSIZE=800 as default!"
+fi
+check_range $XSIZE 1 3840 11 XSIZE
+#
+if [ -z $YSIZE ]
+then
+ YSIZE=400
+ osmimage_warning "YSIZE not specified; using YSIZE=400 as default!"
+fi
+check_range $YSIZE 1 3840 12 YSIZE
+#
+if [ -z $SIZE ]
+then
+ SIZE="$XSIZE,$YSIZE"
+fi
+#
+if [ -z $SCALE ]
+then
+ if [ -z $ZOOM ]
+ then
+ SCALE=3385
+ osmimage_warning "SCALE not specified, using SCALE=3385 as default!"
+ fi
+else
+ check_range $SCALE 1692 221871572 13 SCALE
+fi
+#
+if [ -z $TYPE ]
+then
+ TYPE="map"
+ osmimage_warning "TYPE not specified; using map as default!"
+fi
+#
+if [ -z $IMAGETYPE ]
+then
+ IMAGETYPE="png"
+ osmimage_warning "IMAGETYPE not specified; using png as default!"
+fi
+#
+if [ -z $COLOR ]
+then
+ COLOR="yellow_1"
+ osmimage_warning "COLOR not specified; using yellow_1 as default!"
+fi
+if [ -z $NUMBER ]
+then
+ NUMBER=1
+ osmimage_warning "NUMBER not specified; using 1 as default!"
+fi
+check_number $NUMBER NUMBER
+#
+ULOCATION="&location=$LOCATION"
+USIZE="&size=$SIZE"
+if [ -z $ZOOM ]
+then
+ USCALEZOOM="&scale=$SCALE"
+else
+ check_range $ZOOM 1 18 14 ZOOM
+ USCALEZOOM="&zoom=$ZOOM"
+fi
+UTYPE="&type=$TYPE"
+UIMAGETYPE="&imagetype=$IMAGETYPE"
+USHOWICON="&showicon=${COLOR}-${NUMBER}"
+UOFILE="${OFILE}.${IMAGETYPE}"
+#
+IMGURL="${URL}?key=${KEY}${ULOCATION}${USIZE}${USCALEZOOM}${UTYPE}${UIMAGETYPE}${USHOWICON}"
+#
+wget "$IMGURL" -O "$UOFILE"
+exit 0
diff --git a/Master/texmf-dist/scripts/getmap/osmimage.lua b/Master/texmf-dist/scripts/getmap/osmimage.lua
new file mode 100644
index 00000000000..55220ed5219
--- /dev/null
+++ b/Master/texmf-dist/scripts/getmap/osmimage.lua
@@ -0,0 +1,261 @@
+#!/usr/bin/env texlua
+--
+-- osmimage [options]
+--
+-- downloads an OpenStreetMap map specified by [options]
+-- by using http://developer.mapquest.com/ web service
+--
+-- recoding the osmimage bash script to lua was mostly done
+-- by Norbert Preining with valuable inputs from
+-- Taco Hoekwater, Reinhard Kotucha and Heiko Oberdiek
+-- Message-ID: <537A098C.8000902@gmx.de> ff
+--
+-- License: LPPL
+--
+local http = require("socket.http");
+local ltn12 = require("ltn12")
+local url = require("socket.url")
+
+local URL = "http://open.mapquestapi.com/staticmap/v4/getplacemap"
+local KEY = ""
+local LOCATION = ""
+local XSIZE = ""
+local YSIZE = ""
+local SIZE = ""
+local SCALE = ""
+local ZOOM = ""
+local TYPE = ""
+local IMAGETYPE = ""
+local COLOR = ""
+local NUMBER = ""
+local OFILE = "osmimage"
+local QUIET = "false"
+local VERSION = "v1.2 (23/05/2014)"
+
+function pversion()
+ print("osmimage.lua " .. VERSION)
+ print("(C) Josef Kleber License: LPPL")
+ os.exit(0)
+end
+
+function phelp()
+ print([[
+osmimage.lua [options]
+
+ downloads an OpenStreetMap map specified by [options]
+ by using http://developer.mapquest.com/ web service
+
+ Options:
+
+ -k key registered at http://developer.mapquest.com/
+ default (Example key from web site)!
+ Please register and use your own key!
+
+ -l specify a location
+ e.g. 'Bergheimer Straße 110A, 69115 Heidelberg, Germany'
+
+ -x specify a xsize (800)
+
+ -y specify a ysize (400)
+
+ -S short form to specify a size, e.g. 800,400
+
+ -s specify a scale factor in the range 1692-221871572 (3385 = -z 17)
+ see: http://open.mapquestapi.com/staticmap/zoomToScale.html
+
+ -z specify a zoom in the range 1-18 (zoom overrides scale!)
+
+ -t specify map type {map|sat|hyb} (map)
+
+ -i specify image type {jpeg|jpg|gif|png} (png)
+
+ -c specify icon color (yellow_1)
+ see: http://open.mapquestapi.com/staticmap/icons.html
+
+ -n specify the icon number (1)
+
+ -o specify output basename without file extension (osmimage.IMAGETYPE)
+
+ -q quiet; no output!
+
+ -v prints version information
+
+ -h prints help information
+
+]])
+ pversion()
+end
+
+function osmimage_error(exitcode, errortext)
+ io.stderr:write ("Error (" .. exitcode .. "): " .. errortext .. "\n")
+ os.exit(exitcode)
+end
+
+function osmimage_warning(warningtext)
+ io.stderr:write("WARNING: " .. warningtext .. "\n")
+end
+
+function check_number(var, varname)
+ local number='^[0-9]+$'
+ if not(string.match(var, '^[0-9]+$')) then
+ osmimage_error(2, varname .. " can't be " .. var .. "! Not a number!")
+ end
+end
+
+function check_range(var,min,max,exitcode,varname)
+ check_number(var,varname)
+ if (tonumber(var) < tonumber(min) or tonumber(var) > tonumber(max)) then
+ osmimage_error(exitcode, varname .. " = " .. var .. "; must be in the range of " .. min .. "-" .. max)
+ end
+end
+
+do
+ local newarg = {}
+ local i, limit = 1, #arg
+ while (i <= limit) do
+ if arg[i] == "-k" then
+ KEY = arg[i+1]
+ i = i + 1
+ elseif arg[i] == "-l" then
+ LOCATION = arg[i+1]
+ i = i + 1
+ elseif arg[i] == "-x" then
+ XSIZE = arg[i+1]
+ i = i + 1
+ elseif arg[i] == "-y" then
+ YSIZE = arg[i+1]
+ i = i + 1
+ elseif arg[i] == "-S" then
+ SIZE = arg[i+1]
+ i = i + 1
+ elseif arg[i] == "-s" then
+ SCALE = arg[i+1]
+ i = i + 1
+ elseif arg[i] == "-z" then
+ ZOOM = arg[i+1]
+ i = i + 1
+ elseif arg[i] == "-t" then
+ TYPE = arg[i+1]
+ i = i + 1
+ elseif arg[i] == "-i" then
+ IMAGETYPE = arg[i+1]
+ i = i + 1
+ elseif arg[i] == "-c" then
+ COLOR = arg[i+1]
+ i = i + 1
+ elseif arg[i] == "-n" then
+ NUMBER = arg[i+1]
+ i = i + 1
+ elseif arg[i] == "-o" then
+ OFILE = arg[i+1]
+ i = i + 1
+ elseif arg[i] == "-q" then
+ QUIET = 1
+ elseif arg[i] == "-v" then
+ pversion()
+ elseif arg[i] == "-h" then
+ phelp()
+ else
+ newarg[#newarg+1] = arg[i]
+ end
+ i = i + 1
+ end
+ arg = newarg
+end
+
+if QUIET == 1 then
+ osmimage_warning("-q option currently not supported!")
+end
+
+if KEY == "" then
+ -- KEY="Kmjtd%7Cluu7n162n1%2C22%3Do5-h61wh"
+ KEY="Kmjtd|luu7n162n1,22=o5-h61wh"
+ osmimage_warning("KEY not specified; using mapquest example key as default!")
+end
+
+if LOCATION == "" then
+ LOCATION = "Bergheimer Straße 110A, 69115 Heidelberg, Germany"
+ osmimage_warning("LOCATION not specified; using Dante e.V. Office as default!")
+end
+
+if XSIZE == "" then
+ XSIZE=800
+ osmimage_warning("XSIZE not specified; using XSIZE=800 as default!")
+end
+
+check_range(XSIZE,1,3840,11,"XSIZE")
+
+if YSIZE == "" then
+ YSIZE=400
+ osmimage_warning("YSIZE not specified; using YSIZE=400 as default!")
+end
+check_range(YSIZE,1,3840,12,"YSIZE")
+
+if SIZE == "" then
+ SIZE = XSIZE .. "," .. YSIZE
+end
+
+if SCALE == "" then
+ if ZOOM == "" then
+ SCALE=3385
+ osmimage_warning("SCALE not specified, using SCALE=3385 as default!")
+ end
+else
+ check_range(SCALE,1692,221871572,13,"SCALE")
+end
+
+if TYPE == "" then
+ TYPE = "map"
+ osmimage_warning("TYPE not specified; using map as default!")
+end
+
+if IMAGETYPE == "" then
+ IMAGETYPE="png"
+ osmimage_warning("IMAGETYPE not specified; using png as default!")
+end
+
+if COLOR == "" then
+ COLOR="yellow_1"
+ osmimage_warning("COLOR not specified; using yellow_1 as default!")
+end
+
+if NUMBER == "" then
+ NUMBER=1
+ osmimage_warning("NUMBER not specified; using 1 as default!")
+end
+check_number(NUMBER,"NUMBER")
+
+local UKEY = "?key=" .. url.escape(KEY)
+local ULOCATION = "&location=" .. url.escape(LOCATION)
+local USIZE = "&size=" .. url.escape(SIZE)
+local USCALEZOOM
+if ZOOM == "" then
+ USCALEZOOM = "&scale=" .. url.escape(SCALE)
+else
+ check_range(ZOOM,1,18,14,"ZOOM")
+ USCALEZOOM = "&zoom=" .. url.escape(ZOOM)
+end
+local UTYPE = "&type=" .. url.escape(TYPE)
+local UIMAGETYPE = "&imagetype=" .. url.escape(IMAGETYPE)
+local USHOWICON = "&showicon=" .. url.escape(COLOR) .. "-" .. url.escape(NUMBER)
+local UOFILE = OFILE .. "." .. IMAGETYPE
+
+local IMGURL = URL .. UKEY .. ULOCATION .. USIZE .. USCALEZOOM .. UTYPE .. UIMAGETYPE .. USHOWICON
+
+local ret, msg
+local ofile
+ofile, msg = io.open(UOFILE, "wb")
+if not ofile then
+ osmimage_error(21, msg)
+end
+print("\n\nosmimage.lua:")
+print("url = " .. IMGURL)
+print("output = " .. UOFILE)
+ret, msg = http.request{
+ url = IMGURL,
+ sink = ltn12.sink.file(ofile)
+}
+if not ret then
+ osmimage_error(22, msg)
+end
+