#!/bin/bash

# SPD2D - Kopiert die Bildchen von stadtplandienst.de auf die Festplatte
# und erstellt passende Worldfiles dazu. Diese knnen anschlieend mit einer
# geeigneten Software (z.b. GlobalMapper ER-Mapper) gestitcht werden.  

PRJDIR="projects/" # Verzeichnis in dem sich die Projektdateien befinden

clear
echo ""
echo ""
echo "SPD2D"
if [ ! -x "$(which bc 2>/dev/null)" -o ! -x "$(which sed 2>/dev/null)" -o ! -x "$(which grep 2>/dev/null)" -o ! -x "$(which wget 2>/dev/null)" ]
then 
echo ""
echo "Error: die Befehle bc o. ImageMagic o. wget o. sed o. grep sind nicht verfgbar"
echo "SPD2D wird beendet."
exit
fi
if [ ! -d "$PRJDIR" ]
then
echo ""
echo "Fehler: Projektverzeichnis nicht gefunden."
echo "SPD2D wird beendet."
exit
fi
echo "Projekte:"
echo "-------------------------------"
ls $PRJDIR
echo "-------------------------------"
echo "Bitte Projektnamen eingaben: dann ENTER bzw. CTRL+C zm abbrechen"
read PRJ
if [ -f "$PRJDIR$PRJ" ]
then
echo ""
else
echo ""
echo "Fehler: Projektdatei nicht gefunden"
echo "SPD2D wird beendet."
exit
fi
source $PRJDIR$PRJ
echo "Projekt Informationen:"
echo "-------------------------------"
echo "Beschreibung: "$BESCHREIBUNG
if [ -d "$IMGDIR" ]
then
echo "Speicerort: "$IMGDIR
else
mkdir $IMGDIR
echo "Speicherort: VERZEICHNIS ERSTELLT" $IMGDIR 
fi
echo "Kartenname bei SPD: "$MAPNAME 
echo ""
echo "Geo-Referenzierung:"
echo "Projektionsparameter: "$PJK
echo "Skalieirung X/Y: "$SKX" / "$SKX
echo "Offset: X/Y: "$OFSX" / "$OFSY
echo "Worldfile-Prefix: "$WLF
echo "" 
echo "gewhlter Bereich:"
echo "Start X:	"$SX"	Stop X:	"$EX
echo "Start Y:	"$SY"	Stop Y:	"$EY
DX=$(($EX-$SX))
DY=$(($EY-$SY))
echo ""
echo "DX:	"$DX"	DY:	"$DY
echo "Anzahl der Bilder: " $(($DX*$DY))
echo "~Speicherplatz (fr Luftbild): " $((($DX*$DY)/15))"MB"
echo "-------------------------------"
echo ""
echo "ENTER um Download zu Starten; CTRL+C zm abbrechen"
read
# START: Y-Schleife
Ywhl=$SY
while [ $Ywhl -lt $EY  ]
do
# START: SID Auslesen
rm SID.html 2>/dev/null
wget $OPTWGET -o$IMGDIR"SID.log" -OSID.html $URL
SID=($(sed -n 's/.*SID=\([^"]*\).*/\1/p' SID.html))
if [ -z "$SID" ]
then 
echo "Error: keine SID in  "$URL" gefunden"
exit
fi
echo "SID: "$SID
echo ""
# ENDE: SID Auslesen
# START: X-Schleife
    Xwhl=$SX
    while [ $Xwhl -lt $EX  ]
    do
# START: Links der Bildchen holen
	rm links.html 2>/dev/null
	TIME=($(date +%s))
	wget $OPTWGET -o$IMGDIR"LINKS.log" -Olinks.html $URL$REG"map.asp?sid="$SID"&ix="$Xwhl"&iy="$Ywhl"&grid="$MAPNAME"&size=5x5"
	declare arrayKEY
	arrayKEY=($(grep $MAPNAME links.html |grep key |sed -n  "s/.*src='\/\([^']*\).*/\1/p" |sed 's/\&amp;/\&/g')) 
# ENDE:  Links der Bildchen holen
# START: Verarbeiten der links und Download
if [ "${#arrayKEY[0]}" -lt "10" ]
then
echo "Error: kein Link fr Bildchen in" $URL$REG"map.asp?sid="$SID"&ix="$Xwhl"&iy="$Ywhl"&grid="$MAPNAME"&size=5x5 gefunden "
exit
fi
XKEY=($(echo "scale=0; sqrt("${#arrayKEY[*]}")" |bc -l)) 
YKEY=$XKEY
# START: Korrektur des gewhlten Bereichs
if [ "$(($DX%$XKEY))" -ne "0" -o "$(($DY%$YKEY))" -ne "0" ]
then
echo "Der gewhlte Bereich muss etwas erweitert werden."
echo "Neue errechnete Werte:"
EX=$(($EX+($XKEY-($DX%$XKEY))))
EY=$(($EY+($YKEY-($DY%$YKEY))))
DX=$(($EX-$SX))
DY=$(($EY-$SY))
echo ""
echo "Start X:	"$SX"	Stop X: "$EX
echo "Start Y:	"$SY"	Stop Y: "$EY
echo ""
echo "DX:	"$DX"	DY:	"$DY
echo "Anzahl der Bilder: "$(($DY*$DX))
fi
# ENDE: Korrektur des gewhlten Bereichs
YwhlKEY=0
Ywhl=$(($Ywhl+$YKEY-1))
while [ "$YwhlKEY" -lt "$YKEY" ]
do
    XwhlKEY=0
    while [ "$XwhlKEY" -lt "$XKEY" ]
    do
    if [ -f "$IMGDIR$Ywhl-$Xwhl.png" ]
    then
    echo "BEREITS VORHANDENES BILD UND WORDFILE GELSCHT"
    rm $IMGDIR$Ywhl-$Xwhl.*
    fi
    echo "Bild: "$(($YwhlKEY*($YKEY)+$XwhlKEY))" -> X:"$(($Xwhl))"/Y:"$(($Ywhl))" -> "$IMGDIR$(($Ywhl))-$(($Xwhl)).png
    wget $OPTWGET -o$IMGDIR"BILDCHEN.log" -O$IMGDIR$Ywhl-$Xwhl.png $URL${arrayKEY[$(($YwhlKEY*($YKEY)+$XwhlKEY))]}
    # Worldfile erstellen
    echo $SKX  >  $IMGDIR$Ywhl-$Xwhl.tfw
    echo 0     >> $IMGDIR$Ywhl-$Xwhl.tfw
    echo 0     >> $IMGDIR$Ywhl-$Xwhl.tfw
    echo "-"$SKY  >> $IMGDIR$Ywhl-$Xwhl.tfw
    echo $OFSX"+(200*"$SKX"*"$Xwhl")" |bc -l      >> $IMGDIR$Ywhl-$Xwhl.tfw
    echo $OFSY"+(200*"$SKY"*("$Ywhl+1"))" |bc -l  >> $IMGDIR$Ywhl-$Xwhl.tfw
    # PNG to TIF
    # convert $IMGDIR$Ywhl-$Xwhl.png $IMGDIR$Ywhl-$Xwhl.tif
    # rm $IMGDIR$Ywhl-$Xwhl.png
        
    Xwhl=$(($Xwhl+1))    
    XwhlKEY=$(($XwhlKEY+1))
    done
Xwhl=$(($Xwhl-$XKEY))
Ywhl=$(($Ywhl-1))
YwhlKEY=$(($YwhlKEY+1))
done
Ywhl=$(($Ywhl+1))
    Xwhl=$(($Xwhl+$XKEY))
# ENDE: Verarbeiten der links und Download
# START: etwas Statistik
	echo ""
	echo "Fortschritt: "$(($DX*($Ywhl-$SY)+($Xwhl-$SX)*$XKEY))" von "$(($DX*$DY))  
	TIME=$((1+(($(date +%s))-$TIME)*(($DX*($EY-$Ywhl)-$XKEY*($Xwhl-$SX))/9) ))
	echo "~Restzeit: "$(($TIME))"s"
	echo "Verbleibend: "$(($DX*($EY-$Ywhl)-$XKEY*($Xwhl-$SX)))
	echo ""
# ENDE: etwas Statistik
    done
# ENDE: X-Schleife
Ywhl=$(($Ywhl+$YKEY))
done
# ENDE: Y-Schleife
# Benutzerdefinierte Befehle ausfhren
$END