GIS-LAB

Географические информационные системы и дистанционное зондирование

Использование GDAL для перепроектировки данных на базе эллипсоида на сферу

Решение задачи перевода данных в системе координат на базе эллипсоида на сферу с помощью GDAL на примере данных ASTER (Terralook)

Обсудить в форуме Комментариев — 3

Общая информация о GDAL

Для дальнейшего использования полученных данных дистанционного зондирования в ГИС системах, обычно бывает необходимо спроецировать данные в пользовательскую проекцию. Часто исходные данные находятся в географической системе координат и не имеют проекции (единицы измерения – десятичные градусы). В принципе, для изменения проекции снимков может подойти любая современная ГИС, работающая с растровыми данными (ERDAS Imagine, ArcGIS, PCI Geomatica и другие). Однако, существуют ситуации, когда ни одна из них не подходит. В этой статье предлагается использование альтернативного подхода – проецирование данный с использованием библиотеки GDAL. По сравнению с распространенными коммерческими пакетами GDAL обладает рядом преимуществ:

1. Библиотека GDAL - бесплатно распространяемый набор инструментов и библиотек с открытым исходным кодом. Использование этих инструментов - один из немногих способов осуществить перепроецирование растрового изображения используя исключительно бесплатное ПО.

2. Трансформирование снимков в системе GDAL производиться значительно быстрее, чем во многих платных продуктах. К примеру, трансформация снимка ASTER в GDAL занимает 2-3 минуты, в то время как в ArcGIS Desktop – около получаса.

3. GDAL корректно производит пересчет между системами координат использующими эллипсоиды и системами координат на сфере (обычная проблема, с которой сталкиваются пользователи ERDAS Imagine, который данную операцию производит не корректно).

Подробно с установкой и основами работы с системой GDAL можно ознакомиться в специальной статье или на официальном сайта GDAL. Кратко еще раз напомним процедуру установки:

  1. Загрузите исполняемые модули GDAL, необходимо загрузить пакет Minimalist windows executables.
  2. Распакуйте фалы в директорию где будет храниться GDAL (Например: C:\gdalwin32-1.4.2).
  3. Добавьте путь к директории куда были установлены исполняемые файлы GDAL к переменной окружения Path. Например: C:\gdalwin32-1.4.2\bin
  4. Создайте переменную окружения GDAL_DATA со значением равным названию директории в который был установлен GDAL. Например: C:\gdalwin32-1.4.2\data.

Для корректной работы пакета Вам также потребуется установить библиотеку картографических проекций PROJ.4 (также являющуюся свободно распространяемым ПО). Для этого:

1. Загрузите пакет PROJ. Необходимо загрузить Prebuilt Win32 executables.
2. Распакуйте фалы (например, в C:\proj).
3. Добавьте путь C:\proj\bin к переменной окружения Path.

Стандартная команда трансформации с помощью GDAL выглядит следующим образом:

gdalwarp -s_srs "+proj=longlat +datum=WGS84  +no_defs" -t_srs "+proj=laea +lat_0=90 +lon_0=100 +ellps=sphere  +x_0=0 +y_0=0 +units=m +no_defs" -tr 15 15 -rn  -srcnodata 0 -dstnodata 0 images\XXXXXX.jpg XXXXXX.tif

Вот что означает эта комманда:

gdalwarp – вызов программы трансформации

-s_srs "+proj=longlat +datum=WGS84 +no_defs" – описание исходной проекции/системы координат снимков

-t_srs "+proj=laea +lat_0=90 +lon_0=100 +ellps=sphere +x_0=0 +y_0=0 +units=m +no_defs" – описание выходной системы координат и проекции. В данном примере мы используем проекцию Lambert azimuthal equal area с центром 90 с.ш., 100 в.д., основанную на сфере, а не эллипсоиде. Для других проекций набор параметров может отличаться.

-tr 15 15 – размер выходного пикселя в метрах

-srcnodata 0 -dstnodata 0 – заливка нулями поля вокруг изображения.

images\XXXXXX.jpg – исходный снимок из папки images
XXXXXX.tif – выходной файл.

Пакетное перепроектирование данных ASTER (Terralook)

Проиллюстрируем данную операцию конкретным примером. Для примера осуществим пакетную трансформацию данных ASTER (TerraLook). Эти данные поставляются в формате jpeg и имеют географическую привязку. Информация о привязке хранится в файле привязки jpgw. В комплект также входят текстовые файл с координатами углов для каждого снимка.

Для трансформации одного снимка из директории images скачанного набора данных TerraLook нужно, используя командную строку, выполнить следующее выражение (все пути даны относительно корневой папки распакованной коллекции):

gdalwarp -s_srs "+proj=longlat +datum=WGS84  +no_defs" -t_srs "+proj=laea +lat_0=90 +lon_0=100 +ellps=sphere  +x_0=0 +y_0=0 +units=m +no_defs" -tr 15 15 -rn  -srcnodata 0 -dstnodata 0 images\XXXXXX.jpg XXXXXX.tif

Расшифровку данной команды смотрите выше.

Для выполнения пакетного проецирования снимков ASTER используем прилагаемый скрипт на языке PERL (reproject.pl). Подробнее о языке PERL можно прочитать на нашем сайте. Для выполнения трансформации достаточно скопировать скрипт в папку распакованных данных ASTER и запустить. Перед этим необходимо убедиться что все необходимые компоненты установлены (PERL, GDAL и PROJ.4). Срипт создан для трансформации данных в проекцию Lambert azimuthal equal area. Отредактируйте скрипт для использования Вашей пользовательской проекции. При формировании имени выходного файла скрипт использует дату и время исходного снимка. Имя выходного файла будет выглядеть так: ГГГГММЧЧ_ЧЧММСС.

#!/usr/local/bin/perl
@dir=readpipe("dir images\\*.jpg /O:N /B");
$files=@dir;
for($inc=0;$inc<$files;++$inc)
{
$line = @dir[$inc];
chomp($line);
($name,$ext)=split('\.',$line);
if ($ext eq "jpg")
{
$line =~ s/.jpg//;
(@temp)=split('\_',$line);
$year=substr @temp[2],7,4;
$date=substr @temp[2],3,4;
$time=substr @temp[2],11,6;
$newname=$year.$date."\_".$time;
system("gdalwarp -s_srs \"+proj=longlat +datum=WGS84 +no_defs\" -t_srs \"+proj=laea +lat_0=90 +lon_0=100 +ellps=sphere +x_0=0 +y_0=0 +units=m +no_defs\" -tr 15 15 -rn  -srcnodata 0 -dstnodata 0 images\\$line.jpg $newname.tif");
}
}

Обсудить в форуме Комментариев — 3

Последнее обновление: September 09 2021

Дата создания: 06.11.2007
Автор(ы): Максим Дубинин