Carnet Wiki

Script script gettiles.sh

Version 2 — Août 2023 JLuc

Contexte : https://discuter.spip.net/t/gis-et-les-fonds-de-carte-stamen/171775

#!/bin/bash
# By JLuc


if [ "$1" = "" ] || [ "$1" = "-h" ] || [ "$1" = "-?" ]
then
   echo "Usage : gettiles.sh [-c nomcollection (watercolor)] [-z zoomlevel (5)] [-startx x_debut_scanport (0)] [-lastx x_fin_scanport] [-starty y_debut_scanport (0)] [-lasty y_fin_scanport] [-w waitseconds (2)] [--explain]"
   echo "Les options doivent etre IMPÉRATIVEMENT dans cet ordre !"
   echo "Une des options peut être omise mais elles doivent être dans cet ordre"
   echo "Il faut au moins une option (le zoomlevel par exemple)"
	echo "-h : aide"
	echo "-c avant un nom de collection stamen (watercolor ou tonerlabel)"
	echo "-z : zoom level (0 à 12, mais au delà de 4 il faut cibler et pas choper les tiles du monde entier)"
	echo "-startx, -lastx, -starty, -lasty : début et fin du scanport"
	echo "-w : temps d'attente après chaque récupération, pour éviter saturation et blacklist"
	echo "--explain : ne fait qu'expliquer le paramétrage choisi mais ne lance rien"
   exit
fi


collec=watercolor	# default 
if [ "$1" = "-c" ] && [ "$2" != "" ]
then
   collec=$2
   shift
   shift
fi


zoomlevel=5 		# default 
if [ "$1" = "-z" ] && [ "$2" != "" ]
then
   zoomlevel=$2
   shift
   shift
fi


let side=2**zoomlevel
# let side=`echo 2^\($zoomlevel*2\) | bc`


startx=0
if [ "$1" = "-startx" ] && [ "$2" != "" ]
then
   startx=$2
   shift
   shift
fi


let lastx=side-1
if [ "$1" = "-lastx" ] && [ "$2" != "" ]
then
   lastx=$2
   shift
   shift
fi


starty=0
if [ "$1" = "-starty" ] && [ "$2" != "" ]
then
   starty=$2
   shift
   shift
fi


let lasty=side-1
if [ "$1" = "-lasty" ] && [ "$2" != "" ]
then
   lasty=$2
   shift
   shift
fi


waitseconds=2		# default - sinon accès refusé
if [ "$1" = "-w" ] && [ "$2" != "" ]
then
   waitseconds=$2
   shift
   shift
fi


if [ "$1" != "" ]
then
	echo "Erreur de parametre : $1"
	exit
fi


echo collec = $collec
echo zoomlevel = $zoomlevel
echo side = $side
echo "x de $startx à $lastx"
echo "y de $starty à $lasty"
echo wait $waitseconds seconds
echo ====
let wx=$lastx-$startx+1
let wy=$lasty-$starty+1
let ntiles=wx*wy


echo Pour le parcours de $zoomlevel/$startx-$lastx/$starty-$lasty, il y a $ntiles tuiles à récupérer
let nbsec=$ntiles$waitseconds
let nbmin=$nbsec/60
let nbheure=$nbsec/3600
echo ce qui se fera en $nbsec s, soit $nbmin mn ou un peu plus de $nbheure heures
echo ====
if [ "$1" = "--explain" ] 
then
   exit
fi


[ ! -d $collec ] &&  mkdir $collec
[ ! -d $collec/$zoomlevel ] &&  mkdir $collec/$zoomlevel


echo maxside=$maxside


for x in $(seq $startx $lastx)
do
	echo 
	echo "####################################"
	echo "### create $collec/$zoomlevel/$x"
	echo
	[ ! -d $collec/$zoomlevel/$x ] &&  mkdir $collec/$zoomlevel/$x
	for y in $(seq $starty $lasty)
	do
		echo "($x x $y)"
		wget  http://stamen-tiles-d.a.ssl.fastly.net/$collec/$zoomlevel/$x/$y.jpg -O $collec/$zoomlevel/$x/$y.jpg
		sleep $waitseconds
	done
done