All pastes #1546985 Raw Edit

Balticmaps.eu aerofoto

public shellscript v1 · immutable
#1546985 ·published 2009-08-29 10:58 UTC
rendered paste body
#!/bin/bash# Karte ar korekcijusatelitkarte='http://myname.vic.lv/Map/'tmpkartes=`mktemp`# Izskirtspeeja - jaieraksta cik m liels ir 1 pikselis, mazaakais=1. 25000 jaadalaas bez atlikuma ar izskirtspeejuizskirtspeja=1# montēšanas bildes atsevišķās bildītes izšķirtspēja (oriģinālie pikseļi/fināla pikselī)fin_izskirtspeeja=1# mazaas bildes attieciibamaz_izskirtspeeja=5solisX=1000solisY=1000# ImageMagick taisa lielus temfailus - jānorāda vieta, kur to var darīt. Diemžēļ šis pasākums (MAGICK_TMPDIR norādīšana) nezināmu iemeslu dēļ nestrādā if [ ! -d  `pwd`/tmp ] ; then  mkdir `pwd`/tmp fi MAGICK_TMPDIR=`pwd`/tmpexport MAGICK_TMPDIR# Visi karshu nosaukumi (izvada arī uz ekrāna)wget $satelitkarte -O - -q | grep Data.*jpg | tr -d \"  | sed 's/.*\\//g' | sed 's/.jpg//g' | sort function func_ortofoto {logfile=log-$karte.lognpk=1000## XCOUNT un YCOUNT - skaitļi, kas norāda karšu skaitu mapēYCOUNT=0# Visas kartes velkam 1x1km# echo $XA $YA  $XB $YB  $XSKAITS  $YSKAITS $karteizmers=$solisX\x$solisY# Izveidojam attieciigo direktoriju. kur glabaat 1x1km aerofoto kartesmkdir map-$karte# visas mazo karshu apakseejaas Y karshu koordinaates saakot no lielaakasfor Y in `seq $(($YB-$solisY)) -$solisY $(($YA-$solisY+10))`doXCOUNT=0	# visas mazo karshu apakseejaas Y koordinaates	for X in `seq $XA $solisX $(($XB-10)) `	do	# genereeajam bildes nosaukumu	bilde=map-$karte/$npk-$X-$Y	if [ -f $bilde.jpg ] && [ `identify -format '%wx%h' $bilde.jpg` == $izmers ]  ; then 			echo -n .			echo == $bilde ar izmeeru `identify -format '%wx%h' $bilde.jpg` jau eksistee == | tee -a $logfile 		else  		wget -nv  "http://maps.kartes.lv/kijs/server_scripts/orto/get_orto_foto.php?BBOX=$X,$Y,$(($X+$solisX)),$(($Y+$solisY))&WIDTH=$solisX&HEIGHT=$solisY&KIJS=BM45" -O $bilde.jpg -a wget-$karte.log  && bildes_izmers=`identify -format '%wx%h' $bilde.jpg` | tee -a $logfile	fi		# Pāŗbaudam, vai nav balti pleķi uz mazās bildes 	if [    `convert  $bilde.jpg -crop 1x1+5+5 txt:- | tail -n 1 | awk '{print $4}'` == "white" -o `convert  $bilde.jpg -crop 1x1+255+5 txt:- | tail -n 1 | awk '{print $4}'` == "white" -o `convert  $bilde.jpg -crop 1x1+255+255 txt:- | tail -n 1 | awk '{print $4}'` == "white" -o `convert  $bilde.jpg -crop 1x1+5+255 txt:- | tail -n 1 | awk '{print $4}'` == "white"  ] ; then		echo == balta bilde $bilde == | tee -a $logfile		KOREKCIJA=300		wget -nv "http://maps.kartes.lv/kijs/server_scripts/orto/get_orto_foto.php?BBOX=$(($X-$KOREKCIJA)),$Y,$(($X+$solisX)),$(($Y+$solisY))&WIDTH=$(($solisX + $KOREKCIJA))&HEIGHT=$solisY&KIJS=BM45" -O $bilde.jpg | tee -a $logfile && convert -crop $solisX\x$solisY+$KOREKCIJA $bilde.jpg $bilde.jpg 2>/dev/null		bildes_izmers=`identify -format '%wx%h' $bilde.jpg`		if [[ $bildes_izmers != $izmers ]] ; then 			# izveidojam mazu  baltu bildi, kas nepiecieshama veelaak pie montage			echo -n g			echo == veidojam mazu peleeku bildi $bilde.jpg ==			rm $bilde.jpg			convert -size 10x10 xc:gray95 $bilde.jpg		fi	fi		# Palielinam XCOUNT skaitu	XCOUNT=$(($XCOUNT+1))	# Palielinam npk skaitu, lai kartes būtu pēc kārtas	npk=$(($npk+1))	done# Palielinam YCOUNT skaituYCOUNT=$(($YCOUNT+1))done# ievadam mainīgo datus indekss failā - vēlākai lietošanai ar montageecho  '#'$karte > map-$karte/00-index.txtecho -e  XCOUNT=$XCOUNT\\nYCOUNT=$YCOUNT\\nXKREISAIS=$XA\\nXLABAIS=$XB\\nYAPAKSA=$YA\\nYAUGSA=$YB\\nXIZMERS=$XSKAITS\\nYIZMERS=$YSKAITS  >> map-$karte/00-index.txtecho -e  XMIN=$XA\\nXMAX=$(($XA+$XCOUNT*$solisX))\\nYMIN=$(($YB-$YCOUNT*$solisY))\\nYMAX=$YB  >> map-$karte/00-index.txt}## Montēšanas f-ja - varam izsaukt vēlāk function func_montage {logfile=log-$karte.log#aprēķinam oriģinālās bildes ģeometriju GEOM=$(($solisX/$fin_izskirtspeeja))# aprēķinām samazinātās bildes ģeometrijuSMGEOM=$(($GEOM/$maz_izskirtspeeja))mapname=aerofoto-$karte.jpgif [ -f ./$mapname ] ; then	echo == karte $mapname jau eksistē - pārsaucam par aerofoto-$karte-`date +%s`.jpg == | tee -a $logfile	mv $mapname aerofoto-$karte-`date +%s`.jpgfi# Ielasam jau aprēķinātās vēŗtības if [ -f map-$karte/00-index.txt ] ; then	. map-$karte/00-index.txt        ## Zemākā rinda ir jāatkomentē, lai izveidotu lielo bildi oriģinālajā izmērā (1px=1m2), jo komanda taisa ~625 Mpix lielu bildi 	# time montage -verbose -tile $XCOUNT\x$YCOUNT -geometry $GEOM\x$GEOM ./map-$karte/*.jpg ./$mapname | tee -a $logfile	# Uztaisam arii mazaaku failu ar zemaaku izšķirtspēju	if [ ! -f ./aerofoto-$karte-$maz_izskirtspeeja.jpg ] ; then 		echo == veidojam karti == |  tee -a $logfile		time montage -verbose -tile $XCOUNT\x$YCOUNT -geometry $SMGEOM\x$SMGEOM ./map-$karte/*.jpg  ./aerofoto-$karte-$maz_izskirtspeeja.jpg  |  tee -a $logfile	fielseecho "fails nav atrasts - varbūt kartes vēl nav novilktas"fi}# Novelkam kartes datus ar // BLOGSPOT šo rindu neņem pilnībā pretim - ideja - novelkam kartes datus un koordinātes no satelītkartes un ievietojam tos $tmpkartes failā.wget $satelitkarte -O - -q | grep "\<area"  | sed 's/<area shape="rect" coords="//g' | sed 's/" href="Data\\/\t/g' | sed 's/.jpg"//g' | tr , \\t > $tmpkartescat $tmpkartes  | while read xa ya xb yb karte cits 	 do 	# Apstrādājam tikai norādīto karti	if [[ $karte == $1 ]] ; then		# echo $xa $xb $karte 		# Mainam X, ja pirmais ir lielaaks kaa Y  		if [ $xa -gt $xb ] 		 	then 			# echo mainam 			 tmp=$xa ; xa=$xb ; xb=$tmp 			#  echo $xa $xb  		 fi 		 if [ $yb -gt $ya ]                         then 			# echo mainam                          tmp=$ya ; ya=$yb ; yb=$tmp                          #  echo $ya $yb		fi#		echo   $xa\\t$ya\\t$xb\\t$yb\\t$karte		# Reekinam koordinaates kartee		XA=`echo "(294131+100+$xa*5000/23)/5000*5000" | bc `		XB=`echo "(294131+100+$xb*5000/23)/5000*5000" | bc `		YA=`echo "(6457608+100-$ya*5000/23)/5000*5000" | bc `			YB=`echo "(6457608+100-$yb*5000/23)/5000*5000" | bc `			YSKAITS=$(($YB-$YA))		XSKAITS=$(($XB-$XA))		# echo $XA $YA  $XB $YB  $XSKAITS  $YSKAITS $karte		func_ortofoto $XA $YA  $XB $YB  $XSKAITS  $YSKAITS $karte		func_montage $karte	fi	donerm $tmpkartes