如果MapTiler沒有做你需要的,你應該考慮使用GUI背後的實用工具。 GDAL(http://www.gdal.org/gdal_utilities.html)將完成您準備iOS版geotif所需的幾乎所有內容,這正是我用來做到這一點。從這裏開始的說明假設你已經安裝了GDAL。
首先,您需要確保座標確實嵌入在tif中。
gdalinfo your.tif
讀通過輸出,如果它沒有提到它的投影,而被使用,那麼你需要保持與TIF那個世界的文件現在座標。
根據您的源文件的大小,您可能希望在拼貼之前合併它們。這將導致稍微更好的邊緣,其中一個瓦片包含來自兩個相鄰地理圖的數據。如果20個geotifs一個完美的矩形,它適合內的最大尺寸TIF使用以下方法:
gdalwarp -co COMPRESS=LZW originals/*.tif output.tif -srcnodata 0 -dstnodata 0 -multi
在年底位作任何未使用的像素透明,並能夠使用多個處理器,如果你有他們。如果上面的命令抱怨透明度或alpha通道,您需要將您的TIFS轉換到使用此RGBA:
gdal_translate -co COMPRESS=LZW old.tif new.tif -expand rgba
我們實際上平鋪:
gdal2tiles.py --zoom 6-16 your.tif outputfolder
這會讓你的瓷磚。tif在指定的縮放級別並將它們保存在輸出文件夾中。它還會創建.kml文件以及tif旋轉的邊緣周圍的透明瓦片,以查找瓦片集的投影。這三條線將整理出來。 334c
是我的驅動器上透明256x256 .png的大小,以字節爲單位。它會在你的不同,所以找到一個這樣的文件,並調整價值。另外要小心這裏的路徑,自動刪除可能會出錯,所以仔細檢查一切。首先,你刪除的文件.KML,然後取出所有被100%透明.pngs,然後刪除了現在空的任何目錄:
rm -r */*/*.kml
find ./ -type f -size 334c -exec rm -f {} \;
find ./ -depth -empty -type d -exec
但你沒有完成。就像我之前提到的,一些圖塊將覆蓋包含來自兩個tif數據的區域。如果你已經將它們分開拼裝起來,每個tileset將包含相同的tile,其中一半包含數據,一半則透明。如果你只是合併這些文件夾,第一個tif的瓦片會覆蓋第二個tif的瓦片,它仍然是一半的一半。所以你需要合併各個瓷磚。幸運的是,我已經將一個Perl腳本一起黑掉了。請不要評論我的Perl能力。我從來沒有讀過它,我只是在附近發現了一個腳本並將其破解。
#! /usr/bin/perl
use File::Slurp;
use File::Copy;
$baseDir = "/Volumes/Elemental/geotifs/destination";
$incomingDir = "/Volumes/Elemental/geotifs/sourcetiles";
my @files = read_dir($incomingDir);
foreach my $zoomlevel(@files) {
if(-d "$incomingDir/$zoomlevel") {
#mkdir "$imgdir/$nextZoom/";
unless(-e "$baseDir/$zoomlevel")
{
mkdir "$baseDir/$zoomlevel";
}
my @subdirs = read_dir("$incomingDir/$zoomlevel");
foreach my $x(@subdirs) {
#print "subdir called $imgdir/$zoomlevel/$x\n";
if(-d "$incomingDir/$zoomlevel/$x") {
unless(-e "$baseDir/$zoomlevel/$x")
{
mkdir "$baseDir/$zoomlevel/$x";
}
my @mapfiles = read_dir("$incomingDir/$zoomlevel/$x");
foreach my $y(@mapfiles) {
if (-e "$baseDir/$zoomlevel/$x/$y")
{
print "Have to merge /$zoomlevel/$x/$y \n";
qx(convert $baseDir/$zoomlevel/$x/$y $incomingDir/$zoomlevel/$x/$y -composite $baseDir/$zoomlevel/$x/$y);
} else {
copy("$incomingDir/$zoomlevel/$x/$y","$baseDir/$zoomlevel/$x/$y");
}
}
}
}
}
}
將其保存爲.pl文件,修改基本目錄和傳入目錄,並運行它以將所有來自incomingDir的切片複製到baseDir中。 我在ImageMagick中使用了'convert',所以如果你沒有安裝這個庫,你需要替換那一行。我懷疑蘋果的圖像庫中有某些東西可以使用,但是我使用IM作爲其他東西,所以我沒有再看。
合併所有tilesets和你做了你設置什麼做出來的,但有一個步驟我建議。 GDAL產生的PNG具有我猜想的平均大小。但是你會有成千上萬的人,而且iPhone的磁盤空間有限。因此,請持有pngnq
並壓縮所有PNG。我沒有注意到我的質量有任何損失,在檢查輸出之前,我不會丟掉你的原稿。
pngnq -n 256 */*/*.png
我一直在處理包含了太多的PNG文件集,所以我不得不分手的命令分別做各變焦層,這將會是很容易使一個簡短的腳本,以確保每一個文件被覆蓋。現在,您將擁有像這樣的每個png的副本:original.png
- >original-nq8.png
。這裏有一個shell腳本,我通過他們寫的週期和命令行復制nq8版本在原有
for OriginalFile
do
Location=`dirname "$OriginalFile"`
FileName="$OriginalFile"
newName=`echo $FileName | sed 's/-nq8//g'`
if [ $newName != "$FileName" ]
then
mv "$FileName" "$newName"
fi
done
保存,作爲.SH並運行它,像這樣:
./removeNq8.sh */*/*nq8.png
同樣你」你可能不得不將它分解爲更大的縮放級別,因爲你會有很多PNG需要處理。
將全部完成我通常會超過30%,減少的總文件大小,我可以在文件夾拖放直入tilemap的例子蘋果和它的作品。請讓我知道這可不可以幫你。我一直有意寫一篇完整的教程,我想知道這是否足夠清楚,以及我錯過了什麼步驟。
P.S.我假設你開始與geotifs在其周圍無圖領,如果他們這樣做,你可以檢查出我的小文章刪除它們:http://craig.stanton.net.nz/2011/06/07/merging-geotiffs/
我相信谷歌地圖使用墨卡託。有不同類型的預測 - 請看這裏:http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html不知道你需要什麼estest,我會假設墨卡託。 – 2011-06-10 17:07:44