Обсудить в форуме Комментариев 0Редактировать в вики
Работа со скриптом на языке Perl, который позволяет в автоматическом режиме расчитывать и создавать файлы привязки для мозаики растровых тайлов.
Иногда необходимо создать большое число world-файлов для некоторой матрицы растровых картинок. К примеру, такая задача может возникнуть, когда есть разрезанное на части (тайлы, плитки, фрагменты) большое растровое изображение. Чтобы избежать отдельной привязки каждого тайла может потребоваться:
Представим ситуацию когда из имени тайлов нам известно их взаимное расположение в пространстве, ширина тайлов по оси Х одинакова для всех тайлов, высота тайлов по оси Y также одинакова для всех тайлов (может быть при этом не равна ширине).
В этом примере конечное растровое изображение должно состоять из 8 тайлов: 8 картинок в 2 ряда (4 картинки на 1 ряд). Для простоты в данном примере размерность в пикселях по оси Х и Y одинакова и равна 1000 пикселей.
Чтобы сгенерировать относительные world-файлы зададим каждому тайлу 6 параметров (подробнее о параметрах). Первые четыре параметра в нашем случае будут неизменны и равны:
1 0 0 -1
А вот последние два параметра – координаты Х и Y верхнего левого пикселя нам необходимо расчитать автоматически исходя из названия файла. Для этого, мы должны знать число колонок и строк такой матрицы тайлов (т.е. число тайлов по оси Х и Y).
К примеру:
1 0 0 -1 0 1000
1 0 0 -1 1000 1000
1 0 0 -1 0 0>
1 0 0 -1 1000 0.
В таблице приведены расчетные значения world файла для каждого растрового фрагмента (тайла):
Tile 1: 1 0 0 -1 0 1000 |
Tile 2: 1 0 0 -1 1000 1000 |
Tile 3: 1 0 0 -1 2000 1000 |
Tile 4: 1 0 0 -1 3000 1000 |
Tile 5: 1 0 0 -1 0 0 |
Tile 6: 1 0 0 -1 1000 0 |
Tile 7: 1 0 0 -1 2000 0 |
Tile 8: 1 0 0 -1 3000 0 |
Приведенный ниже скрипт на языке Perl позволяет автоматически создать такие world-файлы для всех тайлов (растровых фраментов) в папке. Скрипт должен быть запущен из той папки, где расположены все тайлы и строка запуска может иметь иметь 5 параметров:
perl worldfile_gen.pl [raster_extension] [tiles_X] [tiles_Y] [size_X] [size_Y]
Параметры:
Например:
D:\misc\tiles>perl worldfile_gen.pl tif 20 30 1000 2000
В этом случае будут созданы tfw-файлы для всех файлов с расширением tif в директории, всего будет создано 600 файлов. Размер тайла по оси Х = 1000 пикселей, по оси Y = 2000 пикселей. Число тайлов по оси Х = 20, по оси Y = 30. Если параметры не будут указаны сразу, скрипт запросит их введение после запуска.
Узнать размер изображения в пикселях по Х и Y осям можно с помощью бесплатной библиотеки GDAL и команды gdalinfo ([ http://gdal.org подробнее] о библиотеке Gdal) или эту информацию можно получить с помощью бесплатных графических редакторов (например IrfanView).
Дальнейшая склейка тайлов в единую мозаику может быть проиведена с помощью библиотеки gdal. Если вы работаете в QGIS, можно не склеивать растр и использовать виртуальную мозаику VRT.
Обсудить в форуме Комментариев 0Редактировать в вики
Последнее обновление: 2014-05-14 23:01
Дата создания: 27.03.2010
Автор(ы): Анна Костикова
© GIS-Lab и авторы, 2002-2021. При использовании материалов сайта, ссылка на GIS-Lab и авторов обязательна. Содержание материалов - ответственность авторов. (подробнее).