Если MapTiler не делает то, что вам нужно, вам следует рассмотреть возможность использования утилиты за графическим интерфейсом. GDAL (http://www.gdal.org/gdal_utilities.html) будет делать почти все, что вам нужно, чтобы подготовить ваши геотипы для iOS, это то, что я использую для этого. Инструкции отсюда предполагают, что у вас установлен GDAL.
Прежде всего, вы должны быть уверены, что координаты действительно встроены в tif.
gdalinfo your.tif
Читать через этот выход, и если он не упоминает, какой проекции и координаты его использования, то вам необходимо сохранить этот мировой файл с TIF на данный момент.
В зависимости от размера исходных файлов вы можете объединить их перед черепицей. Это приведет к получению более качественных ребер, где одна плитка содержит данные из двух соседних геотипов. Если 20 geotifs сделать идеальный прямоугольник и он вписывается в максимальных размерах TIF использовать следующие:
gdalwarp -co COMPRESS=LZW originals/*.tif output.tif -srcnodata 0 -dstnodata 0 -multi
Бит на конце должны сделать все неиспользуемые пикселы прозрачными и использовать несколько процессоры, если у вас есть. Если команда выше жалуется прозрачность или альфа-каналы вам необходимо конвертировать 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 файлов, а затем удалить все прозрачные .pngs 100%, то вы удалите все каталоги, которые теперь пусты:
rm -r */*/*.kml
find ./ -type f -size 334c -exec rm -f {} \;
find ./ -depth -empty -type d -exec
Но вы еще не закончили. Как я уже упоминал ранее, некоторые плитки будут охватывать область, содержащую данные из двух tif. Если вы выложили их отдельно, и каждый набор плиток будет содержать одну и ту же плиту, половина из них с данными, половина из них прозрачна. Если вы просто объедините эти папки, плитка с первого 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, поэтому, если у вас нет установленной библиотеки, вам нужно будет заменить эту строку. Я подозреваю, что в библиотеке изображений Apple есть что-то, что можно использовать, но я использую IM для других вещей, поэтому я не смотрел дальше.
Объедините все свои плитки, и вы сделали то, что вы намеревались сделать, но есть еще один шаг, который я бы рекомендовал. PNG, которые производит GDAL, имеют средний размер, я бы предположил. Но у вас будет много тысяч, а iPhone - ограниченное дисковое пространство. Поэтому возьмите pngnq
и сжимайте все PNG. Я не заметил никакой потери качества на моем, я не выбрасываю оригинал, пока вы не проверите выход.
pngnq -n 256 */*/*.png
Я имел дело с наборами файлов, которые содержат слишком много PNGs поэтому мне пришлось разбить команду, чтобы сделать каждый трансфокатор слоя отдельно, это было бы довольно легко сделать короткий скрипт, чтобы гарантировать, что каждый файл был покрыт. Теперь у вас будет дубликат каждого png: original.png
->original-nq8.png
. Вот сценарий оболочки Я написал цикл через них и скопировать версию 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
Опять вы» вероятно, придется разбить его на более крупные уровни масштабирования, потому что у вас будет так много pngs, с которыми нужно иметь дело.
Будет ли все сделано, я обычно уменьшаю общий размер файла на более чем 30%, и я могу отбросить папку прямо в примере TileMap от Apple, и это работает. Пожалуйста, дайте мне знать, если это поможет. Я хотел написать полный учебник, и я хотел бы знать, насколько это достаточно ясно и какие шаги я пропустил.
P.S. Я предположил, что у вас есть геотипы, у которых нет карточного ошейника, если они это сделают, вы можете проверить мою маленькую статью об их удалении: http://craig.stanton.net.nz/2011/06/07/merging-geotiffs/
Я считаю, что Карты Google используют Меркатор. Существуют различные типы прогнозов - посмотрите здесь: http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html Не уверен, что вам нужно, я бы предпочел Меркатор. –