[Mapserver-DE] Automatisiertes Kacheln
Kai Behncke
kbehncke at igf.uni-osnabrueck.de
Sam Jan 13 11:19:39 CET 2007
> -----Ursprüngliche Nachricht-----
> Von: armin.burger at gmx.net
> Gesendet: 08.12.06 17:05:10
> An: r.keltermann at web.de
> CC: mapserver-de at freegis.org
> Betreff: Re: [Mapserver-DE] Automatisiertes Kacheln
>
> >>
> > Hallo,
> > vielen Dank erst mal.
> > Gilt das was Du sagst nur für Geotiffs?
> > Was ist mit 150 MB großen JPEGs?
>
> JPEG's wuerde ich eher als Notloesung betrachten, z.B. wenn man wenig
> Plattenplatz hat. Ansonsten sind JPEG's recht langsam, da immer das
> komplette Bild entpackt werden muss, um es darzustellen. Tiffs
> (unkomprimiert) koennen sehr effizient in kleinen Teilen gelesen werden.
> Evtl. sind noch ECW's geeignet wenn man sehr grosse Bilder und/oder
> wenig Platz hat. Sind langsamer als Tiff aber deutlich schneller als Jpeg.
>
>
> > Muss man denn Rasterbilder garnicht kacheln?
> > Ich lese immer wieder dass das sehr wichtig sei, weil sonst die Performanz
leidet??
> > Was genau meinst Du mit Overviews mit gdaladdo?
>
> gdaladdo fuegt Overview-Ebeben mit geringerer Aufloesung und daher
> weniger Datenmenge in das existierende Tiff ein. Die Dateigrosse des
> Tiffs erhoeht sich daurch um bis etwa 30%, aber es lohnt sich! Tiffs mit
> Overviews sind das schnellste was ich bisher getestet habe und auf der
> Mapserver Liste wird das gleiche oefters bestaetigt.
>
> Du brauchst Gdal (fuer Windows als FWtools erhaeltlich unter
> http://www.gdal.org/dl/fwtools/FWTools111.exe). Kurzbeschreibung von
> gdaladdo unter
> http://gdal.maptools.org/gdaladdo.html
>
> gdaladdo -r average dein.tif 2 4 6 8 12 16 20 30
>
>Cool, danke :-) !!!!
>Dennoch würde es mich generell interessieren, ob man automatisiert einen
>Befehl auf der MS-DOS-Konsole x-fach mit verschiedenen Parametern ablaufen
>lassen kann.
>Wir haben hier diesbezüglich schon viel gerätselt und probiert.
>
>Also nehmen wir mal ich möchte kacheln derart:
>gdal_translate –projwin 3623456 5311111 3375433 570000 bild_in.tif
>bild_out.tif
>
>....und dieses dann x-fach, immer wieder mit neuen Koordinaten, so dass man
>letztlich mehrere Kacheln bekommt.
>Man könnte das manuell machen, dauert aber viel zu lange.
>Könnte man z.B. auf Windows eine batch-Datei schreiben, die so etwas macht,
>also den Befehl mit immer wieder neuen Koordinaten aufruft, so dass man dann
>im Endeffekt z.B. 20 Einzelbilder aus einem großen Bild bekommt?
Hallo, ist zwar schon ne Weile her, aber hier ein ziemlich passables
Shell-Skript zum automatisierten Kacheln von Bildern.
Der Autor hat das ok zur Weiterverbreitung gegeben.
Das Skript kann natürlich mit den bekannten Optionen der FWtools beliebig
erweitert werden.
Viele Grüße, Kai
-----------------
#! /bin/bash
#
# Linux Shell Script to cut large TIF into N x M tiled TIF's
#
# Version: 0.9
#
# Author: Eric Legge Smith
#
# Date: Dec 2006#
#
# gdal utility syntax: gdal_translate -srcwin [$1] [$2] [$3] [$4] -a_srs [$5]
[$6] [tile_map.tif]
#
# where:
# $1 is the number of tiles required in X
# $2 is the number of tiles required in Y
# $3 is the required tile size in X direction
# $4 is the required tile size in Y direction
# $5 is the projection
# $6 is the path to the original map TIF
#
echo "Tif Tiling Script - using gdal_translate";
if [ $# -eq 6 ]
then
Sx=$3
Sy=$4
Proj=$5
Map_Path=$6
cnt=0
# ===== LOOP ON NUMBER OF TILES REQUIRED IN X
for (( i=0; i<=$1-1; i++ )) # GENERATE TWO DIGIT NUMBERING IN X AND Y FOR
TILENAMES
do
if test $i -le 9
then
ni=0$i
else
ni=$i
fi
# ===== CALCULATE OFFSET IN X
Xoff=`expr $Sx \* $i`
# ===== LOOP ON NUMBER OF TILES REQUIRED IN Y
for (( j=0; j<=$2-1; j++ ))
do
# ===== CALCULATE OFFSET IN Y
Yoff=`expr $Sy \* $j`
if test $j -le 9
then
nj=0$j
else
nj=$j
fi
cnt=`expr $cnt + 1`
echo Tile:$cnt Offset:$Xoff $Yoff Size:$Sx $Sy Projection:$Proj
Path:$Map_Path Index:$ni $nj
# ===== USE GDAL TRANSLATE TO GENERATE GEOTIFF TILES
/home/fragglefoo/download_fraggle/FWTools-1.1.3/bin_safe/gdal_translate
-srcwin $Xoff $Yoff $Sx $Sy -a_srs $Proj $Map_Path tile$ni$nj.gtiff
done
#echo ""
done
echo "`expr $1 \* $2` Tiles processed ... Operation completed."
else
echo "Usage - ./tiletool Nx Ny Sx Sy Prj Pth"
echo "Where Nx and Ny are two Integers representing the number of tiles
required in X and Y"
echo "Where Sx and Sy are two Integers representing the tile size in pixels"
echo "Where Prj is the required projection"
echo "Where Pth is path to original_map.tif file"
echo "e.g. tiletool.sh 2 3 1000 1000 EPSG:20255 ../aerial.tif"
echo "Generates the following:"
echo " 6 tiles as a 2x3 grid"
echo " Each tile is 1000 pixels square"
echo " The projection is EPSG:20255"
echo " The original file called aerial.tif is located in the parent directory"
echo " The output tiles are named tile0000.tif, tile0001.tif .....
tile0102.tif"
fi
-----------------
--
Dipl.-Geogr. Dipl.-Umweltwiss. Kai Behncke
Institut für Geoinformatik und Fernerkundung (IGF)
Universität Osnabrück
Kolpingstr. 7
49074 Osnabrück
Raum: 01/308
Tel.: +49 541 969-4450
E-Mail: mailto:kbehncke at igf.uni-osnabrueck.de
Web: http://www.igf.uni-osnabrueck.de
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)